Changeset 1160


Ignorieren:
Zeitstempel:
10.11.2008 19:07:34 (vor 10 Jahren)
Autor:
mösi
Nachricht:

Optimierungen der Speichernutzung und DLL-Aufrufen von http://fmate14.web.elte.hu/autohotkey/SendU/SendU.ahk in Sendunicode-Funktionen eingearbeitet

Datei:
1 bearbeitet

Legende:

Unverändert
Hinzugefügt
Entfernt
  • windows/neo-vars/src/Source/recycle.ahk

    r1157 r1160  
    379379Dieser basiert auf http://www.autohotkey.com/forum/topic32947.html 
    380380Der Aufruf von »SubStr(charCode,3)« geht davon aus, dass alle charCodes in Hex mit führendem „0x“ angegeben sind. Die abenteuerliche „^+u“-Konstruktion benötigt im Übrigen den Hex-Wert in Kleinschrift, was derzeit nicht bei den Zeichendefinitionen umgesetzt ist, daher zentral und weniger fehlerträchtig an dieser Stelle. Außerdem ein abschließend gesendetes Space, sonst bleibt der „eingetippte“ Unicode-Wert noch kurz sichtbar stehen, bevor er sich GTK-sei-dank in das gewünschte Zeichen verwandelt. 
     381Optimierungen von http://fmate14.web.elte.hu/autohotkey/SendU/SendU.ahk 
    381382*/ 
    382383 
     
    386387    StringLower,charCode,charCode 
    387388    send % "^+u" . SubStr(charCode,3) . " " 
    388   }else{ 
    389     VarSetCapacity(ki,28*2,0) 
    390     EncodeInteger(&ki+0,1) 
    391     EncodeInteger(&ki+6,charCode) 
    392     EncodeInteger(&ki+8,4) 
    393     EncodeInteger(&ki+28,1) 
    394     EncodeInteger(&ki+34,charCode) 
    395     EncodeInteger(&ki+36,4|2) 
     389  } else { 
     390    static ki := "#" 
     391    if (ki =="#") { 
     392      VarSetCapacity(ki,28*2,0) 
     393      DllCall("RtlFillMemory","uint",&ki+   0,"uint",1,"uint",1) 
     394      DllCall("RtlFillMemory","uint",&ki+28+0,"uint",1,"uint",1) 
     395    } 
     396    DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+   6,"uint",4,"uint",0x40000|charCode) ;KEYEVENTF_UNICODE 
     397    DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+28+6,"uint",4,"uint",0x60000|charCode) ;KEYEVENTF_KEYUP|KEYEVENTF_UNICODE 
    396398    DllCall("SendInput","UInt",2,"UInt",&ki,"Int",28) 
    397399  } 
     
    403405    StringLower,charCode,charCode 
    404406    send % "^+u" . SubStr(charCode,3) . " " 
    405   }else{ 
    406     VarSetCapacity(ki,28,0) 
    407     EncodeInteger(&ki+0,1) 
    408     EncodeInteger(&ki+6,charCode) 
    409     EncodeInteger(&ki+8,4) 
    410  
     407  } else { 
     408    static ki := "#" 
     409    if (ki =="#") { 
     410      VarSetCapacity(ki,28,0) 
     411      DllCall("RtlFillMemory","uint",&ki,"uint",1,"uint",1) 
     412    } 
     413    DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+6,"uint",4,"uint",0x40000|charCode) ;KEYEVENTF_UNICODE 
    411414    DllCall("SendInput","UInt",1,"UInt",&ki,"Int",28) 
    412415  } 
     
    417420  { 
    418421    ; nothing 
    419   }else{ 
    420     VarSetCapacity(ki,28,0) 
    421     EncodeInteger(&ki+0,1) 
    422     EncodeInteger(&ki+6,charCode) 
    423     EncodeInteger(&ki+8,4|2) 
    424  
     422  } else { 
     423    static ki := "#" 
     424    if (ki =="#") { 
     425      VarSetCapacity(ki,28,0) 
     426      DllCall("RtlFillMemory","uint",&ki,"uint",1,"uint",1) 
     427    } 
     428    DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+6,"uint",4,"uint",0x60000|charCode) ;KEYEVENTF_KEYUP|KEYEVENTF_UNICODE 
    425429    DllCall("SendInput","UInt",1,"UInt",&ki,"Int",28) 
    426430  } 
    427 } 
    428  
    429 EncodeInteger(ref,val){ 
    430   DllCall("ntdll\RtlFillMemoryUlong","Uint",ref,"Uint",4,"Uint",val) 
    431431} 
    432432 
     
    436436*/ 
    437437 
     438; dieser Hook fixt einen AHK-Bug, dass dieses bei Reload und gedruecktem Mod4 
     439; den ersten hook ausfuehrt, als waere dieser tatsaechlich aufgerufen worden. 
     440; Wenn man hier einen unverfaenglichen Hook eintraegt, gibt es keine Broesel. 
    438441~F24::return 
    439442 
Hinweis: Hilfe zur Verwendung der Changeset-Ansicht finden Sie unter TracChangeset.