Autor Beitrag
tbl
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189



BeitragVerfasst: 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:
ausblenden 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 <> 0then
  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 <> 0then raise Exception.Create('Explorer already running');
  ShellExecute(Handle, 'open''Explorer.exe'nilnil, SW_NORMAL);
end;


Gruß,
Markus
tbl Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 27.02.03 17:38 
Titel: Was vergessen
Das o.g. Skript funktioniert, wenn man eine Uhr das Killskript alle 100 ms ausführen lässt, da der Explorer dann, wenn er sich automatisch startet, gleich wieder geschlossen wird.
:D :D :D
tbl Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189



BeitragVerfasst: 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 :wink: 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



BeitragVerfasst: Do 27.02.03 18:36 
Unter Win95, Win98 und WinNT kann man wunderbar den Explorer killen.

Muße ich schmerzlich erfahren.
DaFox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189



BeitragVerfasst: Do 27.02.03 18:44 
Ups :oops: :wink:
Danke für das Feedback (auch wenn ich mir jetzt immernoch keinen Reim drauf machen kann)!

Gruß,
Markus
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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



BeitragVerfasst: 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



BeitragVerfasst: 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 user profile iconTino: Off-Topic-Absatz entfernt.
tbl Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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



BeitragVerfasst: 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:

ausblenden Quelltext
1:
2:
3:
[boot]
shell=Explorer.exe
...


Windows startet dann (und stürzt ab) mit deinem Programm.

Anderes Thema.

Moderiert von user profile iconTino: "Anderes Thema." damit wird es Off-Topic. Absatz entfernt.