UDF ändern

  • Hallo
    ich habe hier eine UDF die ich gerne geänert haben würde
    zuerst waren es 2 jetz ist es nur noch 1
    und jetz will ich das man schreiben muss :

    [autoit]

    HotStringSet("Fenstername","Taste","Func")

    [/autoit]

    ich will das man die taste z.b. a drücken muss in aber nur in dem fenster

    und am besten wäre noch das man kann / muss ein "/" vor der taste drücken

    UDF
    [autoit]

    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $WH_KEYBOARD_LL = 13
    Global $LASTFUNC = ""
    Dim $hHook

    [/autoit] [autoit][/autoit] [autoit]

    Dim $pStub_KeyProc = DllCallBackRegister("_KeyProc","lresult", "int;WPARAM;LPARAM")
    Dim $hmod = DllCall("kernel32.dll","ptr","GetModuleHandle","ptr",0)
    Dim $hHook = DllCall("user32.dll","ptr","SetWindowsHookEx","int", _
    $WH_KEYBOARD_LL,"ptr",DLLCallBackGetPtr($pStub_KeyProc),"ptr",$hmod[0],"dword",0)
    Dim $buffer = ""

    [/autoit] [autoit][/autoit] [autoit]

    Dim $triggers[1] = [""]
    Dim $functions[1] = [""]

    [/autoit] [autoit][/autoit] [autoit]

    Func HotStringSet($sTrigger,$sFunction)
    if $sTrigger = "" Then
    SetError(1,0,0)
    ElseIf $sFunction = "" Then
    For $i = 1 to UBound($triggers)-1
    If $sTrigger = $triggers[$i] Then
    _ArrayDelete($triggers, $i)
    _ArrayDelete($functions, $i)
    Return 1
    EndIf
    Next
    Else
    _ArrayAdd($triggers,$sTrigger)
    _ArrayAdd($functions,$sFunction)
    Return 1
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func EvaluateKey($keycode)
    If (($keycode > 64) And ($keycode < 91)) _
    Or (($keycode > 47) And ($keycode < 58)) Then
    $buffer &= Chr($keycode)
    For $i = 1 to UBound($triggers)-1
    If $buffer = $triggers[$i] Then
    Call($functions[$i])
    Return
    EndIf
    Next
    ElseIf ($keycode > 159) And ($keycode < 164) Then
    Return
    Else
    $buffer = ""
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _KeyProc($nCode, $wParam, $lParam)
    Local $ret,$KEYHOOKSTRUCT
    If $nCode < 0 Then
    $ret = DllCall("user32.dll","long","CallNextHookEx","hwnd",$hHook[0], _
    "int",$nCode,"ptr",$wParam,"ptr",$lParam)
    Return $ret[0]
    EndIf
    If $wparam = 256 Then
    $KEYHOOKSTRUCT = DllStructCreate("dword;dword;dword;dword;ptr",$lParam)
    EvaluateKey(DllStructGetData($KEYHOOKSTRUCT,1))
    EndIf
    $ret = DllCall("user32.dll","long","CallNextHookEx","ptr",$hHook[0], _
    "int",$nCode,"WPARAM",$wParam,"LPARAM",$lParam)
    Return $ret[0]
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func OnAutoItExit()
    DllCall("user32.dll","int","UnhookWindowsHookEx","ptr",$hHook[0])
    DllCallBackFree($pStub_KeyProc)
    EndFunc

    [/autoit]
  • also wen ich mich an den hersteller wende wird er mich wegen meinem englisch nicht verstehn :D
    also
    ich will das man bei der UDF das hinschreiben muss

    [autoit]

    HotStringSet("Fenstername","Taste","Func")

    [/autoit]

    Fenstername = Das fenster wo der befehl nur funktioniert
    Taste = Die taste/n die man drücken muss das es angeht / funktioniert
    Func = der Func name

    • Offizieller Beitrag

    Könnte es sein, dass du folgendes meinst:
    "Die Funktion HotStringSet soll so angepaßt werden, dass sie einen Hotkey generiert, der ausschließlich für den übergebenen Fenster-Titel gültig ist."

    Wäre echt toll, wenn die deutsche Sprache benutzt wird. Sie ist sehr vielfältig und erlaubt es Probleme so zu beschreiben, dass auch andere diese verstehen. X(

  • Sag mal wollen kann man viel.
    BugFix hat Dir eine Möglichkeit gegeben das Problem zu lösen.

    Das hier ist kein Herstellersupport wo man alles bekommt für das man bezahlt also achte mal auf Deinen Ton.
    Setze Dich auseinander mit AutoIt...fang von vorne an...ist das zu viel für Dich lass es oder gib einen Auftrag in die Jobbörse.