PDA

View Full Version : سوال: نحوه كار با فايلهاي Resource و برنامه Resource Editor



shahmahi
سه شنبه 31 شهریور 1388, 21:47 عصر
سلام بچه ها

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

یک جیزایی میدونم مثلا چطور عکسامو به فایل اضافه کنم و اینکه هر فایلی که اضافه میکنم یک شماره شناسایی داره که باید طبق اون ، فایل استخراج بشه ولی نمیدونم چطور فایلها یی رو که توی Res هستش رو استخراج و نشون بدم.

چند تا سوال دیگه هم دارم ممنون میشم جواب بدین:
1بعد از کامپایل برنامه، این فایل در کجا قرارمیگیره؟
2 هنگام ساختن Setup باید این فایل رو کنار فایل exe قرار بدم ؟(منظورم برنامه های Setup سازه)
3 اگه فایل هایی که دارم داخل یک پوشه باشه و بخوام ار اونجا توسط Res به برنامه بچسبه باید چیکار کنم؟

و نکته آخر اینکه بابت راهنمایی هایی که خواهید کرد ازتون کمال تشکر و دارم .:چشمک:

.:KeihanCPU:.
سه شنبه 31 شهریور 1388, 23:31 عصر
دوست عزیز اگر جستجو میکردید زودتر به نتیجه میرسیدید


فایل هایی با پسوند Res دز ویژوال چیه؟ :متفکر:

Res یعنی Resource یا همون فایل منبع .


به چه درد می خوره؟ :متفکر:

شما با Res میتونید هر فایلی رو با هر فرمتی در برنامه به صورت آماده داشته باشید و در موقع نیاز از اون استفاده کنید . در کل استفاده های متنوع و فراوانی داره !

چه طوری میشه از این فایل ها ایجاد کرد؟ :متفکر:

برای این کار از منوی Add-Ins زیر منوی ... Add-Ins Manager رو انتخاب کنید .

از پنجره باز شده گزینه VB 6 Resource Editor رو انتخاب کنید ، و از قسمت پایین همین پنجره ( فریم Load Behavior ) تیک گزینه های Loaded\Unloaded و Load On StartUp رو فعال کنید و بر روی دکمه Ok کلیک کنید تا پنجره بسته شه .

بعد از این کار یک شرتکات به نام VB6 Resource Editor به قسمت Shortcut Bar ویژوال بیسیک اضافه میشه . ( رنگ شرتکات سبز خواهد بود )

حال با کلیک بر روی شرتکات فوق الذکر پنجره ریسورس ادیتور باز میشه .

و حلا دیگه کافیه بر روی دکمه های مورد نظر کلیک کنید و فایل مورد نظرتون رو به ریسورس اضافه کنید .

بعد از اضافه کردن فایل ها ، هر فایل اضافه شده یک ID میگیره که در موقع استفاده به آن اشاره میشه .

نحوه استفاده :


Private Sub Form_Load()
Dim c() As Byte
c = LoadResData(101, "CUSTOM")
Open "c:\FileName.exe" For Binary As #1
Put #1, , c()
Close #1

Call Shell("c:\FileName.exe")

End Sub

shahmahi
چهارشنبه 01 مهر 1388, 08:40 صبح
دوست عزیز اگر جستجو میکردید زودتر به نتیجه میرسیدید

جدی جست و جو کردم ولی چیزی پیدا نکردم .

از راهنماییتون ممنون ولی تا اینجا که توضیح دادین رو من بلدم فقط میشه بایک مثال عملی این توضیحات رو انجام بدین.مثلا همون چیزی که گفتم داخل فایل Res یک عکس به شماره 101 هستش که بعد از اینکه command 1 زده شد این عکس داخل picture 1 نمایش داده بشه.

درضم شما که اطلاعات خوبی درباره فایل Res دارین میشه به سوالاتی هم که پرسیدم جواب بدین.

butterfly8528
چهارشنبه 01 مهر 1388, 10:36 صبح
سلام دوست عزیز .


Private Sub Command1_Click()
Picture1.Picture = LoadResPicture(101, vbResBitmap)
End Sub


موفق باشی .

shahmahi
چهارشنبه 01 مهر 1388, 10:53 صبح
ممنون دوستان من قضیه این فایلها رو فهمیدم که چیه و تونستم ازشون استفاده کنم ولی بازم یک سوال دارم مثلا میخوام فایل هام تو پوشه Temp ویندوز، داخل یک پوشه که مثلا اسم برناممه قرار بگیره و فایلها مو از اونجا بخونم ولی وقتی تو Form Load مسیر رو میدم پوشه جدید رو داخل Temp ایجاد نمیکنه چی کار کنم .:چشمک:

butterfly8528
چهارشنبه 01 مهر 1388, 12:01 عصر
اگه شما می خواید عکس رو داخل ریسورس قرار بدی بهتره با روش بالا مستقیم فایل رو بخونی و نمایش بدی !


ولی وقتی تو Form Load مسیر رو میدم پوشه جدید رو داخل Temp ایجاد نمیکنه چی کار کنم

ابتدا باید پوشه مورد نظر رو ایجا بعد فایل ها رو داخلش کپی کنید .

برای ساخت پوشه هم نمونه کد تو سایت فراونه !

.:KeihanCPU:.
چهارشنبه 01 مهر 1388, 12:15 عصر
برای ساخت پوشه هم نمونه کد تو سایت فراونه !



MkDir "C:\New Folder"

Golsha
چهارشنبه 01 مهر 1388, 12:30 عصر
ببخشید دوست عزیز شما برای عکس یه مثال نوشتید میشه خواهش کنم یه مثال هم درباره کامپوننت بنویسید :

مثلا یه مثال بنویسید که برنامه اکتیو ایکس هارو از داخل یه فایل RES بخونه و برنامه رو اجرا کنه بدونه اینکه اکتیوایکس هارو تو فولدر System32 کپی کنه بعد برنامه اجرا شود .

راستی دوست عزیز وقتی کامپوننتهارو وارد یه فایل RES کردیم بازم باید کامپوننتها توی یه فولدر کنار برنامه باشه یا اینکه چون توی یه فایل RES هست دیگه نیاز به کامپوننتها نیست ؟

.:KeihanCPU:.
چهارشنبه 01 مهر 1388, 12:34 عصر
ببخشید دوست عزیز شما برای عکس یه مثال نوشتید میشه خواهش کنم یه مثال هم درباره کامپوننت بنویسید :
کامپوننت ها اول باید در داخل هارد ذخیره بشن !


راستی دوست عزیز وقتی کامپوننتهارو وارد یه فایل RES کردیم بازم باید کامپوننتها توی یه فولدر کنار برنامه باشه یا اینکه چون توی یه فایل RES هست دیگه نیاز به کامپوننتها نیست ؟

دیگه نیازی نیست !
اگر توجه کنید بعد از اضافه کردن فایل ریسورس حجم فایل خروجی برنامتون بیشتر شده

xxxxx_xxxxx
چهارشنبه 01 مهر 1388, 13:14 عصر
تاپیک های مرتبط:
http://barnamenevis.org/forum/showthread.php?t=146683&page=2
http://barnamenevis.org/forum/showthread.php?t=163656

Golsha
چهارشنبه 01 مهر 1388, 14:39 عصر
ممنون دوست عزیز اینها آخرین سوالمن دیگه سوالی ندارم اگه میشه اینهارو هم جواب بدید .

1 ) وقتی کامپوننتها داخل فایل RES رفتند باید برای هرکدام کد بنویسیم یا اینکه وقتی وارد فایل RES شدند دیگه نیازی به هیچ کاری نیست و برنامه موقع اجرا خودش به صورت اتوماتیک کامپوننتها رو از داخل فایل RES میخونه ?

2 ) شما گفتید وقتی کامپوننتها یا چیز های دیگه وارد فایل RES میشن حجم فایل EXE افزایش پیدا میکنه درست ولی برنامه یه فایلی هم ایجاد میکنه با فرمت RES اون هم باید موقع اجرا کنار برنامه باشه یا نه ؟

.:KeihanCPU:.
چهارشنبه 01 مهر 1388, 17:14 عصر
1 ) وقتی کامپوننتها داخل فایل RES رفتند باید برای هرکدام کد بنویسیم یا اینکه وقتی وارد فایل RES شدند دیگه نیازی به هیچ کاری نیست و برنامه موقع اجرا خودش به صورت اتوماتیک کامپوننتها رو از داخل فایل RES میخونه ?
ببین دوست عزیز
برنامه شما برای اجرا شدن نیاز به کامپوننت هایی داره که در اون به کار رفته
یا باید این کامپوننت ها در system32 باشه و یا در کنار خود برنامه
بدین ترتیب شما فقط برای اولین اجرای برنامتون کامپوننت ها رو استخراج میکنید(با همون کدها)البته باید توجه کنید از اسم خود کاموننت ها استفاده کنید و اسم اوها رو تغییر ندهید


2 ) شما گفتید وقتی کامپوننتها یا چیز های دیگه وارد فایل RES میشن حجم فایل EXE افزایش پیدا میکنه درست ولی برنامه یه فایلی هم ایجاد میکنه با فرمت RES اون هم باید موقع اجرا کنار برنامه باشه یا نه ؟

اون فایلی که توسط vb ایجاد شده برای اجرای برنامه نیازی نیست
اون فایل یک قسمت از فایلهای پروژه است که برای اجرای پروژه توسط vb مورد استفاده قرار میگیره
باز هم میگم
برنامه خروجی شما که فرمت exe داره دیگه نیازی به اون فایل res نداره !

Golsha
چهارشنبه 01 مهر 1388, 18:31 عصر
برنامه شما برای اجرا شدن نیاز به کامپوننت هایی داره که در اون به کار رفته
یا باید این کامپوننت ها در system32 باشه و یا در کنار خود برنامه
بدین ترتیب شما فقط برای اولین اجرای برنامتون کامپوننت ها رو استخراج میکنید (با همون کدها) البته باید توجه کنید از اسم خود کاموننت ها استفاده کنید و اسم اوها رو تغییر ندهید

منظورتون از همون کدها چیه میشه کامل بنویسید :

ببینید من یه برنامه دارم و اکتیوایکس هارو هم توی یه فایل RES گذاشتم حالا شما یه لطفی کنید و کدی که من باید بنویسم تا بتونم از اون اکتیوایکس ها استفاده کنم رو کامل برام بنویسید .

_________________

دوست عزیز شرمنده من یه مبتدیم به خاطر همین باید منو ببخشید که اینقدر از شما سوال میکنم :گیج:

shahmahi
چهارشنبه 01 مهر 1388, 19:41 عصر
MkDir "C:\New Folder"

بابت کد ممنون حالا یک مشکل دیگه درست شد اونم اینه که وقتی برنامه رو برای بار دوم اجرا میکنم میگه همچین پوشه ای وجود داره و error میده اینو چیکار کنم.:چشمک:

من این کد رو توی form load استفاده کردم.

shahmahi
چهارشنبه 01 مهر 1388, 19:45 عصر
سلام دوست عزیز .


Private Sub Command1_Click()
Picture1.Picture = LoadResPicture(101, vbResBitmap)
End Sub


موفق باشی .

از راهنماییتون ممنون ولی نشد که بشه من پسوند عکسم jpg هستش و از قسمت custom به فایل Res اضافه کردم.
میشه اصلاحش کنی.:بوس:

Golsha
چهارشنبه 01 مهر 1388, 20:25 عصر
شما برای ساخت پوشه از این روش استفاده کنید بهتره :

اول از منوی Project گزینه ی Reference رو انتخاب کنید و توی پنجره ای که باز میشه گزینه Microsoft Scripting Runtime رو پیدا کن و تیک بزن تا فعال شه بعد OK کن تا پنجره بسته بشه بعد برای ساخت پوشه این کد رو بنویس :


Private Sub Form_Load()
On Error Resume Next
Dim x As New FileSystemObject
If x.FolderExists("C:\New Folder") = False Then x.CreateFolder ("C:\New Folder")
End Sub

حالا وقتی برنامه رو اجرا کردی اول میگرده میبینه توی درایو C چنین پوشه ای هست یا نه اگر نبود یدونه میسازه و اگر هم بود که نه ارور میده نه هیچ چی

shahmahi
چهارشنبه 01 مهر 1388, 20:50 عصر
ببینید این کدهای منه:
Private Sub Form_Load()
On Error Resume Next
Dim x As New FileSystemObject
If x.FolderExists("C:\WINDOWS\Temp\wizard") = False Then
x.CreateFolder ("C:\WINDOWS\Temp\wizard")
End If
Dim c() As Byte
c = LoadResData(101, "CUSTOM")
Open "C:\WINDOWS\Temp\wizard\00.jpg" For Binary As #1
Put #1, , c()
Close #1
End Sub
Private Sub Command1_Click()
Picture1.Picture = LoadPicture("C:\WINDOWS\Temp\wizard\00.jpg")
End Sub

با راهنمایی که دوست عزیز Golsha کرد من مشکل پوشم حل شد ولی بازم یک ایرادی هست و اون اینه که با کلیک کردن روی comman1 یک پیغام میده با عنوان Invalid picture حالا بگین چه کنم من.

Golsha
چهارشنبه 01 مهر 1388, 21:22 عصر
همین دیگه دوست عزیز مشکل شما تو ساخت پوشه است حالا این رو امتحان کن ببین جواب میده یا نه :


Private Sub Form_Load()

On Error Resume Next
Dim X As New FileSystemObject

If X.FolderExists(RootFolder & "\Temp") = False Then
X.CreateFolder (RootFolder & "\Temp")
End If

If X.FolderExists(RootFolder & "\Temp\wizard") = False Then
X.CreateFolder (RootFolder & "\Temp\wizard")
End If

Dim C() As Byte
C = LoadResData(101, "CUSTOM")
Open RootFolder & "\Temp\wizard\00.jpg" For Binary As #1
Put #1, , C()
Close #1

End Sub

Private Sub Command1_Click()
Picture1.Picture = LoadPicture(RootFolder & "\Temp\wizard\00.jpg")
End Sub

شما باید اول پوشه Temp رو بسازید بعد پوشه Wizard رو نه اینکه جفتش رو با هم بسازید

راستی این RootFolder که نوشتم مسیر پوشه WINDOWS است یه وقت نگی این چیه .

.:KeihanCPU:.
چهارشنبه 01 مهر 1388, 23:59 عصر
البته میتونین قسمت ساخت پوشه رو در یک روال بذارید و با دستور on error resume next اون ارور رو نادیده بگیرید.




منظورتون از همون کدها چیه میشه کامل بنویسید :


Dim c() As Byte
c = LoadResData(101, "CUSTOM")
Open "c:\Windows\System32\Mswinsck.ocx" For Binary As #1
Put #1, , c()
Close #1

شما فقط کافیه یکبار اونم در اولین اجرا این کد رو اجرا کنید
دفعه های بعد چون کامپوننت قبلا استخراج شده نیازی نیست

shahmahi
پنج شنبه 02 مهر 1388, 09:25 صبح
راستی این RootFolder که نوشتم مسیر پوشه WINDOWS است یه وقت نگی این چیه .
ممنون از راهنماییت ولی یک چیزی یادت رفته بود این RootFolder مسیر درایویه که ویندوز اونجا نصب شده باید یک WINDOWS قبل از Temp اضافه کنی.


البته میتونین قسمت ساخت پوشه رو در یک روال بذارید و با دستور on error resume next اون ارور رو نادیده بگیرید.

بله همین کاری که گفتین رو انجام دادم و مشکل حل شد.از راهنماییتون ممنون.:چشمک:

Golsha
پنج شنبه 02 مهر 1388, 10:35 صبح
Dim c() As Byte
c = LoadResData(101, "CUSTOM")
Open "C:\Windows\System32\Mswinsck.ocx" For Binary As #1
Put #1, , c()
Close #1

دوست عزیز این کدی که نوشتید فقط برای یه فایله اگه خواستیم 50 تا فایل کپی شه اون وقت باید برای هرکدام این کد را یکبار بنویسیم یا کد و راه حل ساده تری هم وجود داره ؟؟؟ ( اگه میشه کدی که مثلا 50 تا فایل رو کپی کنه رو برام بنویسید :لبخند: )

گفتید این RootFolder مسیر WINDOWS نیست پس برای مسیر ویندوز از چی استفاده کنیم چون همه ویندوز ها که اسم پوشه ویندوزشون WINDOWS نیست ، مثلا ویندوز MRT اسم این پوشه رو گذاشته WINXPSP2 و چیزهای دیگه ای هم من دیدم که اینجوریند و اگه برنامه یه پوشه با این اسم دید ارور میده . :متفکر:

.:KeihanCPU:.
پنج شنبه 02 مهر 1388, 12:42 عصر
پس برای مسیر ویندوز از چی استفاده کنیم

Winpath=Environ("Windir")


اگه خواستیم 50 تا فایل کپی شه اون وقت باید برای هرکدام این کد را یکبار بنویسیم یا کد و راه حل ساده تری هم وجود داره ؟؟؟

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

Golsha
پنج شنبه 02 مهر 1388, 14:49 عصر
ببخشيد دوست عزيز يه مشكل ديگه پيدا شد اونم اينه كه من تو برنامه ام از 5 تا كامپوننت استفاده كردم كه دو تا از اونا اين هاست :

COMDLG32.OCX و RICHTX32.OCX

كامپوننتهاي ديگه مشكلي نداره ولي اين دوتا كه اسمشون رو نوشتم بعد از اينكه از داخل فايل RES توي system32 كپي شد برنامه ارور ميده ، اگه ميشه راهنماييم كنيد تا درستش كنم .

Golsha
پنج شنبه 02 مهر 1388, 14:53 عصر
راستي دوستان براي كپي فونت چي كار كنم اين كُديه كه من توي فورم لود نوشتم ولي فونت ها كپي نميشند :



Private Sub Form_Load()
Dim T() As Byte
T = LoadResData(101, "FONT")
Open Environ("windir") & "\Fonts\‍Calibri.ttf" For Binary As #1
Put #1, , T()
Close #1
End Sub

اگه ميشه امتحانش كنيد ببينيد مشكل از كجاست ::.

shahmahi
پنج شنبه 02 مهر 1388, 17:06 عصر
پس برای مسیر ویندوز از چی استفاده کنیم چون همه ویندوز ها که اسم پوشه ویندوزشون WINDOWS نیست ، مثلا ویندوز MRT اسم این پوشه رو گذاشته WINXPSP2 و چیزهای دیگه ای هم من دیدم که اینجوریند و اگه برنامه یه پوشه با این اسم دید ارور میده . :متفکر:

سلام
دوست عزیز من مثال پیدا کردن پوشه ویندوز و فایل Res رو باهم نوشتم درست کار کرد. کدی که مربوط به مسیر پوشه ویندوز هستش مربوط به تمام ویندوزهایی است که ممکنه اسم پوشه ویندوزشون فرق کنه .
درضم باید از منوی Project آیتم Refrencese را انتخاب کنی و از آن آیتم Microsoft Script Runtime را تیک بزنی .
Private Declare Function GetWindowsDirectory Lib "kernel32" Alias _
"GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long _
) As Long
Public S As String
Private Sub Command1_Click()
Picture1.Picture = LoadPicture(S + "\Temp\00.jpg")
End Sub
Private Sub Form_Load()
S = Space(255)
'Get the Windows directory
WinDirectory = GetWindowsDirectory(S, 255)
S = Left$(S, WinDirectory)
Dim c() As Byte
c = LoadResData(101, "CUSTOM")
Open S + "\Temp\00.jpg" For Binary As #1
Put #1, , c()
Close #1
End Sub


درضم S متغیریه که مسیر پوشه ویندوز داخلشه.:چشمک:
موفق باشی .

Golsha
پنج شنبه 02 مهر 1388, 20:55 عصر
ممنون از راهنماييتون دوست عزيز اگه ميشه دوتا سوال آخر رو هم جواب بديد . :لبخند::لبخند:

shahmahi
شنبه 11 مهر 1388, 17:52 عصر
سلام بچه ها

من یک فایل Res دارم که توش 8 تا عکس با پسوند bmp هستش چطوری میتونم در یک کد تمام این 8 فایل رو در یک پوشه مثلا Temp ویندوز باز کنم و ازشون استفاده کنم .

البته باید بگم که اسم این 8 تا عکس به ترتیپ نیست و هر کدوم یک چیزیه اگه میشه اینم توضیح بدین.

karbon2010
شنبه 12 دی 1388, 19:12 عصر
سلام


ببخشید دوست عزیز شما برای عکس یه مثال نوشتید میشه خواهش کنم یه مثال هم درباره کامپوننت بنویسید :

کامپوننت ها اول باید در داخل هارد ذخیره بشن !

نقل قول:راستی دوست عزیز وقتی کامپوننتهارو وارد یه فایل RES کردیم بازم باید کامپوننتها توی یه فولدر کنار برنامه باشه یا اینکه چون توی یه فایل RES هست دیگه نیاز به کامپوننتها نیست ؟

دیگه نیازی نیست !
اگر توجه کنید بعد از اضافه کردن فایل ریسورس حجم فایل خروجی برنامتون بیشتر شده

پس با این تفاسیر دیگه نیاز به فرخوانی کامپونت نیست یا انتقال انها به سیستم 32 نیست درسته ؟

xxxxx_xxxxx
یک شنبه 13 دی 1388, 02:04 صبح
سلام

پس با این تفاسیر دیگه نیاز به فرخوانی کامپونت نیست یا انتقال انها به سیستم 32 نیست درسته ؟
سلام،
نه، حتماً باید کامپوننت ها از resource استخراج بشن.

Snoopboy
یک شنبه 02 اسفند 1388, 17:54 عصر
من با استفاده از دستور زیر همین فایل رو برای نمونه ریسورس کردم و دادم دوستم تو کامپیوترش امتحان کنه ولی بازم کار نداد و ارور داد . مشکل از چیه؟

Dim c() As Byte
c = LoadResData(101, "CUSTOM")
Open "C:\Windows\System32\Mswinsck.ocx" For Binary As #1
Put #1, , c()
Close #1

xxxxx_xxxxx
دوشنبه 03 اسفند 1388, 18:17 عصر
من با استفاده از دستور زیر همین فایل رو برای نمونه ریسورس کردم و دادم دوستم تو کامپیوترش امتحان کنه ولی بازم کار نداد و ارور داد . مشکل از چیه؟

Dim c() As Byte
c = LoadResData(101, "CUSTOM")
Open "C:\Windows\System32\Mswinsck.ocx" For Binary As #1
Put #1, , c()
Close #1
سلام،
این دستورات رو توی کدوم رویداد نوشتید؟
آیا کامپوننت winsock درهمان فرمی قرار دارد که این دستورات را نوشتید؟
فرمی که این کامپوننت درش قرار داره آیا همان فرم اصلی برنامه (فرم اول) هست؟

Snoopboy
دوشنبه 03 اسفند 1388, 18:36 عصر
سلام،
این دستورات رو توی کدوم رویداد نوشتید؟
آیا کامپوننت winsock درهمان فرمی قرار دارد که این دستورات را نوشتید؟
فرمی که این کامپوننت درش قرار داره آیا همان فرم اصلی برنامه (فرم اول) هست؟

در Load فرم . وینسوک هم در فرم قرار میدم که این دستور رو در Load اون فرم نوشتم.

M.T.P
دوشنبه 03 اسفند 1388, 19:01 عصر
راستي دوستان براي كپي فونت چي كار كنم اين كُديه كه من توي فورم لود نوشتم ولي فونت ها كپي نميشند :



Private Sub Form_Load()
Dim T() As Byte
T = LoadResData(101, "FONT")
Open Environ("windir") & "\Fonts\‍Calibri.ttf" For Binary As #1
Put #1, , T()
Close #1
End Sub

اگه ميشه امتحانش كنيد ببينيد مشكل از كجاست ::.

دوست عزیز بعد از کپی واسه فایل فونت نیازه که سیستم رو یک بار ریست کنین تا فونت خونده بشه ، در واقع با ریست شدن یک مقدار تو ریجستری برای فونت شما در مسیر زیر اضافه میشه که فونت شما برای برنامه ها قابل رویت خواهد بود.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts]
شما میتونی از مسیر بالا یک بک آپ بگیری بعد با Notepad ویرایشش کنی و بقیه فونت ها رو از توش پاک کنی الا فونت خودت و بعد ذخیرش کنی و داخل res بزاری و بازش کنی و با تابع ShellExecute اجراش کنی اینجوری دیگه نیازی به ریست هم نیست
امیدوارم متوجه شده باشی ، من اینجوری فونت هامو نصب میکنم:لبخند:

xxxxx_xxxxx
دوشنبه 03 اسفند 1388, 19:12 عصر
در Load فرم . وینسوک هم در فرم قرار میدم که این دستور رو در Load اون فرم نوشتم.
زمانی که فرم Load میشه باید ابزارهای استفاده شده در اون فرم موجود باشند. پس نمیشه از رویداد Load برای استخراج ابزار از ریسورس استفاده کرد. این دستورات رو در رویداد Initialize همون فرم قرار بدید. (رویداد Initialize قبل از Load اتفاق میوفته)

Reza_Zeby
سه شنبه 04 اسفند 1388, 18:20 عصر
دوست عزیز اگر جستجو میکردید زودتر به نتیجه میرسیدید



Res یعنی Resource یا همون فایل منبع .



شما با Res میتونید هر فایلی رو با هر فرمتی در برنامه به صورت آماده داشته باشید و در موقع نیاز از اون استفاده کنید . در کل استفاده های متنوع و فراوانی داره !

چه طوری میشه از این فایل ها ایجاد کرد؟ :متفکر:

برای این کار از منوی Add-Ins زیر منوی ... Add-Ins Manager رو انتخاب کنید .

از پنجره باز شده گزینه VB 6 Resource Editor رو انتخاب کنید ، و از قسمت پایین همین پنجره ( فریم Load Behavior ) تیک گزینه های Loaded\Unloaded و Load On StartUp رو فعال کنید و بر روی دکمه Ok کلیک کنید تا پنجره بسته شه .

بعد از این کار یک شرتکات به نام VB6 Resource Editor به قسمت Shortcut Bar ویژوال بیسیک اضافه میشه . ( رنگ شرتکات سبز خواهد بود )

حال با کلیک بر روی شرتکات فوق الذکر پنجره ریسورس ادیتور باز میشه .

و حلا دیگه کافیه بر روی دکمه های مورد نظر کلیک کنید و فایل مورد نظرتون رو به ریسورس اضافه کنید .

بعد از اضافه کردن فایل ها ، هر فایل اضافه شده یک ID میگیره که در موقع استفاده به آن اشاره میشه .

نحوه استفاده :


Private Sub Form_Load()
Dim c() As Byte
c = LoadResData(101, "CUSTOM")
Open "c:\FileName.exe" For Binary As #1
Put #1, , c()
Close #1

Call Shell("c:\FileName.exe")

End Sub




سلام

ببخشيد من داخل Add-Ins Manager گزينه VB 6 Resource Editor را ندارم ؟

مشکل چيه ؟


http://barnamenevis.org/forum/attachment.php?attachmentid=44581&stc=1&d=1266938373


44581

M.T.P
سه شنبه 04 اسفند 1388, 18:39 عصر
ویژوال بیسک بصورت کامل روی سیستم شما نصب نشده:متفکر:
یا اینکه CD ویژوال بیسیک شما ناقصه:متفکر:

aryasoft2872
سه شنبه 04 اسفند 1388, 21:48 عصر
راهی برای افزایش امنیت این فایل ها وجود نداره تا بتونیم dll قفل رو داخلش بزاریم ولی هکرها نتونن فایل رو بازکنن

aryasoft2872
سه شنبه 04 اسفند 1388, 22:19 عصر
از مسیر زیر ببین فایل RESEDIT.DLL وجود داره اگه وجود نداره صبر کن تا یکی برات آپلودش کنه من که هر کاری می کنم آپلود نمی شه.


C:\Program Files\Microsoft Visual Studio\VB98\Wizards

aqamahdi
یک شنبه 20 تیر 1389, 11:19 صبح
یه سوال داشتم. اولا ممنون بابت این مطلب.
فایل های کامپوننت رو چطور میشه اضافه کرد ؟ مثلا ADODC
اگر نمیشه ، چطور میشه یه فایل ست آپ درست کرد که بدون نیاز به Next و اینها ، وقتی اجرا شد این کامپوننت ها رو نصب کنه ؟ مثل بعضی از ویندوز اینستالر ها

ممنون میشم جواب بدین

xxxxx_xxxxx
دوشنبه 21 تیر 1389, 06:20 صبح
فایل های کامپوننت رو چطور میشه اضافه کرد ؟ مثلا ADODC
سلام،
توی همین تاپیک به این سؤال جواب داده شده.
ابزار مورد نظر رو به صورت ریسورس به برنامه اضافه کنید و بعد در رویداد Initialize اونو استخراج کنید.

* این کار به هیچ عنوان معقولانه نیست.

shahmahi
دوشنبه 21 تیر 1389, 11:00 صبح
از مسیر زیر ببین فایل RESEDIT.DLL وجود داره اگه وجود نداره صبر کن تا یکی برات آپلودش کنه من که هر کاری می کنم آپلود نمی شه.

فایل مورد نظر :