winapi, wincontrols finden,remote,fernsteurung
-
- Beiträge: 140
- Registriert: Fr 21. Nov 2008, 11:29
- OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
- CPU-Target: 32/64Bit
winapi, wincontrols finden,remote,fernsteurung
Gibt es die Möglichkeit, alle aktiven Wincontrols zu ermitteln ? (auch die der anderen Anwendungen)
Für die Formulare gibt es GetWindow(hWnd:HWND; uCmd:UINT):HWND;
gibt es etwas Entsprechendes auch für für die wincontrols ?
Grund der Frage : Ich möchte via simuliertem Tastenbefehle ein fremdes Programm fernsteuern.
Bis jetzt habe ich nur die Möglichkeit gefunden, das Formular zu finden (s.o) und mit dessen Handle
per GetWindowRect(hWnd,rect) die Größe des Formulars zu bestimmen.
Nun kann ich natürlich auf rein geometrischem Weg die Lage der einzelnen Eidts, Buttons etc errechnen und
per mousemove und keyinput bearbeiten. Vielleicht gehts ja noch besser.... ?!
(Auf diesem Weg auch noch ein riesengroßer Dank an den Verfasser des mouseandkeyinput packages !!)
Für die Formulare gibt es GetWindow(hWnd:HWND; uCmd:UINT):HWND;
gibt es etwas Entsprechendes auch für für die wincontrols ?
Grund der Frage : Ich möchte via simuliertem Tastenbefehle ein fremdes Programm fernsteuern.
Bis jetzt habe ich nur die Möglichkeit gefunden, das Formular zu finden (s.o) und mit dessen Handle
per GetWindowRect(hWnd,rect) die Größe des Formulars zu bestimmen.
Nun kann ich natürlich auf rein geometrischem Weg die Lage der einzelnen Eidts, Buttons etc errechnen und
per mousemove und keyinput bearbeiten. Vielleicht gehts ja noch besser.... ?!
(Auf diesem Weg auch noch ein riesengroßer Dank an den Verfasser des mouseandkeyinput packages !!)
-
- Beiträge: 340
- Registriert: Di 12. Sep 2006, 08:57
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Kontaktdaten:
Re: winapi, wincontrols finden,remote,fernsteurung
Hat es einen bestimmten Grund, das Rad neu zu erfinden?
Es gibt Remotedesktop, Teamviever, VNC und was noch alles, um Computer fernzusteuern. Und diese Programme sind sicherer als alles, was du selbst programmierst. Hast du dir mal Gedanken gemacht, wie du dein Control finden willst, wenn das Fenstert minimiert ist? Hast du malwas von Window Messages gehört? Evtl. sollte man diesen Ansatz verfolgen, und nicht auf gut Glück geometrisch Controls ermitteln.
Es gibt Remotedesktop, Teamviever, VNC und was noch alles, um Computer fernzusteuern. Und diese Programme sind sicherer als alles, was du selbst programmierst. Hast du dir mal Gedanken gemacht, wie du dein Control finden willst, wenn das Fenstert minimiert ist? Hast du malwas von Window Messages gehört? Evtl. sollte man diesen Ansatz verfolgen, und nicht auf gut Glück geometrisch Controls ermitteln.
Grüße, Antrepolit
care only if your os is really burning
care only if your os is really burning
-
- Beiträge: 140
- Registriert: Fr 21. Nov 2008, 11:29
- OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
- CPU-Target: 32/64Bit
Re: winapi, wincontrols finden,remote,fernsteurung
Antrepolit hat geschrieben:1. Remotedesktop, Teamviever, VNC und was noch alles, um Computer fernzusteuern. Hast du dir mal Gedanken gemacht, wie du dein Control finden willst, wenn das Fenstert minimiert ist?
2. Hast du malwas von Window Messages gehört?
3.Evtl. sollte man diesen Ansatz verfolgen, und nicht auf gut Glück geometrisch Controls ermitteln.
Zunächst einmal Dank für die Antwort !
zu 3.Auf "Gut Glück" ist bis jezt nichts passiert. Bis jetzt ist das die einzige Möglichkeit, die ich zum Laufen gebracht habe.
Selbstverständlich freue ich mich über jede Anregeung, wie es besser gemacht werden könnte,
(Vorwürfe usw. bringen mich irgendwie garnicht weiter)
zu 1. Remotedesktop etc. helfen mir nicht weiter, da ich die Werte programmgesteuert setzen will und nicht manuell per Keyboard.
Klar kann ich mir die Probleme vorstellen, wenn das Fenster minimiert oder in Größe verändert ist.
Wenn das nicht so wäre, hätte ich die Umfrage nicht gestartet.
zu2. Man mag es kaum glauben, von Windows messages habe ich gehört..
Ich habe damit bis heute nur selten zu tun gehabt. Deshalb ja auch meine Anfrage : s.o.
Zuletzt geändert von arturx am So 1. Jul 2012, 21:17, insgesamt 1-mal geändert.
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: winapi, wincontrols finden,remote,fernsteurung
arturx hat geschrieben:da ich die Werte programmgesteuert setzen will und nicht manuell per Keyboard.
Es gibt diverse "Macro recorder" und "Script" Programme, die (nach einem Training) Programnme (lokal) mit einer automatisierten Bedienung beschicken.
Mein Sohn hat vor ein paar Jahren auch mal sowas (in Delphi) geschrieben. Es konnte z.B. Windows anhand der Headline finden, aktivieren und Tasten-Events schicken. Und z.B. im Script verzweigen, wenn eine Headline (noch) nicht existierte.
-Michael
-
- Beiträge: 290
- Registriert: Mo 24. Dez 2007, 13:14
- OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
- CPU-Target: AMD64X2
Re: winapi, wincontrols finden,remote,fernsteurung
Wenn du Handle von Fenster (HWND bei WinApi, HAndle bei vcl/lcl) hast kannst du alles mögliche machen.
Suche in Winapi nach Findwindow alles weitere erfährst du dort.
Das klappt aber nur bei Programmen die Windows-Controls verwenden. Bei Programmen die alles selbst zeichnen ist nur Hauptfenster windows-Control z.B. bei FireFox und QT-Programme.
Suche in Winapi nach Findwindow alles weitere erfährst du dort.
Das klappt aber nur bei Programmen die Windows-Controls verwenden. Bei Programmen die alles selbst zeichnen ist nur Hauptfenster windows-Control z.B. bei FireFox und QT-Programme.
-
- Beiträge: 140
- Registriert: Fr 21. Nov 2008, 11:29
- OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
- CPU-Target: 32/64Bit
Re: winapi, wincontrols finden,remote,fernsteurung
1.Nun mal eine ganz dumme Frage : Wie komme ich ans WINAPI ?Bora4d hat geschrieben:Suche in Winapi nach Findwindow alles weitere erfährst du dort.
bis jetzt habe ich mir mit functions.h bzw. func.inc aus windows.pas beholfen,
mir Etliches dazugereimt und manchmal... auch Ergebnisse erzielt.
Systematisch war das natürlich nicht.
Bitte hilf mir durch die anfänglichen Schritte mit dem WINAPI. Ich denke, dass das auch viele andere interessieren würde.
Ich hatte schon erwartet, dass die Grenze der Ansprechbarkeit durch Windows messages bei den twincontrols liegt.Bora4d hat geschrieben:.Das klappt aber nur bei Programmen die Windows-Controls verwenden. Bei Programmen die alles selbst zeichnen ist nur Hauptfenster windows-Control z.B. bei FireFox und QT-Programme.
Ich denke, dass ich die dann via findwindow oder GetWindow organisieren und filtern kann.
(Tieferliegende Einflussmöglichkeiten - auf tcontrols etc. - wird es dann tatsächlich wohl nur über die Simulation von mouse und keyboard geben)
-
- Lazarusforum e. V.
- Beiträge: 3158
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: winapi, wincontrols finden,remote,fernsteurung
arturx hat geschrieben:1.Nun mal eine ganz dumme Frage : Wie komme ich ans WINAPI ?
bis jetzt habe ich mir mit functions.h bzw. func.inc aus windows.pas beholfen,
mir Etliches dazugereimt und manchmal... auch Ergebnisse erzielt.
Systematisch war das natürlich nicht.
Bitte hilf mir durch die anfänglichen Schritte mit dem WINAPI. Ich denke, dass das auch viele andere interessieren würde.
Schau dir doch bitte einmal ein grundlegendes Delphi Tutorial an, damit du weißt, was du mit der Datei windows.pas alles machen kannst außer Textteile herauszukopieren.
WINAPI steht für (Microsoft) Windows application programming interface. Das ist die Menge aller Funktionen, Konstanten, Variablen (und so weiter) die das Betriebssystem Microsoft Windows einem Anwendungsentwickler bereitstellt. Die offizielle Dokumentation dazu findest du im Microsoft Developer Network (MSDN). Sollte dir die Windows.pas nicht ausreichen, bringt der FPC auch die Units des JEDI-Projektes mit.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 290
- Registriert: Mo 24. Dez 2007, 13:14
- OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
- CPU-Target: AMD64X2
Re: winapi, wincontrols finden,remote,fernsteurung
WinApi genau genommmen Win32Api (Win64Api) weil WinApi für Windows 3.1 war Windows Programmier Schnittstelle, also das was LCL für dich erledigt.
Genaues kannst du Wikipedia lesen. http://de.wikipedia.org/wiki/Windows_Application_Programming_Interface
Für Windows-Api zu verwenden brauchst du Windows.pas. In Windows.pas sind fast alle Funktionen definiert die reichen für dich.
Mit GetWindow verwendest du schon API-Funktion. Du brauchst die Dokumentation von diesen Funktionen. Die sind immer mit Delphi mitgeliefert wenn du irgend ein Delphi Version hast kannst du von da nehmen oder einfach hier herunterladen:
http://www.carabez.com/downloads.html (Ganz unten win32api.zip oder win32api_big.zip)
Wenn du Zip-DAtei entpackst findest du Help-Datei. Da stehst wie du GetWindow oder andere Funktionen benutzen kannst.
Oder du kannst bei MSN-Nachschauen:
http://msdn.microsoft.com/de-de/library/ee663266.aspx
Mit GetWindow und GetNextWindow oder EnumWindows kannst du alle Fenster-Handles holen.
Lade einfach von oben Die Help-Datei öffnet die Seite mit GetWindow und klicke oben [Overview] dann siehst du alle Befehle die ähliche Funktionen haben.
Du brauchst nicht um von Buttons usw. Handles zu erhalten positionen zu berechnen. Du kannst das einfach mit FindWindow/FindWindowEx machen.
1. Lade ein Programm runter womit du Fensterklassenname von allen Windows-Controls finden kannst. z.B. das:
http://assarbad.net/stuff/eda_preview270.exe
2. Dann benutze Findwindow/FindwindowEx funktion um Handle von deinem Button zu erhalten.
3. Wenn du Handle hast kannst du mit SendMessage Nachrichten zum diesem Fenster schicken.
Z.B.:
WM_GETTEXT/WM_SETGET um Text zu erhalten oder zu ändern
WM_KEYDOWN für Tastendruck usw...
4.
Hier ist ein Beispiel für Handle suchen.
http://www.swissdelphicenter.ch/de/showcode.php?id=327
Sorry ich habe nicht mehr Lust weiterzuschreiben, Ich glaube damit mußtest du weiterkommen. Wenn nicht schreib nochmal.
Genaues kannst du Wikipedia lesen. http://de.wikipedia.org/wiki/Windows_Application_Programming_Interface
Für Windows-Api zu verwenden brauchst du Windows.pas. In Windows.pas sind fast alle Funktionen definiert die reichen für dich.
Mit GetWindow verwendest du schon API-Funktion. Du brauchst die Dokumentation von diesen Funktionen. Die sind immer mit Delphi mitgeliefert wenn du irgend ein Delphi Version hast kannst du von da nehmen oder einfach hier herunterladen:
http://www.carabez.com/downloads.html (Ganz unten win32api.zip oder win32api_big.zip)
Wenn du Zip-DAtei entpackst findest du Help-Datei. Da stehst wie du GetWindow oder andere Funktionen benutzen kannst.
Oder du kannst bei MSN-Nachschauen:
http://msdn.microsoft.com/de-de/library/ee663266.aspx
Mit GetWindow und GetNextWindow oder EnumWindows kannst du alle Fenster-Handles holen.
Lade einfach von oben Die Help-Datei öffnet die Seite mit GetWindow und klicke oben [Overview] dann siehst du alle Befehle die ähliche Funktionen haben.
Du brauchst nicht um von Buttons usw. Handles zu erhalten positionen zu berechnen. Du kannst das einfach mit FindWindow/FindWindowEx machen.
1. Lade ein Programm runter womit du Fensterklassenname von allen Windows-Controls finden kannst. z.B. das:
http://assarbad.net/stuff/eda_preview270.exe
2. Dann benutze Findwindow/FindwindowEx funktion um Handle von deinem Button zu erhalten.
3. Wenn du Handle hast kannst du mit SendMessage Nachrichten zum diesem Fenster schicken.
Z.B.:
WM_GETTEXT/WM_SETGET um Text zu erhalten oder zu ändern
WM_KEYDOWN für Tastendruck usw...
4.
Hier ist ein Beispiel für Handle suchen.
http://www.swissdelphicenter.ch/de/showcode.php?id=327
Sorry ich habe nicht mehr Lust weiterzuschreiben, Ich glaube damit mußtest du weiterkommen. Wenn nicht schreib nochmal.
-
- Beiträge: 140
- Registriert: Fr 21. Nov 2008, 11:29
- OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
- CPU-Target: 32/64Bit
Re: winapi, wincontrols finden,remote,fernsteurung
Hey Bora (und auch Socke),
Vielen..usw...vielen Dank ! Genau das habe ich gesucht.
Infos, die mir einen sinnvollen Anfang/Suche ermöglichen.
(Natürlich vermeide ich Betriebssystem Aufrufe wenn es irgendwie geht, aber manchmal gehts halt nicht)
Bis jetzt klappt die Übertragung per Mouse & Tastatursimulation recht gut, vielleicht finde ich jetzt noch Besseres !
In diesem Fall hänge ich später weitere Infos an.
Vielen..usw...vielen Dank ! Genau das habe ich gesucht.
Infos, die mir einen sinnvollen Anfang/Suche ermöglichen.
(Natürlich vermeide ich Betriebssystem Aufrufe wenn es irgendwie geht, aber manchmal gehts halt nicht)
Bis jetzt klappt die Übertragung per Mouse & Tastatursimulation recht gut, vielleicht finde ich jetzt noch Besseres !
In diesem Fall hänge ich später weitere Infos an.