| Autor |
Beitrag |
tbl
Hält's aus hier
Beiträge: 5
|
Verfasst: Do 27.02.03 16:47
Ich möchte ein Programm programmieren, welches beim Starten den Explorer-Prozess beendet(Windows-Oberfläche verschwindet) und beim Beenden den Befehl explorer in einer Konsole wieder aufruft.
Mit welchem Code funktioniert das?
Anmerkung: Ich meine mit Explorer schließen das gleiche wie wenn ich im Taskmanager auf Prozesse gehe, explorer.exe markiere und rechtsklick->Prozess beenden anklicke.
Kann mir einer helfen?
PS: Wie kann man im Allgemeinen Prozesse starten/beenden?
|
|
DaFox
      
Beiträge: 189
|
Verfasst: Do 27.02.03 17:24
Hi.
Soviel ich weiß, wird der Explorer-Process automatisch vom System wieder gestartet sobald er gekillt wurde (zumindest unter Windows 2000)! Dadurch wird wohl eine Lösung zu Deinem Problem nicht eben mal so schnell geschrieben sein.
Versuch aber zu Testzwecken mal folgendes:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| procedure killExplorer; var Wnd: HWND; ProcHandle: THandle; Result, ProcessID: Longint; ExitCode: DWord; begin Wnd := FindWindow('Progman', 'Program Manager'); Result := GetWindowThreadProcessId(Wnd, @ProcessID); if (Result <> 0) then begin ProcHandle := OpenProcess(1, false, ProcessID); GetExitCodeProcess(Wnd, ExitCode); TerminateProcess(ProcHandle, ExitCode); end; end;
procedure restartExplorer; var Wnd: HWND; begin Wnd := 0; Wnd := FindWindow('Progman', 'Program Manager'); if (Wnd <> 0) then raise Exception.Create('Explorer already running'); ShellExecute(Handle, 'open', 'Explorer.exe', nil, nil, SW_NORMAL); end; |
Gruß,
Markus
|
|
tbl 
Hält's aus hier
Beiträge: 5
|
Verfasst: Do 27.02.03 17:30
Titel: Probierts doch mal aus
Wenn man im Taskmanager den Explorer-Prozess killt, startet er sich bei mir nicht einfach wieder von alleine, sondern bleibt weg, bis ich ihn über die Konsole wieder aufrufe!
D.h., dass oben genannte Skript ist nur bedingt anwendbar.
Hat einer noch ne andere Idee?
|
|
DaFox
      
Beiträge: 189
|
Verfasst: Do 27.02.03 17:35
Naja, wenn Du mehr weißt wie ich, brauchst Du meine Hilfe wohl nicht.
1. Welches Skript?
2. Ist das Verhalten beim Beenden per Taskmanager ein anderes.
Markus
|
|
tbl 
Hält's aus hier
Beiträge: 5
|
Verfasst: Do 27.02.03 17:38
Titel: Was vergessen
|
|
tbl 
Hält's aus hier
Beiträge: 5
|
Verfasst: Do 27.02.03 17:40
Titel: DaFox, ich weiß nicht mehr,
DaFox, es war nichts gegen dich, aber probier's doch einfach mal aus! Bei mir unter WinXP funktioniert es mit dem Taskmanager! Das Skript, was ich meine, ist deins!
|
|
DaFox
      
Beiträge: 189
|
Verfasst: Do 27.02.03 17:52
| tbl hat folgendes geschrieben: |
aber probier's doch einfach mal aus! Bei mir unter WinXP funktioniert es mit dem Taskmanager!
|
| DaFox (= ich) hat folgendes geschrieben: |
Soviel ich weiß, wird der Explorer-Process automatisch vom System wieder gestartet sobald er gekillt wurde (zumindest unter Windows 2000)!
|
Das war mein Einstiegssatz.
Zum Ausprobieren: Der Code oben ("Skript") kommt von mir, demnach weiss ich, dass es 1. nicht so funktioniert wie es soll  und 2. dass man beim Beenden per TaskManager ein anderes Verhalten hat. Ich weiß allerdings nicht, wie und ob (hab mich danach nicht mehr damit beschäftigt) man das gleiche Ergebnis erzielen kann. Ich gehe davon aus, dass der automatische Start vom Explorer ein Sicherheitsaspekt ist. Wäre das der Fall ist es wohl nicht möglich mit 10 Zeilen Code den TaskManager nachzuahmen.
Und bitte, schreib nicht schon wieder ich soll es mit dem TaskManager probieren oder mit meinem Code: Das habe ich schon vor geraumer Zeit getan. Senil bin ich noch nicht!
Zusammengefasst:
- Beenden per TaskManager: Explorer startet nicht neu!
- Beenden per Code: Explorer startet sofort neu!
Markus
PS: Es gibt schon Gründe, warum manche Leute die gina.dll ersetzen um ein anderes Verhalten vom Explorer zu erreichen.
|
|
Popov
Gast
Erhaltene Danke: 1
|
Verfasst: Do 27.02.03 18:36
Unter Win95, Win98 und WinNT kann man wunderbar den Explorer killen.
Muße ich schmerzlich erfahren.
|
|
DaFox
      
Beiträge: 189
|
Verfasst: Do 27.02.03 18:44
Ups
Danke für das Feedback (auch wenn ich mir jetzt immernoch keinen Reim drauf machen kann)!
Gruß,
Markus
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 27.02.03 18:46
Ich hoffe, das Porgarmm ist nicht für die Öffentlichkeit bestimmt. Ich sehe auch keinen Grund, warum ein Programm den Explorer beenden sollte.
Sag doch einfach mal, was du vor hast, eventuell gibt es eine andere, bessere Lösung.
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 28.02.03 10:45
@Luckie:
| tbl hat folgendes geschrieben: | | Ich möchte ein Programm programmieren, welches beim Starten den Explorer-Prozess beendet(Windows-Oberfläche verschwindet) und beim Beenden den Befehl explorer in einer Konsole wieder aufruft. |
Ich erinnere mich, dass ich dazu in einer schon älteren Ausgabe der PC WELT, des PC MAGAZINs oder auch der PC Pro was gelesen habe. Damit konnte man irgendetwas ...  ... auslösen/umgehen/aushebeln ... Ich muss mal suchen, da ich mir solche Zeitungsausschnitte eigentlich aufhebe.
Vielleicht ist tbl auch schneller und erklärt das kurz. Ich meine aber, dass es nichts Bösartiges war ...
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 28.02.03 11:56
Ist es das hier, tbl?
| PC WELT 4/2002 hat folgendes geschrieben: | Bar-Keeper (S. 311)
(...) Wo speichert Windows die aktuellen Einstellungen der Symbolleisten (der Startleiste)? Die Toolbars des aktuellen Benutzers befinden sich im Registry-Schlüssel (...). Aber es hilft nur wenig, diese Schlüssel ... bei Bedarf wieder einzulesen. Die Einstellungen von Taskleiste und Symbolleiste(n) werden nur beim Windows-Start - genauer: beim Explorer-Start - eingelesen. (...)
Außerdem überprüft Windows beim Herunterfahren den aktuellen Status der Leisten und schreibt ihn in die Registry. Dabei wird jeder vorherige manuelle Import des Anwenders überschrieben. (...)
Es genügt, die EXPLORER.EXE kurzzeitig aus dem Speicher zu räumen, die gespeicherten Toolbar-Daten in die Registry zu importieren und danach den Explorer neu zu laden. (...) |
usw.
Moderiert von Tino: Off-Topic-Absatz entfernt.
|
|
tbl 
Hält's aus hier
Beiträge: 5
|
Verfasst: Sa 01.03.03 13:17
Titel: Sinn des Programms
Ich möchte mir ein kleine Benutzerschnittstelle unter Windows-Programmieren, wo ich z.B. Benutzer einrichten kann, Rechte vergeben kann, etc.. Dieses Programm soll irgendwann mal die Windows-Oberfläche beim Starten ablösen, in dem sich das Programm startet und der Rest von Windows, sprich Explorer, zurückgehalten wird, damit man dass Programm nicht manipulieren kann. Deswegen suche ich ein Skript, was den Explorer beendet, damit keiner z.B. das Programm löschen kann, und den Taskmanager(Strg+Alt+Entf) unterdrückt, weil dieser auch das Programm beenden könnte. Ich hoffe, ich hab jetz auf alle offenen Fragen geantwortet.
|
|
Popov
Gast
Erhaltene Danke: 1
|
Verfasst: Sa 01.03.03 16:17
Titel: Re: Sinn des Programms
| tbl hat folgendes geschrieben: | | Ich möchte mir ein kleine Benutzerschnittstelle unter Windows-Programmieren, wo ich z.B. Benutzer einrichten kann, Rechte vergeben kann, etc.. Dieses Programm soll irgendwann mal die Windows-Oberfläche beim Starten ablösen, in dem sich das Programm startet und der Rest von Windows, sprich Explorer, zurückgehalten wird, damit man dass Programm nicht manipulieren kann. Deswegen suche ich ein Skript, was den Explorer beendet, damit keiner z.B. das Programm löschen kann, und den Taskmanager(Strg+Alt+Entf) unterdrückt, weil dieser auch das Programm beenden könnte. Ich hoffe, ich hab jetz auf alle offenen Fragen geantwortet. |
Nim einfach WindowsNT. Dann kannst du dir die Arbeit sparren. Da kannst du das alles was du oben beschrieben machen
Ich weiß zwar nicht, ob das noch geht (bei Win9x geht das), aber du kannst in der System.ini die Zeile shell ändern:
Quelltext 1: 2: 3:
| [boot] shell=Explorer.exe ... |
Windows startet dann (und stürzt ab) mit deinem Programm.
Anderes Thema.
Moderiert von Tino: "Anderes Thema." damit wird es Off-Topic. Absatz entfernt.
|
|
|