2016-04-19 10 views
-1

Meine Frage ist nicht beantwortet durch die Frage When do we need to set UseShellExecute to True? Wenn Sie denken, dass es ist, erklären Sie bitte wie?Wie setze ich Windows Forms Anwendung ushellexecute auf True?

Ich muss die UseShellexecute auf true für meine Windows Form Application-Projekt vor dem Start des Anwendungsprozesses, aber ich kann nicht finden, wo in dem Projekt muss ich die Änderung vornehmen?

Es ist ein Windows-Formular-Anwendungsprojekt in Visual Studio 2015

Der Haupteinstiegspunkt für die Anwendung sieht wie folgt aus:

[STAThread] 
static void Main() 
{ 
    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    Application.Run(new MainForm()); 
} 

Wo ich ProcessStartInfo verwenden soll und UseShellExecute Wert angeben?

EDIT: Vielen Dank an Matthew Watson, der vorgeschlagen, ich ändere die Umgebung CurrentDirectory, die das Problem gelöst! Ich werde Ihren Anser als den richtigen markieren, wenn Sie ihn als Antwort posten!

+0

„_ ... Ich brauche die festlegen usehellexecute zu true für meine Windows-Formular-Anwendung ... _ "- Das macht absolut keinen Sinn für mich. –

+0

Wenn ich meine Anwendung aus ihrem Ordner starte, ist der Arbeitsverzeichnispfad der Ordner, von dem ich sie gestartet habe. Aber wenn ich es von einer Verknüpfung irgendwo ausführe, ändert sich der Pfad des Arbeitsverzeichnisses zu System32. Ich habe gegoogelt und gefunden, dass ich usethellexecute ändern muss, um wahr zu finden, aber ich kann nicht finden, wo/wie ich es ändern soll? – user5825579

+1

Wenn Sie die Eigenschaften für die Verknüpfung für Ihre Anwendung betrachten, hat es eine "Start in" -Einstellungen. Ich schätze, das ist entweder leer oder zeigt auf den falschen Ordner. Es sollte den Ordner angeben, der Ihre exe enthält. –

Antwort

0

Sie könnten versuchen, dies zu Beginn des Programms setzen:

Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory; 

, die sicherstellen, dass das Programm den aktuellen Arbeitsverzeichnis (CWD) immer in den gleichen Ordner wie die ausführbare Datei festgelegt, wenn Ihre Programm startet.

Ich vermute, was passiert, ist, dass die Verknüpfung, die Sie verwenden, einen fehlenden oder falschen Ordner für seine "Start in" -Eigenschaft hat. Befestigung, die ein anderer Ansatz (Rechtsklick auf die Verknüpfung, wählen Sie Eigenschaften und dann die Shortcut Registerkarte und geben Sie den richtigen Ordner in der starten in Abschnitt.) Wäre

0

Sie könnten ProcessStartInfo verwenden und UseShellExecute Wert angeben.

ProcessStartInfo startInfo = new ProcessStartInfo("exepath"); 
startInfo.Arguments = args; //argument 
startInfo.UseShellExecute = true; 

Process.Start(startInfo); 
Verwandte Themen