2010-12-21 1 views
3


Wenn ich einen neuen Prozess starte, wird automatisch der Fokus gesetzt. Wie kann ich verhindern, dass es den Fokus erhält, oder stattdessen den Fokus auf meine Anwendung richten?C# Prozess Start Fokus Problem

hier ist der Code Ich verwende:

string path = @"c:\temp\myprocess.exe"; 
ProcessStartInfo info = new ProcessStartInfo(path); 
info.WorkingDirectory = path; 
Process p = Process.Start(info); 

ich den ausgeführten Prozess nur müssen nicht den Fokus zu erhalten.

Vielen Dank,
Adi Barda

Antwort

0

können Sie tun

myForm.Focus(); 

wo myForm das Formular auf der Hauptanwendung ist

+0

angezeigt ist ich es versucht. es funktioniert nicht! –

+1

Es funktioniert nicht, da im Moment, wo Sie den Thread starten, eine Verzögerung auftritt, bis die Benutzeroberfläche angezeigt wird. Zu diesem Zeitpunkt nennst du bereits Focus auf deine Form, aber der externe Prozess kommt immer noch als letztes und stiehlt den Fokus. –

5

Vielleicht kann helfen, die WindowStyle Eigenschaft Minimized Einstellung.

+2

Ich denke, es dauert noch konzentrieren, auch wenn es nicht – mcmillab

4

Wenn Sie nicht auf den ganzen Prozess zeigen müssen, versuchen Sie dies:

string path = @"c:\temp\myprocess.exe"; 
ProcessStartInfo info = new ProcessStartInfo(path); 
info.WorkingDirectory = path; 
info.WindowStyle = ProcessWindowStyle.Hidden; 

Oder setzen Sie WindowStyle auf ProcessWindowStyle.Minimized, wenn Sie es sichtbar aber minimiert sehen möchten, wie Uwe Keim sagte.

0

Was ich getan habe, war eine kleine Verzögerung zu warten, bis die andere Anwendung erfolgreich geladen wurde, dann fokussiere ich mein Anwendungsfenster.

//Test window 
const string strCmdText = "/C cd C:\\sqlcipher"; 
Process.Start("CMD.exe", strCmdText); 

//Delay 
int liMilliseconds = 50; 
Thread.Sleep(liMilliseconds); 

//Code to bring window to front 
this.WindowState = FormWindowState.Minimized; 
this.Show(); 
this.WindowState = FormWindowState.Normal;