keybd_event 可以類比輸入一行字串嗎?

來源:互聯網
上載者:User
keybd_event 可以類比輸入一行字串嗎? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiAPI/html/delphi_20061206175530118.html
倒如VB用  
  WshShell.SendKeys   "123456789"    
  這樣就完成了  
   
  總不能每一個字元都用  
  keybd_event($75,   MapVirtualKey($75,   0   ),   0   ,   0   );  
  keybd_event(VK_F6,   MapVirtualKey(VK_F6,0),   KEYEVENTF_KEYUP,0);  
  這樣吧.....  
 

把字串放入剪貼簿,然後keybd_event一個CTRL+C不就行了嗎?

說錯了,CTRL+V

procedure   TypeKeyString(s:   string);  
  var  
      c:   Char;  
      i:   integer;  
      off:   integer;  
      vkw:   Word;  
  begin  
      for   i   :=   1   to   Length(s)   do  
      begin  
          c   :=   s[i];  
          if   (c   <   #128)   then  
          begin  
              vkw   :=   VkKeyScan(c);  
              off   :=   0;  
              if   vkw   and   $100   =   $100   then  
                  keybd_event(VK_SHIFT,   0,   off,   0);  
              if   vkw   and   $200   =   $200   then  
                  keybd_event(VK_CONTROL,   0,   off,   0);  
              if   vkw   and   $400   =   $400   then  
                  keybd_event(VK_MENU,   0,   off,   0);  
   
              off   :=   0;  
              keybd_event(Byte(vkw),   0,   off,   0);  
              //sleep(20);  
              off   :=   off   or   KEYEVENTF_KEYUP;  
              keybd_event(Byte(vkw),   0,   off,   0);  
   
              off   :=   off   or   KEYEVENTF_KEYUP;  
              if   vkw   and   $100   =   $100   then  
                  keybd_event(VK_SHIFT,   0,   off,   0);  
              if   vkw   and   $200   =   $200   then  
                  keybd_event(VK_CONTROL,   0,   off,   0);  
              if   vkw   and   $400   =   $400   then  
                  keybd_event(VK_MENU,   0,   off,   0);  
          end;  
      end;  
  end;  
   
 

CSDN真討厭。為什麼要把對齊用的空格刪除?

謝謝強哥  
  但還有一個問題就是。  
  setForegroundWindow(FindWindow(nil,'無標題   -   記事本'));  
  這不能對最少化或是隱藏表單起作用。。。。  
  如果這樣的表單應該怎麼鍵入字串呢?

SendMessage(FindWindow(nil,'無標題   -   記事本'),wm_syscommand,sc_RESTORE,0);  
  先後這個問題解決了。。。。。

樓上正解

記事本?  
  var  
      vHandle:   THandle;  
  begin  
      vHandle   :=   FindWindow('Notepad',   nil);  
      if   vHandle   =   0   then   Exit;  
      vHandle   :=   FindWindowEx(vHandle,   0,   'Edit',   nil);  
      if   vHandle   =   0   then   Exit;  
      SendMessage(vHandle,   EM_REPLACESEL,   0,   Longint(PChar('Zswang路過...')));  
  end;  
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.