Deutsch
Forum

Hotkey Edit mit allen Scankeys

Hotkey Edit mit allen Scankeys2

 

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

14 kB
Hochgeladen:25.02.2013
Ladeanzahl220
Herunterladen
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
25.02.2013  
 



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.
 
25.02.2013  
 




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.
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
25.02.2013  
 



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.
 
25.02.2013  
 




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. ^^
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
25.02.2013  
 




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")

print SelectString(kbdList&,-1,Space(1)+SubStr(Gettext(hdl),-1," + "))'ergibt -1
print SelectString(kbdList&,-1," A")'ergibt -1

Hier arbeite ich wie von dir angeprangert immernoch mit SubStr$ mit dem 2. Param gleich -1.


Und bei GetModifyer() kommt immer


14 kB
Hochgeladen:25.02.2013
Ladeanzahl155
Herunterladen
14 kB
Hochgeladen:25.02.2013
Ladeanzahl141
Herunterladen
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
25.02.2013  
 



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.
 
25.02.2013  
 




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.
GetString(modifyerList&,modifyer-1)+substr(getString(kbdlist&,selectString(kbdlist&,0,str(key)+Space(1))),2,Space(1))



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
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
25.02.2013  
 



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.
strings myStrings
myStrings[0]="Hallo"
myStrings[1]="Welt"
print myStrings[0],myStrings[1]
//
string s="Hallo Welt"
print s

>> SetHotKey(long hdl,modifyer,key){

key ist ein Schlüsselwort (%key), benenne das mal um.
 
25.02.2013  
 




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.
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
25.02.2013  
 




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

 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
25.02.2013  
 



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.
 
25.02.2013  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

27.591 Betrachtungen

Unbenanntvor 0 min.
Member 504445914.02.2025
H.Brill14.08.2024
Rainer Hoefs20.05.2019
Mindanao06.06.2017
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

Julian Schmidt (14x)
iF (11x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie