Funktioniert etwas nicht? Sieht gut aus.
Beiträge von nuts
-
-
http://www.microsoft.com/speech/speech2…devarticle.mspx
Scheint doch auch bei XP dabei zu sein? Oder ist Version 5.3 von nöten? -
Mit Sprache ists aber doch viel cooler, für alles andere kann mans sich auch Verknüpfungen auf den Desktop legen.
Ab dem Erscheinen von Win7 wäre ich auch dabei.
-
Mhm sehr cooles Projekt. Leider Vista/Win7 only? Also die Sprachsteuerung?
-
Hat die Funktion von Bugfix nicht hingehauen? (dein Skript?)
So schnell geben wir doch nicht auf oder?
-
Ja, nur wie deckt man jede beliebige Tastenkombination mit Hotkeyset ab?
edit \ irgendwie wird das von der funktionsweise ein halber keylogger?

-
Mein Ziel ist es, einen GUI zu erstellen, was einen Input hat. Klickt man da drauf muss der User eine beliebige Tastenkombination drücken bzw. nur eine. Und schon steht im Input welche Kombination man gedrückt hat. -
Mhm nee das geht mit Hotkeyset dann wohl eher nicht.
Bleibt _IsPressed oder vielleicht eine Möglichkeit über GUIRegisterMsg?
Dazu ists jetzt aber schon bissle spät :wacko: -
Für bekannte Tastenkombinationen? Wieso nicht? Das ist der Sinn von Hotkeyset.
-
[autoit]
[/autoit][autoit][/autoit][autoit]
Func _ArrayToString(Const ByRef $avArray, $sDelim = "|", $iStart = 0, $iEnd = 0)
If Not IsArray($avArray) Then Return SetError(1, 0, "")
If UBound($avArray, 0) <> 1 Then Return SetError(3, 0, "") ; Darum gehts nicht.Local $sResult, $iUBound = UBound($avArray) - 1
[/autoit][autoit][/autoit][autoit]; Bounds checking
[/autoit][autoit][/autoit][autoit]
If $iEnd < 1 Or $iEnd > $iUBound Then $iEnd = $iUBound
If $iStart < 0 Then $iStart = 0
If $iStart > $iEnd Then Return SetError(2, 0, ""); Combine
[/autoit][autoit][/autoit][autoit]
For $i = $iStart To $iEnd
$sResult &= $avArray[$i] & $sDelim
NextReturn StringTrimRight($sResult, StringLen($sDelim))
[/autoit]
EndFunc ;==>_ArrayToStringHilft dir jetzt aber auch nicht weiter

\edit
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Func _ArrayToString2D(Const ByRef $avArray, $sDelim = "|", $iStart = 0, $iEnd = 0)
If Not IsArray($avArray) Then Return SetError(1, 0, "")
Local $sResult, $iUBound = UBound($avArray) - 1
If UBound($avArray, 0) = 1 Then ;Return SetError(3, 0, ""); Bounds checking
[/autoit] [autoit][/autoit] [autoit]
If $iEnd < 1 Or $iEnd > $iUBound Then $iEnd = $iUBound
If $iStart < 0 Then $iStart = 0
If $iStart > $iEnd Then Return SetError(2, 0, ""); Combine
[/autoit] [autoit][/autoit] [autoit]
For $i = $iStart To $iEnd
$sResult &= $avArray[$i] & $sDelim
NextReturn StringTrimRight($sResult, StringLen($sDelim))
[/autoit] [autoit][/autoit] [autoit]ElseIf UBound($avArray, 0) = 2 Then
[/autoit] [autoit][/autoit] [autoit]
; Bounds checking
If $iEnd < 1 Or $iEnd > $iUBound Then $iEnd = $iUBound
If $iStart < 0 Then $iStart = 0
If $iStart > $iEnd Then Return SetError(2, 0, ""); Combine
[/autoit] [autoit][/autoit] [autoit]
For $i = $iStart To $iEnd
$sResult &= $avArray[$i][0] & $sDelim & $avArray[$i][1] & $sDelim
NextReturn StringTrimRight($sResult, StringLen($sDelim))
[/autoit]
EndIf
EndFunc ;==>_ArrayToString2D
So ca.? Ist jetzt nur schnell ausprobiert, mit viel copy & paste und wenig nachdenken. -
Was spricht gegen Hotkeyset?
-
Aha jetzt hab ichs.
Es gibt ein Makro: @HotKeyPressed
Damit lässt sich (laut Hilfe :D) der letzte Hotkey ermitteln.
Das muss in die aufgerufene Funktion und damit kann man dann den entsprechenden Wert im Array suchen (so ca.)Hast du dazu einen lauffähigen Quellcode? Dann versuch ichs mal.
-
Anstatt den "Wert" per Funktion zu übergeben besteht ja auch die Möglichkeit die Variable global zu deklarieren und einfach in der Funktion aufzurufen.
Keine Ahnung ob das hier jetzt passt, ist schon spät.
-
Oder gib dem Befehlsstring eine globale Gültigkeit.
-
Würde mich auch interessieren, leider ist bei Funktionen mit DllStructCreate() bei mir auch Schluss.

Vielleicht geht das hier (unangepasst)?
Spoiler anzeigen
[autoit]
[/autoit]
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
;
;
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
If Not IsHWnd($List) Then $hWndListBox = GUICtrlGetHandle($List)
$hWndFrom = $ilParam
$iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
$iCode = BitShift($iwParam, 16) ; Hi Word
Switch $hWndFrom
Case $List, $hWndListBox
Switch $iCode
Case $LBN_DBLCLK
;deine Funktion
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND (Bugfix - http://www.autoit.de) -
Wieso muss denn der Shutdown-Code ausgelagert werden?
1. Daten der .ini laden
2. Auswählen ob Shutdown, Reboot, Stanby usw.
3. Abspeichern der Auswahl in eine .ini
4. Vor dem Ausführen der Shutdown-Funktion nochmal den Status der Combobox prüfen
5. Ggf. abspeichern
6. ShutdownSo ca. wäre ein sinnvoller Ablauf.
-
[autoit]
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
HotKeySet("!1", "shout_1")while 1
[/autoit]
Sleep(100)
wend
func shout_1()
MsgBox(1, "", "hallo")
exit
EndFunc
Bei mir gehts so.edit\ Ohje viel zu langsam.
-
Schau dir in der Hilfe mal die Anmerkungen zu
[autoit]Send()
[/autoit]an. In dieser Form müssen die Hotkeys erstellt werden.
-
Genau, trifft doch die Problembeschreibung ganz gut oder?
-
Dann gibts mindestens 2 Möglichkeiten:
[autoit]
[/autoit]
While
...
Wend
[autoit]
oder
[/autoit]
Do
...
until