ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

17.06.2008, 16:06
|
|
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
Провел на форуме: 379101
Репутация:
136
|
|
И надо что так что бы открывалась типо на проге кнопка лоад на неё нажимаеш и прога запускает тот длл который с ней в одной папке.. Например:
Надо знать, что экспортировать из библиотеки dll, то есть какие функции экспортные.
Код:
// Есть экспортная функция, которая заранее известна и находится в dll
// вот её прототип
f: function (p: PChar; b: Boolean): Boolean;
// Вот эта функция осуществляет загрузку dll библиотеки
// в адресное пространство вашей программы
procedure Call(DllName, ProcName: PChar);
var
hModule: THandle;
P: Pointer;
begin
f := NIL;
hModule := LoadLibrary(DllName);
if hModule <> 0 then p := GetProcAddress(hModule, ProcName);
if p <> NIL then f('ЗАРАНЕЕ_ИЗВЕСТНАЯ_ЭКСПОРТИРУЕМАЯ_ФУНКЦИЯ', false);
end;
В итоге получается следующее
Код:
var
Form1: TForm1;
// Есть экспортная функция, которая заранее известна и находится в dll
// вот её прототип
f: function (p: PChar; b: Boolean): Boolean;
implementation
{$R *.dfm}
// Вот эта функция осуществляет загрузку dll библиотеки
// в адресное пространство вашей программы
procedure Call(DllName, ProcName: PChar);
var
hModule: THandle;
P: Pointer;
begin
f := NIL;
hModule := LoadLibrary(DllName);
if hModule <> 0 then p := GetProcAddress(hModule, ProcName);
if p <> NIL then f('ЗАРАНЕЕ_ИЗВЕСТНАЯ_ЭКСПОРТИРУЕМАЯ_ФУНКЦИЯ', false);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Call('1.dll', 'ЗАРАНЕЕ_ИЗВЕСТНАЯ_ЭКСПОРТИРУЕМАЯ_ФУНКЦИЯ');
end;
|
|
|

17.06.2008, 16:08
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме: 3660186
Репутация:
905
|
|
Снайпер, ты как-то мысли коряво свои излагаешь.
Ну с dll'кой не получается...
Это ты шеллэкзекутом длл открываешь? о_О Напиши обработчик нажатия на кнопку, в начале кода заюзай LoadLibrary, в конце FreeLibrary, если либа тебе не нужна. Кстати, хочу посоветовать заглянуть в документацию Delphi, там написано, как юзать динамическую загрузку библиотек
|
|
|

17.06.2008, 16:10
|
|
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
Провел на форуме: 379101
Репутация:
136
|
|
Горазда проще работать с библиотекой вот так:
Код:
var
Form1: TForm1;
// прототип вызываемой функции
function func1(p:PChar):Boolean;stdcall; external '1.dll';
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
// вызываем
func1('ЗАРАНЕЕ_ИЗВЕСТНАЯ_ЭКСПОРТИРУЕМАЯ_ФУНКЦИЯ');
end;
|
|
|

17.06.2008, 16:20
|
|
Познающий
Регистрация: 24.06.2007
Сообщений: 36
Провел на форуме: 177842
Репутация:
5
|
|
Сообщение от 0verbreaK
Горазда проще работать с библиотекой вот так:
Код:
var
Form1: TForm1;
// прототип вызываемой функции
function func1(p:PChar):Boolean;stdcall; external '1.dll';
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
// вызываем
func1('ЗАРАНЕЕ_ИЗВЕСТНАЯ_ЭКСПОРТИРУЕМАЯ_ФУНКЦИЯ');
end;
Вот такой принцип нужен.. -->Link<--
|
|
|

17.06.2008, 16:51
|
|
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
Провел на форуме: 379101
Репутация:
136
|
|
Сообщение от SNAIPER ShoT
Так и есть, объясни лучше, dll твоя или чужая?
|
|
|

17.06.2008, 17:14
|
|
Познающий
Регистрация: 24.06.2007
Сообщений: 36
Провел на форуме: 177842
Репутация:
5
|
|
чужая...
и когда запускаю уже прогу она пишет всякую хню и закрывается. =(
|
|
|

17.06.2008, 19:28
|
|
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
Провел на форуме: 379101
Репутация:
136
|
|
Сообщение от SNAIPER ShoT
чужая...
и когда запускаю уже прогу она пишет всякую хню и закрывается. =(
Так ты должен знать, что экспортировать из библиотеки dll. Что конкретно надо сделать? Что бы твоя программа вызвали некоторую функцию из библы, правильно? что за dll'ка.
|
|
|

17.06.2008, 20:15
|
|
Banned
Регистрация: 13.09.2006
Сообщений: 523
Провел на форуме: 2869410
Репутация:
925
|
|
Для *.exe файлов лучше WinExec('1.exe',SW_SHOW);
|
|
|

17.06.2008, 20:17
|
|
Познающий
Регистрация: 24.06.2007
Сообщений: 36
Провел на форуме: 177842
Репутация:
5
|
|
Сообщение от zl0y
Для *.exe файлов лучше WinExec('1.exe',SW_SHOW);
А по подробнее мона? 
|
|
|

17.06.2008, 20:16
|
|
Познающий
Регистрация: 24.06.2007
Сообщений: 36
Провел на форуме: 177842
Репутация:
5
|
|
эта dll'ka просто должна влезть в другой процесс. Тоесть когда я нажимаю на лоад мой exe должен прятатся в Древо процессов... Вот а dll'ka просто должна загружатся вся в процес hl.exe  мож кто знает такой.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|