PDA

View Full Version : استفاده از file.res ها برای کاهش حجم exe و پوشاندن..



Alirezagoodarzi
یک شنبه 22 خرداد 1384, 08:10 صبح
سلام دوستان
من در مورد resource فایلها در وی بی چیزی تو بحثهای قبلی ندیدم آیا لینکی سراغ دارید یا یه بحث مفید رو شروع کنیم؟

Alirezagoodarzi
یک شنبه 22 خرداد 1384, 22:30 عصر
برای شروع بحث مقدمه ای از MSDN ترجمه کردم .با عذر خواهی از اشکالات ترجمه لطفا نظرات و اطلاعاتتون را اضافه کنید تا همگی استفاده کنیم.

R_BABAZADEH
دوشنبه 23 خرداد 1384, 19:55 عصر
لطفا ادامه بدهید

Alirezagoodarzi
دوشنبه 23 خرداد 1384, 23:34 عصر
برنامه نویسان معمولا دوست دارند فایلهای جانبی که استفاده میکنند مستقیما در شاخه برنامه ای که نصب میکنند قرارنگیرد و قابل دسترسی نباشد.چون میترسند کاربر به اشتباه این فایلها را پاک کند و یا تغییرات نامطلوبی در آن ایجاد کند. بعنوان مثال اگر یک فایل RTF یا Word برای Readme در نظر بگیرید یا یک فایل GIF یا JPG برای تصاویر و لوگوها یا یک MIDI فایل برای صدا، ممکن است هرکدام از اینها یا پاک شوند یا دستکاری و یا سوء استفاده.

از طرفی در صورتی که بخواهید برنامه تان را از طریق اینترنت Update کنید با این روش بیشتر منابع پرحجم که فایل EXE شما را حجیم میکنند مثل تصاویر و فایلهای جانبی را یک بار در این رسورس فایل قرار میدهید و فقط یک برنامه کوچک EXE برای ارسال خواهید داشت.

یک راه خوب برای توضیع این فایلها به همراه برنامه تان گنجاندن آنها در یک Resourc File است.این فایل بصورت EXE کامپایل میشود.این کار باعث میشود فایل در دسترس برنامه باشد ولی از دسترس کاربر خارج شود.

با توابع LoadResPicture و LoadREsString میتوان هر یک از محتویات رسورس فایل را در برنامه لود و بکار گرفت.بقیه انواع داده ها غیر از تصویر و متن را باید به شکل custom resource در این فایل ذخیره کرد و با تابع داخلی وی بی به نام LoadResData استخراج و بکار گرفت.

در حالت 16_bit محدودیت 64 کیلوبایتی برای این تابع اخیر وجود دارد ولی در حالت 32-bit این محدودیت مرتفع شده است.

برای بکار گیری Custom Resource براحتی با کمک تابع LoadResData داده ها را به یک آرایه از نوع Byte انتقال میدهیم .سپس این آرایه را به یک فایل موقت – temporary file - انتقال میدهیم ، از فایل استفاده میکنیم ، و سپس آنرا پاک میکنیم.

مثال همراه این مقاله Resfile.exe دارای یک ماجول قابل استفاده مجدد برای کار با رسورس فایل است . این ماجول دارای دو تابع است که کار با رسورس فایل ها را تسهیل میکند.


تابع LoadPictureResource
این تابع یک custom resource را روی دیسک ذخیره میکند و با اجرای تابع Loadpicture یک
Picture object ایجاد میکند.این راه برای گنجاندن فایل GIF و JPG در رسورس فایل کاربرد دارد. این فایلها بدلیل کوچک بودن حجمشان نسبت به Bitmap فایلهای EXE کوچکتری را سبب میشوند.

تابع SaveResItemToDisk
این تابع به سادگی یک جزء رسورس فایل را روی دیسک ذخیره میکند.برنامه نویس بعد از این کار میتواند با این فایل هرکاری که با یک فایل مستقل انجام میدهد ، انجام دهد.

توجه: پروژه نمونه Resfile.exe دارای توضیحات-Comments - خیلی زیادی است.میتوانید با اجرا و امتحان کردن این پروژه فهم عمیق تری از عملکرد و تکنیک رسورس فایل حاصل کنید.

منبع MSDN
ترجمه و تنظیم علیرضا گودرزی

hadi2345
سه شنبه 24 خرداد 1384, 06:00 صبح
با سلام .
گودرزی جان دستت درد نکنه . مطابی که عنوان کردی و فایلهایی که گذاشتی، بسیار مفید هستند . من یکی که استفاده کردم .
موفق باشید.

وفایی
سه شنبه 24 خرداد 1384, 06:28 صبح
ممنون از لطفتون

R_BABAZADEH
سه شنبه 24 خرداد 1384, 08:45 صبح
ممنون کلی حال کردیم
اگه بازم اطلاعات این چنینی داری من که سراپا گوشم

R_BABAZADEH
سه شنبه 24 خرداد 1384, 08:52 صبح
راستی چطور میشه اطلاعات رو به این فایل اضافه کرد

Alirezagoodarzi
سه شنبه 24 خرداد 1384, 22:43 عصر
شما add-ins اون رو در وی بی نصب کنید و ادیتورش را باز کنید براحتی فایلهاتون رو کم وزیاد کنید.
حتی res فایلش رو هم میتونید باز کنید و تغییراتی بدید و بهتره این کار را در برنامه با کد انجام بدبد چون تکس ادیتورها موقع save اون شاید اشکالاتی ایجاد کنند.

R_BABAZADEH
چهارشنبه 25 خرداد 1384, 09:26 صبح
ممنون :تشویق: