Forum | | | |  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 |
 | | | | |
| |  | Habs nur überflogen aber die Fehlermeldung stimmt da in procs (nicht nProcs!) SetText ein Befehl ist und keine Funktion, also setText hdl,txt statt setText(hdl,txt). In nProcs ists einfacher da ich mich entschieden habe dass es eben "nur" Funktionen gibt damit es dort zumindest solche Verwechselungen (mal Befehl mal Funktion) nicht gibt. |
| | | | |
| |  Julian Schmidt | Jo, bin inzwischen ein kleines bischen weiter. War nur so das mit Xprofan-Syntax ne andere Fehermeldung kam. Und ich lieber bei XPSE-Syntax blieb.
Werd von XPSE leider immernoch mit Fehlermeldungen überhäuft. Hab schon versucht durch Fehlerbehandlung den Problemen auf die Schliche zu kommen (evtl. deswegen inzwischen etwas unübersichtlich). Hab sogar überprüft, ob das was ich vorhabe mit reinen XProfan so klappt wie ich dachte. Ich denke inzwischen das es irgendwie mit den Variablen in C-Syntax oder meinen Array in "XProfan-normal-Syntax" zusammenhängt.
Komm irgendwie an der Stelle nicht weiter. Werfe erstmal die beiden Quelltexte sei es mit XPSE als auch mit reinen XProfan hier herein.
{$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
Settext Edit&[0],"Strg + Alt + A"
'print SetHotkey(Edit&[1],4,13)
'print GetVKey(Edit&[0])
'print GetModifyer(Edit&[0])
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)+Space(1))),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){
strings txt
txt = GetString(modifyerList&,modifyer-1)+substr(getString(kbdlist&,selectString(kbdlist&,0,str(key)+Space(1))),2,Space(1))
Settext hdl,txt
'Settext(hdl,txt)
Return txt
}
GetVKey(long hdl){
Messagebox(SubStr$(Gettext(hdl),-1," + "),"",0)'Die Zeile gibt was anders aus...
Messagebox(SubStr(Gettext(hdl),-1," + "),"",0)'...als diese Zeile! Hääääääääääääääää?
Messagebox(Str(SelectString(kbdList&,-1,Space(1)+SubStr$(Gettext(hdl),-1," + "))),"",0)
Messagebox(getString(kbdlist&,SelectString(kbdList&,-1,Space(1)+SubStr$(Gettext(hdl),-1," + "))),"",0)
}
GetModifyer(long hdl){
Return SelectString(modifyerList&,-1,Del(Gettext(hdl),Len(Gettext(hdl)," + "),1," + "))+1
}
CLS
Var kbdList&=createkbdList&()
Var modifyerList&=createModifyerList()
Var Edit& = Create("Edit", %hWnd, "Strg + Alt + A", 100, 100, 200, 24)
print "Vkey|"+Str$(GetVKey(Edit&))
print "Modifyer|"+Str$(GetModifyer(Edit&))
Waitinput
cls
SetHotKey(Edit&,4,13)
print "Vkey|"+Str$(GetVKey(Edit&))
print "Modifyer|"+Str$(GetModifyer(Edit&))
Waitinput
Proc GetVKey
Parameters hdl&
print SubStr$(Gettext$(hdl&),-1," + ")
print SelectString(kbdList&,-1,Space$(1)+SubStr$(Gettext$(hdl&),-1," + "))
print Getstring$(kbdList&,SelectString(kbdList&,-1,Space$(1)+SubStr$(Gettext$(hdl&),-1," + ")))
Return SubStr$(Getstring$(kbdList&,SelectString(kbdList&,-1,Space$(1)+SubStr$(Gettext$(hdl&),-1," + "))),1,Space$(1))
EndProc
Proc GetModifyer
Parameters hdl&
Return SelectString(modifyerList&,-1,Del$(Gettext$(hdl&),Len(Gettext$(hdl&)," + "),1," + "))+1
EndProc
Proc SetHotKey
Parameters hdl&,modifyer&,key&
Var txt$ = GetString$(modifyerList&,modifyer&-1)+substr$(getString$(kbdlist&,selectString(kbdlist&,0,str$(key&)+Space$(1))),2,Space$(1))
Settext hdl&,txt$
Return txt$
EndProc
Proc createkbdList&
var 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&
EndProc
Proc createModifyerList
var 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&
EndProc
Bekomme außerdem die Funktion GetVKey() nicht zu laufen, obwohl sie mit meiner Logik funktionieren müsste. Ein Wink mit den Zaunpfahl wäre toll. |
| | | | |
| |  | Wenn ich Deinen 1. Code teste, läuft er doch (ohne Fehler/ Warnmeldungen) korrekt durch. Wenn Du natives SubStr verwendest (SubStr ohne $, also SubStr statt SubStr$) dann bitte die Kleinigkeit beachten, dass ich von negativen Werten für den 2. Param nichts erwähne ( [...] ). Das Feature hat Roland in XProfan eingebaut nachdem xpse natives SubStr bot und nativ sind negative Werte für den 2. Param (noch) nicht erlaubt. |
| | | | |
| |  Julian Schmidt | iF (25.02.13)
Wenn ich Deinen 1. Code teste, läuft er doch (ohne Fehler/ Warnmeldungen) korrekt durch
Liegt, daran das ich den Aufruf der betreffenden Prozeduren ausgeklammert habe, um mich eine Prozedur nach der anderen Widmen zu können.
iF (25.02.13)
dann bitte die Kleinigkeit beachten, dass ich von negativen Werten für den 2. Param nichts erwähne
Ok, such mir ne XPSE kompatible Altenative. Nachtrag: Betrifft allerdings nur GetVKey wo ich oben schrieb, dass das sowieso schon der Wurm drinn steckt. ^^ |
| | | | |
| |  Julian Schmidt | Schaumal bei SetHotkey() kommt.

Bei GetVKey() bekomme mit der Suche nach " A" in der Liste immer den Rüchgabewert -1. Obwohl dieser exstiert.
addString(kbdList&,"65 A")
Hier arbeite ich wie von dir angeprangert immernoch mit SubStr$ mit dem 2. Param gleich -1.
Und bei GetModifyer() kommt immer
 |
| | | | |
| |  | TXT$[] ist kein String sondern eher ein Zeiger auf ein Array, eher txt$[nummer].
> mit der Suche nach " A"
Suche nach "A "
> Hier arbeite ich wie von dir angeprangert immernoch mit SubStr$ mit dem 2. Param gleich -1.
Nicht angeprangert, eher nur geschrieben das es in nProcs nicht unterstützt ist aber in Procs.
Hier: >> Return SelectString(modifyerList&,-1,Del(Gettext(hdl),Len(Gettext(hdl)," + "),1," + "))+1
Nutzt Du in einer proc aber natives del( ... das kennt wiederum diese Parameter: [...] 
Also: s,l1,l2, also string,long,long. |
| | | | |
| |  Julian Schmidt | iF (25.02.13)
TXT$ ist kein String sondern eher ein Zeiger auf ein Array, eher txt$.
Dachte eig das ich mit
eine Variable des Types String erzeugt und keinen Zeiger auf ein Array. Hab gerade nochmal auf deiner XPSE-Webseite nachgeschlagen. Und muss dir recht geben. Trozdem funktioniert die String-Verkettung zwischen Modifiyer und VKey hier nicht (Bzw. es wird ein Leerstring angehängt, wo bei XProfan mit den gleichen Quellcode und Parametern kein Leerstring herauskommt.). Wobei sie mit reinen Xprofan funktioniert.
iF (25.02.13)
Suche nach "A "
Funzt nicht!
iF (25.02.13)
Nutzt Du in einer proc aber natives del( ... das kennt wiederum diese Parameter: [...]  Also: s,l1,l2, also string,long,long.
hmmmm.....stimmt. Und wie könnte ich dann mit XPSE am einfachsten den letzten Teilstring rausfiltern |
| | | | |
| |  | Julian Schmidt (25.02.13)
iF (25.02.13)TXT$ ist kein String sondern eher ein Zeiger auf ein Array, eher txt$.
Dachte eig das ich mit eine Variable des Types String erzeugt und keinen Zeiger auf ein Array.
Du erzeugst damit ein String-Array, mit string s erzeugst ein einzelnen String.
>> SetHotKey(long hdl,modifyer,key){
key ist ein Schlüsselwort (%key), benenne das mal um. |
| | | | |
| |  Julian Schmidt | iF (25.02.13)
Du erzeugst damit ein String-Array, mit string s erzeugst ein einzelnen String.
hab ich vorher schon verstanden und umgesetzt und selbes Problem wie oben
iF (25.02.13)
key ist ein Schlüsselwort (%key), benenne das mal um.
Hab ich, und selbes Problem wie oben. |
| | | | |
| |  Julian Schmidt | Hier nochmal der Quellcode
{$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
Settext Edit&[0],"Strg + Alt + A"
SetHotkey(Edit&[1],4,66)
'print GetVKey(Edit&[0])
'print GetModifyer(Edit&[0])
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)+Space(1))),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_){
string txt
txt = GetString(modifyerList&,modifyer-1)+substr(getString(kbdlist&,selectString(kbdlist&,0,str(key_)+Space(1))),2,Space(1))
Settext hdl,txt
Return txt
}
GetVKey(long hdl){
Messagebox(Str(SelectString(kbdList&,-1,Space(1)+SubStr$(Gettext(hdl),-1," + "))),"",0)
Messagebox(getString(kbdlist&,SelectString(kbdList&,-1,Space(1)+SubStr$(Gettext(hdl),-1," + "))),"",0)
}
GetModifyer(long hdl){
Return SelectString(modifyerList&,-1,Del(Gettext(hdl),Len(Gettext(hdl)," + "),1," + "))+1
}
CLS
Var kbdList&=createkbdList&()
Var modifyerList&=createModifyerList()
Var Edit& = Create("Edit", %hWnd, "Strg + Alt + A", 100, 100, 200, 24)
print "Vkey|"+Str$(GetVKey(Edit&))
print "Modifyer|"+Str$(GetModifyer(Edit&))
Waitinput
cls
SetHotKey(Edit&,4,13)
print "Vkey|"+Str$(GetVKey(Edit&))
print "Modifyer|"+Str$(GetModifyer(Edit&))
Waitinput
Proc GetVKey
Parameters hdl&
print SubStr$(Gettext$(hdl&),-1," + ")
print SelectString(kbdList&,-1,Space$(1)+SubStr$(Gettext$(hdl&),-1," + "))
print SelectString(kbdList&,-1,"A" )
print Getstring$(kbdList&,SelectString(kbdList&,-1,Space$(1)+SubStr$(Gettext$(hdl&),-1," + ")))
Return SubStr$(Getstring$(kbdList&,SelectString(kbdList&,-1,Space$(1)+SubStr$(Gettext$(hdl&),-1," + "))),1,Space$(1))
EndProc
Proc GetModifyer
Parameters hdl&
Return SelectString(modifyerList&,-1,Del$(Gettext$(hdl&),Len(Gettext$(hdl&)," + "),1," + "))+1
EndProc
Proc SetHotKey
Parameters hdl&,modifyer&,key&
Var txt$ = GetString$(modifyerList&,modifyer&-1)+substr$(getString$(kbdlist&,selectString(kbdlist&,0,str$(key&)+Space$(1))),2,Space$(1))
Settext hdl&,txt$
Return txt$
EndProc
Proc createkbdList&
var 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&
EndProc
Proc createModifyerList
var 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&
EndProc
|
| | | | |
| |  | Habs ja oben schon geschrieben:
>> Return SelectString(modifyerList&,-1,Del(Gettext(hdl),Len(Gettext(hdl)," + "),1," + "))+1
Nutzt Du in einer proc aber natives del( ... das kennt wiederum diese Parameter: [...] Du kannst ja in konventionellen Procs Funktionen aus dem nProc-Sprachschatz verwenden, aber dann musst Du auch deren Syntax verwenden. Wenn ich das $ hinzufüge kommt bei mir 6 raus. |
| | | | |
|
AntwortenThemenoptionen | 27.591 Betrachtungen |
ThemeninformationenDieses Thema hat 2 Teilnehmer: |