Deutsch
Forum

Hotkey Edit mit allen Scankeys

 
- Seite 1 -



Julian
Schmidt
Hallo,
ich bin auf der Suche nach einen Hotkey-Edit das so gut wie alle Scankeys untestützt.
Def CreateHotkeyEdit(5) Control("msctls_hotkey32","",$54010200,&(2),&(3),&(4),&(5),&(1),2000,%hinstance)
Def SetHotKey(3)   SendMessage(&(1),1025,MakeWord(%(2),%(3)),0)
Def GetHotKey(1)   SendMessage(&(1),1026,0,0)
Def GetKey(1)      LoWord(Lobyte(SendMessage(&(1),1026,0,0)))
Def GetModifyer(1) LoWord(Hibyte(SendMessage(hk&,1026,0,0)))
Def MakeWord(2) (%(1) & $FF) | ((%(2) & $FF) << 8)
Def HiByte(1) %(1) >> 8
Def LoByte(1) %(1) & $FF
WindowTitle "Tastenkombinationionen"
Cls
Var hk& = CreateHotkeyEdit(%hwnd,300,10,250,24)
SetHotKey(hk&,65,4)

While 1

    SetFocus(hk&)
    WaitInput
    Cls
    Print "Du hast eingegeben:          "
    Print
    Print "Taste     ", GetKey(hk&)
    Print "Modifyer  ", GetModifyer(hk&)

EndWhile


In dem Beispiel kann das Eingabe-Feld z.B. nicht mit Druck umgehen.

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

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
23.01.2013  
 



« Dieser Beitrag wurde als Lösung gekennzeichnet. »


Julian
Schmidt
Wow, mit dem Edit bekommt man wirklich alle Kombinationen hin. Danke iF. Klasse Sache.

Hier nochmal mit Erkennung aller Tasten und Readonly-Edit
 {$iq}
declare Edit&,kbdlist&
windowstyle 16
cls
userMessages wm_user+1234
Edit& = @Create("Edit", %hWnd, "", 10, 10, 200, 24)
SendMessage(Edit&,$00CF,1,0)
kbdlist&=createKbdList()
initMyHook()

do{

    waitInput

}

nProc initMyHook{

    return SetWindowsHookEx(13,procAddr(myLowLevelKeyboardHookProc),getModuleHandle(0),0)/*WH_KEYBOARD_LL*/

}

nProc myLowLevelKeyboardHookProc(long code,wp,lp){

    global edit&,kbdlist&

    ifnot long(lp,8)==128 {

        code=long(lp,0)
        string mor

        ifnot code>159 or code==16 or code==17 or code==18 {

            case iskey(vk_shift) : mor=mor+"Shift + "
            case iskey(vk_control) : mor=mor+"Strg + "
            case iskey(vk_menu) : mor=mor+"Alt + "

        }

        setText(edit&,mor+substr(getString(kbdlist&,selectString(kbdlist&,0,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

}

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

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
20.02.2013  
 



So kannst Du die Druck-Taste abfangen:  [...] 

Gibt halt solch Spezis wie auch Rollen und Pause etc.
 
23.01.2013  
 




Julian
Schmidt
hmmmm...und wie baue ich das am besten ein.
Warscheinlich in das obere Beispiel überhaupt nicht.

Ist imho Murx
Def CreateHotkeyEdit(5) Control("msctls_hotkey32","",$54010200,&(2),&(3),&(4),&(5),&(1),2000,%hinstance)
Def SetHotKey(3)   SendMessage(&(1),1025,MakeWord(%(2),%(3)),0)
Def GetHotKey(1)   SendMessage(&(1),1026,0,0)
Def GetKey(1)      LoWord(Lobyte(SendMessage(&(1),1026,0,0)))
Def GetModifyer(1) LoWord(Hibyte(SendMessage(hk&,1026,0,0)))
Def MakeWord(2) (%(1) & $FF) | ((%(2) & $FF) << 8)
Def HiByte(1) %(1) >> 8
Def LoByte(1) %(1) & $FF
WindowTitle "Tastenkombinationionen"
Cls
Var hk& = CreateHotkeyEdit(%hwnd,300,10,250,24)
SetHotKey(hk&,65,4)' ALT + A setzen
external("user32.dll","RegisterHotKey",%hWnd,222,0,44)
usermessages 786'wm_hotkey

While 1

    Waitinput 300

    If getfocus(hk&)

        Cls
        Print "Du hast eingegeben:          "
        Print
        Print "Taste     ", GetKey(hk&)
        Print "Modifyer  ", GetModifyer(hk&)
        Waitinput

    EndIf

    if %uMessage=786

        SetHotKey(hk&,&ulParam \ $10000,GetModifyer(hk&))
        'print "Tastaturcode:",&ulParam \ $10000

    endif

EndWhile

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

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
23.01.2013  
 



Mach doch nicht so kompliziert sondern einfach ein readonly Edit gefüllt mit allem
was bei getfocus ein globaler Tastaturhook abliefert.

Direkt befüllen mit Einträgen aus solch Liste:  [...]   [...] 
 
23.01.2013  
 




Julian
Schmidt
Wie meinst du das mit einen globalen Tastatur Hook.
Kannst du ein Beispiel mit reinen XProfan geben.
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
23.01.2013  
 



Absturzsicher geht das mit reinem Profan nicht -
absturzsichere Hooks waren mit ein Grund für nProcs:  [...] 

Was Du machen könntest wäre eine Schleife mit lauter registerHotKey(
 
23.01.2013  
 




Julian
Schmidt
Gibt es keine andere Möglichkeiten eine Art Hotkey-Edit, ohne XPSE zu erstellen. Indem die Druck-Taste verwendet werden kann.

Kennt da jemand etwas?

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

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
29.01.2013  
 



Ich verstehe hierbei nicht was Dir an dem nicht-xpse Code (  [...]  ) so missfällt,

dass Du ihn dafür nicht verwendest. Imho fehlt hier wieder die konkrete Problem-
benennung.
 
29.01.2013  
 




Julian
Schmidt
Einfach eine Einhabemethode mit der Tastenkombinationen erfasst werden könne. Sprich ein Edit, Listbox etc.
Nach Möglichkeit für mehrere Tastenkombinationen, d.h. mehrere Edits. Es sollte auf jeden Fall die Eingabe der Drucktaste mit Modifyer erlaubt sein. Und nach Bedarf auch weitere Tasten hinzufügbar.

Nach Möglichkeit ohne XPSE.
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
29.01.2013  
 



Ich glaube Du hast meine Frage nicht verstanden,

ich fragte sinngemäß was Dir am NICHT-xpse-Beispiel NICHT gefällt.
 
29.01.2013  
 




Julian
Schmidt
Von der Grundidee gefällt es mir. Allerdings muss ich dazu sagen, das ich es nicht mit XPSE getestet habe. Ich bin einfach bisher kein Freund von XPSE. Vlt schaffst du mich zu bekehren, wenn du mir eine kurze Einleitung in XPSE gibst.
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
29.01.2013  
 



Was ich nochmals versuche Dich zu fragen, ist, warum das das Beispiel nicht magst,
dass eben ___________ohne xpse auskommt.

Es ist nicht mein Anliegen, jemanden xpse aufzudrücken, ich kann ihn nur empfehlen,
da er sich eh bereits unendlich viele Male bewehrt hat und damit Dinge gehen,
die sonst garnicht möglich wären. Wenn jemand ohne xpse auskommt ist das doch
IO. Beispielsweise nutzt auch Du jetzt schon viele syntaktische Varianten die xpse
schon viele Jahre bot, bevor XProfan diese unterstützte und so bedingen sich die
Dinge hin und wieder. Ich hatte xpse damals (1998 namens profan enhancer)
begonnen um mehr Potential aus XProfan (damals profan) herauszuholen und das
tätentut er bis heute ganz erfolgreich. Wer den fest eingebunden hat wird auch nicht
mehr ohne programmieren, da man schon beim Programmieren damit merkt, wie
er unterstützt und da er alles schneller macht und damit die Programme stabiler
werden, ist er für mich ein muss, besonders wenn man ständig Codes findet in
denen er Fehler findet die komplett unnötig sind bzw. vermieden hätten werden
müssen. So schreibe ich beispielsweise oft auch lieber eine nProc statt eine
Proc (wo es eben möglich ist) weil sie auf eine gewisse Art ehrlicher ist und auch
das System deutlich weniger belastet.
 
30.01.2013  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

45.027 Betrachtungen

Unbenanntvor 0 min.
H.Brill30.08.2021
Walter01.07.2018
Andreas Koch07.11.2016
Ernst22.04.2016
Mehr...

Themeninformationen



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