Page 1 of 1

Skript lässt Tastenkombinationen (fast) wie ALT+CTRL nicht zu

Posted: 26 Feb 2018, 14:19
by wyw
Ich habe ein sehr nerviges Problem. Während ich mein Skript im Hintergrund laufen lasse, kann ich erkennen wie die "Caps" Taste am flickern ist. Hätte ich das Skript jetzt laufen, würde es so aussehen:
"tesT TeSt TTesT tesT" und das halt die ganze Zeit.. Ich würde während dessen gerne ein Spiel spielen, aber das Skript macht es so gut wie unmöglich, da ich die "Keybinds" (CTRL+ALT Kombinationen) im Spiel nicht richtig ausführen kann.

Ich wäre mega dankbar wenn mir einer hiermit helfen könnte! Wirklich.

Hier mein Skript:

Code: Select all

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
#MaxThreadsPerHotkey 2
Settimer pressCevery15seconds, %  * 0.1
banana:=0
F1::
banana:=!banana
    while (banana=1)
	{
        pressBevery5seconds:
		SetControlDelay 0
		ControlClick, X213 Y124, ahk_class ahk_class Chrome_WidgetWin_1
		ControlClick, X196 Y182, ahk_class ahk_class Chrome_WidgetWin_1
		
		pressCevery15seconds:
		SetControlDelay 0
		ControlClick, X13 Y79, ahk_class ahk_class Chrome_WidgetWin_1
		Controlsend,, {Left}, ahk_class ahk_class Chrome_WidgetWin_1
		SetControlDelay -1
    }

f7::ExitApp 

Re: Skript lässt Tastenkombinationen (fast) wie ALT+CTRL nicht zu

Posted: 26 Feb 2018, 14:26
by gregster
Ein paar Fragen zu deinem anderen, ähnlichen Skript mit dem offenbar gleichen Problem habe ich schon mal drüben anklingen lassen: https://autohotkey.com/boards/viewtopic ... 24#p202924

Dazu noch: Ist das hier das komplette Skript - oder wo kommen die anderen Keybinds her, die du erwähnst?
Was soll das eigentlich bedeuten? % * 0.1 beim SetTimer ? Hab ich noch nie gesehen und was soll das bewirken? Wie viele Sekunden sollen das sein? Und das anzuspringende Label ist doch eh schon in einem While-Loop... :think: und ohne Return
Das ganze scheint so gar nicht lauffähig zu sein. Was zum reproduzieren des Problems wäre schön.

Re: Skript lässt Tastenkombinationen (fast) wie ALT+CTRL nicht zu

Posted: 26 Feb 2018, 15:00
by wyw
gregster wrote:Ein paar Fragen zum Skript habe ich schon mal drüben anklingen lassen: https://autohotkey.com/boards/viewtopic ... 24#p202924

Dazu noch: Ist das hier das komplette Skript - oder wo kommen die anderen Keybinds her, die du erwähnst?
Was soll das eigentlich bedeuten? % * 0.1 beim SetTimer ? Hab ich noch nie gesehen und was soll das bewirken?
Ich antworte hier deine Fragen, wenn das okay ist.

Also, das Skript klickt manche bestimmte Stellen in Opera, nicht Chrome. Opera hat das selbe ahk_class wie Chrome. Und mit den Skript automatisiere ich halt irgendetwas im Browser während ich z.B was anderes am machen bin. Das ist der einzige Zweck. Wenn ich z.B WoW am zocken bin, sind Keybinds wie "Alt+F4" halt nicht möglich, das Skript erschwert mir das,
Und das mit SetTimer musste ich zum Skript hinzufügen damit ich halt entscheiden kann wann das Skript eine bestimmte Stelle klickt.

Settimer pressCevery15seconds, % * 0.1 ist ein bissel doof rübergekommen, ich weiss. Ich hab mein Skript verändert und somit müsstest du eigentlich "reproduzieren" können.

Neues Skript:

Code: Select all

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
#MaxThreadsPerHotkey 2
Settimer klick1, % 1 * 1000
Settimer klick2, % 10 * 1000
Settimer klick3, % 5 * 1000
banana:=0
F1::
banana:=!banana
    while (banana=1)
	{
        klick1:
		SetControlDelay 0
		ControlClick, X3198 Y1244, ahk_class ahk_class Chrome_WidgetWin_1
		ControlClick, X1936 Y1882, ahk_class ahk_class Chrome_WidgetWin_1
		
		klick2:
		SetControlDelay 0
		ControlClick, X1031 Y759, ahk_class ahk_class Chrome_WidgetWin_1
		Controlsend,, {3}, ahk_class ahk_class Chrome_WidgetWin_1
		SetControlDelay -1
	    Controlsend,, {Left}, ahk_class ahk_class Chrome_WidgetWin_1
		SetControlDelay -1
	    Controlsend,, {Enter}, ahk_class ahk_class Chrome_WidgetWin_1
		SetControlDelay -1
	    ControlClick, X2301 Y1504, ahk_class ahk_class Chrome_WidgetWin_1
		
		klick3:
		SetControlDelay 0
		ControlClick, X183 Y1682, ahk_class ahk_class Chrome_WidgetWin_1
		ControlClick, X149 Y1514, ahk_class ahk_class Chrome_WidgetWin_1
		return
    }

f7::ExitApp 

Starte das Skript und drücke die Feststelltaste und dann müsstest du eigentlich sehen wie die Feststelltaste am flickern ist (kommt drauf an welche Tastatur du hast). Und wie gesagt, nicht nur ist die Feststelltaste "verbugt", sondern auch Alt,Shift,Ctrl usw halt.

Übrigens, mir ist aufgefallen, dass so schneller das Skript ist, desso schneller drückt es die Feststelltaste. Also ja. Es hat was ein bissien mit SetControlDelay zu tun. :crazy:

Re: Skript lässt Tastenkombinationen (fast) wie ALT+CTRL nicht zu

Posted: 26 Feb 2018, 15:41
by gregster
Also meines Erachtens macht die Kombination von Timern und While-Loop in dieser Form keinen Sinn und führt zu nur schwer vorhersagbaren Effekten.
Ich kann mir kaum vorstellen, dass das Skript tatsächlich macht, was dir vorschwebt. Abgesehen davon, dass die Label klick1 und klick2 sowieso durch kein return abgeschlossen sind und so ein klick1 oder klick2 immer bis zum Ende von Klick3 durchläuft und die unterschiedlichen Zeiten der Timer so wahrscheinlich ad absurdum geführt werden.
Wahrscheinlich wäre es am besten die While-Schleife komplett zu entfernen, jedem Label ein abschließendes Return zu spendieren und dann den Zustand der Toggle-Variable in den jeweiligen Label-Routinen abzufragen (siehe unten).

Flickern tut bei mir eh nichts, aber ich hab auch kein Problem mit Groß- und Kleinschreibung, wenn das Skript läuft. Daher meine Frage, ob das Skript so komplett ist oder noch andere Skripte oder Remapping-Software parallel laufen - oder läuft immer ein Spiel wie WoW parallel? Vielleicht liegt es auch einfach an dem Spiel, das dem Skript in die Quere kommt. Hast du die Probleme auch, wenn das Spiel nicht läuft?

Aber zunächst solltest du dir überhaupt mal klar darüber werden, was dein Skript hier überhaupt tun soll und in welchen Abständen...
Und nochmal die Frage: Wie sieht das kürzeste Skript aus, dass zu den genannten Problemen führt?

Was wäre denn hiermit? Das macht für mich vom Ablauf her mehr Sinn. Ob die Klickerei so passt, kann ich natürlich nicht sagen, weil ich nicht weiß, was die bewirken soll.

Code: Select all

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
#MaxThreadsPerHotkey 2
banana:=0
Settimer klick1, % 1 * 1000
Settimer klick2, % 10 * 1000
Settimer klick3, % 5 * 1000
return

F1::
banana:=!banana
return
    
klick1:
if(banana=1)
{
	SetControlDelay 0
	ControlClick, X3198 Y1244, ahk_class ahk_class Chrome_WidgetWin_1
	ControlClick, X1936 Y1882, ahk_class ahk_class Chrome_WidgetWin_1
}
return
		
klick2:
if(banana=1)
{
	SetControlDelay 0
	ControlClick, X1031 Y759, ahk_class ahk_class Chrome_WidgetWin_1
	Controlsend,, {3}, ahk_class ahk_class Chrome_WidgetWin_1
	SetControlDelay -1
	Controlsend,, {Left}, ahk_class ahk_class Chrome_WidgetWin_1
	SetControlDelay -1
	Controlsend,, {Enter}, ahk_class ahk_class Chrome_WidgetWin_1
	SetControlDelay -1
	ControlClick, X2301 Y1504, ahk_class ahk_class Chrome_WidgetWin_1
}
return

klick3:
if(banana=1)
{
	SetControlDelay 0
	ControlClick, X183 Y1682, ahk_class ahk_class Chrome_WidgetWin_1
	ControlClick, X149 Y1514, ahk_class ahk_class Chrome_WidgetWin_1
}	
return
    
f7::ExitApp

Re: Skript lässt Tastenkombinationen (fast) wie ALT+CTRL nicht zu

Posted: 26 Feb 2018, 17:13
by wyw
Ich glaube ich habe das Problem gefunden. Es lag nämlich an ControlSend. Ich habe es jetzt mit "ControlSend,,{Blind}" und F1 mit "~F1" ersetzt, und soweit ist das Problem gelöst.

Aber danke trotzdem für deine Hilfe!

Re: Skript lässt Tastenkombinationen (fast) wie ALT+CTRL nicht zu

Posted: 27 Feb 2018, 00:32
by gregster
Und an der Struktur hast du nichts geändert?
F1s eigentliche Funktion wird jetzt also nicht mehr geblockt (was auch immer die in diesem Zusammenhang ist), aber F1 bedient bei dir doch nur den Toggle - ich seh den Zusammenhang nicht. OK, {Blind} hat wahrscheinlich Einfluss auf die Verarbeitung von Modifiern, aber solange du while mit Timern kombinierst, kann das Skript eigentlich nicht vernünftig funktionieren. Über die Ursache für dein Problem haben wir nicht wirklich etwas dazugelernt - meine Fragen dazu hast du erfolgreich ignoriert :think:
Aber wenn es jetzt funktioniert, super! Schließlich arbeitest du offenbar schon wochenlang über mehrere Threads hinweg an diesem Skript.