haberl92
Goto Top

Mit JS explorer.exe starten

Hallo zusammen,

mein Problem ist folgendes:

Ich möchte per JS den Explorer starten.

function Start() {
    var objShell = new ActiveXObject("Wscript.Shell");  
    objShell.Run("cmd /c \"start explorer.exe", 1, 0);  

nun ist es aber so, dass sich dadurch nur der Dateiexplorer öffnet und sonst nichts (Taskleiste, Desktopsymbole, usw...)

(Explorer wurde natürlich vorher beendet)

Liegt es vielleicht daran, dass der CMD Befehl nicht als Admin ausgeführt wird?

Gibt es vielleicht auch eine andere Möglichkeit den Explorer zu starten ohne den CMD-Befehl?


Und noch eine Frage: Was bedeuten die Zahlen (1, 0) hinter dem CMD-Befehl?


Schon mal vielen Dank für die Hilfe

Content-ID: 4000445168

Url: https://administrator.de/contentid/4000445168

Ausgedruckt am: 22.11.2024 um 01:11 Uhr

3063370895
3063370895 20.09.2022 um 20:05:56 Uhr
Goto Top
1 = aktiviert und zeigt ein Fenster

andere Optionen dafür:
1: aktiviert und zeigt ein Fenster
2: aktiviert und minimiert das Fenster
3: aktiviert und maximiert das Fenster
4: zeigt das Fenster in seiner letzen Position, das aktive Fenster bleibt aktiv
5: zeigt das Fenster in seiner letzen grösse und Position
6: minimiert das Fenster und aktiviert ein anderes
7: minimiert das Fenster, das aktive Fenster bleibt aktiv
8: zeigt das Fenster in seiner letzen Position, das aktive Fenster bleibt aktiv
9: stellt ein minimiertes Fenster wieder in seinen ursprünglichen Zustand
10: setzt das Fenster gleich dem Programm

0 = False = Skript läuft weiter und wartet nicht darauf dass das gestartete Program beendet wird
Haberl92
Haberl92 20.09.2022 um 20:40:49 Uhr
Goto Top
Zitat von @chaot1coz:

1 = aktiviert und zeigt ein Fenster

andere Optionen dafür:
1: aktiviert und zeigt ein Fenster
2: aktiviert und minimiert das Fenster
3: aktiviert und maximiert das Fenster
4: zeigt das Fenster in seiner letzen Position, das aktive Fenster bleibt aktiv
5: zeigt das Fenster in seiner letzen grösse und Position
6: minimiert das Fenster und aktiviert ein anderes
7: minimiert das Fenster, das aktive Fenster bleibt aktiv
8: zeigt das Fenster in seiner letzen Position, das aktive Fenster bleibt aktiv
9: stellt ein minimiertes Fenster wieder in seinen ursprünglichen Zustand
10: setzt das Fenster gleich dem Programm

0 = False = Skript läuft weiter und wartet nicht darauf dass das gestartete Program beendet wird

Vielen Dank für die Info
rubberman
rubberman 20.09.2022 um 20:49:32 Uhr
Goto Top
Wenn du in einer Kommandozeile eine ungrade Anzahl (in deinem Fall 3) Anführungszeichen hast, ist das ein deutliches Zeichen, dass was faul ist. Und, nein, ich gehe nicht davon aus dass ein zusätzlicher cmd Prozess nötig ist. Was wäre wenn ... ?
objShell.Run("explorer.exe");  

Steffen
Haberl92
Haberl92 20.09.2022 um 21:16:48 Uhr
Goto Top
Zitat von @rubberman:

Wenn du in einer Kommandozeile eine ungrade Anzahl (in deinem Fall 3) Anführungszeichen hast, ist das ein deutliches Zeichen, dass was faul ist. Und, nein, ich gehe nicht davon aus dass ein zusätzlicher cmd Prozess nötig ist. Was wäre wenn ... ?
objShell.Run("explorer.exe");  

Steffen

dachte ich mir, dass es über JS direkt auch gehen würde.
Nur habe ich damit genau das selbe Problem

Zu den Anführungszeichen:
Visual Studio Code sagt, dass es so richtig ist.
Wenn ich eins entferne oder hinzufüge zeigt es mir Fehler an.
Getestet habe ich es nur so und andere Programme starten auch wunderbar mit der Schreibweise.

Nur der Explorer.exe macht Probleme
rubberman
rubberman 20.09.2022 um 21:34:26 Uhr
Goto Top
Quick and dirty als Stand-Alone *.js
var objShell = new ActiveXObject("Wscript.Shell");  
objShell.Run("taskkill.exe /F /IM \"explorer.exe\"", 0, true);  
WScript.Sleep(2000);
objShell.Run("explorer.exe");  
Tut was es soll.

Visual Studio Code sagt, dass es so richtig ist.
Wenn ich eins entferne oder hinzufüge zeigt es mir Fehler an.
Getestet habe ich es nur so und andere Programme starten auch wunderbar mit der Schreibweise.
Das ändert nichts daran dass es falsch ist. Sicher hast du weitere Anführungszeichen im String dann nicht ordnungsgemäß mit einem Backslash maskiert.
objShell.Run("cmd /c \"start explorer.exe\"", 1, false);  

Steffen
Haberl92
Haberl92 20.09.2022 um 21:49:37 Uhr
Goto Top
Das mit den Anführungszeichen hast du recht, da hab ich was verhauen, aber bei anderen Programmstarts funktioniert es zumindest.
Auch der Explorer wird geöffnet, jedoch nur der Dateiexplorer.

Das Problem besteht weiterhin.

Wenn ich über die CMD-Konsole als Admin den explorer starte, dann funktioniert es.
Aber auch ein Standalone CMD-Script mit dem Befehl macht aber den selben Fehler.

Ich werde es, wenn ich dazu komme, mal auf einen anderen Rechner testen, ob vielleicht da das Problem liegt.
3803037559
3803037559 20.09.2022 aktualisiert um 23:11:16 Uhr
Goto Top
Zitat von @Haberl92:

Zitat von @chaot1coz:

1 = aktiviert und zeigt ein Fenster

andere Optionen dafür:
1: aktiviert und zeigt ein Fenster
2: aktiviert und minimiert das Fenster
3: aktiviert und maximiert das Fenster
4: zeigt das Fenster in seiner letzen Position, das aktive Fenster bleibt aktiv
5: zeigt das Fenster in seiner letzen grösse und Position
6: minimiert das Fenster und aktiviert ein anderes
7: minimiert das Fenster, das aktive Fenster bleibt aktiv
8: zeigt das Fenster in seiner letzen Position, das aktive Fenster bleibt aktiv
9: stellt ein minimiertes Fenster wieder in seinen ursprünglichen Zustand
10: setzt das Fenster gleich dem Programm

0 = False = Skript läuft weiter und wartet nicht darauf dass das gestartete Program beendet wird

Vielen Dank für die Info

Tja einfach nur schade das man Infos nicht liest die man einem schon mal dazu an die Hand gegeben hat, siehe Link in folgendem Kommentar ...
Hover-Effekt bei HTA-Anwendung
Haberl92
Haberl92 21.09.2022 um 10:42:42 Uhr
Goto Top
Zitat von @3803037559:
Tja einfach nur schade das man Infos nicht liest die man einem schon mal dazu an die Hand gegeben hat, siehe Link in folgendem Kommentar ...
Hover-Effekt bei HTA-Anwendung

Da hab ich es wohl übersehen, aber zumindest hab ich nochmal nachgefragt, weil ich es wissen und lernen möchte.
Haberl92
Haberl92 21.09.2022 um 10:45:29 Uhr
Goto Top
Zitat von @Haberl92:

Ich werde es, wenn ich dazu komme, mal auf einen anderen Rechner testen, ob vielleicht da das Problem liegt.

Ich habe es jetzt auch auf einen anderen Rechner getestet mit dem gleichen Ergebnis.

Ich glaube, ich werde mit den Problem leben müssen und es irgendwie umgehen.
rubberman
Lösung rubberman 21.09.2022 um 13:30:02 Uhr
Goto Top
Kann ich zwar nicht nachvollziehen, aber hab kurz dein Problem gegoogelt und sofort was gefunden:
https://superuser.com/questions/372975/restarting-explorer-does-not-rest ...

Probier also mal den kompletten Pfad "C:\\Windows\\explorer.exe".

Steffen
Haberl92
Haberl92 21.09.2022 um 15:15:15 Uhr
Goto Top
Zitat von @rubberman:

Kann ich zwar nicht nachvollziehen, aber hab kurz dein Problem gegoogelt und sofort was gefunden:
https://superuser.com/questions/372975/restarting-explorer-does-not-rest ...

Probier also mal den kompletten Pfad "C:\\Windows\\explorer.exe".

Steffen

Das mit dem Pfad hat funktioniert, nur verstehe ich nicht wieso...
Ich hab es schon mit den Pfad versucht, aber mit dem Pfad, den ich gegoogelt habe:
Der Speicherort von explorer.exe: In einem 32-Bit-Betriebssystem ist die Datei explorer.exe standardmäßig in C:\Windows. In einem 64-Bit-Betriebssystem lautet der Standardspeicherort C: \Windows\SysWOW64.
Ich habe natürlich den 64-bit Pfad gewählt, aber da hat es nicht funktioniert.

Mir ist auch unbegreiflich, wieso die Datei "explorer.exe" in zwei verschiedenen Verzeichnissen ist

Aber ich danke vielmals für die Hilfe
3803037559
3803037559 21.09.2022 aktualisiert um 15:24:38 Uhr
Goto Top
Zitat von @Haberl92:
In einem 64-Bit-Betriebssystem lautet der Standardspeicherort C: \Windows\SysWOW64
Nee, es ist genau anders rum.
Mir ist auch unbegreiflich, wieso die Datei "explorer.exe" in zwei verschiedenen Verzeichnissen ist
Stichwort FilesystemRedirection.
https://learn.microsoft.com/en-us/windows/win32/winprog64/file-system-re ...
und "Sysnative" Folder, ist lesenswert wenn man mit 32bit Prozessen arbeitet face-wink.
https://www.samlogic.net/articles/sysnative-folder-64-bit-windows.htm
Haberl92
Haberl92 21.09.2022 um 15:24:30 Uhr
Goto Top
Zitat von @3803037559:

Zitat von @Haberl92:
In einem 64-Bit-Betriebssystem lautet der Standardspeicherort C: \Windows\SysWOW64
Nee, es ist genau anders rum.

da sieht man wieder, dass man auch Google nicht vertrauen kann
3803037559
3803037559 21.09.2022 um 15:25:14 Uhr
Goto Top
Zitat von @Haberl92:
da sieht man wieder, dass man auch Google nicht vertrauen kann
Deswegen immer als erstes in der Doku des Herstellers schauen face-smile.