1. 程式人生 > >模擬滑鼠和模擬鍵盤

模擬滑鼠和模擬鍵盤

模擬滑鼠

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    HWND h,h1;
  TRect rc;
  int i,j;
  Sleep(500);
  h1=GetDesktopWindow();
  h=GetForegroundWindow();
  if(h1==h)
    {
        h=GetNextWindow(h1,GW_HWNDPREV);
        SetForegroundWindow(h);
        GetWindowRect(h,&rc);
        SetCursorPos(rc.right+20,rc.Bottom);

         SetCursorPos(j,rc.Top+20);

         Sleep(8);
                mouse_event(MOUSEEVENTF_LEFTDOWN,j,i+145,0,0);
                mouse_event(MOUSEEVENTF_LEFTUP,j,j,0,0);
                Sleep(8);
     }
  else
    {
        SetForegroundWindow(h);
        GetWindowRect(h,&rc);
        SetCursorPos(rc.Left+20,rc.Bottom);

        for(i=rc.Bottom;i<=(rc.Top+10);i++)
               {
                SetCursorPos(rc.Left+20,i);
                Memo1->Lines->Add(Format("%s (%d,%d)",ARRAYOFCONST(("mouse down",i,i))));
                Sleep(3);
                }
        for(j=rc.left+20;j<=(rc.right-18);j++)
               {
                SetCursorPos(j,rc.Top+20);
                Memo1->Lines->Add(Format("%s (%d,%d)",ARRAYOFCONST(("mouse down",j,j))));
                Sleep(3);
                }
         Sleep(8);
                mouse_event(MOUSEEVENTF_LEFTDOWN,j,i+145,0,0);
                mouse_event(MOUSEEVENTF_LEFTUP,j,j,0,0);
                Memo1->Lines->Add(Format("%s %d",ARRAYOFCONST((" =",j))));
                Sleep(8);
     }
}

模擬鍵盤

          HWND hWnd;
          hWnd = GetFocus(); // 得到當前鍵盤游標所在的視窗

          //CppWebBrowser1->Navigate(AnsiToUnicode(Edit1->Text.c_str()));


          Memo1->Lines->Add("--focus--");
          if (hWnd == NULL) {
              hWnd = GetForegroundWindow(); // 得到當前視窗
              if (hWnd == Form1->Handle) return; // 不需要程式本身的視窗
              DWORD FormThreadID = GetCurrentThreadId();
              WORD CWndThreadID = GetWindowThreadProcessId(hWnd, NULL);
              // 附加輸入執行緒
              AttachThreadInput(CWndThreadID, FormThreadID, true);
              hWnd = GetFocus(); // 得到當前鍵盤游標所在的視窗
              AttachThreadInput(CWndThreadID, FormThreadID, false); // 取消

              Memo1->Lines->Add("--window--");
          }
          if (hWnd == NULL) return;
          Memo1->Lines->Add("[done]");
          PostMessage(hWnd, WM_CHAR, (WPARAM)('A'&0xFF), 0);
          PostMessage(hWnd, WM_CHAR, (WPARAM)('b'&0xFF), 0);
          PostMessage(hWnd, WM_CHAR, (WPARAM)('C'&0xFF), 0);
          PostMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0);

          //  AnsiString Lines = IntToStr(nTimes);