Forum | | | | - Seite 1 - |
|  Julian Schmidt | Hallo, Ich will das Ganze um SetHotkey, GetVKey, GetModifyer erweitern.
Kommt bei mir die Fehlermeldung.

{$iq}
Declare HKEdit&,kbdlist&, modifyerList&
Declare Edit&[]
kbdlist&=createKbdList()
modifyerList&=createModifyerList()
//
windowstyle 16
cls
whileloop 5
Edit&[&loop-1] = Create("Edit", %hWnd, "", 10, 10+(30*(&loop-1)), 200, 24)
SendMessage(Edit&[&loop-1],$00CF,1,0)
Endwhile
SetHotkey(Edit&[0],13,1)
initMyHook()
//
userMessages wm_user+1234
//
do{
waitInput
HKEdit&=0
whileloop 5 {
Case getfocus(Edit&[&loop-1]) : HKEdit&=Edit&[&loop-1]
}
}
nProc initMyHook{
return SetWindowsHookEx(13,procAddr(myLowLevelKeyboardHookProc),getModuleHandle(0),0)/*WH_KEYBOARD_LL*/
}
nProc myLowLevelKeyboardHookProc(long code,wp,lp){
global HKEdit&,kbdlist&
if HKEdit& {
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(HKEdit&,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
}
createModifyerList{
long modifyerList=create("list",0)
addString(modifyerList,"")
addString(modifyerList,"Shift + ")
addString(modifyerList,"Strg + ")
addString(modifyerList,"Strg + Shift + ")
addString(modifyerList,"Alt + ")
addString(modifyerList,"Alt + Shift + ")
addString(modifyerList,"Strg + Alt + ")
addString(modifyerList,"Strg + Shift + Alt + ")
return modifyerList
}
SetHotKey(long hdl,key, modifyer){
strings txt
While 0,GetCount(kbdlist&)+1,1 {
If Val(SubStr$(GetString$(kbdList&,&loop),1," "))=key {
txt = GetString$(modifyerList&,modifyer) + GetString$(kbdList&,&loop)
}
}
Settext(hdl,txt)
Return txt
}
Wenns es bessere Vorschläge gibt, wie man das Lösen könnte, bin ich auch dankbar.
Gruß
Julian |
 | | | | |
| | | | | - Seite 2 - |
|  Julian Schmidt | Und auch SetHotKey. Bekomme aber nicht GetVKey zum laufen.
{$iq}
Declare HKEdit&,kbdlist&, modifyerList&, count&
Declare Edit&[]
kbdlist&=createKbdList()
modifyerList&=createModifyerList()
windowstyle 16
cls
Randomize
whileloop 5
Edit&[&loop-1] = Create("Edit", %hWnd, "", 10, 30+(30*(&loop-1)), 200, 24)
SendMessage(Edit&[&loop-1],$00CF,1,0)
SetHotkey(Edit&[&loop-1],RND(7), Val(SubStr$(GetString$(kbdlist&,RND(GetCount(kbdlist&)+1)),1," ")))
EndWhile
initMyHook()
userMessages wm_user+1234
do{
Waitinput
HKEdit&=0
cls
print "VKey|"+Str$(GetVKey(Edit&[count&]))
print "Modifyer|"+Str$(GetModifyer(Edit&[count&]))
inc count&
Case count&>=5 : break
whileloop 5 {
Case getfocus(Edit&[&loop-1]) : HKEdit&=Edit&[&loop-1]
}
}
end
nProc initMyHook{
return SetWindowsHookEx(13,procAddr(myLowLevelKeyboardHookProc),getModuleHandle(0),0)/*WH_KEYBOARD_LL*/
}
nProc myLowLevelKeyboardHookProc(long code,wp,lp){
global HKEdit&,kbdlist&
if HKEdit& {
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(HKEdit&,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
}
createModifyerList{
long modifyerList=create("list",0)
addString(modifyerList,"Shift + ")
addString(modifyerList,"Strg + ")
addString(modifyerList,"Strg + Shift + ")
addString(modifyerList,"Alt + ")
addString(modifyerList,"Alt + Shift + ")
addString(modifyerList,"Strg + Alt + ")
addString(modifyerList,"Strg + Shift + Alt + ")
return modifyerList
}
SetHotKey(long hdl,modifyer,key_){
Settext hdl,GetString(modifyerList&,modifyer-1)+substr(getString(kbdlist&,selectString(kbdlist&,0,str(key_)+" ")),2," ")
}
GetVKey(long hdl){
Return getString(kbdlist&,SelectString(kbdList&,-1," "+SubStr$(Gettext(hdl),-1," + ")))
}
GetModifyer(long hdl){
Return SelectString(modifyerList&,-1,Del$(Gettext(hdl),Len(Gettext(hdl)," + "),1," + "))+1
}
|
| | | | |
| |  | Das wird so auch nicht funktionieren, Du kanst die Tabelle ja nur nach den ersten Vorkommen durchsuchen und nicht etwa ob was mitten in einem Eintrag steht - zumindest geht das mit selectString nicht.
Machst Du einfach eine zweite Tabelle (würde ich automatisch generieren) die eben zu Beginn mit dem Buchstaben beginnt und danach den Wert. |
| | | | |
| |  Julian Schmidt | Bevor ich ne zweite Tabelle mache, nehm ich lieber ne Schleife. Lese von jeder Zeile den Text ein und vergleiche solange den 2. Teilstring bis ich den Vkey gefunden hab oder die Tabelle durchsucht ist.
Aber nicht mehr heute. Erst morgen. War für heute genug Xprofan.  |
| | | | |
| |  | Das wäre aber nicht so sinnvoll weil Du damit die Rechenzeit auf jede Taste verlagerst statt einmal anfangs zu Programmbeginn und eine schnellere Suche als die von M$ per selectString kann man nicht programmieren bzw. kann man schon aber derart angepasster Aufwandt macht hierzu einfach keinen Sinn. |
| | | | |
| |  Julian Schmidt | Okay, erstell ich nun immer beim Progammstart. So funktioniert es jetzt.
{$iq}
Declare HKEdit&,kbdlist&, kbdlist_&, modifyerList&, count&
Declare Edit&[]
kbdlist&=createKbdList()
kbdlist_&=createKbdList_()
modifyerList&=createModifyerList()
windowstyle 16
cls
Randomize
whileloop 5
Edit&[&loop-1] = Create("Edit", %hWnd, "", 10, 30+(30*(&loop-1)), 200, 24)
SendMessage(Edit&[&loop-1],$00CF,1,0)
SetHotkey(Edit&[&loop-1],RND(7), Val(SubStr$(GetString$(kbdlist&,RND(GetCount(kbdlist&)+1)),1," ")))
EndWhile
initMyHook()
userMessages wm_user+1234
do{
Waitinput
HKEdit&=0
CLS
If count&<5 {
print "VKey|"+Str$(GetVKey(Edit&[count&]))
print "Modifyer|"+Str$(GetModifyer(Edit&[count&]))
}
inc count&
whileloop 5 {
Case getfocus(Edit&[&loop-1]) : HKEdit&=Edit&[&loop-1]
}
}
end
nProc initMyHook{
return SetWindowsHookEx(13,procAddr(myLowLevelKeyboardHookProc),getModuleHandle(0),0)/*WH_KEYBOARD_LL*/
}
nProc myLowLevelKeyboardHookProc(long code,wp,lp){
global HKEdit&,kbdlist&,modifyerList&
if HKEdit& {
ifnot long(lp,8)==128 {
code=long(lp,0)
string mor
casenot code>159 or code==16 or code==17 or code==18 : mor=GetString(modifyerList&,iskey(vk_shift)+(iskey(vk_control)*2)+(iskey(vk_menu)*4)-1)
setText(HKEdit&,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
}
createKbdList_{
long kbdList_=create("list",0)
whileloop 0,getcount(kbdlist&) {
addString(kbdList_,SubStr$(GetString$(kbdlist&,&loop),2," ")+" "+SubStr$(GetString$(kbdlist&,&loop),1," "))
}
Return kbdList_
}
createModifyerList{
long modifyerList=create("list",0)
addString(modifyerList,"Shift + ")
addString(modifyerList,"Strg + ")
addString(modifyerList,"Strg + Shift + ")
addString(modifyerList,"Alt + ")
addString(modifyerList,"Alt + Shift + ")
addString(modifyerList,"Strg + Alt + ")
addString(modifyerList,"Strg + Shift + Alt + ")
return modifyerList
}
SetHotKey(long hdl,modifyer,key_){
Settext hdl,GetString(modifyerList&,modifyer-1)+substr(getString(kbdlist&,selectString(kbdlist&,0,str(key_)+" ")),2," ")
}
GetVKey(long hdl){
Return getString(kbdlist&,SelectString(kbdList_&,-1,SubStr$(Gettext(hdl),-1," + ")+" "))
}
GetModifyer(long hdl){
Return SelectString(modifyerList&,-1,Del$(Gettext(hdl),Len(Gettext(hdl)," + "),1," + "))+1
}
Noch irgendwelche Anmerkungen? Mir gefallen z.B. die zwei Procs und Variablen createKbdList nicht so. Kann ich das irgendwie clever auf eins minimieren.
Gruß |
| | | | |
| |  | Ob das in dem Fall "sinnvoll" ist mal hingestellt aber ich verpacke inhaltlich Gleiches gerne in Pseudoklassen,
also wenn Du z.B. zwei Keyboardlisten hast dann böte sich sowas an wie:
wobei man dann schreiben kann:
wobei man dann nur 1 Variable kbLists hat aus der man den Rest ziehen kann z.B. per:
was man wiederum bei größeren solcher "Klassen" übertreiben kann indem man für Offsets Konstanten erfindet wie z.B.:
Nach dem Prinzip hat man nur noch 1 Handle aus dem man alle anderen Handles ziehen kann was unter Umständen durchaus Sinn machen kann z.B. wenn man z.B. als gwl_userdata nur 1 Wert mitliefern kann. Nach dem Prinzip macht M$ das nicht anders bzw. baut seine Strukturen auch so auf.
In Deinem Beispiel imho jedoch unnötiger Mehraufwand auch für den Computer/ ergo unnötig hoher Stromverbrauch/ Systemlast. |
| | | | |
| |  Julian Schmidt | Das heißt, du emphielst es so zu lassen!? |
| | | | |
| |  | Fast,
statt:
würde ich vermutlich eher: [...] schreiben.
Bei dem kleinen Code macht solch "klassifizierung" imho aber nicht wirklich Sinn, vlt. anders wenn man gleich von Anfang an so tippt. |
| | | | |
| |  Julian Schmidt | Bin imho nicht sicher ob das richtig ist.
{$iq}
Declare HKEdit&,count&
Declare Edit&[]
long kbd.hList.ordToKeyname= create.ordToKeynameList(),\
kbd.hList.keynameToOrd= create.keynameToOrdList(),\
kbd.hList.modyfier= create.modyfierList()
windowstyle 16
cls
Randomize
whileloop 0,4
Edit&[&loop] = Create("Edit", %hWnd, "", 10, 30+(30*(&loop)), 200, 24)
SendMessage(Edit&[&loop],$00CF,1,0)
SetHotkey(Edit&[&loop],RND(7), Val(SubStr$(GetString$(kbd.hList.ordToKeyname,RND(GetCount(kbd.hList.ordToKeyname)+1)),1," ")))
EndWhile
initMyHook()
userMessages wm_user+1234
do{
Waitinput
HKEdit&=0
CLS
If count&<5 {
print "VKey|"+Str$(GetVKey(Edit&[count&]))
print "Modifyer|"+Str$(GetModifyer(Edit&[count&]))
}
inc count&
whileloop 5 {
Case getfocus(Edit&[&loop-1]) : HKEdit&=Edit&[&loop-1]
}
}
end
nProc initMyHook{
return SetWindowsHookEx(13,procAddr(myLowLevelKeyboardHookProc),getModuleHandle(0),0)/*WH_KEYBOARD_LL*/
}
nProc myLowLevelKeyboardHookProc(long code,wp,lp){
global HKEdit&,kbd.hList.ordToKeyname,kbd.hList.modyfier
if HKEdit& {
ifnot long(lp,8)==128 {
code=long(lp,0)
string mor
casenot code>159 or code==16 or code==17 or code==18 : mor=GetString(kbd.hList.modyfier,iskey(vk_shift)+(iskey(vk_control)*2)+(iskey(vk_menu)*4)-1)
setText(HKEdit&,mor+substr(getString(kbd.hList.ordToKeyname,selectString(kbd.hList.ordToKeyname,0,str(code)+" ")),2," "))
}
}
CallNextHookEx(0, Code, wp, lp)
}
nProc selectString(long lb,srcFrom,string src){
return sendMessage(lb,lb_selectString,srcFrom,src)
}
create.ordToKeynameList{
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
}
create.keynameToOrdList(){
long kbdList_=create("list",0)
whileloop 0,getcount(kbd.hList.ordToKeyname) {
addString(kbdList_,SubStr$(GetString$(kbd.hList.ordToKeyname,&loop),2," ")+" "+SubStr$(GetString$(kbd.hList.ordToKeyname,&loop),1," "))
}
Return kbdList_
}
create.modyfierList{
long modifyerList=create("list",0)
addString(modifyerList,"Shift + ")
addString(modifyerList,"Strg + ")
addString(modifyerList,"Strg + Shift + ")
addString(modifyerList,"Alt + ")
addString(modifyerList,"Alt + Shift + ")
addString(modifyerList,"Strg + Alt + ")
addString(modifyerList,"Strg + Shift + Alt + ")
return modifyerList
}
SetHotKey(long hdl,modifyer,key_){
Settext hdl,GetString(kbd.hList.modyfier,modifyer-1)+substr(getString(kbd.hList.ordToKeyname,selectString(kbd.hList.ordToKeyname,0,str(key_)+" ")),2," ")
}
GetVKey(long hdl){
Return getString(kbd.hList.ordToKeyname,SelectString(kbd.hList.keynameToOrd,-1,SubStr$(Gettext(hdl),-1," + ")+" "))
}
GetModifyer(long hdl){
Return SelectString(kbd.hList.modyfier,-1,Del$(Gettext(hdl),Len(Gettext(hdl)," + "),1," + "))+1
}
Kommt
HOOK2.asm(453) : Error A2102: Symbol not defined : KBD HOOK2.asm(610) : Error A2102: Symbol not defined : KBD HOOK2.asm(615) : Error A2102: Symbol not defined : KBD  Gefällt mir von der Schreibweise aber wesentlich besser. |
| | | | |
| |  | Ich schreibs ja: [...] 
Deklariert in nativen Funktionen Long-Variablen mit Postfix & und initialisiert die Variablen mit den Werten gleichnamiger globaler per Declare deklarierter Variablen.
Globale Speicher für nProcs benötigen diese besondere Schreibweise, das ist eben wiederum ein spezieller Fall.
Du könntest:
|
| | | | |
| |  Julian Schmidt | Ich glaub ich bleib dann lieber bei der alten Variante. So tut es das Code nur Endlos kompliziert machen. |
| | | | |
| | | | - Seite 3 - |
| |  | | | | | |
|
AntwortenThemenoptionen | 27.102 Betrachtungen |
ThemeninformationenDieses Thema hat 2 Teilnehmer: |
|