Autor Beitrag
MadMaiden
Hält's aus hier
Beiträge: 13



BeitragVerfasst: 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 user profile iconTino: Titel geändert.

_________________
Life's a lesson...and I'm the Theatcher
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: 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 Suche in: Delphi-Forum, Delphi-Library WM_SETTEXT und falls es ein "normaler" Button ist sollte Suche in: Delphi-Forum, Delphi-Library BM_CLICK das sein was du suchst...

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
MadMaiden Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Di 15.07.03 10:58 
danke fur den Hinweis...

Ich habe dass geschrieben, aber es funk nich... wieso:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Di 15.07.03 11:40 
Ich habe dein Programm runtergeladen, und bin auf Windows geganden, und dort das "DTS" programm gesehen. Ich habe bei FINDWINDOW als zweites Parameter "DTS" geschrieben....aber geht nicht...wieso..?
ausblenden Quelltext
1:
2:
3:
4:
5:
HWND FindWindow(      

    LPCTSTR lpClassName,
    LPCTSTR lpWindowName
);


ausblenden Delphi-Quelltext
1:
2:
3:
4:
shellexecute(handle,'open',PChar('E:\dts\Release\dts.exe'),nil,nil,SW_SHOW);  
x:=FINDWINDOW(nil,'DTS'); 
if x>0 then
      showmessage('something')

x bleibt auch in diesem Fall 0....

_________________
Life's a lesson...and I'm the Theatcher
MadMaiden Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Di 15.07.03 13:03 
Das Prog mit Suche in: Delphi-Forum, Delphi-Library 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 Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Di 15.07.03 15:33 
danke sehr.....
geht schon...


ps... X-SPY ist wirklich Klasse.... :wink:

_________________
Life's a lesson...and I'm the Theatcher
MadMaiden Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Di 15.07.03 17:09 
jetzt bin ich leider wider an einem pkt angekommen wo ich nachfragen muss.... :oops: 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....
ausblenden volle Höhe Delphi-Quelltext
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), nilnil, false,
  NORMAL_PRIORITY_CLASS, nilnil, 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');//hier will ich den Knopf aus dem Infofenster drucken.....
but2:=FindWindowEx(dts2,0,'Button',nil);
SendMessage(but2,BM_CLICK,0,0);
end;
end;


Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.

_________________
Life's a lesson...and I'm the Theatcher