|
Платные хостинги
Раскрутка сайта
Книги по программированию
DLL и командная строка., Создание DLL
- А кто её выполнять будет? У dll нет "точки входа", следовательно обычный запуск как EXE с DLL сделать нельзя, т.е. имеется ввиду что DLL будет запускать другая программа - ну так в чём проблема - пишешь любую DLL, а так же программу которая будет распознавать функции твоей DLL и ассоциируешь DLL с твоей программой. Ничего выходящего за рамки создания самой что ни на есть стандартной DLL и программы её вызова здесь нет. Если ты хочешь чтобы DLL запускалась какой-то определённой программой, то желательно бы указать какой, телепатов тут вроде как нет.
- Вот, нашел в каком-то факе:Вы должны определить в программе вызываемую снаружи функцию.Функция должна быть __stdcall (или WINAPI, что то же самое ;)) и иметьчетыре аргумента. Первый - HWND окна, порождаемого rundll32 (можно использовать в качестве owner'а своих dialog box'ов), второй - HINSTANCE задачи, третий - остаток командной строки (LPCSTR, даже под NT), четвертый - не знаю ;). Hапример,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".
- Vit, как это у длл нет точки входа? А что такое DllEntryPoint?
- Это разные вещи. Если я не ошибаюсь, DLLEntryPoint выполняется при загрузке ДЛЛ системой, но это самая обычная ф-ция, которой через стек передаются параметры (в отличие от ехе, там через регистры). DllEntryPoint возвратит значение, но после етого ДЛЛ ведь не выгружается (в отличие от ехе).
- DllEntryPoint вызавется в четырех случаях:1. Загрузка в адресное пространство процеса.2. Выгрузка из адресного пространства процеса.3. При появлении новой нитки в процесе.4. При удалении нитки из процеса.
- перевод:function Test(hWnd, hInstance: Integer; lpCmdLine: PChar; dummy: Integer): Integer; stdcall;begin MessageBox(hWnd, lpCmdLine, "Command Line", MB_OK); Result := 0;end;=======rundll32 test.dll,Test this is a command line Это сообщение отредактировал cully - 3.2.2003, 21:06
- Свой CPL файл будет запускаться без проблем без всяких изменений в реестре
- Похоже что неправильно написан.
Интернет казино
Онлайн игры
Увеличение члена
Купить DVD
|