Jag vill öppna vilken fil som helst med det program som windows har knutet till den extension som filen har, hur gör man enklast detta? Är ny medlem hittar det inte under tips & tricks kan ni berätta närmare var det finns ? Lägg följande kod överst i en modul eller i ditt formulär: Andreas, varför ser det så skumt ut i dina inlägg? Andreas. <code> Andreas. Den kontrollerar om Owner parametern är nothing. Alltså om man skickat med ett argument annat än Nothing. Om jag inte har den if-satsen kommer Owner.hwnd ge ett fel om Owner är nothing. I vilket läge skulle det kunna inträffa att den är Nothing ? Testa så får du se... Båda exemplen funkar ju på samma sätt när man stegar igenom koden. Testa med att ta bort If-Satsen så får du ett felmeddelande:Öppna filer med standard program [LÖST]
Sv: Öppna filer med standard program
Sv: Öppna filer med standard program
<code>
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Const SW_SHOWNORMAL = 1
Private Sub Form_Load()
'KPD-Team 1998
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
'Send an E-Mail to the KPD-Team
ShellExecute Me.hwnd, vbNullString, "mailto:KPDTeam@Allapi.net", vbNullString, "C:\", SW_SHOWNORMAL
End Sub
</code>
/MickeSv: Öppna filer med standard program
<code>
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Const SW_SHOWNORMAL = 1
Public Sub OpenFile(FileName As String)
ShellExecute Me.hwnd, "OPEN", FileName, vbNullString, vbNullString, SW_SHOWNORMAL
End Sub
</code>
Du anropar den sedan med:
<code>
OpenFile "C:\Test.txt"
</code>Sv: Öppna filer med standard program
Såg det i ett annat oxå.
/bennySv: Öppna filer med standard program
Har gjort följande:
I en modul ligger det du föreslog enl. nedan
<code>
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Const SW_SHOWNORMAL = 1
Public Sub OpenFile(FileName As String)
ShellExecute Me.hwnd, "OPEN", FileName, vbNullString, vbNullString, SW_SHOWNORMAL
End Sub
</code>
I formulär ligger följande:
<code>
Public Sub Form_Load()
OpenFile "c:\test.txt"
End Sub
</code>
Det funkar bra om jag lägger allt i formuläret, däremot får jag det inte att funka när jag lägger det i en modul,vilket är det jag vill. Jag får felmeddelande på Me.hWnd i modulen.
/ Pelle ASv: Öppna filer med standard program
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Const SW_SHOWNORMAL = 1
Public Sub OpenFile(FileName As StringOptional Owner as Form)
If Owner Is Nothing
ShellExecute 0&, "OPEN", FileName, vbNullString, vbNullString, SW_SHOWNORMAL
Else
ShellExecute Owner.hWnd, "OPEN", FileName, vbNullString, vbNullString, SW_SHOWNORMAL
End If
End Sub
</code>
I formulär:
<code>
Public Sub Form_Load()
OpenFile "c:\test.txt", Me
End Sub
</code>
Eller:
<code>
Public Sub Form_Load()
OpenFile "c:\test.txt"
End Sub
</code> Sv: Öppna filer med standard program
Tack för hjälpen det funkar bra.
Vad gör delen med Owner Is Nothing nedan i klartext ?
<code>If Owner Is Nothing Then
ShellExecute 0&, "OPEN", FileName, vbNullString, vbNullString, SW_SHOWNORMAL
Else
ShellExecute Owner.hwnd, "OPEN", FileName, vbNullString, vbNullString, SW_SHOWNORMAL
End If
</code>
Tack Sven för tipset men jag ville ha så kort kod som möjligt.
/ Pelle ASv: Öppna filer med standard program
Sv: Öppna filer med standard program
/ Pelle ASv: Öppna filer med standard program
Andra exemplet är ett sådant fall:
<code>
Public Sub Form_Load()
OpenFile "c:\test.txt"
End Sub
</code>
Detta beror på att Owner är en objekt variabel.
Om den inte pekar mot ett objek(är satt till nothing) så kan du ju inte anropa dess medlemmar.
Sed det som att försöka tanka en bil utan en bild. Det går ju inte heller.Sv: Öppna filer med standard program
Jag greppar nog inte det där...
Tack för hjälpen i alla fall.
/ Pelle ASv: Öppna filer med standard program
<code>
Const SW_SHOWNORMAL = 1
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Sub OpenFile(FileName As StringOptional Owner as Form)
ShellExecute 0&, "OPEN", FileName, vbNullString, vbNullString, SW_SHOWNORMAL
End Sub
Public Sub Form_Load()
OpenFile "c:\test.txt"
End Sub
</code>