Создаю tlb, нужно объявить API функцию ShellExecute. Воспользовался для этого двумя источниками:
MSDN
- Код: Выделить всё
HINSTANCE ShellExecute(
_In_opt_ HWND hwnd,
_In_opt_ LPCTSTR lpOperation,
_In_ LPCTSTR lpFile,
_In_opt_ LPCTSTR lpParameters,
_In_opt_ LPCTSTR lpDirectory,
_In_ INT nShowCmd
);
и
shellapi.h
- Код: Выделить всё
WINSHELLAPI HINSTANCE APIENTRY ShellExecuteA(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd);
Для компиляции использовал код:
- Код: Выделить всё
[
dllname("Shell32.dll")
]
module Shell {
[entry("ShellExecuteA")]
HINSTANCE ShellExecute(
[in] HWND hwnd,
[in] LPCTSTR lpOperation,
[in] LPCTSTR lpFile,
[in] LPCTSTR lpParameters,
[in] LPCTSTR lpDirectory,
[in] INT nShowCmd);
}
Получил следующее:
- Код: Выделить всё
Function ShellExecute(hwnd As wireHWND, lpOperation As String, lpFile As String, lpParameters As String, lpDirectory As String, nShowCmd As Long) As Any
hwnd As wireHWND - откуда взялось это объявление, мне не совсем понятно.
Для получения стандартного вида
- Код: Выделить всё
Function ShellExecute(hwnd As Long, lpOperation As String, lpFile As String, lpParameters As String, lpDirectory As String, nShowCmd As Long) As Long
изменил описание следующим образом
- Код: Выделить всё
[
dllname("Shell32.dll")
]
module ModuleExemple {
[entry("ShellExecuteA")]
LONG ShellExecute(
[in] LONG hwnd,
[in] LPCTSTR lpOperation,
[in] LPCTSTR lpFile,
[in] LPCTSTR lpParameters,
[in] LPCTSTR lpDirectory,
[in] INT nShowCmd);
}
Правильно это или нет?