08. april 2002 - 09:39
Der er
2 kommentarer og
1 løsning
Bruge VB til at bestemme om MS Access er installeret
Hvordan gør man det?
(forestiller mig noget a la aflæsning af en nøgle i registreringsdatabasen...........sagen er den at access jo ikke behøver at være installeret i "standard" mappen)
08. april 2002 - 11:06
#1
Der er en api funktion, der bruger fil-extensionen som parameter og returner en string med det program, der er associeret til fil typen. Der returneres en tom string, hvis der ingen association findes (programmet findes nok heller ikke så). Kaldes med stringen MDB som parameter. Kan bare ikke huske hvad den funktion hedder....
08. april 2002 - 11:14
#2
Måske var det denne her:
Declare Function FindExecutable& Lib "shell32.dll" Alias "FindExecutableA"
(ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String)
-Har ikke selv prøvet det...
08. april 2002 - 11:31
#3
Takker for skubbet i den rigtige retning.
Her er koden som "passer" til min brug:
Private Declare Function FindExecutable Lib _
"shell32.dll" Alias "FindExecutableA" _
(ByVal lpFile As String, ByVal lpDirectory _
As String, ByVal lpResult As String) As Long
Private Declare Function GetTempFileName Lib _
"kernel32" Alias "GetTempFileNameA" (ByVal _
lpszPath As String, ByVal lpPrefixString _
As String, ByVal wUnique As Long, ByVal _
lpTempFileName As String) As Long
Private Declare Function GetTempPath Lib _
"kernel32" Alias "GetTempPathA" (ByVal _
nBufferLength As Long, ByVal lpBuffer As _
String) As Long
Public Function GetAssociatedExecutable(ByVal _
Extension As String) As String
Dim Path As String
Dim FileName As String
Dim nRet As Long
Const MAX_PATH As Long = 260
'Create a tempfile
Path = String$(MAX_PATH, 0)
If GetTempPath(MAX_PATH, Path) Then
FileName = String$(MAX_PATH, 0)
If GetTempFileName(Path, "~", 0, FileName) Then
FileName = Left$(FileName, _
InStr(FileName, vbNullChar) - 1)
'Rename it to use supplied extension
Name FileName As Left$(FileName, _
InStr(FileName, ".")) & Extension
FileName = Left$(FileName, _
InStr(FileName, ".")) & Extension
'Get name of associated EXE
Path = String$(MAX_PATH, 0)
Call FindExecutable(FileName, _
vbNullString, Path)
GetAssociatedExecutable = Left$( _
Path, InStr(Path, vbNullChar) - 1)
'Clean up
Kill FileName
End If
End If
End Function