Форум: "Основная";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];
ВнизКАК ИЗ ДЛЛ вызвать процедуру Найти похожие ветки
← →
Элина (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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c