Ich arbeite an einer Windows-Shell-Erweiterung, und leider, wenn ich Änderungen an der DLL, muss ich Windows Explorer neu starten (da es die DLL im Speicher hält).Wie Windows Explorer-Prozess programmatisch starten
Ich fand dieses Programm von Dino Esposito, aber es funktioniert nicht für mich.
void SHShellRestart(void)
{
HWND hwnd;
hwnd = FindWindow("Progman", NULL);
PostMessage(hwnd, WM_QUIT, 0, 0);
ShellExecute(NULL, NULL, "explorer.exe", NULL, NULL, SW_SHOW);
return;
}
Hat jemand etwas, das sie teilen können, um dies zu tun?
P.S. Ich weiß, dass ich zum Aufgabenmanager gehen und den Explorer-Prozess beenden kann, aber ich möchte es nur auf die faule Art tun. Außerdem ermöglicht dies eine Automatisierung.
P.P.S Ich verwende .NET für die Entwicklung, aber die Shell-Neustart-Funktionalität könnte in C, C++ oder einer .NET-Sprache sein. Es wird einfach eine kleine eigenständige ausführbare Datei sein.
Ein bisschen Fehler in der Logik. Sie werden einen neuen Explorer-Prozess für jede löschen Sie neu starten. Setzen Sie process.Start außerhalb der Foreach. – Benoit
Oh ja, Entschuldigung :) – wj32