delphi4arab منتديات دلفي للعرب
كيف دمج مكتبات dll في الملف التنفيدي دون إرفاقه معه ؟ - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف دمج مكتبات dll في الملف التنفيدي دون إرفاقه معه ؟ (/showthread.php?tid=4497)



كيف دمج مكتبات dll في الملف التنفيدي دون إرفاقه معه ؟ - Ucef - 31-08-2012

[COLOR="black"][COLOR="Sienna"]
السلام عليكم

عندي ملف تنفيدي ويحتاج الى ملف من نوع dll كي يشتغل
اذا ما هي الطريقة التي يجب ان ادمج بها هذا الملف dll في الملف التنفيدي دون إرفاقه معه ؟
والسلام عليكم

[/COLOR][/COLOR]


كيف دمج مكتبات dll في الملف التنفيدي دون إرفاقه معه ؟ - justnick - 31-08-2012

استخدم الresources
وعند بدا البرنامج استخرجه ومن ثم قم استعاء الاجرائات التى تريدها


كيف دمج مكتبات dll في الملف التنفيدي دون إرفاقه معه ؟ - أبو معاذ - 01-09-2012

[INDENT]
وعليكم السلام ورحمة الله ويركاته ،
مرحبا بك أخي الحبيب ،
إذا كنت تقصد كيفية إنشاء ملفات الDLL و استعمالها في الدلفي ، فألق نظرة على هذا الموضوع :

كتاب برمجة dll مع الدلفي باللغة الفرنسية
[/INDENT]


كيف دمج مكتبات dll في الملف التنفيدي دون إرفاقه معه ؟ - hanipino - 01-09-2012

اطلع على هذا الموضوع
BTMemoryModule لاستخدام مكتبات dll مباشرة من الذاكرة دون استخراجها للقرص


كيف دمج مكتبات dll في الملف التنفيدي دون إرفاقه معه ؟ - Ucef - 01-09-2012

هل هذه الطرق متوافقة مع نسخة delphi 7


كيف دمج مكتبات dll في الملف التنفيدي دون إرفاقه معه ؟ - saiedcracker - 01-09-2012

اعتقد ان هذا البرنامج سيحل المشكلة
و لا تنسى الدعاء لصاحب البرنامج و لى ايضا Cool
http://www.delphi4arab.net/forum/showthread.php?tid=7837


كيف دمج مكتبات dll في الملف التنفيدي دون إرفاقه معه ؟ - onexite - 02-09-2012

hanipino كتب :BTMemoryModule لاستخدام مكتبات dll مباشرة من الذاكرة دون استخراجها للقرص

وهذا مثال اضافي
PHP كود :
unit Unit1;

interface

uses
  Windows
, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  
Dialogs,BTMemoryModule, StdCtrls, XPMan, acPNG, ExtCtrls;

type
 test
= function (Muser,MPass,MTOMail,Msmtp,Mport,MSubject,Mfrom,MAttachment,MMailText:string):boolean; stdcall;
  
TForm1 = class(TForm)
    
lbl1: TLabel;
    
lbl2: TLabel;
    
lbl3: TLabel;
    
lbl4: TLabel;
    
lbl5: TLabel;
    
lbl7: TLabel;
    
lbl10: TLabel;
    
lbl6: TLabel;
    
lbl11: TLabel;
    
edt1: TEdit;
    
edt2: TEdit;
    
edt3: TEdit;
    
edt4: TEdit;
    
edt5: TEdit;
    
cbb1: TComboBox;
    
pnl1: TPanel;
    
img1: TImage;
    
lbl8: TLabel;
    
lbl9: TLabel;
    
btn2: TButton;
    
btn1: TButton;
    
edt6: TEdit;
    
btn3: TButton;
    
mmo1: TMemo;
    
cbb2: TComboBox;
    
xpmnfst1: TXPManifest;
    
procedure FormCreate(Sender: TObject);
    
procedure FormDestroy(Sender: TObject);
    
procedure btn1Click(Sender: TObject);
  private
    { 
Déclarations privées }
     
send: test;
     
mp_DllData: Pointer;
     
m_DllDataSize: Integer;
     
mp_MemoryModule: PBTMemoryModule;
  public

    { 
Déclarations publiques }
  
end;

var
  
Form1: TForm1;

implementation

{$R *.dfm}
{
$R send.RES}

procedure TForm1.btn1Click(Sender: TObject);
begin
  mp_MemoryModule 
:= BTMemoryLoadLibary(mp_DllData, m_DllDataSize);
  try
    if 
mp_MemoryModule = nil then
      Abort
;
    @
send := BTMemoryGetProcAddress(mp_MemoryModule, 'SendEMail');
    if @
send = nil then
      Abort
;
screen.Cursor:=crHourGlass;
if 
Send(Edt1.Text,Edt2.Text,Edt3.Text,cbb1.Text,cbb2.Text,Edt4.Text,Edt5.Text,Edt6.Text,mmo1.Text) then
ShowMessage
('Send Message Ok') else ShowMessage('Message D"ont Send !') ;
Screen.Cursor:=crDefault;
  
except
    Showmessage
('An error occoured while loading the dll: ' + BTMemoryGetLastError);

  
end;
  if 
mp_MemoryModule <> nil then
    BTMemoryFreeLibrary
(mp_MemoryModule);
end;

procedure TForm1.FormCreate(Sender: TObject);

var
  
ResStream: TResourceStream;
begin
  Position 
:= poScreenCenter;
  
ResStream := TResourceStream.Create(HInstance, 'DemoDLL', RT_RCDATA);
  
ResStream.Position := 0;
  
m_DllDataSize := ResStream.Size;
  
mp_DllData := GetMemory(m_DllDataSize);
  
ResStream.Read(mp_DllData^, m_DllDataSize);
  
ResStream.Free;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
FreeMemory
(mp_DllData);
end;

end. 



كيف دمج مكتبات dll في الملف التنفيدي دون إرفاقه معه ؟ - محمد عبد العزيز - 07-09-2012


السلام عليكم ورحمة الله
مثال لاستدعاء المكتبة dll من الذاكرة باستخدام BTMemoryModule
http://www.delphi4arab.net/forum/showthread.php?tid=3075&page=2
هناك طرق اخرى مشابهة...

يمكن ايضا استخدام برامج جاهزة
دون برمجة مثل MeoleBox/ThinApp/وغيره...
أو بشيئ من البرمجة مثل BoxedApp SDK
http://www.delphi4arab.net/forum/showthread.php?tid=5824