AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Windows-Explorer beenden

Ein Thema von hesch21 · begonnen am 9. Mai 2012 · letzter Beitrag vom 9. Mai 2012
Antwort Antwort
Seite 1 von 2  1 2      
hesch21

Registriert seit: 31. Aug 2004
Ort: Basel
114 Beiträge
 
Delphi XE2 Enterprise
 
#1

Windows-Explorer beenden

  Alt 9. Mai 2012, 14:36
Hallo zusammen

bitte sagt nicht 'schon wieder'! Ich habe wirklich so ziemlich alle Beiträge gelesen, wie man einen Prozess beendet und schaffe dies auch mittels TerminateProcess. Nur: Das 'killt' den Prozess und ich muss den Explorer (in Windows 7) sauber beenden, so dass er seine Registry-Einträge (vor allem die TrayIcon-Einträge) zurück schreibt.
Das muss irgendwie gehen, gibt es doch eine versteckte Menüposition, die genau das macht: Mit der Windows-Taste das Startmenü öffnen, Ctrl-Shift drücken und mit der rechten Maustaste in den leeren Bereich des Menüs klicken. Es erscheint ein Menü mit 'Explorer beenden'. Vielleicht ein Tipp für diejenigen die das noch nicht wussten.

Ich habe nun irgendwo folgendes gefunden:

Zitat:
BOOL ExitExplorer()
{ HWND hWndTray = FindWindow(_T("Shell_TrayWnd"), NULL);
return PostMessage(hWndTray, 0x5B4, 0, 0); }
und dort wird behauptet, das würde funktionieren. Meine Umsetzung in Delphi
Code:
                 hd := FindWindow(nil, 'Shell_TrayWnd');
                  PostMessage(hd, $5b4, 0, 0);
führt aber nur dazu, dass ein zusätzliches Explorer-Fenster geöffnet wird.

PS: Das ganze geht darum, dass die liebe Microsoft gefunden hat, man dürfe programmtechnisch die TrayIcons in W7 nicht mehr im Tray fixieren. Das sei dem Bnutzer zu überlassen. Dämlich wenn man aber ein Alarmierungs-Tool hat, von dem ausser diesem Icon nichts sichtbar ist und bei einem Alarm lediglich durch eine Veränderung des Icons angezeigt werden kann/darf, dass der Alarm weitergeleitet wurde. Dann MUSS das Icon immer sichtbar sein. Wie man das entgegen den Normen von Microsoft Allmighty in der Registry umstellt, habe ich auch schon raus gefunden. Aber ich muss zuvor eventuelle Änderungen des Explorers zurück schreiben.

Jemand eine Idee wo bei meiner Umsetzung des obigen Codes der Fehler ist oder wie man das anders lösen könnte?
Heinz Schneider
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Windows-Explorer beenden

  Alt 9. Mai 2012, 14:46
Hat das einen Grund, dass Du die Werte für FindWindow vertauscht hast?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.347 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Windows-Explorer beenden

  Alt 9. Mai 2012, 15:09
PS: Das ganze geht darum, dass die liebe Microsoft gefunden hat, man dürfe programmtechnisch die TrayIcons in W7 nicht mehr im Tray fixieren. Das sei dem Bnutzer zu überlassen. Dämlich wenn man aber ein Alarmierungs-Tool hat, von dem ausser diesem Icon nichts sichtbar ist
Wenn der Benutzer das möchte, kann er das ja umstellen. Dafür zeige ich dann z.B. eine kleine Hilfe an wie man dies machen kann und damit hat sich das. Wenn er es möchte, kann er es ändern, wenn nicht, dann möchte er das eben nicht.

Etwas einfach im System einfach zu ändern, ist leider eine Unart, die viele Programme "auszeichnet". Deshalb finde ich es auch gut, dass Microsoft da gegensteuert. Richtlinien alleine helfen ja offenbar nicht...

Jedenfalls funktioniert es bei mir mit den ursprünglichen Werten für FindWindow, aber dir muss klar sein, dass es damit unter Windows 8 z.B. logischerweise nicht mehr funktionieren wird. Und dort gibt es auch noch weitere Schutzmechanismen gegen falsches Verhalten von Programmen.

// EDIT:
Also bei mir sind wie zu erwarten auch bei einem Beenden des Explorers auf diesem Weg die Trayicons weg, die nicht auf die Nachricht zum Wiederherstellen reagieren. (Falls das das ist was du meintest, das gespeichert werden soll.)
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke ( 9. Mai 2012 um 15:13 Uhr)
  Mit Zitat antworten Zitat
hesch21

Registriert seit: 31. Aug 2004
Ort: Basel
114 Beiträge
 
Delphi XE2 Enterprise
 
#4

AW: Windows-Explorer beenden

  Alt 9. Mai 2012, 15:20
Hallo DaddyH

dämlich! Kommt davon, wenn man keine Ahnung von C hat und nicht kapiert, was das _T soll.
OK, jetzt funktionierts tatsächlich ... halbwegs! Der 'eigentliche' Explorer verabschiedet sich, dafür geht noch ein 'normales' Explorer-Fenster auf. Aber ich nehme mal, damit werde ich auch noch fertig. Das kann ich nun wirklich noch mit TerminateProcess wieder abschiessen.

Danke!

Lieber Jaenicke

Meine Applikation ist beispielsweise bei einem Kundem mit 1'400 Benutzern im Einsatz. Reicht das bereits als Begründung? Ich glaube kaum, dass die dortigen Systembetreuer Freude daran hätten, dieser Anzahl Benutzer beizubringen, wie sie das umstellen können und dass sie es umstellen müssen. Geschweige denn, die Sache noch zu kontrollieren. Und nochmals, es geht um die Sicherheit dieser Benutzer und damit lässt sich einfach nicht spielen oder es kann nicht dem Zufall überlassen werden, ob der Benutzer will, kann und wann.
Heinz Schneider
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
675 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Windows-Explorer beenden

  Alt 9. Mai 2012, 15:30
Wenn die Systembetreuer dort Windows 7 installieren, aber keine Lust haben, die von ihnen Betreuten darin einzuweisen, spricht das aber so gar nicht für die Systembetreuer.

Auch nicht für den Auftraggeber natürlich, der andere Methoden als das Tray-Icon zu verbieten scheint. Denn Deine sonstige Begrünudng reicht meiner Meinung nach nicht - alle Design-Sünden können mit derartigen Ausreden schöngeredet werden.

Wenn man etwas nicht "dem Zufall überlassen will", muss man halt verhandeln, ob es keine Alternativen zum Tray-Icon gibt, mit Hinweis auf Konventionen. Ein Deskband(?) in der Taskleiste zum Beispiel wäre sogar sichtbarer.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.347 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Windows-Explorer beenden

  Alt 9. Mai 2012, 15:44
Mal davon abgesehen, dass die Benutzer sicherlich zentral verwaltet werden und es daher auch zentral konfiguriert werden kann. Da macht es erst Recht keinen Sinn, dass das ein Programm lokal macht...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#7

AW: Windows-Explorer beenden

  Alt 9. Mai 2012, 15:48
Wobei da sicherheitstechnisch wohl etwas vollkommen schief geplant ist, wenn die Sicherheit von einem winzigen und kaum sichtbaren Icon abhängt, welches eventuell auch mal nicht sichtbar ist.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#8

AW: Windows-Explorer beenden

  Alt 9. Mai 2012, 15:54
Und du hältst das wirklich für eine gute Idee, einfach den Explorer abzuschießen, zu beenden oder wie auch immer du das nennen willst, nur um damit das Icon deines ach so wichtigen Programms sichtbar zu machen? Spitzenidee, warum machen das nicht alle so. Ach, halt, es gibt ja gesunden Menschenverstand und auch entsprechende Designrichtlinien .

Sorry für die überspitzte Darstellung, aber jetzt mal ernsthaft: Glaubst du wirklich, dass das eine gute Idee ist? Wenn dein Programm so wichtig ist, dann gibt es genügend andere Möglichkeiten, denn entweder dein Alarm ist so wichtig, dass darauf reagiert werden muss oder er ist es nicht (und man kann auf ihn verzichten).

Wenn der Alarm wichtig ist, dann schalten entweder die SysAdmins (so sie denn fähig sind) das auf allen Rechnern um (es gibt eine Gruppenrichtlinie, die dafür sorgt, dass immer alle TrayIcons sichtbar sind) oder es muss eine andere Art von Alarmierung/Benachrichtigung der Nutzer her. Alles andere ist Gefrickel, wie man es so schön nennt, und schlechtes Design noch dazu.

Ergänzung: Und beachte auch, dass durch ein solches "Design" auch Kollateralschäden entstehen können, denn nicht alle Programme stellen ihr Trayicon beim Neustart des Explorer wieder her.

MfG Dalai

Geändert von Dalai ( 9. Mai 2012 um 15:57 Uhr)
  Mit Zitat antworten Zitat
hesch21

Registriert seit: 31. Aug 2004
Ort: Basel
114 Beiträge
 
Delphi XE2 Enterprise
 
#9

AW: Windows-Explorer beenden

  Alt 9. Mai 2012, 16:55
Liebe Mitdenker
wenn Ihr wirklich so auf die Schnelle glaubt, über eine Applikation urteilen zu können, die doch bei einigen hundert Kunden und somit bei einigen tausend Benutzern im Einsatz ist, so gratuliere ich Euch zu Eurer schnellen Auffassungsgabe und Urteilsvermögen.
Erstes: Es geht wirklich um Sicherheit, um die persönliche Sicherheit der Mitarbeiter, um den Schutz vor Angriffen. Da steht für mich jede noch so gut gemeinte Richtlinie von Microsoft hinten an.
Zweitens: Über GPL können nur ALLE TrayIcons sichtbar gemacht werden, nicht einzelne. Den REG-Key kenne ich auch. Ist sicher auch nicht das gewünschte.
Drittens: Wer lesen kann, ist klar im Vorteil: Es geht nicht um die Anzeige von Alarmmeldungen. Die Erscheinen logischerweise als Topmost-Window mit Sound mitten auf dem Bildschirm (egal ob ein Benutzer angemeldet ist, ein Screenblanker läuft oder irgend ein LOGON-Window aktiv ist). Es geht im die Alarmauslösung. Und die muss still erfolgen aus einem im Hintergrund laufenden Programm (über eine Tastenkombination oder einen USB-Taster). So, und wie soll nun bitte die Person, die den Alarm ausgelöst hat und bedroht wird, möglichst ohne etwas zu machen und so, dass der Bedroher möglichst nichts merkt, sehen, was mit seiner Alarmmeldung läuft? Das TrayIcon wechselt das Aussehen! Ist aber etwas dämlich, wenn man es nicht sieht!
Viertes: Es wäre ziemlich stumpfsinnig, irgend einen Bildschirmbereich (topmost?) mit etwas zu belegen, das einerseit wirklich nur die Grösse eines Icons benötigt und andererseits vermutlich, respektive hoffentlich nie gebraucht wird. Wenn's aber gebraucht wird, muss es zu 100% funktionieren.
Fünftens: Das mit dem Neustart des Explorers würde mein Programm ein einziges Mal machen, nämlich beim ersten Programmstart. Und da dieser über Autostart erfolgt, tut das auch noch keinem Benutzer weh.

So, jetzt dürft ihr weiterhin an meinem gesunden Menschenverstand zweifeln. Ich persönlich habe leider das Gefühl, das Microsoft auch nicht an den gesunden Menschenverstand der Software-Entwickler glaubt und uns auf diese Weise das Leben schwer macht. Solange die Normen mit Sicherheit zu tun haben, kann ich damit leben, wenn es aber um Design geht, ist es Schikane, wenn keine Möglichkeiten bestehen, einen Kreis mit einer Ellipse zu ersetzen.
Heinz Schneider

Geändert von hesch21 ( 9. Mai 2012 um 16:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Windows-Explorer beenden

  Alt 9. Mai 2012, 17:42
Das Dein Programm von mehreren Hundert Kunden eingesetzt wird...Seit wann ist Menge ein Zeichen von Qualität?
Wobei meine Zweifel sich nicht auf Dein Programm beziehen, sondern auf die Entscheidung, eine Alarmmeldung einem PC(-Netzwerk) anzuvertrauen.

Ich für meinen Teil bin froh, daß Windows nicht das Betriebssystem meines Autos ist, denn auch das muß 100% sicher bzw. zuverlässig sein.
Wenn ich mir vorstelle ein aufgebrachter Kunde würde meinen Arbeitsplatz besuchen und ich könnte eine Alarmmeldung meinem PC anvertrauen,
Da ist Weglaufen wohl sicherer.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz