![]() |
Nach Explorer absturz
Wie kann ich am besten prüfen ob der Explorer abgestürzt ist ohne Timer?
Unter Win10 stürzt dieser leider immer öfter ab danach funktioniert mein Programm nicht mehr. (bsp. Wegen NVIDIA Control Panel) |
AW: Nach Explorer absturz
Zitat:
![]() Zitat:
Abstürze des Windows Explorer sind sehr häufig durch schlecht Programmierte Shell Extensions verursacht. Diese zu identifizieren und zu löschen löst das Problem. Evtl. findet sich ja in der Windows Ereignisanzeige zu dem Absturz ein Hinweis |
AW: Nach Explorer absturz
Zitat:
Ist das nicht eine Sache die NVIDIA beheben sollte? Mit den HOOK werde ich mir mal anschauen. Danke! |
AW: Nach Explorer absturz
Zitat:
Falls der Rechner älter ist, dann hilft ab und zu ältere Treiber-Versionen, da die neuesten nur noch "mehr schlecht als recht" für die alten Grafikkarten angepasst werden. |
AW: Nach Explorer absturz
Zitat:
Welches Interesse sollte ich haben hier Unwahrheiten zu veröffentlichen? Ja es ist der Menu Punkt um die NVIDIA Systemsteuerung aufzurufen. Es gibt eine extra APP die aus dem Store von MS installiert werden kann die funktioniert aber auch nur mehr schlecht als recht. Meistens crasht der Explorer beim ersten Aufruf des Explorer Kontext Menu nach dem Neustart und es hat nichts mit Treibern zu tun. Und dann funktioniert meine Anwendung nicht mehr weil die ProcID des Explorer sich geändert hat. Ich muss also Fehler abfangen die vom System selbst generiert werden. Stupid! Win10 ![]() Ist das meine Aufgabe? Sieht man auf das Datum dann erkennt man wie lange das Problem schon (immer noch) besteht. |
AW: Nach Explorer absturz
Zitat:
Zitat:
Zitat:
Wenn du mit ein wenig Code erklärst, was nach der Änderung der explorer.exe PID dann nicht mehr funktioniert, dann kann dir doch sicher irgendwer helfen. |
AW: Nach Explorer absturz
Zitat:
Wie kannst du helfen wenn du das Log siehst? Zitat:
Davon jedoch kann ich mit der ewigen Beta Version von WIN10 nichts erkennen. Zitat:
Wenn der Explorer abstürzt bekommt mein Programm nicht mehr mit ob dieser voll oder leer ist. Es aktualisiert also den aktuellen Status nicht mehr. Zitat:
Die Frage war also schon beantwortet. Zitat:
Das sind 2 paar Schuhe, zudem verwendet der Standard Grafiktreiber den Dienst "NVIDIA Display Container LS" gar nicht, bringt also nichts. |
AW: Nach Explorer absturz
ich blicke gerade nicht so ganz durch ob das problem behoben ist ansonsten würde ich vielleicht so vorgehen:
Delphi-Quellcode:
Sowas in der art vor deinem "Schau nach Korb" dingens rein?
function GetExplorerPID: DWORD;
var hWnd: Cardinal; PID: DWORD; begin hWnd := FindWindow('Progman', 'Program Manager'); GetWindowThreadProcessId(hWnd, @PID); Result := PID; end; |
AW: Nach Explorer absturz
Zitat:
Deine Lösung ist aber sehr weit davon entfernt. Es bringt mir nichts alle "ms" diese Aufzurufen. Danke Die frage war auch nicht wie ich an die PID komme sondern Zitat:
|
AW: Nach Explorer absturz
Nur nochmal zur Vervollständigung.
Ich registriere den Papierkorb damit das Event WM_SHELLNOTIFY ausgelöst wird.
Delphi-Quellcode:
Wenn nun der Explorer abstürzt wird das Event WM_SHELLNOTIFY nicht mehr ausgelöst da es zum vorherigen Prozess Explorer.exe nicht mehr gültig ist.
{$REGION 'procedure RegisterRecyleBin'}
procedure TMainApp.RegisterRecyleBin(WinHandle: HWND); var pidlRecycleBin: PItemIDList; stPIDL: TSHChangeNotifyEntry; hr: HRESULT; begin hr := SHGetSpecialFolderLocation(WinHandle, CSIDL_BITBUCKET, pidlRecycleBin); if Succeeded(hr) then begin stPIDL.pidl := pidlRecycleBin; stPIDL.fRecursive := True; FHNotifyRBin := SHChangeNotifyRegister(WinHandle, SHCNF_ACCEPT_INTERRUPTS or SHCNF_ACCEPT_NON_INTERRUPTS, SHCNE_ALLEVENTS, WM_SHELLNOTIFY, 1, stPIDL); if 0 = FHNotifyRBin then RaiseLastOSError(GetLastError); end else RaiseLastOSError; // Hier werde ich nun den Hook implementieren und die Anwendung entsprechend des Event neu starten. end; {$ENDREGION} Bzw. Der Papierkorb ist dann nicht mehr registriert (FHNotifyRBin = Registrations ID) ist dann ungültig. Wie gesagt es ist mir unverständlich das ein System so unzuverlässig ist und man selber eventuelle Fehler diesbezüglich abfangen muss. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz