Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7
Работа с внешней длл.
Работа с внешней длл.
Кто нибудь может написать гайд по использованию. В форме - "берем собираем библиотечку с исходным кодом Хеллоу ворлд, потом зовем из скрипта вот так".
Очень было бы интересно, а то в скриптах есть, а разобраться сложно!
Очень было бы интересно, а то в скриптах есть, а разобраться сложно!
Re: Работа с внешней длл.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Re: Работа с внешней длл.
не получается у меня подключить дллку... руки крюки - моска нет...Vizit0r wrote:http://stealth.od.ua/forum/viewtopic.php?f=6&t=1042
Delphi код моей библиотеки:
Code: Select all
library helloworld;
uses
System.SysUtils,
Vcl.Dialogs,
System.Classes,
stealth_script in '..\..\stealth_script.pas';
{$R *.res}
procedure OuterCall;//(str : String);
begin
//ShowMessage('Hello World');
Script.AddToSystemJournal('Hello world!');
end;
begin
//OuterCall;
end.
Code: Select all
Program New;
procedure TestDll; external 'OuterCall@d:\helloworld.dll stdcall';
begin
//Body of Script
TestDll;
end.
Re: Работа с внешней длл.
я хз делфи, но разве там не должно быть списка экспортируемых функций? в коде самой библиотеки?
edit кажется export
edit кажется export
Re: Работа с внешней длл.
drabadan wrote:не получается у меня подключить дллку... руки крюки - моска нет...Vizit0r wrote:http://stealth.od.ua/forum/viewtopic.php?f=6&t=1042
Delphi код моей библиотеки:в скрипте:Code: Select all
library helloworld; uses System.SysUtils, Vcl.Dialogs, System.Classes, stealth_script in '..\..\stealth_script.pas'; {$R *.res} procedure OuterCall;//(str : String); begin //ShowMessage('Hello World'); Script.AddToSystemJournal('Hello world!'); end; begin //OuterCall; end.
что я делаю не так??Code: Select all
Program New; procedure TestDll; external 'OuterCall@d:\helloworld.dll stdcall'; begin //Body of Script TestDll; end.
Code: Select all
....
exports
OuterCall;
begin
//OuterCall;
end.
и кстати, stdcall надо указать. А то ты в скрипте тип вызова ставишь как stdcall, а в длл это не прописываешь.
procedure OuterCall;stdcall;
дальше. String в параметрах использовать - совсем плохая идея. PChar - самое оно.
Гугл много еще чего интересного расскажет, например по словам "Dll на Delphi" "String в Delphi Dll" и т.д.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Re: Работа с внешней длл.
не всегда знаешь о чем гугл спрашивать... Чаще всего когда хочешь узнать как коробок спичек донести из А в B гугл дает ответ про космолеты которые бороздят просторы вселенных, где никаких коробков уже 3 тысячи лет никто не встречал...Vizit0r wrote: Гугл много еще чего интересного расскажет, например по словам "Dll на Delphi" "String в Delphi Dll" и т.д.
Code: Select all
//Delphi code:
procedure OuterCall; stdcall;
begin
//ShowMessage('Hello World');
Script.AddToSystemJournal('Hello world!');
end;
exports
OuterCall;
Code: Select all
//Stealth code:
Program New;
procedure TestDll; external 'OuterCall@d:\helloworld.dll stdcall';
begin
TestDll;
end.

Re: Работа с внешней длл.
Vizit0r wrote: ты бы сначала пробовал из дельфийской программы вызвать эту длл функцию, а потом уже из стелса.
погугли "как правильно гуглить"не всегда знаешь о чем гугл спрашивать... Чаще всего когда хочешь узнать как коробок спичек донести из А в B гугл дает ответ про космолеты которые бороздят просторы вселенных, где никаких коробков уже 3 тысячи лет никто не встречал...

"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Re: Работа с внешней длл.
Code: Select all
Program New;
procedure TestDll(Msg : PChar); external 'OuterCall@d:\Stealth\my\Project7.dll stdcall';
begin
TestDll(('1111'));
end.
Code: Select all
library Project7;
uses
System.SysUtils,
VCL.Dialogs,
System.Classes;
procedure OuterCall(Msg : PAnsiChar); stdcall;
begin
ShowMessage(Msg);
end;
exports
OuterCall;
begin
end.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".