Q&A

  • 다른 프로그램의 원하는 버튼 누르는 방법 좀....
Q & A 에 보면 메모장에 글자 넣기나 또 창의 크기 알아내기



등은 해봤는데요...버튼이나 메뉴 누르기는 안되네요...



어떤 분은 하셨다는 말은 있던데 제가 실력이 딸려서..ㅡ.ㅡ



도움 주신다면 고맙겠습니다.....



언젠가 고수가 되길 원하는 왕초보가...

3  COMMENTS
  • Profile
    구창민 2000.09.01 02:43
    왕초보 wrote:

    > Q & A 에 보면 메모장에 글자 넣기나 또 창의 크기 알아내기

    >

    > 등은 해봤는데요...버튼이나 메뉴 누르기는 안되네요...

    >

    > 어떤 분은 하셨다는 말은 있던데 제가 실력이 딸려서..ㅡ.ㅡ

    >

    > 도움 주신다면 고맙겠습니다.....

    >

    > 언젠가 고수가 되길 원하는 왕초보가...





    당장 생각나는 것은 버튼을 눌러야할



    그 프로그램이 실행되어져 있는 좌표를 구해낸다음(폼위의 내용들이 고정적일때)



    버튼의 좌표를 계산하는 루틴을 추가하고



    그 버튼위로 마우스를 옮긴뒤 강제로 마우스 클릭을 시키면 될거 같네요.



    분명히 가능합니다.



    위의 내용들은 이 게시판과 델파이 관련 팁/강좌란등을 조사하시면



    충분히 구현하실 수 있습니다.



    그럼~ 즐거운 프로그래밍 되시길~

  • Profile
    yoonty 2000.09.01 03:10
    구창민 wrote:

    > 왕초보 wrote:

    > > Q & A 에 보면 메모장에 글자 넣기나 또 창의 크기 알아내기

    > >

    > > 등은 해봤는데요...버튼이나 메뉴 누르기는 안되네요...

    > >

    > > 어떤 분은 하셨다는 말은 있던데 제가 실력이 딸려서..ㅡ.ㅡ

    > >

    > > 도움 주신다면 고맙겠습니다.....

    > >

    > > 언젠가 고수가 되길 원하는 왕초보가...

    >

    >

    > 당장 생각나는 것은 버튼을 눌러야할

    >

    > 그 프로그램이 실행되어져 있는 좌표를 구해낸다음(폼위의 내용들이 고정적일때)

    >

    > 버튼의 좌표를 계산하는 루틴을 추가하고

    >

    > 그 버튼위로 마우스를 옮긴뒤 강제로 마우스 클릭을 시키면 될거 같네요.

    >

    > 분명히 가능합니다.

    >

    > 위의 내용들은 이 게시판과 델파이 관련 팁/강좌란등을 조사하시면

    >

    > 충분히 구현하실 수 있습니다.

    >

    > 그럼~ 즐거운 프로그래밍 되시길~



    procedure MouseMessage(wnd : hwnd; message : uint; keyflag : longint; x, y : longint);

    var

    pt : longint;

    begin

    pt := (y shl 16) or x;

    sendmessage(wnd, message, keyflag, pt);

    end;



    이 프로시져를 이용하세요. 마우스 위치를 계산해

    보내는 거지요.

    wm_이 붙는 대부분의 메시지를 넣어서 쓰시면 됩니다.

    wm_lbuttondown, wm_lbuttonup, wm_mousemove



    버튼의 마우스 클릭방법

    mouseMessage(button1.handle, wm_lbuttondown, 0, 10, 10);

    mouseMessage(button1.handle, wm_lbuttonup, 0, 10, 10);





  • Profile
    왕초보 2000.09.08 20:04
    열분들의 조언으로 성공했습니다....



    //선언부분 이고여..

    procedure MouseClick(x,y : Integer);



    //버튼을 클릭하면 원하는 자리를 클릭합니다.

    procedure TForm1.Button6Click(Sender: TObject);

    begin

    MouseClick(889,443);

    MouseClick(896,484);

    end;



    procedure TForm1.MouseClick(x,y : integer);

    var

    pt : TPoint;

    begin

    pt.x := Round(x *65535 / screen.Width);

    pt.y := Round(y *65535 / screen.Height);

    Mouse_Event(MOUSEEVENTF_ABSOLUTE or //마우스이 이동

    MOUSEEVENTF_MOVE,

    Pt.x, //좌표

    Pt.y, //좌표

    0,

    0);

    Mouse_Event(MOUSEEVENTF_ABSOLUTE or //마우스이 이동

    MOUSEEVENTF_LEFTDOWN,

    Pt.x, //이 위치에서 왼쪽 마우스 버튼을 누릅니다.

    Pt.y,

    0,

    0);;

    Mouse_Event(MOUSEEVENTF_ABSOLUTE or //마우스이 이동

    MOUSEEVENTF_LEFTUP,

    Pt.x, //이 위치에서 왼쪽 마우스 버튼을 뗍니다.

    Pt.y,

    0,

    0);

    end;