Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.27;
Скачать: CL | DM;

Вниз

КАК ИЗ ДЛЛ вызвать процедуру   Найти похожие ветки 

 
Элина   (2003-10-17 08:52) [0]

Смысл в чем: если есть ДЛЛ то из нее можно вызвать какую либо процедуру, если нет - то эти пункты меню просто недоступны


 
Hogo ©   (2003-10-17 08:56) [1]

дак простопроверить
if FileExists("my.dll") then
begin
//делаем что надо
end;


 
KSergey ©   (2003-10-17 08:58) [2]

Ну динамически ее подгрузить, если не получилось - не повезло, запретить пункты. Если получилось - попытаться найти нужный ф-ции, если не получилось - опять не повезло, если получилось - сегодня счастливый день.


 
Элина   (2003-10-17 09:02) [3]

Меня как раз интересует как ее подргузить и вызвать функции


 
MBo ©   (2003-10-17 09:04) [4]

В Статьи загляни (где-то ближе к концу)


 
Элина   (2003-10-17 09:08) [5]

Сенкс


 
Юрий Зотов ©   (2003-10-17 09:18) [6]

type
TMyProc = procedure(параметры);

procedure TForm1.InitializeMenuItem(MenuItem: TMenuItem; LibName, ProcName: string);
var
H: THandle;
begin
H := LoadLibrary(PChar(LibName);
with MenuItem do
begin
if H <> 0 then
Tag := Integer(GetProcAddress(H, PChar(ProcName)))
else Tag := 0;
Caption := Format("%s.%s", [LibName, ProcName]);
Enabled := Tag <> 0;
OnClick := AllMenuItemsClick
end
end;

procedure TForm1.AllMenuItemsClick(Sender: TObject);
begin
with Sender as TMenuItem do
if Tag <> 0 then TMyProc(Tag)(параметры)
end;


 
KSergey ©   (2003-10-17 09:19) [7]

Может кому поможет в чем-то

program PermissionsStart;

uses
Windows,
Messages;

type
TSetPermitLogin = function {SetPermitLogin}(hMainWnd: HWND): Integer; stdcall;

const
DllName = "Permissions.dll";
FuncName = "SetPermitLogin";

procedure ShowError (const ErrTxt: String);
begin
MessageBox (0, PChar (ErrTxt), nil, MB_OK + MB_ICONERROR);
end;

var
hMod: HMODULE;
SetPermitLogin: TSetPermitLogin;

begin
hMod := LoadLibrary(PChar(DllName));
if hMod <> 0 then
begin
try
SetPermitLogin := GetProcAddress(hMod, PChar(FuncName));
if Assigned(SetPermitLogin) then
SetPermitLogin(0) // вызов основной стартовой функции из DLL
else
ShowError ("В библиотеке " + DllName + " не найдена процедура " + FuncName);
finally
FreeLibrary(hMod);
end;
end
else
ShowError ("Не найдена библиотека " + DllName);

end.


 
TUser ©   (2003-10-17 09:45) [8]

Удалено модератором
Примечание: В отдельном топике


 
Элина   (2003-10-17 10:12) [9]

И еще: я загружаю ДЛЛ, Беру из нее икноку а как ее поставить иконку в Application


 
HolACost! ©   (2003-10-17 10:18) [10]

TUser © (17.10.03 09:45) [8]
можно узнать - просто прочитать секцию экспорта в длл....

Элина (17.10.03 10:12) [9]
Впринципе надо задать вопрос в отдельной ветке.... наверное никак... если я правильно понял.... :)))


 
AIDix ©   (2003-10-17 10:51) [11]

Элина (17.10.03 10:12) [9]

Application.Icon.Handle:=ICON_IS_DLL;


 
han_malign ©   (2003-10-17 10:55) [12]

> узнать, какие там процедуры, и подгрузить их

lpProcName
Points to a null-terminated string containing the function name, or specifies the function"s ordinal value. If this parameter is an ordinal value, it must be in the low-order word; the high-order word must be zero.

...:=GetProcAddress(hModule,Pointer(dwProcIndex));
inc(dwProcIndex);

и пошел по индексу, до первой ошибки
- узнать - не узнаешь, а подгрузить - подгрузишь...



Страницы: 1 вся ветка

Текущий архив: 2003.10.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
1-89360
hedgehock
2003-10-16 07:07
2003.10.27
Не могу поставить защиту на лист в Excel


7-89601
Евгений12
2003-08-13 15:55
2003.10.27
HDD


7-89583
Александр2030
2003-08-15 10:38
2003.10.27
Рабочий стол


1-89199
_san_
2003-10-17 10:58
2003.10.27
Форма большого размера.


1-89302
Abikos
2003-10-08 18:54
2003.10.27
Перерисовка ListView