Forum | | | | - page 1 - |
|  Julian Schmidt | Salut, je suis sur qui cherche pour une Hotkey-Éditer cela si bien comment alle Scankeys untestützt.
Def CreateHotkeyEdit(5) Contrôle("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
Titre de la fenêtre "Tastenkombinationionen"
Cls
Var hk& = CreateHotkeyEdit(%hwnd,300,10,250,24)
SetHotKey(hk&,65,4)
Tandis que 1
SetFocus(hk&)
WaitInput
Cls
Imprimer "Du la hâte eingegeben: "
Imprimer
Imprimer "Taste ", GetKey(hk&)
Imprimer "Modifyer ", GetModifyer(hk&)
Endwhile
dans dem Beispiel peux cela Eingabe-champ z.B. pas avec Druck tourner autour de.
Salut |
| | | | |
|  | « cette Beitrag wurde comme Solution gekennzeichnet. » | | - page 4 - |
|  Julian Schmidt |  Wow, avec dem Éditer bekommt on wirklich alle Kombinationen hin. merci iF. super l'affaire.
ici nochmal avec Erkennung aller Tasten et Readonly-Éditer
{$iq}
declare Edit&,kbdlist&
style de fenêtre 16
cls
messages de l'utilisateur wm_user+1234
Edit& = @Créer("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 {
cas iskey(vk_shift) : mor=mor+"Shift + "
cas iskey(vk_control) : mor=mor+"Strg + "
cas iskey(vk_menu) : mor=mor+"Alt + "
}
setText(edit&,mor+substr(getString(kbdlist&,selectString(kbdlist&,0,str(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
}
|
| | | | |  |
| | | | | - page 3 - |
|  Julian Schmidt | Versteh pas entier comment je cela avec Quellcode umsetze....
'{$ Cleq}
{$iq}
Déclarer Edit&
Windowstyle 16
CLS
Edit& = @Créer("Edit", %hWnd, », 10, 10, 200, 24)
Edit& = setWindowLong(hWnd,gwl_wndProc,procaddr(myLowLevelKeyboardHookProc,4))
messages de l'utilisateur wm_user+1234
initMyHook()
do{
waitInput
sélectionner uMessage
caseof wm_user+1234
imprimer &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)
}
|
| | | | |
| |  | Viel einfacher, exposition la fois:
{$cleq}
declare Edit&
style de fenêtre 16
cls
messages de l'utilisateur wm_user+1234
Edit& = @Créer("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, sieht so large bien aus.
voulais encore qui Modifer auswerten. malheureusement venez es par XPSE trop Fehlern chez IF-Bedingungen im Stile Si(N1,N2,N3).
Aussi versteh je pas comment sich maintenant aus Code, wp, lp qui Virtuelle Tastecode ergibt. Alla [...] 
{$iq}
declare Edit&
style de fenêtre 16
cls
messages de l'utilisateur wm_user+1234
Edit& = @Créer("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)))
Déclarer modifyer$
modifyer$=»'Si(iskey(VK_CONTROL),"Strg + ")+Si(iskey(VK_MENU),"Alt + ",»)+Si(iskey(VK_SHIFT),"Shift + ",»)
setText edit&,modifyer$+Str$(code)+"; "+Str$(wp)+"; "+Str$(lp)+"; "+Str$(iskey(VK_MENU))
CallNextHookEx(0, Code, wp, lp)
}
|
| | | | |
| |  | exposition la fois: [...] 
si Du si comme Funktion magst dans nativen Funktionen ensuite iff wobei cela dernier f pour Funktion steht. Ist alors ne...aucune xpse- mais "Bedienerfehler". attention hierbei chez nativen Funktionen toujours Typen tenir compte de, iff comme Funktion erwartet 3 longs.
encore un "Bedienerfehler":
tu écris dans qui nProc settext edit&, nativ seulement Funktionen statt Befehle, alors settext(edit&,... - einmal Vorwort überfliegen: [...]  um Zeit et "Ärger" trop ersparen.
Schnellkurs:
Native Funktionen peut dans Profansyntax programmiert volonté, ou bien aussi dans Assembler - es peux aussi Assembler avec Profansyntax gemischt volonté. qui Syntax dans nativen Funktionen ist einfacher comme qui qui Runtime. Beispielsweise doit Funktionen toujours comment Funktionen aufgerufen volonté, pas Sleep 50 mais sleep(50) et seule cela Komma ist Parametertrennzeichen. Befehle et Système peut seule vom Befehlssatz gestellt volonté, NProc-Funktionen sommes toujours Funktionen. Float-Konstanten doit toujours avec Dezimalpunkt comme Kommazahl ausgedrückt volonté (z.B. 1.0 statt 1) et Stringkonstanten per Anführungszeichen (z.B. "Stringinhalt").
So läufts droite cool finde je:
{$cleq}
declare Edit&,kbdlist&
style de fenêtre 16
cls
messages de l'utilisateur wm_user+1234
Edit& = @Créer("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 {
cas iskey(vk_shift) : mor=mor+"Shift+"
cas iskey(vk_control) : mor=mor+"Strg+"
cas iskey(vk_menu) : mor=mor+"Alt+"
}
setText(edit&,mor+substr(getString(kbdlist&,selectString(kbdlist&,0,str(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 nochmal geändert, hat encore quoi gefehlt.
 |
 | | | | |
| | | | - page 4 - |
| |  Julian Schmidt | oui, funktioniert déjà entier réglé.
chez Fokus sur dem Éditer wird seulement qui geschriebene Text plus qui ausgelesene Text eingesetzt. Lässt sich naturellement per Disable ou bien Readonly verhindern.
Aussi volonté Tasten comment Pfeiltasten, Druck, Bildlauf et un paire plus immernoch pas erkannt.  |
| | | | |
| |  | avec cela cet Tasten aussi marcher simple statt:
cet la ligne nutzen:
Hättest mais aussi selbst herausbekommen peut simple per:
Readonly halte je pour une gute concept ou bien Drawtext nutzen. |
| | | | |
| |  Julian Schmidt |  Wow, avec dem Éditer bekommt on wirklich alle Kombinationen hin. merci iF. super l'affaire.
ici nochmal avec Erkennung aller Tasten et Readonly-Éditer
{$iq}
declare Edit&,kbdlist&
style de fenêtre 16
cls
messages de l'utilisateur wm_user+1234
Edit& = @Créer("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 {
cas iskey(vk_shift) : mor=mor+"Shift + "
cas iskey(vk_control) : mor=mor+"Strg + "
cas iskey(vk_menu) : mor=mor+"Alt + "
}
setText(edit&,mor+substr(getString(kbdlist&,selectString(kbdlist&,0,str(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
}
|
| | | | |
| |  | Ah, super -
vlt. peux le reste plan pour Source abstellen. |
| | | | |
| |  Julian Schmidt | | | | | |
| |  | Saubere travail -
fehlt encore quelque chose comme comment Shift + Mausrand-Hinab et Strg + Droit ... 
bzw. Shift + Strg + vieux + F12 + Links&Rechtsklick + Mausrad-Hinauf.
Wers hinbekommt! ^ ^ |
| | | | |
| |  Julian Schmidt | Uff, Ächz 
si cela einer schafft, ensuite DU!  |
| | | | |
| |  | avec einem kleinen Trick réellement là Strg+vieux sur AltGr ereichbar ist, Du alors avec qui une main seulement AltGr+Shift+F12 tenir musst et qui anderen peux Du oui beide Maustasten tenir et dem Mittel- Finger cela Mausrad servir. allez alors! ^ ^ |
| | | | |
|
répondreOptions du sujet | 47.042 Views |
Themeninformationencet Thema hat 3 participant: |
|