ورود

View Full Version : استفاده از عکسهای داخل dll



als_1360
چهارشنبه 07 بهمن 1383, 13:44 عصر
سلام به همه دوستان
اول این رو بگم که من خیلی وقته با این سایت آشنا شدم ولی تا حالا وقت نشده بود پست بزنم
و فکر کنم این اولین پست من باشه
به هر حال
سوال:
1- چه جوری می شه bitmap ها یا sound ها یا strings و... داخل یک dll رو در برنامه دلفی استفاده کرد(مثلا شبیه استفاده از ریسورسها در دلفی )
2- از کجا می شه فهمید توی یک dll چه توابعی وجود داره و پارمترهای اون چیه و چه جوری تغییر می کنند.

esi022
یک شنبه 11 بهمن 1383, 11:27 صبح
procedure TForm1.Button1Click(Sender: TObject);
var
LibHandle: THandle;
Bitmap: Tbitmap;
begin
LibHandle:=Loadlibrary('MyDLL.dll');
try
if LibHandle<>0 then
begin
Bitmap:=TBitmap.Create;
Bitmap.LoadFromResourceName(LibHandle,'BITMAP3');
Image1.Canvas.Draw(0,0,Bitmap);
end;
finally
Bitmap.Free;
end;
end;

تست کن
ولی دومی رو !!!!
http://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_20818757.html

als_1360
یک شنبه 11 بهمن 1383, 12:31 عصر
سلام
تشکر از جوابتون
وقتی از این استفاده می کنم پیغام
Access violation at address 00403104 in module
رو می ده
برای اینن کار برنامه آماده ندارید تا سورش رو ببینیم
تشکر

esi022
یک شنبه 11 بهمن 1383, 13:17 عصر
سلام
نکته1 : LoadBitmap does not support 256-color images.
نکته 2 : mydll.dll رو با dll خودت جایگزین کردی؟ - میتونی از exe و res هم خروجی بگیری
کد زیر رو هم میتونی چک کنی
بجای resid از 0 یا 1 شروع کن

procedure LoadFromResourceID(Instance: THandle; ResID: Integer);

als_1360
یک شنبه 11 بهمن 1383, 14:19 عصر
1- فکر می کنم عکسی که می خوام استفاده کنم 16 رنگ باشه (برای 256 به بالا باید از چه دستوری استفاده کنیم)
2- اسم دی ال ال رو هم عوض کردم
من کد رو یه کمی دست کاری کردم و ایف رو برداشتم حالا یه پیغام دیگه می ده که resource X not found
که ایکس هم اسم بیت مپ مورد نظر است

als_1360
دوشنبه 12 بهمن 1383, 14:54 عصر
درست شد با این کد

procedure TForm1.Button2Click(Sender: TObject);
var
LibHandle: THandle;
Bitmap: Tbitmap;
begin
LibHandle:=Loadlibrary('shell32.dll');
Bitmap:=TBitmap.Create;
Bitmap.LoadFromResourceID(LibHandle,strtoint(edit1 .Text ));
Image1.Canvas.Draw(0,0,bitmap);
end;