PDA

View Full Version : Association Files



H_r_m
یک شنبه 04 مرداد 1383, 19:58 عصر
با سلام
چگونه میتوان کاری کرد که مثلا با کلیک کردن روی فایلهای متنی Txt آن فایلها با برنامه ای که با وی بی نوشته ایم باز شود امید وارم متوجه منظورم شده باشید
میشه با یه مثال توضیح بدین ممنونم

MM_Mofidi
دوشنبه 05 مرداد 1383, 14:00 عصر
my computer ->tools menu -> folder option ->file type tab ->select TXT files -> advanced button ->Select Action Open -> Edit button
گزینه application used to perporm action را به برنامه خود تغییر دهید.

در windows 98 منو folder option در مسیر دیگری میباشد.

H_r_m
دوشنبه 05 مرداد 1383, 20:56 عصر
سلام اقا یا خانم مفیدی
منظور من این بود که از درون وی بی اینکار انجام شود (وگر نه این سوال را در بخش ویندوز مطرح میکردم)
در ضمن در توضیح جواب شما باید بگویم که اگر روی فایلی که میخواهیم با برنامه دیگری باز شود راست کلیک کرده و گزینه Open With ... را انتخاب و برنامه مورد نظرمان را انتخاب کرده
و تیک Always ... را میزنیم دیگز نیازی به طی مواردی که شما گفتید هم نیست البته این هم یک روش است
امیدوارم که جسارتی نکرده باشم

H_r_m
شنبه 10 مرداد 1383, 21:53 عصر
سلام
لطفا یکی جواب بده 8-)

Ali_Mor
یک شنبه 11 مرداد 1383, 20:17 عصر
سلام
من این برنامه را قبلا در سایت iranvig پیدا کردم ولی آن را امتحان نکرده ام

1. ایجاد یک پروژه تازه
2. ایجاد یک ماجول و نوشتن کدهای زیر درون آن



Public Type mnuCommands
Captions As New Collection
Commands As New Collection
End Type

Public Type filetype
Commands As mnuCommands
Extension As String
ProperName As String
FullName As String
ContentType As String
IconPath As String
IconIndex As Integer
End Type

Public Const REG_SZ = 1
Public Const HKEY_CLASSES_ROOT = &H80000000

Public Declare Function RegCloseKey Lib _
"advapi32.dll" (ByVal hKey As Long) As Long
Public Declare Function RegCreateKey Lib _
"advapi32" Alias "RegCreateKeyA" (ByVal _
hKey As Long, ByVal lpszSubKey As String, _
phkResult As Long) As Long
Public Declare Function RegSetValueEx Lib _
"advapi32" Alias "RegSetValueExA" (ByVal _
hKey As Long, ByVal lpszValueName As String, _
ByVal dwReserved As Long, ByVal fdwType As _
Long, lpbData As Any, ByVal cbData As Long) As Long
Public Sub CreateExtension(newfiletype As filetype)

Dim IconString As String
Dim Result As Long, Result2 As Long, ResultX As Long
Dim ReturnValue As Long, HKeyX As Long
Dim cmdloop As Integer

IconString = newfiletype.IconPath & "," & _
newfiletype.IconIndex

If Left$(newfiletype.Extension, 1) <> "." Then _
newfiletype.Extension = "." & newfiletype.Extension

RegCreateKey HKEY_CLASSES_ROOT, _
newfiletype.Extension, Result
ReturnValue = RegSetValueEx(Result, "", 0, REG_SZ, _
ByVal newfiletype.ProperName, _
LenB(StrConv(newfiletype.ProperName, vbFromUnicode)))

'Set up content type
If newfiletype.ContentType <> "" Then
ReturnValue = RegSetValueEx(Result, _
"Content Type", 0, REG_SZ, ByVal _
CStr(newfiletype.ContentType), _
LenB(StrConv(newfiletype.ContentType, vbFromUnicode)))
End If

RegCreateKey HKEY_CLASSES_ROOT, _
newfiletype.ProperName, Result

If Not IconString = ",0" Then
RegCreateKey Result, "DefaultIcon", _
Result2 'Create The Key of "ProperNameDefaultIcon"
ReturnValue = RegSetValueEx(Result2, _
"", 0, REG_SZ, ByVal IconString, _
LenB(StrConv(IconString, vbFromUnicode)))
'Set The Default Value for the Key
End If
ReturnValue = RegSetValueEx(Result, _
"", 0, REG_SZ, ByVal newfiletype.FullName, _
LenB(StrConv(newfiletype.FullName, vbFromUnicode)))
RegCreateKey Result, ByVal "Shell", ResultX
'Create neccessary subkeys for each command
For cmdloop = 1 To newfiletype.Commands.Captions.Count
RegCreateKey ResultX, ByVal _
newfiletype.Commands.Captions(cmdloop), Result
RegCreateKey Result, ByVal "Command", Result2
Dim CurrentCommand$
CurrentCommand = newfiletype.Commands.Commands(cmdloop)
ReturnValue = RegSetValueEx(Result2, _
"", 0, REG_SZ, ByVal CurrentCommand$, _
LenB(StrConv(CurrentCommand$, vbFromUnicode)))
RegCloseKey Result
RegCloseKey Result2
Next
RegCloseKey Result2
End Sub

3.ایجاد یک فرم Form1
4. ایجاد سه TextBox با نامهای ، نامText1= و نام کاملText2= و پسوندText3=
5.ایجاد یک دکمه Command1
6. نوشتن کد زیر در فرم


Private Sub Command1_Click()
Dim myfiletype As filetype

myfiletype.ProperName = Text1.Text ' "MyFile"
myfiletype.FullName = Text2.Text ' "My File Type"
myfiletype.ContentType = "SomeMIMEtype"
myfiletype.Extension = "." & Text3.Text 'Extention ".MYF"
myfiletype.Commands.Captions.Add "Open"
myfiletype.Commands.Commands.Add _
"c:\windows\notepad.exe ""%1"""
myfiletype.Commands.Captions.Add "Print"
myfiletype.Commands.Commands.Add _
"c:\windows\notepad.exe ""%1"" /P"
CreateExtension myfiletype
End Sub

اجرای برنامه
پس از اجرا مقادیر زیر را به ترتیب در Text1,Text2,Text3 وارد نمایید (MyFile,My File Type,MYF)
سپس Command1 را بزنید
به محل زیر مراجعه کرده و دنبال فایل با پسوند MYF بگردید که باید توسط نوت پد باز شود

Start->Settings->Folder Options->File Types

H_r_m
دوشنبه 12 مرداد 1383, 21:38 عصر
سلام علی جون
ممنون از پاسختون من مشکلم حل شد
اگه میشه یه نگاه به سوال تشخیص برنامه در حال اجرا بیندازید
شاید جوابی هم برا اون پیدا کنید
باز هم ازتون ممنونم

ras-amir
چهارشنبه 23 شهریور 1390, 13:52 عصر
من که نفهمیدم...:گریه:

محسن واژدی
چهارشنبه 23 شهریور 1390, 15:12 عصر
سلام
چه بخشی را متوجه نشدین

ras-amir
یک شنبه 27 شهریور 1390, 20:50 عصر
نمی فهمم برای چی با نود پد ما اگه بخوایم با برنامه خودمون باز بشه باید چی کار کنیم؟

محسن واژدی
یک شنبه 27 شهریور 1390, 21:18 عصر
نمی فهمم برای چی با نود پد ما اگه بخوایم با برنامه خودمون باز بشه باید چی کار کنیم؟ سلام علیکم
همانطور که دوستان هم در پست های قبل عرض کردند، برای اجرای یک پسوند در برنامه:
1- پسوند جدید را در ریجستری ثبت و آدرس آن را به برنامه ارجاع میدهیم (دستورات نوشتن در ریجستری را هم در 5 مشاهده میکنید)
2- سپس در وی بی از تابع Command پارامتر ارسال شده که مسیر سند است را دریافت و در TextBox نمایش میدهیم

موفق باشید