News:
|
5 |
In welcher Umgebung programmierst Du? .NET, oder mit C/C++ direkt gegen die Windows-API, oder Java, oder...?
– Matthias Hlawatsch 07.06.2011
|
|
Programmiere unter Visual Studio und .Net 4.0 mit C#
– es243040 08.06.2011
|
<DllImport("kernel32.dll")> _
Private Shared Function GetTempPath(ByVal nBufferLength As UInteger, <Out()> ByVal lpBuffer As StringBuilder) As UInteger
End Function
<DllImport("shell32.dll", EntryPoint:="FindExecutable")> _
Private Shared Function FindExecutableA(ByVal lpFile As String, ByVal lpDirectory As String, <Out()> ByVal lpResult As StringBuilder) As Long
End Function
''' <summary>
''' Startet die Anwendung, die für die angegebene Datei registriert wurde
''' </summary>
''' <param name="FileName"></param>
''' <remarks></remarks>
Public Shared Sub OpenFilesWithHostApplication(ByVal FileName As String)
Dim pInfo As New ProcessStartInfo
Dim pProcess As Process
Dim _FI As FileInfo
Dim _PathToApplication As String
Dim _FileExtension As String
' Ermitteln der Dateiendung
_FI = New FileInfo(FileName)
_FileExtension = _FI.Extension
' Das verknüpfte Prgramm ermitteln
_PathToApplication = GetPathFileExtention(_FileExtension)
' Öffnen der Anwendung mit Übergabe des Dateinamens
With pInfo
If InStr(FileName, "\", CompareMethod.Text) > 0 Then
.Arguments = FileName
Else
.Arguments = String.Format("{0}", FileName)
End If
.FileName = _PathToApplication
.WindowStyle = ProcessWindowStyle.Normal
.CreateNoWindow = True
End With
pProcess = Process.Start(pInfo)
With pProcess
.WaitForInputIdle()
'.WaitForExit()
End With
End Sub
|
siehe dort: http://dotnet-snippets.de/dns/shellexecute-SID1000.aspx
einfacher geht es wirklich nur mehr mit Process.Start, wie einige schon sagten. Aber kompliziert ist ShellExecute absolut nicht. – nabuchodonossor 09.06.2011
|
Process.Start("file.pdf"); //öffnet file.pdf in der Anwendung, die für *.pdf registriert ist
Process.Start("file.docx"); //öffnet file.docx in der Anwendung, die für *.docx registriert ist
Process.Start("http://localhost:8080/file.pdf"); //öffnet file.pdf über den Default-Browser
Process.Start("http://localhost:8080/file.docx"); //öffnet file.docx über den Default-Browser
|
Aber auch von nichts anderem konkreten ;-)
Ehrlich gesagt hab ich die Tags nicht genau gelesen und bin durch die (zeitlich) erste Antwort von MyKey0815 "ganz automatisch" auf .NET gekommen. Mal sehen, ob der Fragesteller uns noch genauere Hinweise gibt (siehe mein Kommentar zur Frage). – Matthias Hlawatsch 07.06.2011
|
||
"Winapi, Windows, API" sind ein deutliches Zeichen dafür das er eine Lösung mit der Windows-API sucht. ;)
– Floyd 07.06.2011
|
||
Ich glaube, "Process.Start()" könnte hier helfen...
Werde ich mir mal anschauen. Danke schon mal für den Hinweis. – es243040 08.06.2011
|
public void StartProgram(string program, string parameter)
{
System.Diagnostics.Process.Start(program, parameter);
}
|
1 |
Vielleicht stehe ich ja auf der Leitung, aber das, was Dein Snippet macht, erledigt Windows doch automatisch, wenn man Process.Start(parameter) aufruft, oder? (Ich gehe davon aus, dass "parameter" in Deinem Beipiel der Dateiname ist.)
– Matthias Hlawatsch 07.06.2011
|
|
Ja eigentlich schon, aber der eigentliche Grund, warum das Snippet entstanden ist, ist der folgende, das bei mir (Windows XP) Windows total lange braucht, wenn ich nur sage: Process.Start("Datei.xls"). Führe ich die arbeit manuell aus, rennt es :-)
– Konstantin 07.06.2011
|
||
Ja eigentlich schon, aber der eigentliche Grund, warum das Snippet entstanden ist, ist der folgende, das bei mir (Windows XP) Windows total lange braucht, wenn ich nur sage: Process.Start("Datei.xls"). Führe ich die arbeit manuell aus, rennt es :-)
– Konstantin 07.06.2011
|
||