|
SetCursorPos 로 설정하신 뒤,
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
이런식으로 클릭해 보시기 바랍니다.
Sleep 전에, Application->ProcessMessages()도 넣어주시면 실시간으로 움직일 수 있습니다.
그리고, 버튼을 클릭할 때는, 버튼을 직접 클릭하는 것보다,
버튼의 핸들을 구해서 SendMessage 등으로 클릭되었다는 메시지를 보내 주는 것이
훨씬 좋은 방법이라 생각됩니다.
cuperido
아르스 님이 쓰신 글 :
: 버튼이 3개 있습니다
:
: 버튼1을 누르면
: mouse_event()를 이용해서
:
: 버튼2를 자동으로 누르게되고 그 후에 버튼 3을 누르게 되는 프로그램을 만들고 있습니다
: void __fastcall TFrm_Main::Btn_WriteClick(TObject *Sender)
: {
: //버튼2로 이동한 후 누른다
: mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 26000, 21500, 0, 0);
: mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN, 26000, 21500, 0, 0);
: mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP, 26000, 21500, 0, 0);
:
: //버튼3으로 이동한 후 누른다
: mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 26000, 21500, 0, 0);
: mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN, 26000, 21500, 0, 0);
: mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP, 26000, 21500, 0, 0);
: }
:
: 그런데 문제가
: 버튼2를 누르고 버튼 3을 눌러야 하는데
: 버튼2를 너무 번개같이(?) 누르고 3을 눌러서 그런지
: 버튼2가 눌러진 효과가 나지 않습니다.
:
: ::Sleep(3000) 을 버튼 2의
: mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP, 26000, 21500, 0, 0);
: 밑에 써줘도 마찬가지더군요
: (::Sleep(3000)을 쓰면 상식적으로 버튼2 누르고 난후 3초 대기했다가 버튼3을 눌러야 되는데
: 동작은 버튼2 누르기 전에 3초 대기하더라구요...이부분도 이상합니다)
:
: 어떻게 하면 버튼 2를 정상적으로 누르고 버튼3을 누르게 할 수 있을까요??
|