Entwickler-Ecke

Open Source Units - [Delphi] Kontrolle über fremde Anwendungen


Xeron - Do 31.12.09 11:21
Titel: [Delphi] Kontrolle über fremde Anwendungen
Hi, ich will euch meine kleine Hilfsunit mal zur Verfügung stellen :D
viel Spaß

Zurzeit enthält sie folgende Funktionen:

Zitat:
- Run: Startet eine Anwendung
- CheckHandle: Prüft ob ein Handle verfügbar ist
- iniWrite: Schreibt einen String in eine INI Datei
- iniRead: Ließt einen String aus einer ini aus
- iniIntWrite: Schreibt einen Integer Wert in eine ini
- iniIntread: Ließt einen Integer Wert aus einer ini
- ControlSend: Sendet einen tastendruck an ein verstecktes Fenster
- ControlClick: simuliert einen Mausklick
- WinClose: Schließt ein beliebigen Prozess
- HIDE: Versteckt die Delphi Anwendung
- SHOW: Zeigt die Delphi Anwendung
- ProzessListe: Listet alle laufenden Prozese auf
- MouseMove: Bewegt die Maus in einem aktiven Fenster



Genaue Erklärung zu den Funktionen

Run (Pfad)
Code:


Delphi-Quelltext
1:
Run ('C:\...\Solitär.exe');                    




Startet eine beliebige Anwendung. Dabei muss der komplette Pfad angegeben
werden.




CheckHandle (Handle)
Code:


Delphi-Quelltext
1:
CheckHandle ('Solitär');                    


Prüft ob ein Handle exestiert.


iniWrite (Pfad, Section, Key, Value)
Code:


Delphi-Quelltext
1:
iniWrite ('C:\Test.ini''Main''X''Test');                    


Schreibt einen String in eine INI. Dabei muss der komplette Pfad aufgeschrieben werden.


iniRead (Pfad, Section, Key, Value)
Code:


Delphi-Quelltext
1:
iniRead ('C:\Test.ini''Main''X''Test');                    


Ließt einen String aus einer INI. Dabei muss der komplette Pfad aufgeschrieben wenden.


iniIntWrite (Pfad, Section, Key, Value)
Code:


Delphi-Quelltext
1:
iniIntWrite ('C:\Test.ini''Main''X''15');                    


Schreibt einen Integer in eine INI. Dabei muss der komplette Pfad aufgeschrieben wernden.


iniIntRead (Pfad, Section, Key, Value)
Code:


Delphi-Quelltext
1:
iniIntRead ('C:\Test.ini''Main''X''15');                    


Ließt einen Integer aus einer INI. Dabei muss der komplette Pfad aufgeschrieben wernden.

ControlSend (Key, Handle)
Code:


Delphi-Quelltext
1:
ControlSend ('VK_RETURN''Notepad');                    


Sendet einen Tastendruck an ein nicht sichtbares Fenster
Tasten sind hier sichtbar



ControlClick (Handle, Key, x, y, Klicks)
Code:


Delphi-Quelltext
1:
ControlClick ('Solitär''WM_LBUTTONUP''500''800'2);                    


Sendet einen Tastendruck an ein nicht sichtbares Fenster.
Key Möglickeiten sind:

Code:

- WM_MOUSEMOVE
- WM_LBUTTONDOWN und WM_LBUTTONUP
- WM_RBUTTONDOWN und WM_RBUTTONUP


WinClose (Handle)
Code:


Delphi-Quelltext
1:
WinClose ('Solitär');                    


Schließt eine beliebiege Anwendung. Dabei muss das Handle bekannt sein.


HIDE
Code:


Delphi-Quelltext
1:
Hide;                    


Versteckt die Delphi Anwendung


SHOW
Code:


Delphi-Quelltext
1:
Show;                    


Zeigt die Delphi Anwendung


Prozessliste(Anzeige)
Code:


Delphi-Quelltext
1:
ProzessListe (ListBox1.Items);                    


Listet alle laufende Prozesse auf. Dabei ist egal wo.
Geeignet sind ListBoxen und ComboBoxen.



MouseMove (x, y, Geschwindigkeit)
Code:


Delphi-Quelltext
1:
MouseMove ('500''500''100');                    


Bewegt die Maus in einem aktiven Fenster. Die Geschwindigkeit wird in ms gemssen


ShutDown (Flag)
Code:


Delphi-Quelltext
1:
ShutDown ('EWX_Shutdown');                    


Bietet mehrere Möglichkeiten zum herunterfahren des Systemes.
Folgende Möglichkeiten gibt es:

Code:

EWX_Logoff - Loggt den User aus
EWX_Poweroff - Schaltet den Strom aus wenn der PC heruntergefahren ist
EWX_Reboot - Computer wird neu gestartet
EWX_Shutdown - Der Computer wird normal herruntergefahren


Update

- Funktionen geben nun einen eindeutigen Wert zurück = Keine (oder wenig) Dialogsfelder.
- MemoryRead geht jetzt sicherer
- Vorab Version von SendText (ganzen String an ein unbekanntes Fenster senden). ist leider noch Buggy. Wenn jmd die Lösung kennt, dann gerne :D


mfg


Delete - Do 31.12.09 11:32

Was kann sie?Wie machts sies? Sind irgendwelche Libs nötig? etc?
Ich würde gerne mehr erfahren... ;)

MfG


Xeron - Do 31.12.09 11:45

Edit: Angaben im ersten Posting eingefügt.


Gausi - Do 31.12.09 12:07

Hallo,

Bitte gib dem Topic doch auch noch einen etwas besseren Namen und packe die Beschreibung (evtl. in etwas kürzerer Fassung) mit in das erste Posting. Der Begriff "kleine Hilfs Unit" ist ja nichts, wo man sich direkt was drunter vorstellen kann. ;-)

Dazu einfach oben auf user defined image oder user defined image klicken und den Beitrag bearbeiten.

- Danke schön. :D


Xeron - Do 31.12.09 12:31

Wie kann ich da den 2 Beitrag löschen? Wär ja dumm wenn der Topic 2x da wär


Gausi - Do 31.12.09 12:35

Änder den einfach in "Edit: Angaben im ersten Posting eingefügt." ;-)


spawn89 - Do 31.12.09 14:56

Wenn etwas nicht funktioniert kann man auch ne Funktion draus machen und false zurückgeben, anstatt einfach wie wild mit Dialogen um sich zu werfen...

Und muss sowas hier jetzt auch noch veröffentlicht werden? Ich finde sowas mehr schädlich als nützlich. Auf welche Ideen da wieder Neueinsteiger kommen...


Delete - Do 31.12.09 15:04

Jeder Anfänger möchte gerne mal präsentieren was er geschaffen hat , also geh bitte nich so hart in die Bresche mit ihm.Ich kann mich noch an meine Anfänge erinnern und was ich damals für'n Scheiß gepostet habe. Außerdem finde ich seine Unit für einen Anfänger recht nützlich. :zustimm:


Xeron - Do 31.12.09 17:53

Zitat:
Wenn etwas nicht funktioniert kann man auch ne Funktion draus machen und false zurückgeben, anstatt einfach wie wild mit Dialogen um sich zu werfen...

Und muss sowas hier jetzt auch noch veröffentlicht werden? Ich finde sowas mehr schädlich als nützlich. Auf welche Ideen da wieder Neueinsteiger kommen...


Ich glaube du hast ganz genau so angefangen :D

Naja, den Punkt mit den Funktionen hast du recht. Ich überarbeite es mal das die Funktion dann entweder True oder False ausgibt.
Kannst ja mal sagen welche FUnktionen/Prozeduren nicht funken.

mfg


spawn89 - Do 31.12.09 18:34

user profile iconXeron hat folgendes geschrieben Zum zitierten Posting springen:
Ich glaube du hast ganz genau so angefangen :D

Nein habe ich nicht, man stößt nur schnell drauf.
Als Online-Spieler merkt man halt sehr schnell, dass alle möglichen Spiele durch Seiten, wie die oben gepostete, kaputt gemacht werden! Mittlerweile kommts halt nicht mehr auf 'Skill' an, sondern dank solcher Seiten nur noch auf den besseren Bot.


Xeron - Fr 01.01.10 11:36

Ja, aber ich besitze kein einziges Online Rollenspiel. Deswegen sehe ich das auch nicht so streng wenn ich sowas programmiere.


Mike19 - Fr 01.01.10 12:40

Ein gusundes neues Jahr


Zitat:
Ja, aber ich besitze kein einziges Online Rollenspiel. Deswegen sehe ich das auch nicht so streng wenn ich sowas programmiere.


mach weiter so und lass Dich durch solche Bemerkungen

Zitat:
Nein habe ich nicht, man stößt nur schnell drauf.
Als Online-Spieler merkt man halt sehr schnell, dass alle möglichen Spiele durch Seiten, wie die oben gepostete, kaputt gemacht werden! Mittlerweile kommts halt nicht mehr auf 'Skill' an, sondern dank solcher Seiten nur noch auf den besseren Bot.


nicht entmutigen


Gausi - Fr 01.01.10 12:50

Ich möchte nochmal auf den etwas unpassenden Titel dieses Threads hinweisen.

Desweiteren möchte ich darauf hinweisen, dass es hier um die hier vorgestellte Unit geht, und nicht um irgendwelche Seiten, auf denen diese Sammlung von Funktionen auch vorgestellt wird. Bitte bleibt also beim Thema. ;-)