| 

.NET C# Java Javascript Exception

2
Ich habe ein Programm wo ich Dateien mit dem verknüpften Programm öffnen kann. seit dem ich aber Windows 7 habe, geht die Methode nicht mehr, da die PhotoViewer.Dll statt einer .EXE verwendet wird.

Als code Verwende ich:

' Ö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


Als Fehlermeldung kommt, das es kein Verknüpftes Programm gäbe. wenn ich .doc-dateien nehme, dann geht es, da ich hier ja die WinWord.exe als _PathToApplication zurückbekomme
News:
21.08.2012
MyKey0815 1,6k 2 9
2 Antworten
1
Ist zwar c#, aber ich denke, es gibt genug Konverter. Das hier funktioniert bei mir:

private static void ShowPicture(string _Filename)
{
if (!File.Exists(_Filename)) return;
string windir = Environment.ExpandEnvironmentVariables("%SystemRoot%");
string programFilesDir = Environment.ExpandEnvironmentVariables("%ProgramFiles%");

string exe = windir+"\System32\rundll32.exe";
string arguments = String.Format("\"{0}\Windows Photo Viewer\PhotoViewer.dll\", ImageView_Fullscreen {1}", programFilesDir, _Filename);
using (Process pProcess = Process.Start(exe, arguments))
{
pProcess.WaitForExit();
}


}
21.08.2012
JEwen 2,7k 5
OK - dass heißt, ich muss unterschiedlich reagieren

Danke aber für die Antwort
MyKey0815 21.08.2012
1
Ja unter Umständen. Es kann aber auch sein dass Du die Photoviewer.dll mal neu registrieren must, damit der normale Aufruf über die Dateierweiterung funktioniert. Probiere halt mal regsvr32 "%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll"
JEwen 21.08.2012
1
Du kannst auch einfach die Datei automatisch mit dem assoziierten Programm öffnen, ohne es vorher ermitteln zu müssen.

Der Schlüssel zu dem ganzen ist das Property UseShellExecute der ProcessStartInfo.

Hier ein Beispiel (entnommen von http://www.techusers.net/59/how-open-file-default-program-vbnet):

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Try
Dim p As New System.Diagnostics.Process
Dim s As New System.Diagnostics.ProcessStartInfo("C:\test.doc")
s.UseShellExecute = True
s.WindowStyle = ProcessWindowStyle.Normal
p.StartInfo = s
p.Start()
Catch ex As Exception
MessageBox.Show("File 'C:\test.doc' couldnt be found!", "http://www.interloper.nl/", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try

End Sub

End Class
21.08.2012
mschem79 56 1

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH