Filou Geschrieben 3. Januar 2007 Teilen Geschrieben 3. Januar 2007 Hi! Eine kurze Frage, wie starte ich eine andere Anwendung aus meinem Programm herraus? Also ich suche sowas wie das "ShellExecuteEx" unter C++ jetzt für C#. Danke! Gruß Filou Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Mister A Geschrieben 3. Januar 2007 Teilen Geschrieben 3. Januar 2007 speziell so wie hier beschrieben, mit 'System.Diagnostics.Process.Start("app.exe");': Process.Start-Methode (System.Diagnostics) weiterführende Links zur Process Klasse und für den strukturierteren Aufruf z.b. mit mehreren Parametern usw. mit ProcessStartInfo sind in dem Zug auch ganz hilfreich. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Filou Geschrieben 3. Januar 2007 Autor Teilen Geschrieben 3. Januar 2007 System.Diagnostics.Process.Start("www.rtl.de"); geht nicht :-( c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Csc.exe /noconfig /nowarn:1701,1702 /nostdlib+ /errorreport:prompt /warn:4 /define:DEBUG;TRACE;PocketPC /win32res:"C:\Programme\Microsoft Visual Studio 8\SDK\v2.0\bin\hiDPI.res" /reference:"C:\Programme\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\2.0\v2.0\WindowsCE\mscorlib.dll" /reference:"C:\Programme\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\2.0\v2.0\WindowsCE\System.Data.dll" /reference:"C:\Programme\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\2.0\v2.0\WindowsCE\System.dll" /reference:"C:\Programme\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\2.0\v2.0\WindowsCE\System.Drawing.dll" /reference:"C:\Programme\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\2.0\v2.0\WindowsCE\System.Windows.Forms.dll" /reference:"C:\Programme\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\2.0\v2.0\WindowsCE\System.Xml.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\Debug\WebRadio.exe /resource:obj\Debug\WebRadio.WebRadio.resources /resource:obj\Debug\WebRadio.Properties.Resources.resources /target:winexe Form1.cs Form1.Designer.cs Program.cs Properties\AssemblyInfo.cs Properties\Resources.Designer.cs D:\Dateien von Reinhard\Visual Studio 2005\Projects\WebRadio\WebRadio\Form1.cs(47,51): Fehler CS1009: Nicht erkannte Escapesequenz. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Honkytonk Geschrieben 3. Januar 2007 Teilen Geschrieben 3. Januar 2007 Moin... CS1009: In irgendeinem String hast du nach "\" was einen unerwarteten Escape-Character drin, also etwas ausserhalb von den "normalen"., die nach "\" innerhalb eines Strings stehen dürfen... Muss aber nicht zwangsweise dein Process.Start sein. Btw. RTL.de funktioniert bei mir von der Kommandozeile aus auch nicht. Gruß, Honky Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Filou Geschrieben 3. Januar 2007 Autor Teilen Geschrieben 3. Januar 2007 Ok, dann ist das vielleicht auch die falsche Funktion. Ich wollte einen Link im Web öffnen. Bei C++ ging das ja... Weiß einer wie das beim PDA geht? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarkusLe Geschrieben 3. Januar 2007 Teilen Geschrieben 3. Januar 2007 Der Fehler sollte nicht an "System.Diagnostics.Process.Start("www.rtl.de")" liegen. Das ruft i.d.R. den Defaultbrowser mit der entsprechenden Seite auf. Falls der Fehler doch in dieser Zeile auftritt könnte das daran liegen, dass auf dem PDA das Compact Framework installiert ist und nicht das Standard Framework. Dann solltest Du Dir mal die Beschreibung von "Process.Start" in der API durchlesen, da steht inwiefern die Methode im Compact Framework verwendet werden kann. Gruß Markus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Filou Geschrieben 4. Januar 2007 Autor Teilen Geschrieben 4. Januar 2007 Hallo Markus! Ich denke, ich habe das CompactFramework mit dem VisualStudio zusammen installiert. Aber es läuft trotzdem nicht. Updates sind keine verfügbar. Was nun? ------ Erstellen gestartet: Projekt: WebRadio, Konfiguration: Debug Any CPU ------ c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Csc.exe /noconfig /nowarn:1701,1702 /nostdlib+ /errorreport:prompt /warn:4 /define:DEBUG;TRACE;PocketPC /win32res:"C:\Programme\Microsoft Visual Studio 8\SDK\v2.0\bin\hiDPI.res" /reference:"C:\Programme\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\2.0\v2.0\WindowsCE\mscorlib.dll" /reference:"C:\Programme\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\2.0\v2.0\WindowsCE\System.Data.dll" /reference:"C:\Programme\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\2.0\v2.0\WindowsCE\System.dll" /reference:"C:\Programme\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\2.0\v2.0\WindowsCE\System.Drawing.dll" /reference:"C:\Programme\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\2.0\v2.0\WindowsCE\System.Windows.Forms.dll" /reference:"C:\Programme\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\2.0\v2.0\WindowsCE\System.Xml.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\Debug\WebRadio.exe /resource:obj\Debug\WebRadio.WebRadio.resources /resource:obj\Debug\WebRadio.Properties.Resources.resources /target:winexe Form1.cs Form1.Designer.cs Program.cs Properties\AssemblyInfo.cs Properties\Resources.Designer.cs D:\Dateien von Reinhard\Visual Studio 2005\Projects\WebRadio\WebRadio\Form1.cs(48,13): Fehler CS1502: Die beste Übereinstimmung für die überladene System.Diagnostics.Process.Start(System.Diagnostics.ProcessStartInfo)-Methode hat einige ungültige Argumente. D:\Dateien von Reinhard\Visual Studio 2005\Projects\WebRadio\WebRadio\Form1.cs(48,46): Fehler CS1503: 1-Argument: kann nicht von "string" in "System.Diagnostics.ProcessStartInfo" konvertiert werden. Kompilierung abgeschlossen -- 2 Fehler, 0 Warnungen ========== Build: 0 erfolgreich oder aktuell, Fehler bei 1, 0 übersprungen ========== ========== Bereinigen: 0 erfolgreich, Fehler bei 0, 0 übersprungen ========== Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarkusLe Geschrieben 4. Januar 2007 Teilen Geschrieben 4. Januar 2007 [...] API durchlesen, da steht inwiefern die Methode im Compact Framework verwendet werden kann. Das wäre mein Vorschlag. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Trux Geschrieben 4. Januar 2007 Teilen Geschrieben 4. Januar 2007 kann nicht von "string" in "System.Diagnostics.ProcessStartInfo" konvertiert werden. Finde ich recht eindeutig: using System.Diagnostics; [...] ProcessStartInfo startInfo = new ProcessStartInfo("www.rtl.de"); Process process = new Process(startInfo); process.Start(); oder (ungetestet): System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo("www.rtl.de")); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarkusLe Geschrieben 4. Januar 2007 Teilen Geschrieben 4. Januar 2007 Hallo Trux, die oben verwendete Überladung von "System.Diagnostics.Process.Start(...)" existiert Der Fehler wird vermutlich irgendwo anders liegen. Entweder unterstützt das Compact Framework die verwendete Überladung nicht, oder es ist was andres. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Mister A Geschrieben 4. Januar 2007 Teilen Geschrieben 4. Januar 2007 [...]Entweder unterstützt das Compact Framework die verwendete Überladung nicht[...] scheint so, denn sonst würde die voherige Fehlermeldung Die beste Übereinstimmung für die überladene System.Diagnostics.Process.Start(System.Diagnostic s.ProcessStartInfo)-Methode hat einige ungültige Argumente. mit Bezug auf die ProcessStartInfo Klasse garkeinen Sinn machen. Anscheinend gehts dort nur so... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
espressomann Geschrieben 10. Januar 2007 Teilen Geschrieben 10. Januar 2007 Im Compact Framework gibt es keine ProcessStartInfo. Soweit ich weiß muß über P/Invoke die Coredll.dll angesprochen werden mit using System.Runtime.InteropServices; [DllImport("coredll.Dll")] private static extern int CreateProcess(string strImageName, string strCmdLine, IntPtr pProcessAttributes, IntPtr pThreadAttributes , int bInheritsHandle, int dwCreationFlags, IntPtr pEnvironment, IntPtr pCurrentDir, Byte[] bArray, ProcessInfo oProc); [DllImport("coredll.dll", SetLastError=true)] private static extern Int32 WaitForSingleObject(IntPtr Handle,Int32 Wait); ... und eine extra Klasse public class ProcessInfo { public int Process; public int Thread; public int ProcessID; public int ThreadID; } ... und noch ein paar Helferlein dazu... public static ProcessInfo StartProcess(string filePath, string syntax) { ProcessInfo pi = new ProcessInfo(); int exit = CreateProcess(filePath, syntax, IntPtr.Zero, IntPtr.Zero, 0, 0, IntPtr.Zero, IntPtr.Zero, new Byte[128], pi); if (exit >= 1) return pi; return null; } public static bool IsProcessRunning(ProcessInfo pi) { int WAIT_OBJECT_0 = 0; int waitResult = 0; waitResult = WaitForSingleObject((IntPtr) pi.ProcessID, WAIT_OBJECT_0); if (waitResult == 0) return false; else return true; } Copy&Paste ist dein Freund Wenn du dann jetzt in im internet explorer die seite RTL.de aufrufen möchtest, dann geht das in etwa so (ich glaube ich hatte das mal so im Inet gesehen, also keine Garantie). StartProcess("iexplore.exe", "http://www.rtl.de"); Noch ein kleiner Tipp nebenbei und OT: StartProcess("wceload.exe", "\"AnInstallationPackage.CAB\""); Damit kann man aus seinem Code raus Installationen starten. Ich bin mir sicher, diese Frage kommt auch irgendwann... :floet: Hoffe, ich konnte helfen. Espresso Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.