Einem per Shell gestartetem Programm den Focus geben?

26/03/2009 - 12:46 von Martin Bichler | Report spam
Hallo,

ich starte per Shell-Befehl den InternetExplorer mit vbMaximizedFocus,
unmittelbar darauf notepad mit vbMinimizedNoFocus.

task1 = Shell("C:\Programme\Internet Explorer\iexplore.exe",
vbMaximizedFocus)
task2 = Shell("notepad.exe", vbMinimizedNoFocus)


Mach ich das, wenn kein sonstiges Programm geöffnet ist (bzw. alle in die
Taskleiste minimiert sind), dann sehe ich den IE maximiert. Er hat zwar
nicht den Fokus, aber das wàre nicht so schlimm.
Mach ich es allerdings, wenn z.B. der Windows Explorer maximiert ist, dann
bleibt dieser auch maximiert im Vordergrund, der IE liegt dahinter. Wie kann
ich den IE wieder in den Vordergrund holen, also ihm den Fokus geben? Die
Reihenfolge der Aufrufe (erst IE, dann notepad) muss allerdings so bleiben.
In der Variablen task1 steht die PID des IE. Wie kann ich die ansprechen?

Danke
Martin
 

Lesen sie die antworten

#1 Martin Bichler
26/03/2009 - 13:16 | Warnen spam
"Martin Bichler" schrieb im Newsbeitrag
news:
Hallo,

ich starte per Shell-Befehl den InternetExplorer mit vbMaximizedFocus,
unmittelbar darauf notepad mit vbMinimizedNoFocus.

task1 = Shell("C:\Programme\Internet Explorer\iexplore.exe",
vbMaximizedFocus)
task2 = Shell("notepad.exe", vbMinimizedNoFocus)


Mach ich das, wenn kein sonstiges Programm geöffnet ist (bzw. alle in die
Taskleiste minimiert sind), dann sehe ich den IE maximiert. Er hat zwar
nicht den Fokus, aber das wàre nicht so schlimm.
Mach ich es allerdings, wenn z.B. der Windows Explorer maximiert ist, dann
bleibt dieser auch maximiert im Vordergrund, der IE liegt dahinter. Wie
kann ich den IE wieder in den Vordergrund holen, also ihm den Fokus geben?
Die Reihenfolge der Aufrufe (erst IE, dann notepad) muss allerdings so
bleiben. In der Variablen task1 steht die PID des IE. Wie kann ich die
ansprechen?




Nachtrag:
Hab inzwischen rausgefunden, dass man mit
"AppActivate task1"
dem IE wieder den Fokus geben kann. Klappt allerdings nur, wenn ich vor dem
Befehl eine ca. 1-sekündige Pause einbaue. Ohne Pause kommt die Meldung
"Laufzeitfehler 5. Ungültiger Prozeduraufruf oder ungültiges Argument".
Scheinbar ist der IE noch nicht ganz mit seinem Startvorgang fertig. Ich
will aber ungern eine feste Pause einbauen. Kann ja sein, dass der IE auch
mal 1,5 Sekunden zum Starten braucht. Besser wàr´s, rauszukriegen, ob er
denn schon fertig ist mit Starten. Aber wie?

Danke
Martin

Ähnliche fragen