Autor Beitrag
Analyzer
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Di 13.04.04 21:17 
Also erstmal sry für den thread , denn ich hab keine ahnung von delphi und weiss daher nicht in welche rubrik das hier kommt!

---------

Ich suche einen Befehl für Delphi den ich einfach in eine procedure einbinden kann , der dann den Pc herunterfährt!
(windows xp)

wär auch ganz praktisch , wenn ihr mir den befehl für Win9.x auch posten könntet!

thx für eure Hilfé

Moderiert von user profile iconMotzi: Topic Verschoben. Auch wenn man nicht genau weiß wohin, die Off-Topic-Sparte ist für eine Delphi-Frage immer die falsche Wahl! ;)


Zuletzt bearbeitet von Analyzer am Di 13.04.04 21:31, insgesamt 1-mal bearbeitet
toms
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1099
Erhaltene Danke: 2



BeitragVerfasst: Di 13.04.04 21:21 
Hallo!

Du brauchst die Funktion ExitWindowsEx().

Genaueres findest du hier:

www.delphi-forum.de/...hlight=exitwindowsex
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Di 13.04.04 21:23 
Hallo!

Bitte ändere den Titel des Topics da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Delphi-Forum.de Richtlinien:
Richtlinien hat folgendes geschrieben:
1.1 Beiträge
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]


Einfach oben bei deinem ersten Beitrag auf "Edit" klicken und den Titel ändern. Dank Dir!

Gruß, Motzi

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
Analyzer Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Di 13.04.04 21:53 
Also mein Quelltext sieht jetzt so aus ..

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
TShutdownWindowsType = (swtShutdown, swtShutdownPowerOff, swtRestart, swtLogoff);

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private

function ShutdownWindows (aType: TShutdownWindowsType): Boolean;

    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

{ TForm1 }

function TForm1.ShutdownWindows(aType: TShutdownWindowsType): Boolean;
const
  cSE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
  cFlagValue: Array [TShutdownWindowsType] Of UINT = ( 
      EWX_SHUTDOWN, EWX_SHUTDOWN or EWX_POWEROFF, EWX_REBOOT, EWX_LOGOFF
    ); 

var 
  OSVersionInfo: TOSVersionInfo;
  hToken: THandle; 
  hProcess: THandle;
  TokenPriv: TTokenPrivileges; 
  ReturnLength: DWORD;

begin
  Result := False; 

  // Die Windowsversion holen 
  OSVersionInfo.dwOSVersionInfoSize := SizeOf (OSVersionInfo);
  if not GetVersionEx (OSVersionInfo) then 
    Exit;

  // Prüfen ob Windows NT
  if OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then 
    begin
      hProcess := GetCurrentProcess; 
      if not OpenProcessToken (hProcess, TOKEN_ADJUST_PRIVILEGES, hToken) then
        Exit; 

      if not LookupPrivilegeValue (nil, cSE_SHUTDOWN_NAME, TokenPriv.Privileges[0].Luid) then
        Exit;

      TokenPriv.PrivilegeCount := 1;
      TokenPriv.Privileges [0].Attributes := SE_PRIVILEGE_ENABLED;

      if not AdjustTokenPrivileges (
          hToken, False, TokenPriv, 0,
          PTokenPrivileges (nil)^, ReturnLength
        )
      then
        Exit;

      CloseHandle (hToken);
    end;

  ShutdownWindows := ExitWindowsEx (cFlagValue [aType], $FFFFFFFF);
end;


<span style="color: red">procedure TForm1.Button1Click(Sender: TObject);
begin
TForm1.ShutdownWindows;
end;</span>

end.



----

So Die Rot makierte Procedure soll die funktion aufrufen ... wieso geht das nicht wie ich das gemacht habe?

Er sagt mir immer "nicht genügend wirkliche Parameter"


?

Moderiert von user profile iconMotzi: Delphi-Tags hinzugefügt.
toms
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1099
Erhaltene Danke: 2



BeitragVerfasst: Di 13.04.04 21:57 
Es muss z.B so heissen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject); 
begin 
 ShutdownWindows(swtShutdown); 
end;
Analyzer Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Di 13.04.04 23:05 
naja jetzt hab ich schon das nächste problem :D

Also der shutdownbefehl funktioniert ( fettes danke , echt cool das forum ) doch ich möchte ihn ja nicht über einen button klick runterfahrne sondern nach einer bestimmten zeit !

Ich hab also versucht diesen Delphi-timer zu verstehen :

Interval ist die zeit in ms die der Timer läuft ( oder ? :D )
Enable (true/false) macht den timer an / aus ( oder ? :D )

Doch wie kann ich jetzt eine Funktion aufrufen wenn eine bestimmte Zeit abgelaufen ist?
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Di 13.04.04 23:10 
Analyzer hat folgendes geschrieben:
Doch wie kann ich jetzt eine Funktion aufrufen wenn eine bestimmte Zeit abgelaufen ist?

Nach Ablauf der Zeit wird das OnTimer-Event ausgelöst. Einfach einmal auf den Timer doppelklicken und dort deinen Code reinschreiben..! ;)

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
Analyzer Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Di 13.04.04 23:25 
hab ihc mir fast gedacht ^^ ... warum geht das dann nicht ?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Button1Click(Sender: TObject);
var Zeit: string;
begin
Zeit:= edit1.text;
timer1.Interval:= strtoint(Zeit);
timer1.Enabled:= true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
ShutdownWindows(swtShutdown);
end;


// ok forget it! geht !

Kann ich normal mit variablen rechnen wenn ich die eingabe in sekunden geben lassen will?

also Zeit * 1000 * 60 = müssten dann doch sekunden sein für den timer odeR?

Moderiert von user profile iconMotzi: Delphi-Tags hinzugefügt.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 13.04.04 23:39 
Nun ja. Was für eine Einheit hat den Zeit?
Analyzer Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mi 14.04.04 10:24 
Also das Ziel ist ja das der Benutzer entscheiden kann nach welcher zeit sein pc heruntergefahren wird!

Zeit = Eingabe im EditFeld ( Der Benutzer gibt die Zeit in Minuten an )
Analyzer Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mi 14.04.04 11:04 
Ahh jetzt geht alles so wie ich des will :D

Danke an alle!

Jetzt hab ich noch eine frage:

Wie kann ich in einem Editfeld die mögliche Eingabe auf die Zahlen (1<) beschränken?

Gehen in dem Feld auch kommazahlen? z.b. 2,5 ?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 14.04.04 11:37 
Neue Frage, neuer Thread.

Mist, jetzt moderiere ich schon im falschen Forum. :roll:
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mi 14.04.04 11:47 
Danke dem "Aushilfs-Moderator" ;) :)

Und nochmal "offiziel": für neue Fragen bitte einen neuen Thread öffnen! :)

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
Analyzer Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mi 14.04.04 12:40 
ok und wo ?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 14.04.04 13:12 
In der passenden Sparte. Überleg mal, um was es geht und dann such dir eine Sparte aus. Aber bevor du das machst, würde ichmal die Suche bemühen. ;)