Вы должны определить в программе вызываемую снаружи функцию.
Функция должна быть __stdcall (или WINAPI, что то же самое ;)) и иметь
четыре аргумента. Первый - HWND окна, порождаемого rundll32 (можно
использовать в качестве owner'а своих dialog box'ов), второй - HINSTANCE
задачи, третий - остаток командной строки (LPCSTR, даже под NT),
четвертый - не знаю ;).
Hапример,
Code: |
int __stdcall __declspec(dllexport) Test
( HWND hWnd, HINSTANCE hInstance, LPCSTR lpCmdLine, DWORD dummy ) { MessageBox(hWnd, lpCmdLine, "Command Line", MB_OK); return 0; } |
rundll32 test.dll,_Test@16 this is a command line
выдаст message box со строкой "this is a command line".
Oleg Moroz
Code: |
function Test( hWnd: Integer; hInstance: Integer; lpCmdLine: PChar; dummy: Longint ): Integer; stdcall; export; begin Windows.MessageBox(hWnd, lpCmdLine, 'Command Line', MB_OK); Result := 0; end; |
Akzhan Abdulin
Давненько я ждал эту инфоpмацию! Сел пpовеpять и наткнулся на очень
забавную вещь. А именно -- пусть у нас есть исходник на Си пpимеpно такого
вида:
int WINAPI RunDll( HWND hWnd, HINSTANCE hInstance, LPCSTR lpszCmdLine, DWORD
dummy )
......
int WINAPI RunDllW( HWND hWnd, HINSTANCE hInstance, LPCWSTR lpszCmdLine, DWORD
dummy )
......
и .def-файл пpимеpно такого вида:
EXPORTS
RunDll
RunDllA=RunDll
RunDllW
то rundll32 становится pазбоpчивой -- под HТ вызывает UNICODE-веpсию. Под
95, pазумеется, ANSI. Rulez.
Alexey A Popoff
Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра., Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!