![]() |
Re: SCHLEIFE ZUM WIEDERHOLEN EINES SOURCES
wenn jemand lust und zeit hatt könnte er mir ja mal den surce debuggen ich komme nicht weiter
Delphi-Quellcode:
danke whitey :cat:unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ShellAPI,StdCtrls,ExtCtrls; type TForm1 = class(TForm); TMyThread= class(TThread) Button1: TButton; Button2: TButton; Label1: TLabel; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } protected procedure Execute; override; end; var Form1: TForm1; implementation {$R *.DFM} procedure TMyThread.Execute; begin while Not Terminated do procedure TForm1.Button1Click(Sender: TObject); var i : Integer; w : hWnd; begin // Externes Programm oeffnen ShellExecute(0, PChar('open'), 'C:\Programme\Internet Explorer\IEXPLORE.EXE','', '', SW_SHOWMINIMIZED); for i := 0 to 10 do begin Label1.Caption := IntToStr(i); Label1.Repaint; // Pause (in msec) Sleep(500); end; // Externes Programm schliessen w := FindWindow(NIL,'about:blank - Microsoft Internet Explorer'); if W<>0 then PostMessage(W, wm_close, 1, 1); end; procedure THauptForm.Button2Click(Sender: TObject); begin MyThread.Terminate; end; procedure TForm1.Button3Click(Sender: TObject); begin Close; end; end. [edit=Luckie]Es geht auch mit weniger Leerzeilen. :roll: Mfg, Luckie[/edit] |
Re: SCHLEIFE ZUM WIEDERHOLEN EINES SOURCES
Delphi-Quellcode:
Ohne Thread.
procedure TForm1.Button1Click(Sender: TObject);
var i : Integer; w : hWnd; e : Integer; begin // Externes Programm oeffnen while w<>0 do begin ShellExecute(0, 'open', 'C:\Programme\InternetExplorer\IEXPLORE.EXE', '','', SW_SHOWMIMIMIZED); for i := 0 to 10 do begin Label1.Caption := IntToStr(i); Label1.Repaint; // Pause (in msec) Sleep(500); end; // Externes Programm oeffnen w := FindWindow(NIL,'about:blank - Microsoft Internet Explorer'); if W<>0 then PostMessage(W, wm_close, 1, 1); end; end; |
Re: SCHLEIFE ZUM WIEDERHOLEN EINES SOURCES
[edit=Luckie]Unformatierten Code mit duzenden überflüssigen Leerzeilen entfernt. Mfg, Luckie[/edit]
|
Re: SCHLEIFE ZUM WIEDERHOLEN EINES SOURCES
Delphi-Quellcode:
---------------------------------------------------------------------------
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ShellAPI,StdCtrls,ExtCtrls; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { public declarations } end; var Form1: TForm1; implementation $R *.DFM} begin procedure TForm1.Button1Click(Sender: TObject); var i : Integer; w : hWnd; e : Integer; begin // Externes Programm oeffnen while w<>0 do begin ShellExecute(0, 'open', 'C:\Programme\InternetExplorer\IEXPLORE.EXE', '','', SW_SHOWMIMIMIZED); for i := 0 to 10 do begin Label1.Caption := IntToStr(i); Label1.Repaint; // Pause (in msec) Sleep(500); end; // Externes Programm oeffnen w := FindWindow(NIL,'about:blank - Microsoft Internet Explorer'); if W<>0 then PostMessage(W, wm_close, 1, 1); end; end; procedure TForm1.Button2Click(Sender: TObject); begin Close; end; end. jetzt geht gar nichts mehr , das programm startet nicht und es kommt auch keine fehler meldung. ------------------------------------------------------------------------ danke whitey :cat: [edit=Luckie] Mfg, Luckie[/edit] |
Re: SCHLEIFE ZUM WIEDERHOLEN EINES SOURCES
Delphi-Quellcode:
__________________________________________________ ______________________
procedure TMyThread.Execute;
begin while Not Terminated do [U]procedure TForm1.Button1Click(Sender: TObject);[/U] var i : Integer; w : hWnd; begin kann es sein das der unterstrichene butten da nicht hingehört und deshalb das programm nicht laufen will ? mfg whitey :cat: |
Re: SCHLEIFE ZUM WIEDERHOLEN EINES SOURCES
Das wäre möglich. Eine Prozedur-Deklaration hat da nichts verloren.
|
Re: SCHLEIFE ZUM WIEDERHOLEN EINES SOURCES
Hallo davidwittesz,
zum obigen Code, der auf Luckies Vorschlag basiert, solltest du w noch vorbesetzen. In der while Schleife fragst du ab, ob w <> 0 ist, aber w hat ja zu diesem Zeitpunkt noch keinen definierten Wert. Setze einfach vor der while Schleife w := 1; Willst du es mit Threads lösen, dann musst es soheißen:
Delphi-Quellcode:
procedure TMyThread.Execute;
var i : Integer; w : hWnd; begin while Not Terminated do begin // Externes Programm oeffnen ShellExecute(0, PChar('open'), 'C:\Programme\Internet Explorer\IEXPLORE.EXE','', '', SW_SHOWMINIMIZED); for i := 0 to 10 do begin Label1.Caption := IntToStr(i); Label1.Repaint; // Pause (in msec) Sleep(500); end; // Externes Programm schliessen w := FindWindow(NIL,'about:blank - Microsoft Internet Explorer'); if W<>0 then PostMessage(W, wm_close, 1, 1); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz