Veröffentlicht 3. Januar 200718 j 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
3. Januar 200718 j 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.
3. Januar 200718 j 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.
3. Januar 200718 j 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
3. Januar 200718 j 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?
3. Januar 200718 j 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
4. Januar 200718 j 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 ==========
4. Januar 200718 j [...] API durchlesen, da steht inwiefern die Methode im Compact Framework verwendet werden kann. Das wäre mein Vorschlag.
4. Januar 200718 j 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"));
4. Januar 200718 j 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.
4. Januar 200718 j [...]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...
10. Januar 200718 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.