Bei Beenden durch Herunterfahren Code ausführen
-
Ich habe ein Programm geschrieben dessen Fenster über
ShowWindow(hWnd, SW_HIDE);unsichtbar ist, nun soll das Programm wenn es z.b durch das Herunterfahren des Rechners oder abmelden beendet wird noch ein kleines Stückchen Code ausführen
mitWM_DESTROYkomm ich leider nicht weiter, Kann mir jemand helfen ?
-
Wieso reicht dir WM_DESTROY nicht?
-
Weil der Code aus irgend einem Grund nicht ausgeführt wird ich vermute das WM_DESTROY nicht ausgelöst wird wenn das Programm durchs Herunterfahren beendet wird.
-
Doch wird es definitiv

-
was ist denn wenn du die shutdown.exe ersetzt ? geht das so ???
-
ok bin noch Anfänger was WinAPI angeht habe hier ein stück Code der Veranschaulichen soll was nicht klappt:
#define STRICT #include <windows.h> #include <stdio.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); const char szAppName[] = "Ein eigenes Fenster"; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { HWND hWnd; MSG msg; WNDCLASS wc; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hCursor = LoadCursor(NULL,IDC_ARROW); wc.hIcon = LoadIcon(NULL,IDI_APPLICATION); wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszClassName = szAppName; wc.lpszMenuName = NULL; RegisterClass(&wc); hWnd = CreateWindow(szAppName, "Titelleiste", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); ShowWindow(hWnd, SW_HIDE); UpdateWindow(hWnd); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { FILE *datei; switch (message) { case WM_DESTROY: { datei= fopen("test.txt","a"); fprintf(datei,"hallo"); fclose(datei); PostQuitMessage(0); return 0; } } return DefWindowProc(hWnd, message, wParam, lParam); }in diesem Fall sollte er also eigendlich hallo in die test.txt schreiben, macht er aber nicht, wo liegt mein Fehler !
-
Gib stattdessen mal ne MessageBox aus.
Wer weiss was das Current-Directory ist und wo er die Datei hinspeichern täte
-
getestet
macht nix, tut nix
funktioniert leider nicht.
-
schau dir doch mal WM_QUERYENDSESSION (und WM_ENDSESSION) an, ist vllt. sinnvoller als WM_DESTROY
wenn es um die ausführung von code vor dem herunterfahren geht
-
Danke super das hat geklappt.