我想在多個視窗都注冊熱鍵
我在A、B 兩個視窗都注冊了熱鍵,如果 單獨 打開任意一個視窗,熱鍵 沒有任何問題。
如果 我先打開了A視窗,在沒有關閉的情況下 在打開 B視窗的時候 ,B視窗會提示注冊失敗!
代碼 如果下;謝謝了
//API以下宣告如下:
FUNCTION boolean RegisterHotKey(long hwnd,long id,long fsModifiers,long vk) LIBRARY "user32.dll" alias for "RegisterHotKey;ansi"
Function boolean UnregisterHotKey(long hwnd , long id ) library 'user32' alias for 'UnregisterHotKey;ansi'
FUNCTION long GlobalAddAtom(ref string lpString) LIBRARY "kernel32.dll" ALIAS FOR "GlobalAddAtomA;ansi"
FUNCTION long GlobalDeleteAtom(long nAtom ) Library "kernel32" Alias for "GlobalDeleteAtom;ansi"
////注冊熱鍵F1~F5
Integer li_ret
Integer i
String ls_dt, ls_err
For i = 1 To 11
Sleep(0.1)
ls_dt =string(rand(100)) + string(i) + String(Today(),"yyyy-mm-dd hh:mm:ss:fff")
//messagebox('',ls_dt)
//"AtomId" + ls_out + String(Today(),"yyyy-mm-dd hh:mm:ss:fff")
AtomId[i] = GlobalAddAtom(ls_dt) //得到惟一的ID,保證不和其他應用程式發生沖突
// li_ret =RegisterHotKey(Handle(This), AtomId[i], 0 , 111 + i) // 111為‘F1’,注冊的熱鍵從F1 開始
if RegisterHotKey(Handle(This), AtomId[i],0, 111 + i)=false then
If li_ret = 0 Then ls_err += " F" + String(i)
end if
Next
If ls_err <> '' Then MessageBox( "警告", "功能鍵"+ls_err+" 注冊失敗!" )
Integer i
If Message.Number = 786 Then
For i = 1 To 11
If wParam = AtomId[i] Then
of_set_hotkey('F'+String(i))
Exit
End If
Next
End If
Choose Case as_keyName
Case "F1"
messagebox("",'F1')
case "F2"
messagebox("",'F2')
case "F3"
messagebox("",'F3')
Case "F4"
messagebox("",'F4')
End Choose
誰能告訴我一下 哪里有問題謝謝了
uj5u.com熱心網友回復:
你這種方式,沒試過。用鉤子函式是可以的,不過需要用其他工具先寫個DLL。
uj5u.com熱心網友回復:
您好 打擾一下 能把你的那個鉤子函式 使用的方法 告訴我一下嗎?謝謝了 如果 方便 請加一下我的QQ 2627901607
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/14760.html
標籤:API 調用
