Hallo,
habe eine Lösung über den direkten Shell Befehl bekommen:
Shell „Word.exe, Datei.doc“,1
Meine Version war über die Shell32.dll mit einem entsprechenden Aufruf und das lief halt nicht.
Danke, Peter
Hallo,
habe eine Lösung über den direkten Shell Befehl bekommen:
Shell „Word.exe, Datei.doc“,1
Meine Version war über die Shell32.dll mit einem entsprechenden Aufruf und das lief halt nicht.
Danke, Peter
Ich verstehe nicht …
Hallo Peter,
habe eine Lösung über den direkten Shell Befehl bekommen:
Shell „Word.exe, Datei.doc“,1
Meine Version war über die Shell32.dll mit einem
entsprechenden Aufruf und das lief halt nicht.
… warum du nicht in der alten Beitragsfolge bleibst.
… das Komma nach der exe, wenn hätte ich das so geschrieben:
Shell „Word.exe Datei.doc“, 1
…was die Win-Dateien Shell.dll und Shell32.dll mit dem VB-Befehl Shell zu tun haben.
… die beiden Parameter in deiner ersten Anfrage, sind das parameter für die Word.exe oder für wen?
Gruß
Reinhard
Hallo Peter,
mag sein das es nun klappt. Ich habe es nicht getestet. Auch ist die VB6 Zeit schon ein wenig her. Aber ich dächte, ich hätte hier mal einen kompfortableren Weg gezeigt.
Gehen wir mal von Deinem Fall aus.
Was ist wenn ich *.doc mit Office verknüpft habe. Dann möchte ich auch das Office verwendet nicht und nicht Word!
Was ist wenn ich Word irgendwie von meinen Rechner entfernt habe?
Ich würde an Deiner Stelle eine Function schreiben, die die Datei öffnet mit dem Program mit dem es verknüpft ist. Wenn es mit keinem Proggi verknüpft ist, so lass halt ein „Öffnen mit“ Dialog erscheinen. In meinen Augen ist dies Anwenderfreundlich.
Mag sein das es sich kompliziert anhört. Ist es aber nicht
'Ein paar Deklarationen
Private Declare Function ShellExecute Lib "shell32.dll" \_
Alias "ShellExecuteA" ( \_
ByVal hWnd As Long, \_
ByVal lOperation As String, \_
ByVal lpFile As String, \_
ByVal lpParameters As String, \_
ByVal lpDirectory As String, \_
ByVal nShowCmd As Long) As Long
Private Declare Function GetSystemDirectory Lib "kernel32" \_
Alias "GetSystemDirectoryA" ( \_
ByVal lpBuffer As String, \_
ByVal nSize As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Sub LunchDokument(sFile as String)
Dim sDirectory As String
Dim lRet As Long
Dim DeskWin As Long
DeskWin = GetDesktopWindow()
lRet = ShellExecute(DeskWin, "open", sFile,vbNullString, vbNullString, 1)
If lRet = 2 Then ' Datei nicht gefunden
Msgbox ("File not Found")
ElseIf lRet = 31 Then
'Dateierweiterung nicht bekannt
sDirectory = Space(260)
lRet = GetSystemDirectory(sDirectory, Len(sDirectory))
sDirectory = Left(sDirectory, lRet)
Call ShellExecute(DeskWin, vbNullString, "RUNDLL32.EXE", "shell32.dll,OpenAs\_RunDLL " & sFilename, sDirectory, vbNormalFocus)
End If
End Function
Sicher fragst Du dich, wie du nun an die Parameter und Rückgabewerte der API ShellExecute kommst. Nichts einfacher wie das. Ein Blick bei MS verät uns dies
http://support.microsoft.com/kb/238245/de
Ist ungetestet, sollte aber laufen Wäre super wenn das mal jemand entsprechend modifiziert und flexibler gestaltet und dann in die FAQ schiebt Denn diese Frage taucht nicht zum ersten male auf
MfG Alex