Forum | | | | - Page 1 - |
|  Julian Schmidt | Hi, i'm on the Search to a Hotkey-Edit the so well How any Scankeys untestützt.
Def CreateHotkeyEdit(5) Control("msctls_hotkey32","",$54010200,&(2),&(3),&(4),&(5),&(1),2000,%hinstance)
Def SetHotKey(3) SendMessage(&(1),1025,MakeWord(%(2),%(3)),0)
Def GetHotKey(1) SendMessage(&(1),1026,0,0)
Def GetKey(1) LoWord(Lobyte(SendMessage(&(1),1026,0,0)))
Def GetModifyer(1) LoWord(Hibyte(SendMessage(hk&,1026,0,0)))
Def MakeWord(2) (%(1) & $FF) | ((%(2) & $FF) << 8)
Def HiByte(1) %(1) >> 8
Def LoByte(1) %(1) & $FF
Window Title "Tastenkombinationionen"
Cls
Var hk& = CreateHotkeyEdit(%hwnd,300,10,250,24)
SetHotKey(hk&,65,4)
While 1
SetFocus(hk&)
WaitInput
Cls
Print "Du have association: "
Print
Print "Taste ", GetKey(hk&)
Print "Modifyer ", GetModifyer(hk&)
EndWhile
in the example can the input-area z.B. not pressure bypass.
Greeting |
| | | | |
| | | | - Page 3 - |
|  | « this Posting watts as Solution marked. » | | - Page 4 - |
|  Julian Schmidt |  Wow, with the Edit get one really any Kombinationen there. thanks iF. class thing.
here again with recognition all Keys and Readonly-Edit
{$iq}
declare Edit&,kbdlist&
windowstyle 16
cls
userMessages wm_user+1234
Edit& = @Create("Edit", %hWnd, "", 10, 10, 200, 24)
SendMessage(Edit&,$00CF,1,0)
kbdlist&=createKbdList()
initMyHook()
do{
waitInput
}
nProc initMyHook{
return SetWindowsHookEx(13,procAddr(myLowLevelKeyboardHookProc),getModuleHandle(0),0)/*WH_KEYBOARD_LL*/
}
nProc myLowLevelKeyboardHookProc(long code,wp,lp){
global edit&,kbdlist&
ifnot long(lp,8)==128 {
code=long(lp,0)
string mor
ifnot code>159 or code==16 or code==17 or code==18 {
case iskey(vk_shift) : mor=mor+"Shift + "
case iskey(vk_control) : mor=mor+"Strg + "
case iskey(vk_menu) : mor=mor+"Alt + "
}
setText(edit&,mor+substr(getString(kbdlist&,selectString(kbdlist&,0,st(code))),2," "))
}
CallNextHookEx(0, code, wp, lp)
}
nProc selectString(long lb,srcFrom,string src){
return sendMessage(lb,lb_selectString,srcFrom,src)
}
createKbdList{
long kbdList=create("list",0)
addString(kbdList,"8 BackSpace")
addString(kbdList,"9 Tab")
addString(kbdList,"12 Entfernen")
addString(kbdList,"13 Return")
addString(kbdList,"16 Shift")
addString(kbdList,"17 Strg")
addString(kbdList,"18 Alt")
addString(kbdList,"19 Pause")
addString(kbdList,"20 Caps")
addString(kbdList,"27 Esc")
addString(kbdList,"32 Space")
addString(kbdList,"33 BildHoch")
addString(kbdList,"34 BildRunter")
addString(kbdList,"35 Ende")
addString(kbdList,"36 Pos1")
addString(kbdList,"37 Links")
addString(kbdList,"38 Hoch")
addString(kbdList,"39 Rechts")
addString(kbdList,"40 Runter")
addString(kbdList,"41 Select")
addString(kbdList,"42 Druck")
addString(kbdList,"43 Execute")
addString(kbdList,"44 Druck")
addString(kbdList,"45 Einfg")
addString(kbdList,"46 Entf")
addString(kbdList,"47 Hilfe")
addString(kbdList,"48 0")
addString(kbdList,"49 1")
addString(kbdList,"50 2")
addString(kbdList,"51 3")
addString(kbdList,"52 4")
addString(kbdList,"53 5")
addString(kbdList,"54 6")
addString(kbdList,"55 7")
addString(kbdList,"56 8")
addString(kbdList,"57 9")
addString(kbdList,"65 A")
addString(kbdList,"66 B")
addString(kbdList,"67 C")
addString(kbdList,"68 D")
addString(kbdList,"69 E")
addString(kbdList,"70 F")
addString(kbdList,"71 G")
addString(kbdList,"72 H")
addString(kbdList,"73 I")
addString(kbdList,"74 J")
addString(kbdList,"75 K")
addString(kbdList,"76 L")
addString(kbdList,"77 M")
addString(kbdList,"78 N")
addString(kbdList,"79 O")
addString(kbdList,"80 P")
addString(kbdList,"81 Q")
addString(kbdList,"82 R")
addString(kbdList,"83 S")
addString(kbdList,"84 T")
addString(kbdList,"85 U")
addString(kbdList,"86 V")
addString(kbdList,"87 W")
addString(kbdList,"88 X")
addString(kbdList,"89 Y")
addString(kbdList,"90 Z")
addString(kbdList,"96 0")
addString(kbdList,"97 1")
addString(kbdList,"98 2")
addString(kbdList,"99 3")
addString(kbdList,"100 4")
addString(kbdList,"101 5")
addString(kbdList,"102 6")
addString(kbdList,"103 7")
addString(kbdList,"104 8")
addString(kbdList,"105 9")
addString(kbdList,"106 *")
addString(kbdList,"107 +")
addString(kbdList,"109 -")
addString(kbdList,"110 ,")
addString(kbdList,"111 /")
addString(kbdList,"112 F1")
addString(kbdList,"113 F2")
addString(kbdList,"114 F3")
addString(kbdList,"115 F4")
addString(kbdList,"116 F5")
addString(kbdList,"117 F6")
addString(kbdList,"118 F7")
addString(kbdList,"119 F8")
addString(kbdList,"120 F9")
addString(kbdList,"121 F10")
addString(kbdList,"122 F11")
addString(kbdList,"123 F12")
addString(kbdList,"124 F13")
addString(kbdList,"125 F14")
addString(kbdList,"126 F15")
addString(kbdList,"127 F16")
addString(kbdList,"128 F17")
addString(kbdList,"129 F18")
addString(kbdList,"130 F19")
addString(kbdList,"131 F20")
addString(kbdList,"132 F21")
addString(kbdList,"133 F22")
addString(kbdList,"134 F23")
addString(kbdList,"135 F24")
addString(kbdList,"160 Shift")
addString(kbdList,"161 Shift")
addString(kbdList,"162 Strg")
addString(kbdList,"163 Strg")
addString(kbdList,"164 Alt")
addString(kbdList,"165 Alt")
return kbdList
}
|
| | | | |  |
| |  | which warning?
>> vorhergedrückten Keys remember, or?
No, Iskey overlooking? |
| | | | |
| |  Julian Schmidt |
| | | | |
| |  | same time yet a Bug in the Remarks-recognition the XPSE found the with /*...*//*...*/ appears -
have I on The ToDo staid.
so GEHTS ("natürlich"):
'URL: https://XProfan.com/intl/de/forum/hotkey-edit-with-all-scankeys/#n
{$cleq}
windowstyle 16
cls
userMessages wm_user+1234
initMyHook()
do{
waitInput
select uMessage
caseof wm_user+1234
print &uwParam,&ulParam
endSelect
}
nProc initMyHook{
return SetWindowsHookEx(13,procAddr(myLowLevelKeyboardHookProc),getModuleHandle(0),0)/*WH_KEYBOARD_LL*/
}
nProc myLowLevelKeyboardHookProc(long code,wp,lp){
casenot long(lp,8) : casenot (long(lp,0)==162) : sendMessage(hWnd,wm_user+1234,long(lp,0),iskey(VK_CONTROL)*2+iskey(VK_MENU))
CallNextHookEx(0, code, wp, lp)
}
|
| | | | |
| |  Julian Schmidt | Okay shining already relatively well To functions.
Have The list meanwhile too circa Invoice values extended.
nProc myLowLevelKeyboardHookProc(long code,wp,lp){
casenot long(lp,8) : casenot (long(lp,0)==162) : sendMessage(hWnd,wm_user+1234,long(lp,0),iskey(VK_SHIFT)+(2*iskey(VK_CONTROL))+(4*iskey(VK_MENU)))
CallNextHookEx(0, code, wp, lp)
}
it shining yet some Problems with the recognition the old-Button (VK_MENU) To give. by me functions unfortunately not soetwas How old+X. and yet neither any Keys How z.B. Pfeiltasten, pressure, Bildlauf and a couple More not. |
| | | | |
| |  | Teste time in the nProc whether The Keys in the nProc arrived,
z.B. by messagebox(0,"text","text",0) |
| | | | |
| |  Julian Schmidt | come as it looks on. Sowohl by Iskey as well as by User Message.
'{$cleq}
{$iq}
windowstyle 16
cls
userMessages wm_user+1234
initMyHook()
do{
waitInput
select uMessage
caseof wm_user+1234
print &uwParam,&ulParam
endSelect
}
nProc initMyHook{
return SetWindowsHookEx(13,procAddr(myLowLevelKeyboardHookProc),getModuleHandle(0),0)/*WH_KEYBOARD_LL*/
}
nProc myLowLevelKeyboardHookProc(long code,wp,lp){
Casenot long(lp,8) : casenot (long(lp,0)==162) : sendMessage(hWnd,wm_user+1234,long(lp,0),iskey(VK_SHIFT)+(2*iskey(VK_CONTROL))+(4*iskey(VK_MENU)))
messagebox(0,Str $(code)+"; "+Str $(wp)+"; "+Str $(lp),Str $(iskey(VK_MENU)),0)
CallNextHookEx(0, code, wp, lp)
}
|
| | | | |
| |  | means "hängt" the Mainwindow to the processing the Button -
I have adhoc no idea How one this Umstand simply eliminating can.
Perhaps, since the nProc Yes The Messages correctly receiving, same from the nProc
one Edit or Static with the Info befüllen. there the hookproc not simply yet
additional Info How Handles (z.B. one Edits) To übermitteln are, there windows
The Proc Yes aufruft and the Parameter certainly, could you to "global" ( [...] )
help. so can in a nProc lesend on global-declared variables
grab. |
| | | | |
| |  Julian Schmidt | Versteh not integrally How I with the Source umsetze....
'{$cleq}
{$iq}
Declare Edit&
Windowstyle 16
CLS
Edit& = @Create("Edit", %hWnd, "", 10, 10, 200, 24)
Edit& = setWindowLong(hWnd,gwl_wndProc,procaddr(myLowLevelKeyboardHookProc,4))
userMessages wm_user+1234
initMyHook()
do{
waitInput
select uMessage
caseof wm_user+1234
print &uwParam,&ulParam
endSelect
}
nProc initMyHook{
return SetWindowsHookEx(13,procAddr(myLowLevelKeyboardHookProc),getModuleHandle(0),0)/*WH_KEYBOARD_LL*/
}
nProc myLowLevelKeyboardHookProc(long code,wp,lp){
global owp&
Casenot long(lp,8) : casenot (long(lp,0)==162) : sendMessage(hWnd,wm_user+1234,long(lp,0),iskey(VK_SHIFT)+(2*iskey(VK_CONTROL))+(4*iskey(VK_MENU)))
messagebox(0,Str $(code)+"; "+Str $(wp)+"; "+Str $(lp),Str $(iskey(VK_MENU)),0)
CallNextHookEx(0, code, wp, lp)
}
|
| | | | |
| |  | plenty plainer, look time:
{$cleq}
declare Edit&
windowstyle 16
cls
userMessages wm_user+1234
Edit& = @Create("Edit", %hWnd, "", 10, 10, 200, 24)
initMyHook()
do{
waitInput
}
nProc initMyHook{
return SetWindowsHookEx(13,procAddr(myLowLevelKeyboardHookProc),getModuleHandle(0),0)/*WH_KEYBOARD_LL*/
}
nProc myLowLevelKeyboardHookProc(long code,wp,lp){
global edit&
//Casenot long(lp,8) : casenot (long(lp,0)==162) : sendMessage(hWnd,wm_user+1234,long(lp,0),iskey(VK_SHIFT)+(2*iskey(VK_CONTROL))+(4*iskey(VK_MENU)))
setText(edit&,Str $(code)+"; "+Str $(wp)+"; "+Str $(lp)+"; "+Str $(iskey(VK_MENU)))
CallNextHookEx(0, code, wp, lp)
}
|
| | | | |
| |  Julian Schmidt | OK, sees so far well from.
wished yet The Modifer evaluate. unfortunately comes it through XPSE To Fehlern with IF-terms in the Stile If(n1,n2,n3).
Also versteh I do not How itself now from code, wp, lp the virtual Tastecode yields. Alla [...] 
{$iq}
declare Edit&
windowstyle 16
cls
userMessages wm_user+1234
Edit& = @Create("Edit", %hWnd, "", 10, 10, 200, 24)
initMyHook()
do{
waitInput
}
nProc initMyHook{
return SetWindowsHookEx(13,procAddr(myLowLevelKeyboardHookProc),getModuleHandle(0),0)/*WH_KEYBOARD_LL*/
}
nProc myLowLevelKeyboardHookProc(long code,wp,lp){
global edit&
//Casenot long(lp,8) : casenot (long(lp,0)==162) : sendMessage(hWnd,wm_user+1234,long(lp,0),iskey(VK_SHIFT)+(2*iskey(VK_CONTROL))+(4*iskey(VK_MENU)))
Declare modifyer$
modifyer$=""'If(iskey(VK_CONTROL),"Strg + ")+If(iskey(VK_MENU),"Alt + ","")+If(iskey(VK_SHIFT),"Shift + ","")
setText edit&,modifyer$+Str $(code)+"; "+Str $(wp)+"; "+Str $(lp)+"; "+Str $(iskey(VK_MENU))
CallNextHookEx(0, code, wp, lp)
}
|
| | | | |
| |  | look time: [...] 
If you if as function like in nativen functions then iff where the latest f for function standing. So no xpse- separate "Bedienerfehler". deference hierbei with nativen functions always Types mind, iff as function expects 3 longs.
another "Bedienerfehler":
You write in the nProc settext edit&, nativ only functions instead of command, means settext(edit&,... - once preface überfliegen: [...]  circa Time and "Ärger" To save.
Schnellkurs:
Native functions can in Profansyntax program go, or in Assembler - it can also Assembler with Profansyntax mixed go. The Syntax in nativen functions is plainer as The the Runtime. in example must functions always How functions called go, not Sleep 50 separate sleep(50) and only the comma is Parametertrennzeichen. command and System-Variables can only of Functions set go, Nproc-functions are always functions. Float-Konstanten must always with Dezimalpunkt as Kommazahl framed go (z.B. 1.0 instead of 1) and Stringkonstanten by quotation marks (z.B. "Stringinhalt").
so runs right calm find I:
{$cleq}
declare Edit&,kbdlist&
windowstyle 16
cls
userMessages wm_user+1234
Edit& = @Create("Edit", %hWnd, "", 10, 10, 200, 24)
kbdlist&=createKbdList()
initMyHook()
do{
waitInput
}
nProc initMyHook{
return SetWindowsHookEx(13,procAddr(myLowLevelKeyboardHookProc),getModuleHandle(0),0)/*WH_KEYBOARD_LL*/
}
nProc myLowLevelKeyboardHookProc(long code,wp,lp){
global edit&,kbdlist&
ifnot long(lp,8) {
code=long(lp,0)
string mor
ifnot code>159 or code==16 or code==17 or code==18 {
case iskey(vk_shift) : mor=mor+"Shift+"
case iskey(vk_control) : mor=mor+"Strg+"
case iskey(vk_menu) : mor=mor+"Alt+"
}
setText(edit&,mor+substr(getString(kbdlist&,selectString(kbdlist&,0,st(code)+" ")),2," "))
}
CallNextHookEx(0, code, wp, lp)
}
nProc selectString(long lb,srcFrom,string src){
return sendMessage(lb,lb_selectString,srcFrom,src)
}
createKbdList{
long kbdList=create("list",0)
addString(kbdList,"8 BackSpace")
addString(kbdList,"9 Tab")
addString(kbdList,"12 Entfernen")
addString(kbdList,"13 Return")
addString(kbdList,"16 Shift")
addString(kbdList,"17 Strg")
addString(kbdList,"18 Alt")
addString(kbdList,"19 Pause")
addString(kbdList,"20 Caps")
addString(kbdList,"27 Esc")
addString(kbdList,"32 Space")
addString(kbdList,"33 BildHoch")
addString(kbdList,"34 BildRunter")
addString(kbdList,"35 Ende")
addString(kbdList,"36 Pos1")
addString(kbdList,"37 Links")
addString(kbdList,"38 Hoch")
addString(kbdList,"39 Rechts")
addString(kbdList,"40 Runter")
addString(kbdList,"41 Select")
addString(kbdList,"42 Druck")
addString(kbdList,"43 Execute")
addString(kbdList,"44 Druck")
addString(kbdList,"45 Einfg")
addString(kbdList,"46 Entf")
addString(kbdList,"47 Hilfe")
addString(kbdList,"48 0")
addString(kbdList,"49 1")
addString(kbdList,"50 2")
addString(kbdList,"51 3")
addString(kbdList,"52 4")
addString(kbdList,"53 5")
addString(kbdList,"54 6")
addString(kbdList,"55 7")
addString(kbdList,"56 8")
addString(kbdList,"57 9")
addString(kbdList,"65 A")
addString(kbdList,"66 B")
addString(kbdList,"67 C")
addString(kbdList,"68 D")
addString(kbdList,"69 E")
addString(kbdList,"70 F")
addString(kbdList,"71 G")
addString(kbdList,"72 H")
addString(kbdList,"73 I")
addString(kbdList,"74 J")
addString(kbdList,"75 K")
addString(kbdList,"76 L")
addString(kbdList,"77 M")
addString(kbdList,"78 N")
addString(kbdList,"79 O")
addString(kbdList,"80 P")
addString(kbdList,"81 Q")
addString(kbdList,"82 R")
addString(kbdList,"83 S")
addString(kbdList,"84 T")
addString(kbdList,"85 U")
addString(kbdList,"86 V")
addString(kbdList,"87 W")
addString(kbdList,"88 X")
addString(kbdList,"89 Y")
addString(kbdList,"90 Z")
addString(kbdList,"96 0")
addString(kbdList,"97 1")
addString(kbdList,"98 2")
addString(kbdList,"99 3")
addString(kbdList,"100 4")
addString(kbdList,"101 5")
addString(kbdList,"102 6")
addString(kbdList,"103 7")
addString(kbdList,"104 8")
addString(kbdList,"105 9")
addString(kbdList,"106 *")
addString(kbdList,"107 +")
addString(kbdList,"109 -")
addString(kbdList,"110 ,")
addString(kbdList,"111 /")
addString(kbdList,"112 F1")
addString(kbdList,"113 F2")
addString(kbdList,"114 F3")
addString(kbdList,"115 F4")
addString(kbdList,"116 F5")
addString(kbdList,"117 F6")
addString(kbdList,"118 F7")
addString(kbdList,"119 F8")
addString(kbdList,"120 F9")
addString(kbdList,"121 F10")
addString(kbdList,"122 F11")
addString(kbdList,"123 F12")
addString(kbdList,"124 F13")
addString(kbdList,"125 F14")
addString(kbdList,"126 F15")
addString(kbdList,"127 F16")
addString(kbdList,"128 F17")
addString(kbdList,"129 F18")
addString(kbdList,"130 F19")
addString(kbdList,"131 F20")
addString(kbdList,"132 F21")
addString(kbdList,"133 F22")
addString(kbdList,"134 F23")
addString(kbdList,"135 F24")
addString(kbdList,"160 Shift")
addString(kbdList,"161 Shift")
addString(kbdList,"162 Strg")
addString(kbdList,"163 Strg")
addString(kbdList,"164 Alt")
addString(kbdList,"165 Alt")
return kbdList
}
Nachtrag: code again changed, has yet what gefehlt.
 |
 | | | | |
| |  Julian Schmidt | Yes, functions already integrally tidy.
with Fokus on the Edit becomes only the written Text plus the ausgelesene Text inserted. let itself naturally by Disable or Readonly prevent.
Also go Keys How Pfeiltasten, pressure, Bildlauf and a couple More immernoch not recognized.  |
| | | | |
|
AnswerTopic-Options | 46.269 Views |
Themeninformationenthis Topic has 3 subscriber: |