Saturday 25 November 2017

Waitforexit Process C # Beispiel Objekt


Denn wenn Sie einen Prozess indirekt starten, erhalten Sie nicht Prozess-Objekt (dann in Ihrem Fall ist immer null und zweite Zeile wirft eine Ausnahme). Lassen Sie mich erklären, was ich meine mit indirekt. Wenn Sie nicht eine ausführbare Datei angeben, aber Sie geben ein Dokument (oder eine Ressource) dann itll durch ein Shell-Verb ausgeführt werden. In diesem Fall kann ein vorhandenes Verfahren (wieder) verwendet werden. In diesem Fall wird Process. Start () null zurückgeben. Erstellen Sie ein leeres Worddokument c: test. docx. Schließen Sie alle Word-Instanzen. Führen Sie Process. Start (c: test. docx) Gibt eine Prozessinstanz ausführen Process. Start (c: test. docx) Gibt null Können Sie einfach diesen AFAIK lösen Sie kann nicht, weil Prozess ShellExecuteEx mit einer SHELLEXECUTEINFO Struktur verwendet den Prozess zu starten. Lesen von SHELLEXECUTEINFO Dokumentation für hProcess Feld youll sehen, dass: Ein Handle für die neu gestartete Anwendung. Dieses Mitglied wird zurückgesetzt und ist immer NULL, wenn fMask nicht auf SEEMASKNOCLOSEPROCESS gesetzt ist. Selbst wenn fMask auf SEEMASKNOCLOSEPROCESS gesetzt ist, ist hProcess NULL, wenn kein Prozess gestartet wurde. Wenn beispielsweise ein zu startendes Dokument eine URL ist und eine Instanz von Internet Explorer bereits ausgeführt wird, wird das Dokument angezeigt. Es wird kein neuer Prozess gestartet, und hProcess wird NULL sein. Hinweis ShellExecuteEx gibt nicht immer einen hProcess zurück, auch wenn ein Prozess als Ergebnis des Aufrufs gestartet wird. Beispielsweise wird eine hProcess nicht zurückgegeben, wenn Sie SEEMASKINVOKEIDLIST verwenden, um IContextMenu aufzurufen. Beachten Sie, wenn youre ein neues Verfahren läuft gerade eine URL zu öffnen und eine Server-Seite bekommen generierte Datei dann sollten Sie Damiens Vorschlag folgen und einen WebClient. DownloadFile verwenden ().I Prozess wie diesem System. Diagnostics. Process SetupGUIProcess neue System. Diagnostics starten. Process () SetupGUIProcess. StartInfo neue System. Diagnostics. ProcessStartInfo (strStartMenuPath quotProgramsAXYZ InternationalA2MC Setup. appref-msquot) SetupGUIProcess. Start () SetupGUIProcess. WaitForExit () Wann wird das Programm mit der Leitung WaitForExit es eine Ausnahme quotNo Prozess führt mit diesem verbunden ist, Objectquot Der Vorgang wird gestartet. Ich versuche, den aufrufenden Thread zu blockieren, bis der Prozess beendet wird. Ist dies der richtige Weg Donnerstag, den 01. Oktober 2009 um 8:31 Uhr Lets hit die Reset-Taste real schnell. Ok, jetzt wollen Sie dies tun: 1. Installieren Sie die App (siehe Codeprojekt-Artikel, wie msiexec verwenden, um es zu tun). Verwenden Sie Process (ExecuteableOnCodeProject). 2. Warten Sie, bis die App die Installation mit Process. WaitOne abgeschlossen hat. 3. Starten Sie das Executeable als einen anderen Prozess (kürzlich installierte exe). 4. WaitForProcess () (Executeable Namen Prozess. Und Sie haben den Quellcode. Ja, alles, was Sie tun müssen, ist das Erstellen der msi und installieren Sie es mit der Technik oben. Im nicht gehen, durch die gesamte Prozess der Installation eines MSI gehen, weil Ich kann nicht so gut einen Job machen, wie der Artikel in der Erläuterung so etwas .. Dont overcomplicate this. Foldern Sie die Anweisungen und lesen Sie den Artikel. Dies wird nicht kopieren-fügen, aber das ist, warum Sie bezahlt werden das große Geld richtig Gut Kodierung beinhaltet die Kenntnis der logischen Grenzen und erweitern sie als notwendig. Als Antwort markiert von Bin-ze Zhao Montag, 5. Oktober 2009 08:16 Alle Antworten Das sieht nach dem richtigen Code aus Im Alternativ nicht sicher, was falsch sein könnte, es sei denn, der Prozess, den Sie gerade ein anderes beginnt Start und dann endet, die dann den Prozess von Ihrem SetupGUIProcess existieren endednot verwiesen würde bedeuten, nicht mehr und so hätte WaitForExit dann illegal sein könnten., vielleicht WaitForExit ist nicht gültig Wenn etwas über eine Assoziation geöffnet wird, anstatt ein bestimmtes Programm zu öffnen. Und der Dateiname youve angegeben nicht wie eine exe aussehen (obwohl es sein könnte). Sie können eine ClickOnce-Anwendung starten, indem Sie den Speicherort angeben (z. B. eine Webadresse), von der aus Sie die Anwendung ursprünglich installiert haben. Starten Sie nicht eine ClickOnce-Anwendung, indem Sie ihren installierten Speicherort auf Ihrer Festplatte angeben. So sollten Sie dies nicht tun können, indem Sie die Anwendungsreferenzdatei angeben, sollten Sie den urloriginalen Dateipfad angeben, um den Prozess zu starten. Sie können diesen Speicherort sehen, indem Sie die appref-ms-Datei mit einem Texteditor öffnen. Donnerstag, 01. Oktober 2009 um 21:00 Uhr Ich weiß sicher, dass der Prozess noch läuft, wenn WaitForExit aufgerufen wird. Ich weiß, ich beginne den Prozess mit einem Clickonce-Verweis. Ich habe versucht, dies auf die verschiedenen Arten, dass Sie einen Prozess starten können und die gleiche Ausnahme auftritt. Wenn ich den Prozess zu starten, indem Sie einfach den Pfad zu starten (). Start gibt null zurück. Gibt es eine andere Weise, eine Anwendung zu starten, die durch ein clickonce Installungsschild angebracht wird, das durch die Referenz ich interessieren würde, um zu sehen, wenn ich die exe direkt anrufen könnte. Vielleicht würde dann die WaitForExit-Funktion das Prozessobjekt kennen. Das ist rätselhaft. Danke für die Antwort Donnerstag, den 01. Oktober 2009 um 21:04 Uhr Weve ging durch diese vorher auf deinem vorherigen Thread. Stoppen Sie mit ClickOnce. Hans Passant. Freitag, den 02. Oktober 2009 um 12:09 Uhr Ich habe ein wenig Mühe, diese alle zusammen. Ich glaube, ich verstehe nicht diese Aussage in Verbindung mit dem ersten Artikel, den Sie mir in der anderen Post: Ich habe nicht einen Server. Ich möchte nur Leute senden 2 installieren Sheilds zipped up. Sie installieren sie. Und eines der installierten Programme kann das andere als Prozess aufrufen und dann blockieren und warten, bis es fertig ist. Es ist mir noch nicht klar, was ich tun muss, damit ich das Programm mit dem Sytax oben aufrufen kann. Brauche ich einen Trenner, um dies zu tun Wenn Sie sagen, Stop mit ClickOnce. Meinen Sie stoppen, ihn oben durch seinen Hinweis zu benennen, oder meinen Sie stoppen, ihn überhaupt zu benutzen und eine andere Methode des deplayment zu verwenden Ich schätze, dass ich wirklich nicht verstehe, was Klicken Sobald bedeutet. Ist der Begriff Klicken Sie einmal nur die Bedeutung von alle Installationsschilde mit Hilfe der publish-Option in Visual Studio verkapseln Ich hoffe, Sie sehen, was ich kämpfe mit. Es muss etwas einfaches hier fehlen. Friday, October 02, 2009 2:29 PM Ich tottally stimme mit NoBugz (die sehr wahrscheinlich versteht dies besser als ich). So können Sie darüber nachdenken, dass Sie und ich. Wenn Sie eine URL besuchen Sie dont Feuer ein Live-Prozess. Sie fragen den Server für einige Daten und es gibt einige Daten und dann Ihre aus seinem Leben. Theres kein persistent Zustand wie ein Prozess, den Sie zugreifen können. Ihre versuchen, eine ClickOnce-Anwendung verwenden, die eine URL verwendet, so natürlich theres kein Prozess, weil genau das, was ich gerade durchgemacht habe. Stoppen Sie mit ClickOnce. Friday, October 02, 2009 2:37 PM Uh Ich weiß, Sie Jungs versuchen zu helfen, und ich schätze, dass, aber ich immer noch nicht bekommen. Ich könnte weniger kümmern, was passiert, wenn ich eine URL besuchen und wie ich schon sagte, bevor ich nicht weiß, was du meinst, wenn du sagst, hör auf mit einmal zu klicken. Wenn Sie gonna, um einen Kommentar wie, dass Sie eine Alternative vorschlagen könnte. Ich möchte nur jemandem eine Möglichkeit geben, zwei Programme zu installieren, die ich gemacht habe, und rufe einen von dem anderen auf und sperr den Anrufprozess, bis der gerufene Prozess zurückkehrt. Es scheint irgendeine Art von Unterschied zwischen dem, was ich versuche zu tun und was Sie Jungs versuchen zu erklären. Ich fühle mich wie beide Beiträge habe ich so weit von meinem eigentlichen Problem verirrt haben. Bitte kann jemand brechen diese nach unten in einer Art von einfachen Begriffen oder Schritte Vielleicht so etwas wie diese Schritt 1 --------- Erstellen Sie eine installierbare App wie diese Schritt 2. ---------- Nennen Sie es Wie dieser Freitag, den 02. Oktober 2009 um 15:43 Uhr Ich stimme nicht zu, dass die Beiträge von Ihrer Frage abweichen. Ihr Beispiel verwendet ClickOnce, das einzige Problem Ihr Erleben ist aufgrund der Tatsache, dass Sie ClickOnce verwenden. Das ist, warum die Leute sagen. Stoppen Sie mit clickOnce. Vielleicht wissen Sie nicht, was ClickOnce vs eine ausführbare Datei ist Dies ist ein sehr einfaches Beispiel für genau das, was Sie versuchen, OHNE ein Clickonce zu tun. Nun, wenn Sie ein MSI verwendet und führen Sie msiexec. exe, um die Anwendung zuerst (verwenden Sie WaitForExit, um zu beenden, wenn Sie irgendwelche Probleme sehen die Codeprojekt Link für eine Alternative), dann Nach dem Prozess beendet führen Sie die Prozesse EXE-Datei, an diesem Punkt sollten Sie in der Lage, WaitForExit () für Ihr neu installiertes Programm aufrufen. Wenn Sie auf bestehende Versionen der App überprüfen möchten, dann Ihre immer ein Niveau komplizierter und sollte sich diese Codeprojekt Beispiel. Danke nochmal für die Antwort. Ich bekomme, was Sie sagen. Das ganze Problem ist, denn ich rufe den Klick einmal Referenz und nicht eine tatsächliche exe. Ich habe ein paar Fragen. 1. Ist der Klick einmal Referenz Bezugnahme auf eine exe Ich möchte die Exe aufrufen. Ich kann nicht finden, irgendwo auf dem System seine intalled auf. Gibt es einen bestimmten Pfad, wo es platziert wird, wenn ein publish klicken Sie ein install shield wird ausgeführt 2. Wenn die Antwort auf die obige Frage ist nein. Dann wird dies ein Problem der Installation der ersten Anwendung mit dem Prozess exe Ich versuche zu rufen und alle seine Abhängigkeiten Dank Sie für Ihre Geduld Freitag, 2. Oktober 2009 17.22 Vielen Dank für die Antwort. Ich bekomme, was Sie sagen. Das ganze Problem ist, denn ich rufe den Klick einmal Referenz und nicht eine tatsächliche exe. Ich habe ein paar Fragen. 1. Ist der Klick einmal Referenz Bezugnahme auf eine exe Ich möchte die Exe aufrufen. Ich kann nicht finden, irgendwo auf dem System seine intalled auf. Gibt es einen bestimmten Pfad, wo es platziert wird, wenn ein publish klicken Sie ein install shield wird ausgeführt 2. Wenn die Antwort auf die obige Frage ist nein. Dann wird dies ein Problem der Installation der ersten Anwendung mit dem Prozess exe Ich versuche zu rufen und alle seine Abhängigkeiten Dank Sie für Ihre Geduld Don Es ist ein logisches Problem mit Ihren Fragen. 1. Nehmen wir an, Sie wüssten, wo die Exe war. Sie haben es mit einem Prozess gestartet. Nach 2 gibt es Abhängigkeiten, daher dein Programm sprengt. Wie Sie dieses Problem beheben Sie müssen das Programm installieren, bevor Sie versuchen, die Exe laufen. Also, was Sie tun Sie müssen die ursprüngliche Programme-Lösung-Datei für Visual Studio zu finden und erstellen Sie ein Installationspaket und bust it out als MSI-Datei. Dann können Sie die Technik, die ich früher veröffentlicht, um das Paket installieren und führen Sie es. Problem: Wenn Sie das Paket installieren müssen, haben Sie nicht den Quellcode (weshalb ich vermute, Sie halten versuchen, mit einem Clickonce), dann sind Sie im Wesentlichen tot im Wasser mit Ihren Anforderungen. Keine Quelle episch scheitern. Freitag, den 02. Oktober 2009 17:33 Uhr Sorry, ich bekomme es nicht. Leta gehen Schritt für Schritt. Ihr Kommentar 1. Nehmen wir an, Sie wüssten, wo die Exe war. Sie startete es mit einem Prozess. Nach 2 gibt es Abhängigkeiten, daher dein Programm sprengt. Wie Sie dieses Problem beheben Sie müssen das Programm installieren, bevor Sie versuchen, die Exe laufen. Mein Commemt Lets davon ausgehen, ich weiß nicht, wo die exe ist (weil ich nicht), weil es scheint nicht zu einem nach der Installation des Klicks einmal installieren Schild. Wenn es einen anderen Weg, um eine Installation Schild, so dass ich Zugang zu einer exe haben. Können Sie bitte liefern Sie den Link zu der Dokumentation, die zeigt, wie es zu tun Sie müssen die ursprüngliche Programme-Lösungsdatei für Visual Studio zu finden und erstellen Sie ein Installationspaket und bust it out als MSI-Datei. Dann können Sie die Technik, die ich früher veröffentlicht, um das Paket installieren und führen Sie es. Mein Kommentar Ich habe die ursprüngliche Programme Lösung Datei für Visual Studio, da ich der Autor bin. Wenn ich ein MSI-Installationspaket und bust it out als MSI-Datei, wie Sie sagen, werde ich dann in der Lage sein, die exe aufrufen als Prozess Wo wird es sein Kann Sie den Link zu der Dokumenation, wie die MSI erstellen, wenn Ja, es wird ein Exe-Problem installieren: Wenn Sie das Paket installieren müssen, haben Sie nicht den Quellcode (weshalb ich vermute, Sie halten versuchen, mit einem Clickonce), dann sind Sie im Wesentlichen tot im Wasser mit Ihren Anforderungen. Keine Quelle episch scheitern. Mein Kommentar Ich habe absolut den Quellcode und das Projekt. Der Grund, warum ich mit Klick einmal ist, weil es schien ein einfach für meine Kunden zu installieren meine Anwendung mit allen Depencies. So habe ich alle diese Kunden mit meiner Anwendung installiert mit dem Klick einmal Ansatz. Jetzt alles, was ich tun möchte, ist eine andere Anwendung schreiben mit einem Knopf, der die erste aufruft und wartet bis es fertig ist. Ist der Schlüssel zu diesem wirklich Verpackung der ersten app (die, die ich anrufen möchten) als msi-Datei wieder Dank für Ihre Geduld Freitag, den 02. Oktober 2009 um 9:00 Uhr Lets hit die Reset-Taste real schnell. Ok, jetzt wollen Sie dies tun: 1. Installieren Sie die App (siehe Codeprojekt-Artikel, wie msiexec verwenden, um es zu tun). Verwenden Sie Process (ExecuteableOnCodeProject). 2. Warten Sie, bis die App die Installation mit Process. WaitOne abgeschlossen hat. 3. Starten Sie das Executeable als einen anderen Prozess (kürzlich installierte exe). 4. WaitForProcess () (Executeable Namen Prozess. Und Sie haben den Quellcode. Ja, alles, was Sie tun müssen, ist das Erstellen der msi und installieren Sie es mit der Technik oben. Im nicht gehen, durch die gesamte Prozess der Installation eines MSI gehen, weil Ich kann nicht so gut einen Job zu tun, wie der Artikel in der Erklärung einer solchen Sache. Don overcomplicate this. Foldern Sie die Anweisungen und lesen Sie den Artikel. Dies wird nicht kopieren-fügen, aber das ist, warum Sie bezahlt werden die großen Geld richtig Gut Codierung beinhaltet die Kenntnis der logischen Grenzen und die Erweiterung sie als notwendig. Markiert als Antwort von Bin-ze Zhao Microsoft führt eine Online-Umfrage, um Ihre Meinung zu verstehen Der Msdn-Website Wenn Sie sich für die Teilnahme entscheiden, wird Ihnen die Online-Umfrage präsentiert, wenn Sie die Msdn-Website verlassen

No comments:

Post a Comment