全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:10567
推到 Plurk!
推到 Facebook!

有關 keybd_event 與 SendInput 的 API 用法分享

 
fatmoon1
初階會員


發表:3
回覆:29
積分:36
註冊:2004-05-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-02-01 18:04:56 IP:61.63.xxx.xxx 訂閱
keybd_event ==> Window2000/NT/XP已經不提倡用這個函數了,
怎麼替代呢, 2000下用 SendInput 這個代替

只是 像 模擬 V 鍵
keybd_event 只要兩行
begin
keybd_event(Ord('V'),0,0,0);
keybd_event(Ord('V'),0,KEYEVENTF_KEYUP,0);
end;
SendInput 卻要好多行
var input: TInput;
begin
Input.Itype := INPUT_KEYBOARD;
Input.ki.wVk := Ord('V');
Input.ki.wScan := 0;
Input.ki.time := 0;
Input.ki.dwExtraInfo := 0;
Input.ki.dwFlags := 0;
SendInput(1, Input, SizeOf(Input));
Input.Itype := INPUT_KEYBOARD;
Input.ki.wVk := Ord('V');
Input.ki.wScan := 0;
Input.ki.time := 0;
Input.ki.dwExtraInfo := 0;
Input.ki.dwFlags := KEYEVENTF_KEYUP;
SendInput(1, Input, SizeOf(Input));
end;

所以 用下列方法 取代
procedure Mykeybd_event(bVk: Byte; bScan: Byte; dwFlags, dwExtraInfo: DWORD);
var input: TInput;
begin
Input.Itype := INPUT_KEYBOARD;
Input.ki.wVk := bVk;
Input.ki.wScan := bScan;
Input.ki.time := 0;
Input.ki.dwExtraInfo := dwExtraInfo;
Input.ki.dwFlags := dwFlags;
SendInput(1, Input, SizeOf(Input));
end;

begin
Mykeybd_event(Ord('V'),0,0,0);
Mykeybd_event(Ord('V'),0,KEYEVENTF_KEYUP,0);
end;

如此用起來 就像 keybd_event 一樣簡單了

------
才疏學淺
系統時間:2024-04-17 0:51:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!