| Autor |
Beitrag |
MadMaiden
Hält's aus hier
Beiträge: 13
|
Verfasst: Di 15.07.03 10:02
Hallo Leute...
ich habe ein Kleines Problem.... Ich habe ein Programm dass nicht in Delphi geschrieben wurde, genauer in vc++. Ich ein Programm erstellen dass dieses Programm offnet und danach ihm strigns in jedes seiner Felder zuschickt.
Dass Programm(VC++) siht ziemlich einfach aus, 4 edit felder, und ein Knopf. Nachdem die Strings zugeschickt worden sind, soll mein Programm auch auf dem Knopf des anderen Drucken.
Wie kann man dass realisien???... ich habe schon nach mehren tutorials gesucht, aber nichts der gleichen gefunden.
Moderiert von Tino: Titel geändert.
_________________ Life's a lesson...and I'm the Theatcher
|
|
Motzi
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: Di 15.07.03 10:32
Was genau brauchst du? Wie man etwas in die Edits einträgt oder wie man den Knopf drückt? Was die Edits betrifft such mal nach WM_SETTEXT und falls es ein "normaler" Button ist sollte BM_CLICK das sein was du suchst...
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|
MadMaiden 
Hält's aus hier
Beiträge: 13
|
Verfasst: Di 15.07.03 10:58
danke fur den Hinweis...
Ich habe dass geschrieben, aber es funk nich... wieso:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| shellexecute(handle,'open',PChar('E:\dts\Release\dts.exe'),nil,nil,SW_SHOW); s:='test'; x:=FINDWINDOW(PChar('DTS'),nil); if x>0 then begin y:=FindWindowEx(x,0,'TEdit',nil); SendMessage(y, WM_SETTEXT, 0, Integer(@s[1])); end; end; |
Bitte verbesset mich ob ich fehle.... FINDWINDOW sucht ein offenes fenster, un falls es gefunden hat, gib es den handle zuruck als hwnd
FINDWINDOWEX sucht eine "Komponente" in ein handle, und falls es dieses gefunden hat, gibt es das handle der Komponenten zuruck... Sendmessage, sendet ein Test in ein bestimmtes handle.../
Weil ja FINDWINDOWEX eine "Komponente" sucht, und ich mehrere dieser in mein VC++ programm habe, wie kann ich zBsp nur einem beschtimmten TEdit ein Text zuschicken...?
_________________ Life's a lesson...and I'm the Theatcher
|
|
Motzi
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: Di 15.07.03 11:11
Also wenn das Prog in VC++ geschrieben wurde, dann ist der Klassenname der Edits ganz sicher nicht TEdit..!! Schau dir am besten mal das Prog mit einem Prog wie WinSight, Spy++ oder meinem X-Spy an und schau mal welche Klassennamen die Felder haben...
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|
MadMaiden 
Hält's aus hier
Beiträge: 13
|
Verfasst: Di 15.07.03 11:40
_________________ Life's a lesson...and I'm the Theatcher
|
|
MadMaiden 
Hält's aus hier
Beiträge: 13
|
Verfasst: Di 15.07.03 12:03
ich glaube ich habe gefunden wo der Feher war.... Das programm offnet sich zu langsam, und so, sucht mein programm nach einem namen, dass noch nicht existiert...
wie kann man dass verzogern...?
_________________ Life's a lesson...and I'm the Theatcher
|
|
Motzi
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: Di 15.07.03 13:03
Das Prog mit CREATEPROCESS starten und mit WaitForInputIdle auf den Prozess warten...
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|
MadMaiden 
Hält's aus hier
Beiträge: 13
|
Verfasst: Di 15.07.03 14:49
und woher krieg ich den hwnd parameter fur waitforinputidle
_________________ Life's a lesson...and I'm the Theatcher
|
|
Motzi
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: Di 15.07.03 15:03
WaitForInputIdle ertwartet kein Window-Handle (HWND) sondern ein Process-Handle! Deswegen hab ich auch geschrieben, dass du den Prozess mit CreateProcess erzeugen sollst...
WaitForInputIdle: msdn.microsoft.com/l...waitforinputidle.asp
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|
MadMaiden 
Hält's aus hier
Beiträge: 13
|
Verfasst: Di 15.07.03 15:33
danke sehr.....
geht schon...
ps... X-SPY ist wirklich Klasse.... 
_________________ Life's a lesson...and I'm the Theatcher
|
|
MadMaiden 
Hält's aus hier
Beiträge: 13
|
Verfasst: Di 15.07.03 17:09
jetzt bin ich leider wider an einem pkt angekommen wo ich nachfragen muss....  ich habe, das Programm(VC++) geschtartet, hab die felder gefullt, habe den Knopf gedruckt.... Jedoch wenn ich den knopf drucke, erscheint mir ein Infofenster, dass den selben namen hat... Dieses Info hat auch ein Button... wie kann ich dieses drucken....???
ich habe es versucht.... genauso wie dass andere zu drucken, aber, geht nicht. und wenn ich mit der Maus den Knopf aus dem Infofenster drucke, dann druckt sich automatisch noch einmal der Knopf das als erstes gedruckt wurde, und dass Infofenster kommt wieder zum vorschein....
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57:
| var dts,serv,user,pass,pack,but,dts2,but2:hwnd; s,u,p,pk:string;
function Starte(appname: string): boolean; var StartupInfo: TStartupInfo; ProcessInfo: TProcessInformation; begin FillChar(StartupInfo, SizeOf(TStartupInfo),0); StartupInfo.cb:=SizeOf(TStartupInfo); if CreateProcess(nil, PChar(appname), nil, nil, false, NORMAL_PRIORITY_CLASS, nil, nil, startupinfo, ProcessInfo) then begin try waitforinputidle(processinfo.hProcess, INFINITE); finally CloseHandle(ProcessInfo.hProcess); CloseHandle(ProcessInfo.hThread); end; result:=true; end else result:=false; end;
begin if Starte('E:\dts\Release\dts.exe') then begin sleep(10); label1.caption:=''; s:='HAL42';u:='sa';p:='just4fun';pk:='NDS'; dts:=FindWindow(nil,'DTS');
if dts=0 then showmessage('0');
serv:=FindWindowEx(dts,0,'Edit',nil); Sendmessage(serv,WM_SETTEXT,0,Integer(@s[1]));
user:=FindWindowEx(dts,serv,'Edit',nil); Sendmessage(user,WM_SETTEXT,0,Integer(@u[1]));
pass:=FindWindowEx(dts,user,'Edit',nil); Sendmessage(pass,WM_SETTEXT,0,Integer(@p[1]));
pack:=FindWindowEX(dts,pass,'Edit',nil); SendMessage(pack,WM_SETTEXT,0,Integer(@pk[1]));
SetActiveWindow(dts);
but:=FindWindowEx(dts,0,'Button',nil); SendMessage(but,BM_CLICK,0,0);
dts2:=FindWindow(nil,'dts');but2:=FindWindowEx(dts2,0,'Button',nil); SendMessage(but2,BM_CLICK,0,0); end; end; |
Moderiert von Tino: Code- durch Delphi-Tags ersetzt.
_________________ Life's a lesson...and I'm the Theatcher
|
|
|