 |
AutoHotkey Community Wir helfen uns gegenseitig aus der Patsche
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
KitchenTV Gast
|
Verfasst am: Mo Jun 16, 2008 6:46 pm Titel: |
|
|
Hallo Denick,
das war es! Funktioniert prächtig. Nur den Befehl für das Abspielen der Tour funktionierte nicht. Das konnte ich aber verbessern.
Also danke nochmals für Deine Mühe und Zeit.
Viele Grüße
Der KitchenTV |
|
| Nach oben |
|
 |
KitchenTV Gast
|
Verfasst am: Fr Jun 27, 2008 7:56 am Titel: Umbelegung und Hotkey |
|
|
Hallo,
ich brauche nochmal kurz Eure Hilfe. Und zwar musste ich hardwaremäßig meine für ursprünglichen Tasten ändern, habe aber dadurch Probleme bei der Anpassung des angehängten Scripts. Wahrscheinlich, weil eine Taste ein zeichen ist, welches für die Programmierung genutzt wird.
Folgende Änderung habe ich jetzt:
End = End ; hier bleibt alles beim alten
< früher Taste 2 ; Problem, weil wahrscheinlich als mathematischer Operator genutzt
g früher Taste 4 ; hiermit erwarte ich keine Probleme
, früher Taste 8 ;
Daher die Frage, was muss ich ändern, damit ich in Zeile 9 und 11 keine Fehlermeldung bekomme.
| Code: |
#NoEnv
SetBatchLines, -1
SetTitleMatchMode, 2
; Wartezeit auf die zweite Taste (ms)
; Die erste Reaktion verzögert sich um diese Zeit!!!
WZ := 400
; Tastenbelegung End-Taste:
EndEnd := "Down" ; Nur End (in diesem Fall wird End als Suffix genutzt!)
End< := "n" ; End + 2
Endg := "PgDn" ; End + 4
End, := "PgUp" ; End + 8
; Aktueller Hotkey (False = 0)
HK := False
Return
; ------------------------------------------------------------------------------
#IfWinActive, Google Earth
; ------------------------------------------------------------------------------
2::
If (HK) {
Return
}
HK := A_ThisHotkey
; Prüfen, ob eine weitere Taste gedrückt ist
Sleep, %WZ%
T2 := Tasten_Prüfen("4|8", HK)
If (T2 = 4) {
; 2 + 4 : Tour abspielen
KeyWait, 4
Send, ^!p
HK := False
Return
}
If (T2 = 8) {
; 2 + 8 : Google Earth beenden
KeyWait, 8
WinClose, A
HK := False
Return
}
SetKeyDelay, -1
Loop {
If !GetKeyState("2", "P")
Break
Send, {Up Down}
}
Send, {Up Up}
HK := False
Return
; ------------------------------------------------------------------------------
4::
If (HK) {
Return
}
HK := A_ThisHotkey
SetKeyDelay, -1
Loop {
If !GetKeyState("4", "P")
Break
Send, {Left Down}
}
Send, {Left Up}
HK := False
Return
; ------------------------------------------------------------------------------
8::
If (HK) {
Return
}
HK := A_ThisHotkey
SetKeyDelay, -1
Loop {
If !GetKeyState("8", "P")
Break
Send, {Right Down}
}
Send, {Right Up}
HK := False
Return
; ------------------------------------------------------------------------------
End::
If (HK) {
Return
}
HK := A_ThisHotkey
; Prüfen, ob eine weitere Taste gedrückt ist
Sleep, %WZ%
T2 := Tasten_Prüfen("2|4|8", HK)
SetKeyDelay, -1
Loop {
Send, % "{" . %HK%%T2% . " Down}"
If !GetKeyState(T2, "P")
Break
}
Send, % "{" . %HK%%T2% . " Up}"
HK := False
Return
; ------------------------------------------------------------------------------
Tasten_Prüfen(Tasten, Hotkey) {
StringSplit, _T, Tasten, |
Loop, %_T0% {
If GetKeyState(_T%A_Index%, "P")
Return _T%A_Index%
}
Return Hotkey
}
; ------------------------------------------------------------------------------
|
Danke für jede Hilfe.
Der KitchenTV |
|
| Nach oben |
|
 |
BoBo² Gast
|
Verfasst am: Fr Jun 27, 2008 8:55 am Titel: |
|
|
| Zitat: | | Daher die Frage, was muss ich ändern, damit ich in Zeile 9 und 11 keine Fehlermeldung bekomme. | Sehe keinen workarround. Tastenbelegung ändern um 'verbotene'/reservierte Zeichen zu vermeiden.
Wieso werden hier trotz Expression-Schreibweise die Variablen mit Prozentzeichen deklariert?
| Code: | Send, % "{" . %HK%%T2% . " Down}"
Send, % "{" . %HK%%T2% . " Up}" |
|
|
| Nach oben |
|
 |
KitchenTV Gast
|
Verfasst am: Fr Jun 27, 2008 9:51 am Titel: |
|
|
Hallo,
ok, dann muss ich wohl heute abend nochmal ran und die Tasten umlöten.
Warum die hier die Expression-Schreibweise die Variablen mit prozentzeichen deklariert wird kann ich Dir leider nicht sagen. Da hat mir der Denick geholfen.
Viele Grüße
Der KitchenTV |
|
| Nach oben |
|
 |
denick (n-l-i) Gast
|
Verfasst am: Fr Jun 27, 2008 12:51 pm Titel: |
|
|
Moin,
hör auf zu löten! Man muss das Skript nur etwas allgemeiner fassen:
| Code: | #NoEnv
SetBatchLines, -1
SetTitleMatchMode, 2
; Wartezeit auf die zweite Taste (ms)
; Die erste Reaktion verzögert sich um diese Zeit!!!
WZ := 400
; Hotkeys (Die Belegung ist beliebig!)
HK1 := "<"
HK2 := "g"
HK3 := ","
HK4 := "End"
;
; Zugeordnete Aktionen:
; HK1 Send, Up
; HK1 + HK2 Send, ^!p
; HK1 + HK3 WinClose, Google Earth
; HK2 Send, Left
; HK3 Send, Right
; HK4 Send, Down
; HK4 + HK1 Send, n
; HK4 + HK2 Send, PgDn
; HK4 + HK3 Send, PgUp
;
; Tastenkombinationen für HK4:
HK4HK4 := "Down" ; Nur HK4 (in diesem Fall wird HK4 als Suffix genutzt!)
HK4HK1 := "n" ; HK4 + HK1
HK4HK2 := "PgDn" ; HK4 + HK2
HK4HK3 := "PgUp" ; HK4 + HK3
; Aktueller Hotkey (False = 0)
HK := False
; Hotkeys für Google Earth
Hotkey, IfWinActive, Google Earth
Hotkey, %HK1%, HK1
Hotkey, %HK2%, HK2
Hotkey, %HK3%, HK3
Hotkey, %HK4%, HK4
Return
; ------------------------------------------------------------------------------
HK1:
If (HK) {
Return
}
HK := A_ThisHotkey
; Prüfen, ob eine weitere Taste gedrückt ist
Sleep, %WZ%
T2 := Tasten_Prüfen(HK2 . "|" . HK3, HK)
If (T2 = HK2) {
; HK1 + HK2 : Tour abspielen
KeyWait, %HK2%
Send, ^!p
HK := False
Return
}
If (T2 = HK3) {
; HK1 + HK3 : Google Earth beenden
KeyWait, %HK3%
WinClose, A
HK := False
Return
}
SetKeyDelay, -1
Loop {
If !GetKeyState(HK1, "P")
Break
Send, {Up Down}
}
Send, {Up Up}
HK := False
Return
; ------------------------------------------------------------------------------
HK2:
If (HK) {
Return
}
HK := A_ThisHotkey
SetKeyDelay, -1
Loop {
If !GetKeyState(HK2, "P")
Break
Send, {Left Down}
}
Send, {Left Up}
HK := False
Return
; ------------------------------------------------------------------------------
HK3:
If (HK) {
Return
}
HK := A_ThisHotkey
SetKeyDelay, -1
Loop {
If !GetKeyState(HK3, "P")
Break
Send, {Right Down}
}
Send, {Right Up}
HK := False
Return
; ------------------------------------------------------------------------------
HK4:
If (HK) {
Return
}
HK := A_ThisHotkey
; Prüfen, ob eine weitere Taste gedrückt ist
Sleep, %WZ%
T2 := Tasten_Prüfen(HK1 . "|" . HK2 . "|" . HK3, HK)
Aktion := (T2 = HK) ? "HK4HK4"
: (T2 = HK1) ? "HK4HK1"
: (T2 = HK2) ? "HK4HK2"
: "HK4HK3"
SetKeyDelay, -1
Loop {
Send, % "{" . %Aktion% . " Down}"
If !GetKeyState(T2, "P")
Break
}
Send, % "{" . %Aktion% . " Up}"
HK := False
Return
; ------------------------------------------------------------------------------
Tasten_Prüfen(Tasten, Hotkey) {
StringSplit, _T, Tasten, |
Loop, %_T0% {
If GetKeyState(_T%A_Index%, "P")
Return _T%A_Index%
}
Return Hotkey
}
; ------------------------------------------------------------------------------ |
Die %-Zeichen innerhalb des Ausdrucks bewirken, dass der Inhalt der eingeschlossenen Variablen als Variablenname verarbeitet wird. |
|
| Nach oben |
|
 |
KitchenTV Gast
|
Verfasst am: Di Jul 01, 2008 9:25 pm Titel: |
|
|
Hallo Denick,
das war spitzenmäßig. Ich hab zwar schon wieder umgelötet, doch bietet mir die Version 3.0 Deines Skripts mehr Flexibilität. Nochmals Danke.
Viele Grüße
KitchenTV |
|
| Nach oben |
|
 |
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|