![]() |
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.
|
Re: unendliche Schleife Blockiert restliches Programm
Zitat:
|
Re: unendliche Schleife Blockiert restliches Programm
Also habt ihr keine lösung ?
.. Ich will ja den Taskmanager nur vor selbstschutz blockieren :zwinker: :coder: |
Re: unendliche Schleife Blockiert restliches Programm
Zitat:
Zitat:
|
Re: unendliche Schleife Blockiert restliches Programm
Zitat:
Aber ich bräuchte eine Lösung, die ich in meinem Code verwenden kann. Taskmanager blocken, damit nicht irgendwelche Leute das Programm blocken. (es ist mehr oder weniger ein scherz tool. heißt: nach sleep(2000) geht alles zurück zu normal. allerdings kommen meine freunde auf die idee.. "haha taskmanager und alles geht wieder" , deshalb will ich ihn blockiere) :spin2: |
Re: unendliche Schleife Blockiert restliches Programm
Zitat:
|
Re: unendliche Schleife Blockiert restliches Programm
Zitat:
:duck: |
Re: unendliche Schleife Blockiert restliches Programm
Zitat:
Ganz am Anfang stehen bereits genügend Hinweise, wie du das lösen kannst. Weiter wird die niemand helfen. |
Re: unendliche Schleife Blockiert restliches Programm
Moin Zusammen,
Zitat:
Und damit nicht jemand verleitet wird sich dennoch weiterhin hier einzubringen, mach' ich dann hier mal zu. * * * * * L O C K E D * * * * * PS: Bei mir würde das sowieso vor die Wand laufen, da ich einen alternativen Taskmanager benutze ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:25 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