Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
7-89585
Sheng
2003-08-15 00:38
2003.10.27
Завершение работы Виндов


8-89400
!ZasranYolidza!
2003-06-24 21:27
2003.10.27
Work with bass.dll?


14-89462
Тумар
2003-10-07 04:59
2003.10.27
Мне это смешно....


1-89384
Woman
2003-10-15 14:27
2003.10.27
EConvertError


1-89202
PolarS
2003-10-15 13:42
2003.10.27
Как изменить свойства таблицы MS Word из Builder?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский