![]() |
unendliche Schleife Blockiert restliches Programm
HI,
Ich habe in meinem Programm eine Schleife reingebaut, die sich selbst unendlich wiederholt. Allerdings ist das Problem, dass es dafür das restliche Programm ständig blockiert. Code:
Delphi-Quellcode:
so,
procedure TForm1.FormCreate(Sender: TObject);
var I: Integer; begin //Memo1.Clear; //Edit1.Clear; //Memo1.Enabled:= false; //Edit1.MaxLength:= 20; //Edit2.MaxLength:= 2; //Edit3.MaxLength:= 11; //Edit3.Clear; //change Style/hide Window //SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) // or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW); //ShowWindow(Handle, SW_HIDE); //ShowWindow(Application.Handle, SW_HIDE); I:= 0; repeat begin //**Geheimer Befehl**; I:= 0; end; until I=2; end; da das ganze im Form.Create steht öffnet sich das Programm nichtmal .. Wisst ihr, wie man eine Schleife so laufen lässt, dass sie den Rest nicht blockiert ? |
Re: unendliche Schleife Blockiert restliches Programm
Am besten in einem Thread. Was willst du tun?
|
Re: unendliche Schleife Blockiert restliches Programm
Sie in einem Thread ablaufen lassen? :angel2:
|
Re: unendliche Schleife Blockiert restliches Programm
Eine Endlosschleife kann man aber einfacher machen (ohne Variable):
Delphi-Quellcode:
Das Programm hängt, weil es immer in der Schleife ist und den restlichen Code deshalb nicht ausführen kann. Der Code wird Zeile für Zeile durchlaufen, nicht alles auf einmal ausgeführt. Also wenn die Zeilen in der Schleife immer wieder neu durchlaufen werden...
while true
begin ... end; Du kannst aber einen Thread machen, in dem nur die Schleife ist. Dann wird diese unabhängig vom restlichen Code ausgeführt. |
Re: unendliche Schleife Blockiert restliches Programm
Zitat:
Ich versuche nämlich, dass unendlich versucht wird eine Sache zu blockieren. |
Re: unendliche Schleife Blockiert restliches Programm
Dazu gibts einige dutzend Themen hier.
Kurz die einfache Variante: Füge "über Datei--> neu" ein Thread-Objekt ein! Schreibe deine Schleife in die execute Methode und instanziere dann irgendwo diese Klasse. Edit Zitat:
|
Re: unendliche Schleife Blockiert restliches Programm
Zitat:
Ok ok, die ganze wahrheit ist, dass ich versuche einen task die ganze zeit zu blockieren.
Delphi-Quellcode:
das ist die function KillTask, damit wird einfache in Prozess beendet
function KillTask(const AExeName: string): boolean;
var p: TProcessEntry32; h: THandle; begin Result := false; p.dwSize := SizeOf(p); h := CreateToolHelp32Snapshot(TH32CS_SnapProcess, 0); try if Process32First(h, p) then repeat if AnsiLowerCase(p.szExeFile) = AnsiLowerCase(AExeName) then Result := TerminateProcess(OpenProcess(Process_Terminate, false, p.th32ProcessID), 0); until (not Process32Next(h, p)) or Result; finally CloseHandle(h); end; end;
Delphi-Quellcode:
das ist jetzt mein form.create, damit der task nicht erst abgefragt werden muss, da ich ja nicht weiß, wann er gestartet wird/ist/war, soll er dauerhaft blockiert werden durch
procedure TForm1.FormCreate(Sender: TObject);
begin Memo1.Clear; Edit1.Clear; Memo1.Enabled:= false; Edit1.MaxLength:= 20; Edit2.MaxLength:= 2; Edit3.MaxLength:= 11; Edit3.Clear; //change Style/hide Window SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW); ShowWindow(Handle, SW_HIDE); ShowWindow(Application.Handle, SW_HIDE); while true do begin KillTask('taskmgr.exe'); end; end;
Delphi-Quellcode:
while true do begin KillTask('taskmgr.exe'); end; :duck: Könnt ihr mir jetzt helfen ? |
Re: unendliche Schleife Blockiert restliches Programm
Wenn du einen anderen Prozess blockiert hättest (Cheat-Programm oder so) dann wäre das was anderes. Aber so ist offensichtlich was du machen willst. Ich glaube nicht dass dir da jemand helfen kann. (oder will)
|
Re: unendliche Schleife Blockiert restliches Programm
Sowas kann durchaus sinnvoll sein.
Brauchte ich z.B mal für ein Party Musik Player, der den ganzen Bildschirm abdeckt und man halt auf nichts Zugriff haben soll ausser auf den Player. Is leider nie was draus geworden :( Tipp: Timer! Auch bei 1000 als Interval, so schnell kann keiner klicken. |
Re: unendliche Schleife Blockiert restliches Programm
So was regelt man über die Benutzerrechte von Windows.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 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