المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
إقتباس :جميع المواضيع تتكلم عن إستدعاء الـ Dll من البرنامج وليس حقن الـ Dll في البرنامج
بالنسبة للكود الذي كتبته ... لا استطيع كتابه الامر الذي يقوم بإستدعاء الـ Dll الخاصة بي ... في البرنامج الهدف !
والسلام عليكم
ضع حدث مناداة الفورم في حدث تحميل المكتبة
PHP كود :
//Dll
Begin
ShowMyForm;
end;
وسيتم اظهار الفورم بمجرد أن تتم عملية حقن المكتبة ..
المشاركات : 306
المواضيع 45
:
: 0
الإنتساب : Jul 2012
فعلاً ظهرة النافذة بدون كتابة سطر إنشاء الثريد ...
رغم انه يتم إنشاء ثريد بدايته في LoadLibraryW لكن لا يهم
لكن المشكلة لازالت تظهر
هذا الكود :
PHP كود :
procedure ShowMyMain();
begin
TStyleManager.SetStyle(TStyleManager.LoadFromFile(ExtractFileDir(GetModuleName(HInstance)) + '\TurquoiseGray.vsf'));
Form2 := TForm2.Create(nil);
Form2.ShowModal;
end;
begin
ShowMyMain;
end.
المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
almuhhnad كتب :لكن المشكلة لازالت تظهر
أية مشكلة .. لقد قمت بتجريب ولم تظهر لي أي مشكلة !!!
المشاركات : 306
المواضيع 45
:
: 0
الإنتساب : Jul 2012
وعليكم السلام ورحمة الله
هذا عرض فلاشي سريع يعرض المشكلة , وأين تحصل ... بنفس الكود الذي لا يظهر المشكلة لديك ... :
كود :
http://im35.gulfup.com/IloJA.swf
وهذا السروس كود المستعمل :
PHP كود :
library Project2;
uses
System.SysUtils,
System.Classes,
VCL.Themes,
VCL.Styles,
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
procedure showmymain();
begin
tstylemanager.setstyle(tstylemanager.loadfromfile(extractfiledir(getmodulename(hinstance)) + '\turquoisegray.vsf'));
form2 := tform2.create(nil);
form2.showmodal;
end;
begin
showmymain;
end.
إذا كان فعلا لا تظهر لديك المشكلة ... ربما لإختلاف النظام ... !؟ .. رغم اني اضنك تملك نفس نظامي
المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
ALmuhhnad كتب :هذا عرض فلاشي سريع يعرض المشكلة
هكذا أفضل .. لقد اتضحت لي الفكرة
أولا سأتطرق الى السبب :
سبب حدوث المشكلة هو مقبض غير صحيح عند تنفيذ تصغير للنافذة أي الخطأ بالدالة
HandleNeeded
في الحالة العادية .. أقصد بدون استخدام ال Vcl Style لن تواجه هذه المشكلة لأن النظام هو من يتحكم بالنافذة .. أما اذا استخدمت ال Vcl Style فستحدث المشكلة بسبب عدم وجود Parent ان صح التعبير
في الحقيقة حل المشكلة أتعبني قليلا .. :
الحل هو استخدام
Application وهمية لتنفيذ ظهور الفورم .. أوكي
مثال :
PHP كود :
library dsdll;
uses
ShareMem,
Winapi.Windows, Winapi.Messages,
System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms,Vcl.Dialogs,
Vcl.Themes,Vcl.Styles,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
{$R Auric.res}//Include Your Style
var
dwTemp : DWORD;
hThread :THandle;
procedure CreateDlg();
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
TStyleManager.TrySetStyle('Auric');//Set Style
Application.CreateForm(TForm1, form1);//Create Form1
Application.Run;//Run
FreeAndNil(Form1);//Destroy
end;
procedure DllMain(reason: Integer);
begin
if reason =DLL_PROCESS_ATTACH then
hThread:= CreateThread(nil,0,@CreateDlg,nil,0,dwTemp)
else if reason =DLL_PROCESS_DETACH then
begin
TerminateThread(hThread,0);// Kill Thread
ExitProcess(0);//Exit
end;
end;
begin
DllProc := DllMain;
DllMain(DLL_PROCESS_ATTACH);
end.
إقتباس :إذا كان فعلا لا تظهر لديك المشكلة ... ربما لإختلاف النظام ... !؟ .. رغم اني اضنك تملك نفس نظامي 
أستعمل Win7
المشاركات : 306
المواضيع 45
:
: 0
الإنتساب : Jul 2012
السلام عليكم ورحمة الله وبركاتة
ما شاء الله تبارك الله ... انت مبرمج بما تعنيه الكلمة بدون مجاملات
لدي سؤال عن كيفية إجادك لمكان الخطاء ... ؟ ببرنامج التنقيح Olly ؟ ام شيء آخر ؟
اعجبتني فكرة عمل برنامج وهمي ... ولا يخفا عليك اني فكرت بهذه الفكرة دون علمي بسبب الخطاء
لكن كان ينقصني الاكواد التي ساكتبها لتنفيذ ذلك ...
شكراً لك اخي واستاذي SMP3 من جديد .. لا استطيع إلا ان اقول
جزاك الله خير وزادك علماً فوق علمك ووفقك لما يحبه ويرضاه
المشاركات : 39
المواضيع 2
:
: 0
الإنتساب : Oct 2012
امكانية تنقيج برامج الدلفي سهلة جدا بالطبع باستعمال Olly او أي منقح آخر و في و جود Map File :p
المشاركات : 306
المواضيع 45
:
: 0
الإنتساب : Jul 2012
Map File ؟
ما هذا الملف وما دخله بتنقيح البرنامج ؟
المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
إقتباس :ما شاء الله تبارك الله ... انت مبرمج بما تعنيه الكلمة بدون مجاملات
لا تبالغ أخي .. فمازال المشوار طويل بالنسبة لي
إقتباس :لدي سؤال عن كيفية إجادك لمكان الخطاء ... ؟ ببرنامج التنقيح Olly ؟ ام شيء آخر ؟
من خلال التنقيح بدلفي
إقتباس :اعجبتني فكرة عمل برنامج وهمي ... ولا يخفا عليك اني فكرت بهذه الفكرة دون علمي بسبب الخطاء
لكن كان ينقصني الاكواد التي ساكتبها لتنفيذ ذلك ...
ليس وهمي ... ليس هناك برنامج .. هناك Application تقوم بانشاء الفورم فقط
مثل تطبيق exe
PHP كود :
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
إقتباس :شكراً لك اخي واستاذي SMP3 من جديد .. لا استطيع إلا ان اقول
جزاك الله خير وزادك علماً فوق علمك ووفقك لما يحبه ويرضاه
العفو أخي
المشاركات : 39
المواضيع 2
:
: 0
الإنتساب : Oct 2012
ALmuhhnad كتب :Map File ؟
Map File هو ملف يحتاجه المنقح حيثما كان لعنونة و اعطاء أسماء لما يسمى
Calls فالبتالي هو يساعدك في عملية التنقيح يمكنك عمل ملف
Map عن طريق الدلفي بحد ذاته فقط اصغط على
projects ثم
Options ومن ثم اختر
Linker و اختر واجهة
mapFile و اختر
Detailed و سيتم عنونة جميع متغيرات و ثوابت و دوال برنامجك في المنقح جربها مع
Olly 
تحياتي