|
You last visited: Today at 01:31
Advertisement
ControlClick ohne Fokus
Discussion on ControlClick ohne Fokus within the AutoIt forum part of the Coders Den category.
07/29/2015, 19:03
|
#1
|
elite*gold: 138
Join Date: Apr 2012
Posts: 3,494
Received Thanks: 1,769
|
ControlClick ohne Fokus
Hey,
gibt es einen Weg, ControlClick für ein Fenster außerhalb des Bildschirms zu benutzen, ohne dass ich den Fokus von meinem aktuellen Fenster verliere? Ich möchte es mehrmals pro Sekunde benutzen, und das Verlieren des Fokus vom Fenster, das ich gerade im Vordergrund hab, stört sehr.
Ich konnte in Google nur diese Lösung finden, jedoch flackert es da etwas und verliert auch für wenige ms den Fokus, was ebenfalls ziemlich stört.
PHP Code:
$activeWindow = WinGetHandle("")
_PostMessage_Click()
WinActivate($activeWindow)
PostMessage hab ich auch versucht, jedoch mit selbem Ergebnis
|
|
|
07/29/2015, 19:23
|
#2
|
elite*gold: 0
Join Date: Sep 2010
Posts: 473
Received Thanks: 104
|
try this
Code:
#RequireAdmin
$win = '' ; name of a window
If WinExists($win) Then
WinActivate($win) ; activates window if exists or use WinWaitActive()
Else
MsgBox(48, "Error", "Window not founded")
EndIf
While 1
Sleep(100)
ControlSend($win, "", "", "{3}") ; sending number 3 to window
Sleep(1000) ; pause
WEnd
|
|
|
07/29/2015, 19:25
|
#3
|
elite*gold: 0
Join Date: Mar 2010
Posts: 360
Received Thanks: 132
|
Code:
#RequireAdmin
#include "PostMessage.au3"
#include <WinAPI.au3>
Dim $hwnd = WinGetHandle("BlueStacks App Player")
While true
_PostMessage_Click($hWnd,910 , 734, "left")
Sleep(5000)
WEnd
Wenn das nicht geht, dann kannst du keine background-clicks mit Autoit machen. Das Programm wertet dann die Flags von postmessage(USER32.dll) aus. Du müsstest dir einen eigenen Kernel/Keyboard Driver schreiben oder die Keyboard Routine vom Prozess hooken und umschreiben.
|
|
|
07/29/2015, 19:30
|
#4
|
elite*gold: 138
Join Date: Apr 2012
Posts: 3,494
Received Thanks: 1,769
|
Quote:
Originally Posted by mlukac89
try this
Code:
#RequireAdmin
$win = '' ; name of a window
If WinExists($win) Then
WinActivate($win) ; activates window if exists or use WinWaitActive()
Else
MsgBox(48, "Error", "Window not founded")
EndIf
While 1
Sleep(100)
ControlSend($win, "", "", "{3}") ; sending number 3 to window
Sleep(1000) ; pause
WEnd
|
Thanks but I don't need ControlSend and ControlClick, as I said, makes me lose the focus from the window I'm currently on
|
|
|
07/29/2015, 20:19
|
#5
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Was genau willst du den erreichen? Vielleicht kann man den ControlClick ja anders bewerkstelligen und ganz darauf verzichten.
|
|
|
07/29/2015, 21:01
|
#6
|
elite*gold: 138
Join Date: Apr 2012
Posts: 3,494
Received Thanks: 1,769
|
Quote:
Originally Posted by alpines
Was genau willst du den erreichen? Vielleicht kann man den ControlClick ja anders bewerkstelligen und ganz darauf verzichten.
|
Ich will meinen Pixelbot background machen. Ich habe schon einen Weg gefunden, wie ich Screenshots vom Fenster kriege, ohne dass man es sehen muss, jedoch kann ich eben nicht ein Klick an das Fenster senden, ohne dass ich den Fokus verliere. Und mein Pixelbot klickt manchmal 3-4 mal pro Sekunde, was dann ziemlich stört
|
|
|
07/29/2015, 21:06
|
#7
|
elite*gold: 0
Join Date: Mar 2010
Posts: 360
Received Thanks: 132
|
Quote:
Originally Posted by Moneypulation
Ich will meinen Pixelbot background machen. Ich habe schon einen Weg gefunden, wie ich Screenshots vom Fenster kriege, ohne dass man es sehen muss, jedoch kann ich eben nicht ein Klick an das Fenster senden, ohne dass ich den Fokus verliere. Und mein Pixelbot klickt manchmal 3-4 mal pro Sekunde, was dann ziemlich stört
|
Lösung habe ich doch bereits hier rein geschrieben ? Schau mal weiter oben meinen Beitrag an ~
|
|
|
07/29/2015, 21:40
|
#8
|
elite*gold: 138
Join Date: Apr 2012
Posts: 3,494
Received Thanks: 1,769
|
Quote:
Originally Posted by Daifoku
Code:
#RequireAdmin
#include "PostMessage.au3"
#include <WinAPI.au3>
Dim $hwnd = WinGetHandle("BlueStacks App Player")
While true
_PostMessage_Click($hWnd,910 , 734, "left")
Sleep(5000)
WEnd
Wenn das nicht geht, dann kannst du keine background-clicks mit Autoit machen. Das Programm wertet dann die Flags von postmessage(USER32.dll) aus. Du müsstest dir einen eigenen Kernel/Keyboard Driver schreiben oder die Keyboard Routine vom Prozess hooken und umschreiben.
|
Wie gesagt, hatte ich PostMessage schon ausprobiert. Wie ich einen Kernel/Keyboard Driver schreibe oder die Keyboard Routine vom Prozess hooken und umschreiben kann, weiß ich leider nicht
|
|
|
07/29/2015, 21:56
|
#9
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Quote:
Originally Posted by Moneypulation
Wie gesagt, hatte ich PostMessage schon ausprobiert. Wie ich einen Kernel/Keyboard Driver schreibe oder die Keyboard Routine vom Prozess hooken und umschreiben kann, weiß ich leider nicht
|
Programme haben in der Treiberebene (Ring0) nichts verloren und sowas wirst du mit AutoIt auch nicht hinkriegen.
 könnte da helfen aber ich glaube nicht das das die Lösung zu deinem Problem ist. Die wohl eleganteste Variante wäre wohl einen PacketBot zu basteln aber das ist nicht ganz so einfach.
|
|
|
07/29/2015, 22:23
|
#10
|
elite*gold: 0
Join Date: Mar 2010
Posts: 360
Received Thanks: 132
|
Quote:
Originally Posted by Moneypulation
Wie gesagt, hatte ich PostMessage schon ausprobiert. Wie ich einen Kernel/Keyboard Driver schreibe oder die Keyboard Routine vom Prozess hooken und umschreiben kann, weiß ich leider nicht
|
Dann wirst du dein Vorhaben wohl oder übel nicht ohne Virtualisierung oder einer Server Version von Windows umsetzen können.
Keyboard-Driver sind ne große Nummer
Keyboard hooks sind relativ einfach umzusetzen, wenn man sich mit Reversen auskennt
Einen PacketBot halte ich für zu viel des Guten, da ist ein KeyboardRoutine hook einfacher. Das Programm wertet ja irgendwo die PostMessage aufrufe von User32 aus um den Zugriff über "background-clicks" zu verhindern... diese Routine kann man anpassen.
Virtualisieren geht immer. Einfach ne VM aufsetzen und die Programme dort drin laufen lassen.
Wenn du ne Server Version von Windows nutzt, kannst du mit multiplen Usern zeitgleich eingeloggt sein und per RDP alles steuern...
|
|
|
07/30/2015, 17:10
|
#11
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Von was genau reden wir denn hier? In einer normalen Windows Anwendung ist das nutzen interner Funktionen tasächlich sehr einfach. Sobald es um Webapplikationen geht, ist das ganze schon etwas kniffliger. Dort wäre eine Umleitung auf einen eigenen Proxy und das handeln über Packets wohl das eleganteste.
Post- und SendMessage machen beide Probleme, sobald Funktionstasten (Ctrl, Alt, Shift, ...) ins Spiel kommen. Ohne Hooks oder komplettes Ersetzen der Anwendung, wirst du dein Problem also nicht lösen können.
|
|
|
07/30/2015, 20:24
|
#12
|
elite*gold: 138
Join Date: Apr 2012
Posts: 3,494
Received Thanks: 1,769
|
Danke für all eure Antworten. Habe ein Workaround um das Problem gefunden
|
|
|
07/30/2015, 23:47
|
#13
|
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
|
Quote:
Originally Posted by Moneypulation
Danke für all eure Antworten. Habe ein Workaround um das Problem gefunden
|
war es denn meine lösung? wäre nice wenn du die lösung postest.
Code:
_WinAPI_PostMessage ( $hWnd, 0x0006, 0, 0 )
|
|
|
 |
Similar Threads
|
Tastendruck an Fenster ohne fokus
05/29/2013 - General Coding - 2 Replies
deleted
|
[Q]MouseclickDrag ohne Fokus?
10/29/2012 - AutoIt - 5 Replies
Hallo,
ich soll für jemanden ein AutoIt-Script erstellen, dass er auch nebenbei laufen lassen kann, ohne beim Surfen oder ähnlichem eingeschränkt zu sein.
Das Script funktioniert soweit einwandfrei wenn das entsprechende Fenster fokusiert ist, aber sobald es das nichtmehr ist, zickt die Funktion MouseclickDrag rum. Da ich nicht so der AutoIt-Held bin, hab ich erstmal ausführlich gegoogelt, aber zu einer Lösung hat das nicht geführt. :mad:
Weiß da evtl. jemand von euch einen Rat?
mfg
|
[C#]Hotkey ohne Fokus
03/29/2012 - .NET Languages - 2 Replies
Also ich habe ein Hotkey Event eingebaut, leider funktioniert das nur wenn der Fokus auf dem Form liegt.
Ich brauche eine Hotke Event welches auch ohne den Fokus funktioniert^^.
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.D1)
{
}
|
ControlClick ohne Control-Daten?
10/27/2011 - AutoIt - 10 Replies
Hallo,
ich habe ein programm welches keine auslesbaren Control-parameter besitzt.
Wie kann ich in diesem Programm auf ein button klicken, wenn dieses im Hintergrund läuft? Das Programm befindet sich sonst immer auf der gleichen Stelle am Bildschirm, sodass es mit MouseClick kein problem war.
Wie kann ich es jetzt mit Control Click machen?
Hier mein Skript (lädt eine Datei in einem Programm) mit "MouseClick":
|
All times are GMT +1. The time now is 01:32.
|
|