Windows-Beenden-Dialog
-
Das ist allerdings möglich.
Immerhin gibt es in der Referenz auch immer mal wieder Funktionen bei denen stehtDiese Funktion ist nicht implementiert.
-
Hi nochmal,
ich habe gerade einfach mal in google nach "shutdown dialog" gesucht und bin auf ein paar VB-Beispiele gefunden, die die Funktion "SHShutDownDialog" benutzen. Die Funktion ist anscheinend nicht dokumentiert und muss wohl per GetProcAddress aus der shell32.dll geladen werden. Ich werd's gleich mal ausprobieren...
-
typedef LONG (CALLBACK *SHUTDOWNDLG) (LONG); HINSTANCE hDll = LoadLibrary("shell32.dll"); SHUTDOWNDLG SHShutDownDialog; if(hDll != 0) { SHShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hDll, (LPSTR)60); SHShutDownDialog(0); } FreeLibrary(hDll);
Hehe, war schneller.
[ Dieser Beitrag wurde am 26.11.2002 um 23:07 Uhr von WebFritzi editiert. ]
-
Mist :p
-
thx, dat funzt gut, aber mit einem hacken... ich glaube ich muss noch den ruckgabewert bearbeiten weil sonst nix passiert... der rechner faehrt nicht runter... wisst ihr was fuer ruckgabewerte die funktion zurueck gibt?
-
Hi,
also bei mir klappts.
Konnte es allerdings nur unter Windows XP testen. Hab alle 3 Buttons ausprobiert ("Standby", "Ausschalten", "Neu starten") und jeder hat getan was er sollte.
-
ok, funzt bei mir auch (hat vorhin nur bisschen gehackt...)
-
greetings, ich habe das bsp. von docjunior auch in der msdn
gefunden. nun möchte ich einen anderen coputer im netzwerk
herunterfahren lassen (XP), doch irgendwie krieg ich das net hin.
hier was ich bisher gemacht hab:
geb ich einen computernamen ein, den es nicht im LAN gibt, wird die erste (0101010101) und die zweite (020202020) fehlermeldung
ausgegeben. gibt es den namen aber wird nur die zweite ausgegeben.-vielleicht kann mir ja jemand weiterhelfen.
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iShowCmd) { HANDLE hToken; TOKEN_PRIVILEGES tkp; char szComName[] = "razor"; if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) Beep(300,100); if(!LookupPrivilegeValue(szComName, SE_REMOTE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid)) MessageBox(NULL, "1010101010", "10101010", 0); tkp.PrivilegeCount = 1; tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0); if (GetLastError() != ERROR_SUCCESS) Beep(300,1000); if(!InitiateSystemShutdown(szComName, "GAME OVER", 15, TRUE, FALSE)) MessageBox(NULL, "202020202020", "2020202020", 0); Sleep(13000); AbortSystemShutdown(szComName); return 0; }
-
Mach nach jeder Fehlermeldung einfach ein "return 1;", damit wird sichergestellt, dass das Programm nach dem Fehler nicht mehr weiterläuft. Wenn es den Computer nicht gibt, wird dann auch nur die erste ausgegeben.
cya
-
jo, danke
aber damit is mein problem ja net gelöst.
hat sonst keiner ne idee was ich falsch gemacht hab?