 |
AutoHotkey Community Wir helfen uns gegenseitig aus der Patsche
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
halweg
Anmeldedatum: 05.01.2006 Beiträge: 788 Wohnort: Dresden
|
Verfasst am: Do Apr 06, 2006 9:46 am Titel: AHK soll schneller auf Tasten reagieren! |
|
|
Hallo mal wieder, hab folgendes Problem:
ich verwende ein Unterprogramm, um Mehrfachklicks auf meinen erweiterten Keyboard-Tasten auszuwerten. Die stark vereinfachte Version sieht so aus: | Code: | ~BROWSER_HOME::
... (ein paar Befehle um das aktuelle Fenster zu erkennen)
... (ein paar TOOLTIP-Befehle zur Illustration, was gerade läuft)
number_of_presses = 1
LOOP
{
SOUNDBEEP, 1000, 30
INPUT, taste, T1 L1,{BROWSER_HOME} ;*** nächsten Tastendruck empfangen
IFEQUAL, errorlevel, Timeout, BREAK ;*** innerhalb Timeout keine weitere Taste
ELSE IFEQUAL, errorlevel, max, BREAK ;*** Taste war nicht Hotkey
ELSE number_of_presses += 1 ;*** Taste war Hotkey
}
IF number_of_presses = 1
...
...
RETURN |
Das Ganze läuft eigentlich seit längerm stabil und gut. Nun ist es gerade bei Mehrfachklicks von Interesse, ein gutes Timing zu haben (deshalb auch das BEEP als akustisches Feedback). Am Piepsen erkenne ich nun aber, dass AHK manchmal etwas länger braucht, um zu reagieren (1-2s Abstand zwischen Tastendruck und BEEP). Da es beim zweiten mal immer sofort reagiert, nehme ich an, dass da irgendwas nicht im Hauptspeicher ist. An der Prozessorlast kann es eigenlich nicht liegen, auch bei beanspruchtem Prozessor konnte ich keine Verzögerung entdecken.
Die gelegentliche Verzögerung von AHK stört mich, weil dadurch der Start von Programmen mehr Aufmerksamkeit erfordert als notwendig. Habt ihr eine Idee, wie man das ändern kann. Also irgend eine Systemeinstellung, damit AHK (und evtl. auch die für TOOLTIP, BEEP, IFWINACTIVE notwendigen Codeteile von Windows) ständig im Hauptspeicher sind und ich eine definitive Antwortzeit erhalte? |
|
| Nach oben |
|
 |
toralf
Anmeldedatum: 25.10.2005 Beiträge: 110 Wohnort: Stuttgart
|
|
| Nach oben |
|
 |
halweg
Anmeldedatum: 05.01.2006 Beiträge: 788 Wohnort: Dresden
|
Verfasst am: Do Apr 06, 2006 1:33 pm Titel: |
|
|
| toralf hat Folgendes geschrieben: | | Schon mal SetBatchLine oder Process,Priority getestet? |
Diese Befehle verändern, soweit ich dass überblicke, die Priorität oder die Geschwindigkeit der Ausführung des Skriptes. Da aber beim zweiten mal immer sofort eine Reaktion erfolgt, vermute ich, dass das nicht mein Problem ist.
Aber es lässt sich eben auch schlecht testen, weil der Effekt sporadisch auftaucht, wahrscheinlich nur dann, wenn irgend etwas ausgelagert wurde.
Mittlerweile hatte ich noch eine andere Idee: Man könnte ja im Hintergrund einen Timer laufen lassen, der einfach ab und zu das Skript aktiviert und so dafür sorgt, dass es nicht ausgelagert wird ... |
|
| Nach oben |
|
 |
d-fens Gast
|
Verfasst am: Mo Mai 08, 2006 2:57 pm Titel: |
|
|
| Hast du #InstallKeybdHook in dem Script drin? Das könnte helfen. |
|
| Nach oben |
|
 |
halweg
Anmeldedatum: 05.01.2006 Beiträge: 788 Wohnort: Dresden
|
Verfasst am: Mi Mai 10, 2006 9:40 am Titel: |
|
|
| d-fens hat Folgendes geschrieben: | | Hast du #InstallKeybdHook in dem Script drin? Das könnte helfen. |
Hab ich drin. |
|
| Nach oben |
|
 |
dosenfleisch Gast
|
Verfasst am: Fr Mai 12, 2006 6:51 am Titel: |
|
|
wenn du dein script permanent in aktion hälst, wird es doch bestimmt nicht in den standby geschickt.
vielleicht hilft es ja, wenn du zum beispiel ne uhr mit hineinpackst.
keine codetechnische meisterleistung, sollte das script aber am laufen lassen.
| Code: |
Gui, +AlwaysOnTop +ToolWindow -SysMenu -Caption
Gui, Color, CCCCCC
Gui, Font, cFFFFFF s7 , verdana
Gui, Add, Text, vD y0, %a_hour%:%a_min%
Gui, Show, NoActivate x870 y5,uptime
WinSet, TransColor, CCCCCC 255,uptime
SetTimer, RefreshD, 1000
return
RefreshD:
GuiControl, , D, %a_hour%:%a_min%
Gui, Show, NoActivate x870 y5,uptime
return
|
vielleicht geht ja auch was unauffälligeres  |
|
| Nach oben |
|
 |
halweg
Anmeldedatum: 05.01.2006 Beiträge: 788 Wohnort: Dresden
|
Verfasst am: Fr Mai 12, 2006 8:08 am Titel: |
|
|
Ich hab mir jetzt also so einen Timer eingbaut. Eigentlich läuft ja schon einer in meinem "Dialogboxkiller", das ist allerdings ein separates Skript.
Mit
| Code: | ;*** immer aktiv bleiben
SETTIMER, ich_tue_was, 1000
RETURN
ich_tue_was:
WINGETCLASS, akt_class, A
IF (akt_class <> alt_class)
{
IFEQUAL akt_class, Progman
timed_tooltip("Willkommen auf dem Desktop")
alt_class := akt_class
}
RETURN | wir ein Window-Befehl angestoßen, ganz ähnlich starten die meisten meiner Hotkeys.
Nun muss ich eine Weile beobachten, ob ich noch Verzögerungen habe. |
|
| 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
|