• 30.05.2024, 12:49
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

moinky

Senior Member

suche API Function zum runterfahren

Sonntag, 10. Februar 2002, 18:55

Tach Leutz!
Ich hab ein Proggi gemacht, was die Temps überwacht.
Wenn die Temp einen bestimmten Wert überschreitet, dann soll der Pc runterfahren.
Jetzt brauch ich dafür ne API funktionen.
Die normale "ExitWindowsEX" ignoriert win2k einfach!

Re: suche API Function zum runterfahren

Dienstag, 26. März 2002, 14:29

Beim nächsten mal solltest du mal schreiben WOMIT DU programmierts. Ich schätze mal vom Code her Visual Basic.
Ich war mal so frei und habe ein Beispiel für dich geschrieben.

'Deklarationen
Private Const EWX_SHUTDOWN As Long = 1
Private Declare Function ExitWindowsEx Lib "user32" (ByVal dwOptions As Long, ByVal dwReserved As Long) As Long

'Code:
'Schaltet den Computer ab
lngResult = ExitWindowsEx(EWX_SHUTDOWN, 0&)

PS:
1. Habe es nicht unter Win2K getestet.
2. Kannst du mir mal verraten wie du die Temp aus dem BIOS abfragst?

MFG
MacGyver

moinky

Senior Member

Re: suche API Function zum runterfahren

Dienstag, 26. März 2002, 18:03

jajaja mit vb, das hab ich auch so gemacht und win2k ignoriert das einfach!

Re: suche API Function zum runterfahren

Dienstag, 26. März 2002, 20:52

WindowsEx ist eine API-Funktion
Nur mal so zur Info

Vielleicht funktioniert es mit Trick 17:

1. Anzeigen des Beenden Dialogs:
Private Declare Function SHShutDownDialog Lib "shell32" Alias "#60" (ByVal YourGuess As Long) As Long

SHShutDownDialog 0

2. mit dem SendKey-Befehl eine Enter-Taste durch das System Schicken:
SendKeys "{ENTER}"

Eventuell, da Windows etwas langsam ist, dazwischen eine API-Pause einbauen.
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliSeconds As Long)
Sleep = XXX

Re: suche API Function zum runterfahren

Mittwoch, 27. März 2002, 13:01

Guckst du hier
Ist zwar in C++, aber ... das ist ja kein Problem!!

Ciao

DerPan

Ojo

unregistriert

Re: suche API Function zum runterfahren

Mittwoch, 27. März 2002, 17:52

Hi moinky ...

Ich kann zwar kein VB, hier aber ein Codeschnipsel für Delphi,
vielleicht kannst Du es in VB portieren: :D

-----------------------------------------------------------------
function TForm1.WindowsDowner(flag:word): Boolean;
var
VInfo: TOSVersionInfo;
hToken: THandle;
tp: TTokenPrivileges;
dw: DWord;
begin
Result:=false;
VInfo.dwOSVersionInfoSize:=SizeOf(VInfo);
GetVersionEx(VInfo);
if VInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then
begin // WinNT/Win2k
OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES, hToken);
LookupPrivilegeValue(nil,'SeShutdownPrivilege',
tp.Privileges[0].Luid);
tp.PrivilegeCount:=1;
tp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
dw:=0;
AdjustTokenPrivileges(hToken, False, tp, 0,
PTokenPrivileges(nil)^, dw);
CloseHandle(hToken);
Result:=ExitWindowsEx(flag, 0);
end else
begin // Win95/98
Result:=ExitWindowsEx(flag, 0);
end;
end;
-----------------------------------------------------------------

Aufrufen kannst Du dann die Funktion so:
-----------------------------------------------------------------
WindowsDowner(EWX_POWEROFF Or EWX_FORCE);
-----------------------------------------------------------------

Gruß Ojo

Re: suche API Function zum runterfahren

Mittwoch, 27. März 2002, 18:42

@ DerPan

Wenn du mal was gelesen hättest, hättest du festgestellt das die da auch die gleiche API Function benutzen wie ich meinen oberen Beispiel ;D

@ Ojo

In den Delphi Beispiel ist ebenfalls diese nicht unter Win2K funktionierende API Funktion ;D

Ojo

unregistriert

Re: suche API Function zum runterfahren

Mittwoch, 27. März 2002, 19:44

@ MacGyver
Also bei funktioniert diese Funktion unter Win XP einwandfrei.
Kann mir nicht vorstellen, das es unter 2k nicht klappen sollte,
da ich diesen Codeschnipsel unter der Rubrik "Wie fahre ich Win 2k
runter" gefunden habe. Aber komische Zufälle gibt es immer wieder.
Nun frage ich mich warum 2k diesen API Aufruf ignoriert aber unter
XP funktioniert ! ???

Gruß Ojo

Edit: Habe hier noch ein VB Beispiel gefunden, benutzt aber auch für
Win 2000 diesen "ExitWindowsEx" API Aufruf.

http://www.planet-source-code.com/vb/scr…=11156&lngWId=1

Re: suche API Function zum runterfahren

Mittwoch, 27. März 2002, 19:59

Ist halt Windows eben. Bis jetzt haben alle meine API Funktionen in irgendwelchen Programmen funktionuert.
Wenn das C++ Beispiel oder Delphi etc. in Win2K funktioniert, muß es woll ein Programmier fehler sein. ;D

MFG

Re: suche API Function zum runterfahren

Mittwoch, 27. März 2002, 20:46

@MacGyver
Ja die gleiche Funktion. Aber die Funktion alleine macht's nicht. Vielleicht solltest dur dir das mit den Berechtigungen mal zu Herzen nehmen!!

Ciao

DerPan

Re: suche API Function zum runterfahren

Donnerstag, 28. März 2002, 01:18

@ DerPan

Jeder normaler AlleinUser ist NORMALERWEISE Administrator, also hat derjenige alle Rechte. Bei NT darf eigentlich, wenn nichts geändert wurde, jeder den Rechner ebenfalls runter fahren.
;)

Re: suche API Function zum runterfahren

Donnerstag, 28. März 2002, 09:12

Zitat von »MacGyver«


Jeder normaler AlleinUser ist NORMALERWEISE Administrator, also hat derjenige alle Rechte. Bei NT darf eigentlich, wenn nichts geändert wurde, jeder den Rechner ebenfalls runter fahren.
;)


Dus schreibst es ja selber ... NORMALERWEISE ... Da du aber mit Microsoft arbeitest gibt es kein Normalerweise!!!!
Probier's doch einfach mal aus ;)!

<EDIT>
Berechtigungen ist vielleicht das falsche Wort. Nennen wir es Privilegien.
</EDIT>

Ciao

DerPan

Re: suche API Function zum runterfahren

Donnerstag, 28. März 2002, 17:56

@ DerPan

Ich habe dieses Problem ja NICHT.
Bei moinky läuft es ja wie auch immer NICHT. :(

Re: suche API Function zum runterfahren

Freitag, 29. März 2002, 10:19

Ou ja, sorry!

Habs wohl bei dem elendich langen Thread aus den Augen verloren ;D

Re: suche API Function zum runterfahren

Freitag, 29. März 2002, 11:12

Ich wollte sowiso mal Win2K installieren.
Dabei probier ich das mal aus und wenn es funktioniert muß moinky etwas falsch gemacht haben. :D

Re: suche API Function zum runterfahren

Mittwoch, 10. April 2002, 22:20

Tach mal wieder!! :D

Habe mal gestöbert und was gefunden, was auch unter Win2K funktioniert!! :D :D

http://www.activevb-archiv.de/vb/VBtips/VBtip0418.shtml

Ist ein Super Beispiel

MFG