如何使用postmessage 送出CTRL+ALT+SHIFT+F4的組合鍵給別的AP呢?? |
尚未結案
|
samho
一般會員 發表:10 回覆:19 積分:5 註冊:2002-12-13 發送簡訊給我 |
|
arnoyu
中階會員 發表:73 回覆:88 積分:67 註冊:2003-03-21 發送簡訊給我 |
剛剛看到版主RaynorPao發表的:
【BCB】【發表】如何同時偵測到多個按鍵在按著(Part-II, BCB)
http://delphi.ktop.com.tw/topic.php?topic_id=33363 裡面有用到你所說的前3個特殊鍵,於是拿來學學,
發現BCB5所附的WinAPI Help裡我找不到FunctionKey的參數,
所以去BCB help裡找,
找到如下:
========================================== Virtual Key Code Corresponding key VK_LBUTTON Left mouse button VK_RBUTTON Right mouse button VK_CANCEL Control Break VK_MBUTTON Middle mouse button VK_BACK Backspace key VK_TAB Tab key VK_CLEAR Clear key VK_RETURN Enter key VK_SHIFT Shift key VK_CONTROL Ctrl key VK_MENU Alt key VK_PAUSE Pause key VK_CAPITAL Caps Lock key VK_KANA Used with IME VK_HANGUL Used with IME VK_JUNJA Used with IME VK_FINAL Used with IME VK_HANJA Used with IME VK_KANJI Used with IME VK_CONVERT Used with IME VK_NONCONVERT Used with IME VK_ACCEPT Used with IME VK_MODECHANGE Used with IME VK_ESCAPE Esc key VK_SPACE Space bar VK_PRIOR Page Up key VK_NEXT Page Down key VK_END End key VK_HOME Home key VK_LEFT Left Arrow key VK_UP Up Arrow key VK_RIGHT Right Arrow key VK_DOWN Down Arrow key VK_SELECT Select key VK_PRINT Print key (keyboard-specific) VK_EXECUTE Execute key VK_SNAPSHOT Print Screen key VK_INSERT Insert key VK_DELETE Delete key VK_HELP Help key VK_LWIN Left Windows key (Microsoft keyboard) VK_RWIN Right Windows key (Microsoft keyboard) VK_APPS Applications key (Microsoft keyboard) VK_NUMPAD0 0 key (numeric keypad) VK_NUMPAD1 1 key (numeric keypad) VK_NUMPAD2 2 key (numeric keypad) VK_NUMPAD3 3 key (numeric keypad) VK_NUMPAD4 4 key (numeric keypad) VK_NUMPAD5 5 key (numeric keypad) VK_NUMPAD6 6 key (numeric keypad) VK_NUMPAD7 7 key (numeric keypad) VK_NUMPAD8 8 key (numeric keypad) VK_NUMPAD9 9 key (numeric keypad) VK_MULTIPLY Multiply key (numeric keypad) VK_ADD Add key (numeric keypad) VK_SEPARATOR Separator key (numeric keypad) VK_SUBTRACT Subtract key (numeric keypad) VK_DECIMAL Decimal key (numeric keypad) VK_DIVIDE Divide key (numeric keypad) VK_F1 F1 key VK_F2 F2 key VK_F3 F3 key VK_F4 F4 key VK_F5 F5 key VK_F6 F6 key VK_F7 F7 key VK_F8 F8 key VK_F9 F9 key VK_F10 F10 key VK_F11 F11 key VK_F12 F12 key VK_F13 F13 key VK_F14 F14 key VK_F15 F15 key VK_F16 F16 key VK_F17 F17 key VK_F18 F18 key VK_F19 F19 key VK_F20 F20 key VK_F21 F21 key VK_F22 F22 key VK_F23 F23 key VK_F24 F24 key VK_NUMLOCK Num Lock key VK_SCROLL Scroll Lock key VK_LSHIFT Left Shift key (only used with GetAsyncKeyState and GetKeyState) VK_RSHIFT Right Shift key (only used with GetAsyncKeyState and GetKeyState) VK_LCONTROL Left Ctrl key (only used with GetAsyncKeyState and GetKeyState) VK_RCONTROL Right Ctrl key (only used with GetAsyncKeyState and GetKeyState) VK_LMENU Left Alt key (only used with GetAsyncKeyState and GetKeyState) VK_RMENU Right Alt key (only used with GetAsyncKeyState and GetKeyState) VK_PROCESSKEY Process key VK_ATTN Attn key VK_CRSEL CrSel key VK_EXSEL ExSel key VK_EREOF Erase EOF key VK_PLAY Play key VK_ZOOM Zoom key VK_NONAME Reserved for future use VK_PA1 PA1 key VK_OEM_CLEAR Clear key ============================================== 但我將 包版主大人 的程式稍做修改如下: void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if((GetKeyState(VK_F4) & 0x8000) && (GetKeyState(VK_CONTROL) & 0x8000) && (GetKeyState(VK_SHIFT) & 0x8000) && (GetKeyState(VK_MENU)& 0x8000) ) { ShowMessage("Ctrl Shift Alt F4"); } }卻怎麼試也不行,最後發現,要先按FunctionKey(F4) 再按Ctrl Shift Alt 才是正確方法, 所以我猜,在使用GetKeyState時FunctionKey的優先權 大於上述那些特殊鍵(Ctrl,Shift,Alt ...) 我試的環境是 Win2000 , BCB5 記得Form的 keyPreview要設成true 若還有問題再提出來討論ㄅ~ ===三人行必有我師焉=== 發表人 - arnoyu 於 2003/07/04 01:14:46 發表人 - arnoyu 於 2003/07/04 01:16:46 |
samho
一般會員 發表:10 回覆:19 積分:5 註冊:2002-12-13 發送簡訊給我 |
|
arnoyu
中階會員 發表:73 回覆:88 積分:67 註冊:2003-03-21 發送簡訊給我 |
剛剛找了下面這一些資料:
==========================================================
領航天使 如何用程式觸發鍵盤按鍵的事件(模擬鍵盤按鍵)
http://delphi.ktop.com.tw/topic.php?topic_Id=285 領航天使 如何用程式觸發鍵盤按鍵的事件(Ex. Ctl F11)
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20899 請問要如何由一個應用程式去接收另一應用程式的window message呢?
http://delphi.ktop.com.tw/topic.php?topic_Id=31336 ccchen版主 用keybd_event模擬鍵盤
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=21387 ============================================================
大該都是keybd_event() 及 PostMessage() 的問題
看起來您的問題應該是要用keybd_event()的方式來試試傳遞, 但有點奇怪的是,您要操控的那個 AP 並不一定能接收您傳送的復合鍵
但你可以使用目前要設計的這個程式來接收後,轉成那個AP可接收的鍵
然後發送給它不就成了? 因為若是它的接收參數根本無法接收復合鍵的話,
你怎可能試得出來?(這是個人見解)
就好比 Form的Even函式:
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
跟
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
是不一樣的,FormKeyPress的key是無法接收特殊鍵的,若您的AP原始設計就
類似FormKeyPress一樣,那麼您可能就得考慮一下我剛剛說的方法囉! ===三人行必有我師焉===
|
samho
一般會員 發表:10 回覆:19 積分:5 註冊:2002-12-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |