Delphi-PRAXiS
Seite 2 von 7     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Windows XP beenden (https://www.delphipraxis.net/13733-windows-xp-beenden.html)

MathiasSimmack 25. Dez 2003 20:22

Re: Windows XP beenden
 
Merken wird man´s nicht, allerdings ziehe ich "meinen" Weg (fairerweise muss ich sagen, dass ich ihn von einem anderen quasi abgeschrieben habe) vor.

Snooze 26. Dez 2003 07:54

Re: Windows XP beenden
 
hm hab das nun eingebaut, nur schreibt er mir hier:

function TForm1.ExitWin(flag:word): Boolean;
var vi : TOSVersionInfo;
hToken : THandle;
....


folgende Error-Meldung:

Function needs result type



danke

Snooze

MathiasSimmack 26. Dez 2003 08:11

Re: Windows XP beenden
 
Bist du sicher, dass du das
Delphi-Quellcode:
: boolean;
angegeben hast? Der Fehler erscheint bei mir nämlich nur, wenn ich folgendes versuche:
Delphi-Quellcode:
function Irgendwas;
Du siehst (evtl.), dass das Rückgabeergebnis der Funktion fehlt.

Noch besser wär´s allerdings, wenn du die Funktion nicht von der Form abhängig machst:
Code:
[b]function[/b] [color=red][s]TForm1.[/s][/color]ExitWin(flag:word): Boolean;
Damit lässt sie sich bspw. in eine separate Unit auslagern und auch für andere Projekte verwenden. Darum verzichtet meine Prozedur ja auch auf die Angabe von irgendwelchen Forms, weil sie streng genommen ohnehin aus einem nonVCL-Projekt stammt.

Snooze 26. Dez 2003 08:19

Re: Windows XP beenden
 
ah toll jetzt funzt es :-D

zwar war die Lösung nicht die Entfernung von Tform1, sondern ich habe nicht beachtet, dass bei mir diese Form TForm3 heißt.

lasse ich das ganz weg, dann bekomme ich ne neue Error-Meldung.

Aber danke an alle, die mir bei diesem Prob so geholfen haben :dp:

malo 20. Okt 2004 15:36

Re: Windows XP beenden
 
Also, ich hab da meine Probleme mit. Hab auch WinXP und bei mir fährt und fährt der einfach nicht runter, obwohl ich alles eingebaut hab... Da kommt auch keine Fehlermeldung, gar nix.

Hier mal etwas von meinem Quelli:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  //time = integer-variable. Im OnCreate des Forms auf 1 gesetzt.
  time := time + 1;
  if time = 12 then ExitWindowsEx(EWX_SHUTDOWN, 0);
  if time = 2 then Label2.Caption := '9';
  if time = 3 then Label2.Caption := '8';
  if time = 4 then Label2.Caption := '7';
  if time = 5 then Label2.Caption := '6';
  if time = 6 then Label2.Caption := '5';
  if time = 7 then Label2.Caption := '4';
  if time = 8 then Label2.Caption := '3';
  if time = 9 then Label2.Caption := '2';
  if time = 10 then label2.Caption := '1';
  if time = 11 then label2.Caption := '0';
end;
Wie man hier erkennen kann, soll es eine Art "Stoppuhr" werden, die nach ein paar Sekunden den Rechner hinunterfährt. Ich hab auch den ganzen "function Exitwin" kram drinne und alles. Ich kann nun das Programm starten, der Countdown wird wunderbar angezählt und wenn er bei 0 angekommen ist, passiert nichts :(

phlux 21. Okt 2004 17:10

Re: Windows XP beenden
 
1. Schonmal was von Case of gehört?
2. Hast du dir die Privilegien gesichert??

mfg phlux

jfheins 21. Okt 2004 17:24

Re: Windows XP beenden
 
[OT="Sorry, aber ich konnte nicht anders ..."]
Zitat:

Zitat von malo
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  //time = integer-variable. Im OnCreate des Forms auf 1 gesetzt.
  time := time + 1;
  if time = 12 then ExitWindowsEx(EWX_SHUTDOWN, 0);
  if time = 2 then Label2.Caption := '9';
  if time = 3 then Label2.Caption := '8';
  if time = 4 then Label2.Caption := '7';
  if time = 5 then Label2.Caption := '6';
  if time = 6 then Label2.Caption := '5';
  if time = 7 then Label2.Caption := '4';
  if time = 8 then Label2.Caption := '3';
  if time = 9 then Label2.Caption := '2';
  if time = 10 then label2.Caption := '1';
  if time = 11 then label2.Caption := '0';
end;

Da läuft es einem kalt dem Rücken 'runter ... *schauder*
(was ist, wenn du z.B. einen Countdown von ein einer Minute machen möchtest statt 10 sek. ?)

Ich schlage vor, den obigen Quellcode mit folgendem zu ersetzten:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  dec (time);
  Label1.Caption := time;
  if (Time = 0) then
  begin
    Timer1.Enabled := false;
    WasMachen;
  end;
end;
[/OT]

malo 21. Okt 2004 21:13

Re: Windows XP beenden
 
@jfheins: hab ich auch schon überlegt, nur ist time eine integer-variable und damit kann ich dann nichtmehr so gut aufrechnen :roll:
und um 'ne zweite Variable, die vllt. vom typ string ist, zu erstellen, bin ich zu faul. Leiber das ganze 10 mal kopieren und die Wert ändern... fertig :mrgreen: :roll:

@phlux: Da fällt mir nur der smiley hier zu ein: :wiejetzt:

jfheins 22. Okt 2004 08:16

Re: Windows XP beenden
 
[NST] (NST = New SubTopic :mrgreen: )
Ich weis zwar nicht, was du meinst, aber das muss natürlich so sein:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  dec (Time);
  Label1.Caption := IntToStr (Time);
  if (Time = 0) then
  begin
    Timer1.Enabled := FALSE;
    WasMachen;
  end;
end;
Time ist eine globale Integervariable ...
Man beachte das IntToStr () ...
[/NST]

Luckie 22. Okt 2004 08:20

Re: Windows XP beenden
 
Das gehört wohl kaum noch zur ursprünglichen Frage. Ich würde darum bitten einen neuen Thread anzufangen. Wer ein Problem mit dem Timer hat, wird wohl kaum diesen Thread öffnen. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:27 Uhr.
Seite 2 von 7     12 34     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz