向任何應用程序發送擊鍵,從 MFC 應用程序中調用 .NET 以及其他
關鍵字:MFC 應用程序中調用 .NET 下載本文的示例代碼: CQ A0501.exe(231KB) 問:我正在嘗試編寫一個應用程序,該應用程序通過向另外一個應用程序發送擊鍵來填充窗體。我是應該發送WM_KEYDOWN和WM_KEYUP消息,還是有更好的方法? 許多讀者 答:雖然通過發送
關鍵字:MFC 應用程序中調用 .NET
下載本文的示例代碼:
CQA0501.exe (231KB)
問:我正在嘗試編寫一個應用程序,該應用程序通過向另外一個應用程序發送擊鍵來填充窗體。我是應該發送 WM_KEYDOWN 和 WM_KEYUP 消息,還是有更好的方法?
許多讀者
答:雖然通過發送 WM_KEYDOWN 和 WM_KEYUP 消息,您可能使應用程序進行工作,但是,SendInput 是一個專門為發送該消息而設計的 API函數。它通過采用一組 INPUT 結構(每個輸入事件 ─ 擊鍵或鼠標操作 ─ 對應一個結構)對輸入(包括擊鍵和鼠標事件)進行了組合。INPUT 結構包含一個聯合,該聯合可以是 MOUSEINPUT 或 KEYBDINPUT(或是模擬烘烤爐的 HARDWAREINPUT)。對于鍵盤,它如下所示:
struct KEYBDINPUT {
WORD wVk; // virt key code
WORD wScan; // hw scan code
DWORD dwFlags; // flags—see doc
DWORD time; // time stamp, 0 = dflt
ULONG_PTR dwExtraInfo; // app-defined
};
原文轉自:http://www.anti-gravitydesign.com