線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:5714
推到 Plurk!
推到 Facebook!

如何使用postmessage 送出CTRL+ALT+SHIFT+F4的組合鍵給別的AP呢??

尚未結案
samho
一般會員


發表:10
回覆:19
積分:5
註冊:2002-12-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-03 09:25:44 IP:61.222.xxx.xxx 未訂閱
各位大大,我找了好久都找不到.... 很多人的回答是用keybd_event的方式.... 但我的目標AP他是隱藏起來的.... 唯有對著他的handle丟message才是唯一之道 有誰能告訴我呢??我快發瘋了~~~~ 謝謝
arnoyu
中階會員


發表:73
回覆:88
積分:67
註冊:2003-03-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-04 01:12:44 IP:61.56.xxx.xxx 未訂閱
剛剛看到版主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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-04 11:41:39 IP:61.222.xxx.xxx 未訂閱
對不起... 您誤會我的意思了...我不是要去攔這四個key.. 我是要模擬按下這四個key給別的AP 也就是hotkey...那那個別的ap並無register hotkey 所以我不能向他用postmessage傳WM_HOTKEY的message.. 只能傳WM_KEYDOWN的message... 但這個message好像並不可以做任意組合鍵...只有幾個特定的組合鍵 如CTRL+V....    不知道能不能聽懂我的意思....< >< >
arnoyu
中階會員


發表:73
回覆:88
積分:67
註冊:2003-03-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-04 15:01:19 IP:61.56.xxx.xxx 未訂閱
剛剛找了下面這一些資料: ========================================================== 領航天使 如何用程式觸發鍵盤按鍵的事件(模擬鍵盤按鍵) 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-04 17:17:52 IP:61.222.xxx.xxx 未訂閱
arnoyu 兄 您好 感激您的熱心回答.... 基本上對方的程式我按這些熱鍵是有用的,只是我要改成用我的AP來模擬鍵盤(把他想成鍵盤被拿掉了),加上我不要用keybd_event...還有其他方法嗎?? 假如不行的話我只好用keybd_event了,只是當他縮小到右下角時不能對他下動作了
系統時間:2024-04-18 17:39:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!