PDA

View Full Version : ریسورس کردن فایل reg و استفاده از آن



Slytherin
سه شنبه 09 آذر 1389, 01:17 صبح
دوستان من می خواستم لطف کنید و مراحل ریسورس کردن یک فایل reg را به برنامه اصلی و همچنین فراخوانی آن (اجرای آن) را در این قسمت به من و سایر دوستان علاقه مند یاد بدهید.
لطفا با نمونه کد و مثال توضیح بدهید.
خیلی خیلی ممنون
با تشکر

moslem_f
سه شنبه 09 آذر 1389, 18:24 عصر
منم خیلی مایم این رو بدونم خواهش می کنم از اساتید جواب سوال این دوست گرامی رو بدن تا ما هم استفاده کنیم

حمید محمودی
سه شنبه 09 آذر 1389, 20:24 عصر
سلام،

فکر نمیکنم چیز پیچیده ای باشه. ابتدا فایل .REG رو داخل ریسورس ذخیره میکنیم و بعدش هم اون رو در یه جا مثل پوشه Temp ؛ Extractش میکنیم و بعد هم فراخوانی (اجرا).

این رو الان ساختم. احتمالا کارتون رو راه میندازه.
فکر کنم سورس گویا هست. اگه بخوام توضیحی بدم اینکه، ابتدا فایلی که در ریسورس ذخیره شده بود در پوشه Temp ذخیره میشه و بعدش هم توسط فایل Regedt32.exe میایم اون رو ریجستری Import میکنیم. البته میشه با خود regedit.exe هم اینکار رو کرد.
دقت داشته باشید اگر از پارامتر /s در آخر فایل regedit.exe بکار ببریم دیگر پیغامی مبنی بر اینکه آیا کاربر اجازه بده یا نده که فایل مورد نظر Import بشه نشون داده نخواهد شد. (که در این مثال هم همینکار رو کردم)

موفق باشید.

xxxxx_xxxxx
سه شنبه 09 آذر 1389, 20:37 عصر
سلام،

چون فایل شما متنی هست (Reg)، هم میتونید خود فایل reg. رو به صورت Custom Resource به برنامه اضافه کنید و هم یک String Table براش درست کنید.
از اونجایی که فایل متنی هست، بهتر هست از String Table استفاده کنید.

به هر حال اگر فایل رو به شکل Custom Resource اضافه کنید، باید از تابع LoadResData برای استخراج فایل استفاده کنید. و اگر از String Table استفاده می کنید باید تابع LoadResString رو به کار بگیرید.

برای نحوه استفاده از Custom Resource لطفاً جستجو کنید چون همه تاپیک های مرتبط با این موضوع از نوع Custom Resource هستند. من فقط String Table رو توضیح میدم که برای فایل های متنی مناسب هست.

از منوی Add-Ins پنجره Add-In Manager رو باز کنید و گزینه VB6 Resource Editor رو Load کنید. (تصویر زیر)


http://barnamenevis.org/attachment.php?attachmentid=62965&d=1291136546


توی Toolbar یک آیکن سبز رنگ اضافه میشه. روش کلیک کنید، پنجره Recource Editor باز میشه.
توی این پنجره باز از روی Toolbar آیتم Edit String Tables رو انتخاب کنید. یک پنجره دیگه باز میشه که یک جدول با دو ستون داره. ستون اول Id هست و دومی زبان هست. زبانی که رشته ها رو میخواید باهاش بنویسید.

خب، حالا فرض کنید ما یک فایل رجیستری داریم با این محتوا:


Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Barnamenevis]

[HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Barnamenevis\Settings]
"Default"="51"
"MaxLength"="100"
هر خط رو باید در یک سطر از جدول وارد کنید. هر سطر یک ID منحصر به فرد باید داشته باشه که پیشفرض از 101 شروع میشه.


http://barnamenevis.org/attachment.php?attachmentid=62969&d=1291138865


در آخر، حتماً باید فایل Resource رو ذخیره کنید تا بتونید ازش استفاده کنید.
بعد از ذخیره کردن فایل Res دستورات برنامه رو می نویسیم:

Open "C:\MyRegFile.reg" For Output As #1
For i = 101 To 105
Print #1, LoadResString(i)
Next i
Close #1

Shell "regedit /s C:\MyRegFile.reg"
توجه: استفاده از Custom Resource نسبت به String Table ها از لحاظ بهینه سازی سایز فایل اجرایی بهتر هست. در واقع، ذخیره کردن رشته ها در فایل های Resrource (به صورت Custom) یکی از تکنیک های بهینه سازی رشته هاست.
موفق باشید/

Slytherin
سه شنبه 09 آذر 1389, 20:44 عصر
ممنون از پاسخ همگی، جواب ها واقعا خوب و کامل بودند.
متاسفانه نمی تونم تشکر رو پیدا کنم
باز هم ممنون

moslem_f
سه شنبه 09 آذر 1389, 21:38 عصر
تشکر از همه دوستان گرامی که جواب رو دادن از مدیران ارشد سایت برنامه نویس تقاا می کنم پلاگین تشکر رو رو این ورژن وی بی نصب کنن ممنونم .