| Autor |
Beitrag |
Analyzer
Hält's aus hier
Beiträge: 10
|
Verfasst: 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 Motzi: 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
      
Beiträge: 1099
Erhaltene Danke: 2
|
Verfasst: Di 13.04.04 21:21
Hallo!
Du brauchst die Funktion ExitWindowsEx().
Genaueres findest du hier:
www.delphi-forum.de/...hlight=exitwindowsex
|
|
Motzi
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: 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 
Hält's aus hier
Beiträge: 10
|
Verfasst: Di 13.04.04 21:53
Also mein Quelltext sieht jetzt so aus ..
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;
public end;
var Form1: TForm1;
implementation
{$R *.DFM}
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;
OSVersionInfo.dwOSVersionInfoSize := SizeOf (OSVersionInfo); if not GetVersionEx (OSVersionInfo) then Exit;
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 Motzi: Delphi-Tags hinzugefügt.
|
|
toms
      
Beiträge: 1099
Erhaltene Danke: 2
|
Verfasst: Di 13.04.04 21:57
Es muss z.B so heissen:
Delphi-Quelltext 1: 2: 3: 4:
| procedure TForm1.Button1Click(Sender: TObject); begin ShutdownWindows(swtShutdown); end; |
|
|
Analyzer 
Hält's aus hier
Beiträge: 10
|
Verfasst: Di 13.04.04 23:05
naja jetzt hab ich schon das nächste problem
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 ?  )
Enable (true/false) macht den timer an / aus ( oder ?  )
Doch wie kann ich jetzt eine Funktion aufrufen wenn eine bestimmte Zeit abgelaufen ist?
|
|
Motzi
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: 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 
Hält's aus hier
Beiträge: 10
|
Verfasst: Di 13.04.04 23:25
hab ihc mir fast gedacht ^^ ... warum geht das dann nicht ?
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 Motzi: Delphi-Tags hinzugefügt.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 13.04.04 23:39
Nun ja. Was für eine Einheit hat den Zeit?
|
|
Analyzer 
Hält's aus hier
Beiträge: 10
|
Verfasst: 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 
Hält's aus hier
Beiträge: 10
|
Verfasst: Mi 14.04.04 11:04
Ahh jetzt geht alles so wie ich des will
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
|
Verfasst: Mi 14.04.04 11:37
Neue Frage, neuer Thread.
Mist, jetzt moderiere ich schon im falschen Forum. 
|
|
Motzi
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: 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 
Hält's aus hier
Beiträge: 10
|
Verfasst: Mi 14.04.04 12:40
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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. 
|
|