Das starten eines Prozesses ohne zu stehlen focus (C#)

Ich muss in der Lage sein, Prozesse zu starten (sowohl Konsole und Fenster), ohne es zu stehlen, konzentrieren. Der einzige Weg, innerhalb der .NET framework, die ich fand, um dies zu tun, ist Microsoft.VisualBasic.Die Interaktion.Schale mit Microsoft.VisualBasic.AppWinStyle.[Minimiert|Normal]NoFocus (die Karte, um SW_SHOWMINNOACTIVE/SW_SHOWMA Durchlaufen ShellExecute).

In der aktuellen version von meinem code (die nicht stehlen Fokus), ich bin mit System.Diagnostik.Prozess, und sich auf einige der Funktionen, die mir bietet, was die Interaktion.Shell-Methode nicht.

2 Fragen (eine schwere und eine Entlüftung mein Frust, dass ich nicht wirklich erwarten, eine gute Antwort auf)

1.) Bin ich richtig, dass ich keine Wahl habe, aber zum wickeln CreateProcess oder ShellExecuteEx mich, oder übersehe ich eine andere Lösung? Ich war wirklich gehofft, um dies zu vermeiden, als Prozess ist eine so vollständige und nützliche wrapper anderes als dieses versehen, und es wäre so viel Funktionalität zu implementieren, P/Invoke-Aufrufe zu Debuggen, und alle Arten von verschiedenen Schmerzen.

2.) Warum sollte ein team bei Microsoft zu schaffen, wie ein (ansonsten) komplette wrapper, und dann ausschließen Hälfte der möglichen Werte von ProcessWindowStyle, während ein anderes team erstellte eine ähnliche wrapper, der war viel weniger vollständig, aber, sofern alle nützlich Fenster Formatvorlagen?

  • Sind Sie auf der Codierung etwas, was Sie nicht wollen, dass die Benutzer über wissen, oder wollen nicht die Mühe, den user? LOL Upps... :-/
  • Keine andere Wahl? Microsoft.VisualBasic namespace ist Teil der .NET framework und auf jedem .NET installieren. Nicht verwenden, es wäre ein Fehler. Es hat viele andere leckereien, aber Sie können nicht herausfinden, wenn Sie kann nicht vorbei an den namespace-Namen.
  • Hi nobugz, ich entschuldige mich, wenn ich den Eindruck erweckt, ich hatte ein problem mit dem namespace. Das ist nicht mein problem, in der Tat verwende ich eine nette parser von Microsoft.VisualBasic in einem anderen Teil des Codes. Das problem ist, dass das Microsoft.VisualBasic.Die Interaktion.Shell gibt mir nicht die Möglichkeit benachrichtigt zu werden, auf beenden oder Abbrechen eines Prozesses. Ich müsste irgendwie wickeln Sie es um die Funktionalität, wheres die Process-Klasse bietet mir diese beiden Dinge.
  • jasonco, ich will nicht stören den Benutzer. Sie in der Tat müssen in der Lage sein, um die Interaktion mit der gestartete Prozess, wenn gewünscht, die ist der Grund, warum ich nicht verwenden können, Ausgeblendet.
InformationsquelleAutor psm321 | 2010-01-23
Schreibe einen Kommentar