Programm (Multiboxing) mit Bezug auf den Prozess oder Namen

iCon0xff

Cadet 2nd Year
Registriert
Jan. 2016
Beiträge
27
Moin ausm Norden....

Ich bin schon seit einiger Zeit auf der Suche nach einem Programm oder Tool, welches mir ermöglicht Mauskllicks auch auf andere Fenster(Prozesse) zu übertragen.

Mal ein Beispiel:

Fenster 1Fenster 2
Fenster 3Fenster 4


Ich klicke also mit meiner Maus in Fenster 1 etwas an und der gleiche Klick wird auch in Fenster 2, 3 und 4 gemacht. Quasi Prozess Multiboxing. Ich weiß dass es unter Windows nur 1 Fenster mit Focus geben kann, was aber nicht bedeutet, dass Mausklicks in Relation zur Fenstergröße übertragen werden können. Das Tool muss also nicht wissen, was ich anklicke im Fenster, sondern nur wo ich etwas anklicke.

klicks.png





Also klicke ich mit der Maus in Fenster 1 rum und alle haben die selbe Größe, könnte ich ja wissen wo (an welcher Postion) ich geklickt habe und diesen Mausklick an andere genannte Prozesse (Fenster 2, 3 und 4) übergeben.

Da ich leider bis jetzt noch keine gute Lösung gefunden habe, bin ich auf dem Weg mir das selber zu programmieren. Hat irgendwer, irgendwelche Vorschläge wo bzw., wie ich damit anfange?


Programmiersprache ist nicht ganz so wichtig, da ich fast alle lesen kann. Programmieren selber tue ich in C# oder VB.NET.

Vielleicht kennt ja jemand ein Programm oder kann mir beim coden selbst helfen... Stehe momentan irgendwie aufm Schlauch hier, die Hitze ist unerträglich^^

UND BITTE KEINE DOOFEN FRAGEN! ^^ Es gibt für mich Gründe warum ich das brauche! Also wenn es geht, bitte nur ernst gemeinte Vorschläge.

peace
 
rocketworm schrieb:
Fürs Multiboxen gibts genau für sowas Software.
Schau dir z.B. mal http://isboxer.com an.

Es gibt auch noch viele andere, einfach mal googeln.

Ja, danke für den Tipp. Ich google schon seit Wochen nach so etwas. Allerdings ist isboxer etwas overdressed was die Funktionen angeht. Mal abgesehen davon, dass es etwas kostet und ich eine lowcost und lowresource Alternative suche.... Aber vlt gibts noch andere Alternativen...

Danke schon mal dafür
 
Du suchst seit Wochen etwas, was es gibt und weil du zu geizig bist suchst du weiter? Meine Lebenszeit wäre mir zu schade dafür ;)
 
mfJade schrieb:
Du suchst seit Wochen etwas, was es gibt und weil du zu geizig bist suchst du weiter? Meine Lebenszeit wäre mir zu schade dafür ;)

Das meinte ich mit nur ernst gemeinte Antworten. So ein Schwachsinn braucht keiner!!! Isboxer ist nicht das was ich suche, sondern funktionstechnisch komplett überladen!!

Außerdem geht es hier mehr darum etwas selber zu programmieren....

NACHTRAG: BTW es funktioniert nicht in dieser PC Konfiguration. Habe ich getestet, steht also eh nicht zur Disposition aber wenn du mir beim coden helfen willst, mach gerne Vorschläge..
 
Zuletzt bearbeitet:
Falls du keine dir passende fertige Software findest, kannst du dir das auch sehr einfach selber schreiben. Ich nehme mal an, dass du mit Windows unterwegs bist. Mit Hooks kannst du praktisch alles machen was du brauchst. Falls das Fenster in dem der Klick passiert immer das gleiche ist, kannst du einfach die WM_LBUTTONDOWN message von diesem Fenster hooken, dann bekommst du die Koordinaten in window space. Wenn du nicht weißt in welchem Fenster der Klick passieren wird, kannst du einen global hook verwenden, zB hat MouseProc ein MOUSEHOOKSTRUCT in dem du einen HWND window handle bekommst. Dann hast du einen Handle auf das Fenster welches das Klick Event empfangen wird und kannst dann dieses Fenster hooken um WM_LBUTTONDOWN abzufangen.

Sobald du die Koordinaten deines mouse events in window space hast, kannst du mit SendInput ein eigenes mouse event generieren. Dazu brauchst du aber screen space Koordinaten. Musst also HWND von allen Fenstern haben in denen du deinen Klick setzen willst und deren Position in screen space ermitteln. Dann nimmst du deine window space Koordinaten und addierst sie zur Position des Fensters und fütterst das SendInput. Das machst du für alle Fenster in denen du den Klick generieren willst. Wahrscheinlich musst du aber vor SendInput alle Hooks entfernen, sonst endet das in einer Endlosschleife, weil du deine generierten Klicks wieder verwendest um neue Klicks zu generieren.

Einfach im MSDN die Dokumentation lesen, das ist eigentlich alles sehr gut und ausführlich dokumentiert. Und zu Hooks und SendInput und so weiter findet man über Google auch Beispiele wie Sand am Meer.

Gruß
BlackMark
 
  • Gefällt mir
Reaktionen: iCon0xff
iCon0xff schrieb:
Außerdem geht es hier mehr darum etwas selber zu programmieren....
Na dann mach es doch, anstatt hier herum zu lamentieren. Wenn Du C# kannst - wunderbar. Dann gucke Dir die entsprechenden .NET-Bibliotheken zu dem Thema an und guck, ob Du was gebastelt kriegst. Und wenn sich dann konkrete Fragen ergeben, kannst Du sicher auch gerne fragen

Aber Dir hier ne fertige Lösung hin programmieren wird Dir eher keiner.
 
  • Gefällt mir
Reaktionen: iCon0xff
@BlackMark : Ja sehr schön.... Das ist ein Anfang... Ich gebe zu die MSDN Doku durchzuballern ist mir immer zuviel. Aber exact nach etwas zu schauen ist einfach... Danke für den Tipp..

@andy_m4: Danke für die Antwort.. Brauche nix fertiges, nur ein Ansatz wonach ich gucken soll oder könnte... Mit dem gelieferten geht ja schon einiges.... Heute Abend also Hook und Mousevents.... Danke an alle
 
Habe zwei Monitore mit der Auflösung 1920 x 1200.
Angenommen, ich möchte an gleicher Position auf Monitor2 klicken (ausgelöst durch die mittlere Maustaste an Monitor1), dann mit Autoit.

Mausposition X und Y auslesen und X mit der Breite 1920 addieren. Dadurch kommt man am Monitor2 an die gleiche Stelle, wie am Monitor1
Code:
#include <Misc.au3>
#include <File.au3>

While 1

;Wenn Mittlere Maustaste gedrückt:
If _IsPressed ("04") Then

;Kurzen Sleep einbauen, damit jeder Klick einzeln erkannt wird
sleep(100)

;Aktuelle Position auslesen
$aPos = MouseGetPos()

; X = $aPos[0]
; Y = $aPos[1]

;An besagter Stelle Doppelklick ausführen, X und Y
MouseClick($MOUSE_CLICK_PRIMARY, $aPos[0], $aPos[1], 2, 0)

;An der gleichen Stelle am zweiten Monitor, indem die Desktopbreite genommen wird
MouseClick($MOUSE_CLICK_PRIMARY, $aPos[0] + @DeskTopWidth, $aPos[1], 2, 0)

;Cursor wieder an die Ausgangsstelle bringen
MouseMove($aPos[0], $aPos[1], 0)

EndIf
WEnd

Für die unteren Monitore muß die Position um
Code:
@DesktopHeight
erweitert werden.

PS:
durch den MOUSE_CLICK_PRIMARY können auch Linkshänder das Script verwenden.
 
Hier noch die Lösung, wenn man beispielhaft in Excel die Mappe 1 bis Mappe 4 jeweils als Tab in den Vordergrund holen möchte, um irgendwas dann darin zu machen (das 'irgendwas' muß noch selbst eingefügt werden; der Prozess von Excel heißt excel.exe und der Fenstername ist Mappe 1 - Excel):
Code:
#include <MsgBoxConstants.au3>

HotKeySet("{F9}", "_start")
HotKeySet("{F10}", "_exit")

_pause()

;mit F9 starten
Func _start()

;hier irgendwas in Mappe 1 machen

;Mappe 2 in Vordergrund bringen
if ProcessExists("excel.exe") Then
winactivate("Mappe2 - Excel")
;hier irgendwas machen, identisch zu Mappe 1
EndIf

sleep(100)

;Mappe 3 in Vordergrund bringen
if ProcessExists("excel.exe") Then
winactivate("Mappe3 - Excel")
;hier irgendwas machen, identisch zu Mappe 1
EndIf

sleep(100)

;Mappe 4 in Vordergrund bringen
if ProcessExists("excel.exe") Then
winactivate("Mappe4 - Excel")
;hier irgendwas machen, identisch zu Mappe 1
EndIf

sleep(100)

;Mappe 1 wieder in Vordergrund bringen
if ProcessExists("excel.exe") Then
winactivate("Mappe1 - Excel")
EndIf

EndFunc


;Abwarten
Func _pause()
	While 1
		Sleep (100)
	WEnd
EndFunc


;mit F10 beenden
Func _exit()
	Exit
EndFunc
 
Zurück
Oben