Autor Beitrag
*Knust*
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95



BeitragVerfasst: Mo 14.07.08 18:30 
Moin!

Ich möchte ein Programm bauen, was auf andere Programme zugreift und ihnen Texte (Windows-Pfade) gibt und n paar Mouse-Klicks simuliert...
Ich hab im Forum n bisschen nach Sendmessage gesucht aber irgendwie klappt es bei mir nicht...

Ich habe WinSppy benutzt um die Handles rauszufinden und habe jetzt in etwa soeinen Code:

ausblenden Delphi-Quelltext
1:
2:
3:
programm:=findwindow(nil,'DVRMSToolboxGUI (1.0.9.5)');
unterprogramm:=findwindowex(programm,0,pchar('EDIT'),nil);
sendmessage(unterprogramm,WM_CHAR,integer(pchar('hallo')),4);


Ich weiß nicht, was ich bei den markierten Bereichen einfügen soll...
Reicht Edit??? -(der Befehl sendmessage soll einen Pfad übergeben in ein editfeld) Ich habe über winspy die fensterklasse für das Editfeld rausbekommen: WindowsForms10.EDIT.app3 ich weiß aber nicht so ganz, was ich damit soll... :D

Und wie kann ich einen String übergeben? ich hab irgendwie 1000 Varianten gesehen... wie kann ich zB machen, dass einfach nur das Wort 'Hallo' im Edit feld steht?

Schon mal Danke für die Hilfe!

mfg

Knust


Moderiert von user profile iconGausi: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 14.07.2008 um 18:49
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Mo 14.07.08 23:52 
bei mir hat es damals in etwa so funktioniert:
ausblenden Delphi-Quelltext
1:
sendmessage(unterprogramm,WM_CHAR,pointer(pchar('hallo')),length (pchar('hallo')));					

für das Problem mit dem Edit habe ich keine Ahnung, aber ich hatte es mal so gelöst, dass ich tab an dass Programm geschickt habe, bis dass editfeld den eingabefokus hat, und dann mittels umschalt+tab den fokus wieder zurückgesetzt. Den Source hatte ich irgendwo aus dem netzt, wo weiss ich leider nicht mehr.
alias5000
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2145

WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
BeitragVerfasst: Di 15.07.08 04:26 
Hallo!
Ob der Klassenname WindowsForms10.EDIT.app3 stimmt, da bin ich mir nicht so sicher. Das klingt eher danach, dass das der Name der Komponenteninstanz ist und nicht der Name der Komponente selbst.
Aber im Zweifelsfall probierst du das aus.
Mein Tipp wäre sowas wie TextField oder TEdit, je nach API, die verwendet wurde. Mit WinSpy solltest du sowas eigentlich rausfinden können.

Um einen Text in ein Textfeld einzutragen, existiert die Window Message "WM_SETTEXT" (für die siehe doku hier: msdn.microsoft.com/d...s632644(en-us).aspx). Das musst du dann nur noch passend nach Delphi umsetzen.

Gruß
alias5000

_________________
Programmers never die, they just GOSUB without RETURN
*Knust* Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95



BeitragVerfasst: Do 17.07.08 15:11 
Geil, mittlerweile regt sich was...:D
Aber es funktioniert immmernoch nicht so wie ich das will:
Es gibt in dem Programm, was ich ansprechen möchte 2 Editfelder übereinander und ich möchte das obere mit nem Text füllen, das Problem ist nur, wenn ich von winspy die Informationen benutze um das Fenster anzusprechen, wird mein text in das untere fenster geschrieben...
Ich lasse mir halt von Winspy n code generieren und änder den n bisschen um sodass es geht, aber er spricht das falsche fenster an...
winspy gibt unter anderem diese Zeile raus:

wndChild := FindWindowEx(wndChild,'WindowsForms10.EDIT.app3', 2);

wenn ich die so übernehme, geht das mit der 2 am Ende nicht, weil da n Pchar stehen muss und mit Pchar(2) gehts auch nicht... da wird mir irgendein Speicherproblem ausgespuckt....
Die 2 steht an der Stelle, wo laut delphi der Windowname hinsoll...

Weiß irgendjemand, was da zu tun ist? oder wie ich den richtigen Windowname rausfinde?

Danke schonma für die Hilfe ;)

Knust
alias5000
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2145

WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
BeitragVerfasst: Do 17.07.08 15:44 
ausblenden Delphi-Quelltext
1:
PChar('2')					

So rein ins blaue...

_________________
Programmers never die, they just GOSUB without RETURN
*Knust* Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95



BeitragVerfasst: Do 17.07.08 16:19 
Ne :(

Mittlerweile gibts noch ne andere Frage:

gibts die function findwindowex2?
also es gibt ja findwindowex aber gibts auch die andere? und wenn ja in welcher dcu is das? also was muss ich bei USES schreiben?

Knust