Äåêëàðèðóåì:
Private Declare Function apiShellExecute 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 Const WIN_NORMAL = 1 'Îòêðûòü â Normal
Public Const WIN_MAX = 2 'Îòêðûòü â Maximized
Public Const WIN_MIN = 3 'Îòêðûòü â Minimized
Private Const Error_SUCCESS = 32&
Private Const Error_NO_ASSOC = 31&
Private Const Error_OUT_OF_MEM = 0&
Private Const Error_FILE_Not_FOUND = 2&
Private Const Error_PATH_Not_FOUND = 3&
Private Const Error_BAD_FORMAT = 11&
Îáðàùåíèå ê ôóíêöèè:
strFile - ïîëíûé ïóòü ê ôàéëó êîòîðûé òðåáóåòñÿ çàïóñòèòü
lShowHow - â êàêîì âèäå áóäåò îòêðûòî ïðèëîæåíèå (ñìîòðèòå äåêëàðèðîâàíèå êîíñòàíò)
Function fHandleFile(stFile As String, lShowHow As Long)
Dim lRet As Long, varTaskID As Variant
Dim stRet As String
lRet = apiShellExecute(hWndAccessApp, vbNullString, _
stFile, vbNullString, vbNullString, lShowHow)
If lRet > Error_SUCCESS Then
stRet = vbNullString
lRet = -1
Else
Select Case lRet
Case Error_NO_ASSOC:
varTaskID = Shell("rundll32.exe shell32.dll,OpenAs_RunDLL " & stFile, WIN_NORMAL)
lRet = (varTaskID <> 0)
Case Error_OUT_OF_MEM:
stRet = "Error: Out of Memory/Resources. Couldn't Execute!"
Case Error_FILE_Not_FOUND:
stRet = "Error: File not found. Couldn't Execute!"
Case Error_PATH_Not_FOUND:
stRet = "Error: Path not found. Couldn't Execute!"
Case Error_BAD_FORMAT:
stRet = "Error: Bad File Format. Couldn't Execute!"
Case Else:
End Select
End If
fHandleFile = lRet & _
IIf(stRet = "", vbNullString, ", " & stRet)
End Function
Ïðèìåðû èñïîëüçîâàíèÿ:
Îòêðûòü ïàïêó: fHandleFile("C:\TEMP\",WIN_NORMAL)
Ïîñëàòü ïèñüìî: fHandleFile("mailto:dash10@hotmail.com",WIN_NORMAL)
Îòêðûòü URL: fHandleFile("http://home.att.net/~dashish", WIN_NORMAL)
Çàïóñòèòü ïðèëîæåíèå: fHandleFile("Ñ:\Winnt\notepad.exe", Win_NORMAL)