Einzelnen Beitrag anzeigen

Benutzerbild von Amnon82
Amnon82

Registriert seit: 5. Jan 2005
186 Beiträge
 
FreePascal / Lazarus
 
#5

Re: RunAndWaitShell - FindWindowEx Konflikt ?!?

  Alt 26. Jun 2005, 15:46
Der Code für den Test:

Delphi-Quellcode:
procedure TForm1.EncodefixtimerPredTimer(Sender: TObject);
var Key: Char;
wnd2: hWnd;
pfad:string;
begin
memo1.lines.add(TimeToStr(time)+' '+'timer start');
memo1.lines.add(TimeToStr(time)+' '+'##################');
pfad := ExtractFilePath(ParamStr(0)) ;
wnd2 := FindWindow('#32770', PChar(Fenstertitel.text));
memo1.lines.add(TimeToStr(time)+' '+inttostr(wnd2));
  wnd2 := FindWindowEx(wnd2, 0, 'Button', 'Knopf');
  memo1.lines.add(TimeToStr(time)+' '+inttostr(wnd2));
  //if wnd2=0 then exit else
  if wnd2 <> 0 then
  begin
  SendMessage(wnd2,BM_CLICK,0,0);
  memo1.lines.add(TimeToStr(time)+' '+inttostr(wnd2));
  //wnd2:=0;
  end;
  memo1.lines.add(TimeToStr(time)+' '+inttostr(wnd2));
EncodefixtimerPred.Enabled:=false;
memo1.lines.add(TimeToStr(time)+' timer end');
memo1.lines.add(TimeToStr(time)+' ##################');
end;
Hier die Werte von dem Test mit der neuen Version des Programms, wo mein Tool einfriert:

Code:
15:11:12timer start
15:11:12  ##################
15:11:12  460776
15:11:12  460770
15:12:32  460770
15:12:32  460770
15:12:32  timer end
15:12:32  ##################
15:12:35  timer start
15:12:35  ##################
15:12:35  526306
15:12:35  526294
15:13:55  526294
15:13:55  526294
15:13:55  timer end
15:13:55  ##################
15:13:58  timer start
15:13:58  ##################
15:13:58  0
15:13:58  0
15:13:58  0
15:13:58  timer end
15:13:58  ##################
Den dritten Durchlauf hab ich abgebrochen ...

Hier nun die Werte mit einer älteren Version des Programms wo's nicht einfriert:

Code:
15:18:59  timer start
15:18:59  ##################
15:18:59  0
15:18:59  0
15:18:59  0
15:18:59  timer end
15:18:59  ##################
15:20:21  timer start
15:20:21  ##################
15:20:21  0
15:20:21  0
15:20:21  0
15:20:21  timer end
15:20:21  ##################
15:21:41  timer start
15:21:41  ##################
15:21:41  0
15:21:41  0
15:21:41  0
15:21:41  timer end
15:21:41  ##################
Auch hier hab ich den dritten Durchlauf abgebrochen ...

Und hier hab ich mal den Timer bei einem Durchlauf mit dem neuen Programm nicht ausgeschaltet:
Code:
15:32:18  timer start
15:32:18  ##################
15:32:18  1116130
15:32:18  657224
15:33:37  657224
15:33:37  657224
15:33:37  timer end
15:33:37  ##################
15:33:37  timer start
15:33:37  ##################
15:33:37  0
15:33:37  0
15:33:37  0
15:33:37  timer end
15:33:37  ##################
15:33:39  timer start < Zeiter Durchlauf >
15:33:39  ##################
15:33:39  0
15:33:39  0
15:33:39  0
15:33:39  timer end
15:33:39  ##################
Nun die Schlussfolgerung. Beide Programme werden wie folgt gestartet:

RunAndWaitShell(pchar(ProgrammpfaduEXE.txt), ' -par1 "'+path+'temp\datei1.endung" -batch',value); Das alte Programm braucht den Knopfdrück-Fix nicht und startet sofort. Das neue hat einen Bug. Startet zwar aber fängt nicht an zu arbeiten. Wenn ich manuell auf den Knopf drücke fängt es an zu arbeiten. Mit dem Timer wollte ich das beheben. Sobald der Timer aber anspringt friert mein Hauptprogramm ein. Kann man dagegen was tun oder muss ich das so hinnehmen. Der Code erfüllt ja seinen Zweck ...

Zu der Handle-Prüfung ... Wie stellt man das an?
  Mit Zitat antworten Zitat