می خواستم بدانم که چجوری می تونم یه پسوند فایل داشته باشم که وقتی روی اون کلیک میشه برنامه من باز بشه و محتویات اون فایل رو بتونم بهش دسترسی پیدا کنم
برای مثال وقتی روی یک فایل که پسوندش doc است کلیک می کنیم برنامه ورد مایکروسافت اجرا می شود منم می خوام مشابه همین کارو توی وی بی دات نت انجام بدم
برای ثبت کردن یک Extension جدید می توانید از کد زیر استفاده کنید :
کد:
Private Sub AssociateExtension(ByVal extension As String, ByVal title As String, ByVal icon As String)
Dim classes As Microsoft.Win32.RegistryKey
Dim reg As Microsoft.Win32.RegistryKey
Dim regIcon As Microsoft.Win32.RegistryKey
Dim regCommand As Microsoft.Win32.RegistryKey
Dim appPath As String
appPath = Application.ExecutablePath
classes = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\Classes", True)
reg = classes.CreateSubKey("." + extension)
reg.SetValue("", extension + ".Files")
reg.Close()
reg = classes.CreateSubKey(extension + ".Files")
reg.SetValue("", title)
regIcon = reg.CreateSubKey("DefaultIcon")
If icon.Length = 0 Then icon = appPath
regIcon.SetValue("", icon)
regIcon.Close()
regCommand = reg.CreateSubKey("shell\open\command")
regCommand.SetValue("", """" + appPath + """ ""%1""")
regCommand.Close()
reg.Close()
classes.Close()
End Sub
سه پارامتری که بایستی مشخص بشه به ترتیب پسوند (مثلا txt) ، نام پسوند (مثلا Text Documents) و
مسیر آیکون آن است (مثلا "C:\MyApp.exe" یا "C:\My Icons\Icon1.ico") که می تواند "" هم باشد. اگر مسیر
آیکون را "" قرار دهید، از آیکون خود برنامه شما استفاده خواهد شد.
مثلا از این به بعد فایل های wwq با برنامه شما باز شوند :
کد:
AssociateExtension("wwq", "wwq Files", "")
فایل هایی که قرار است با برنامه باز شوند در Command Line برنامه مشخص می شوند، پس موقع فراخوانی
برنامه آنها را در رخداد Form1_Load مدیریت خواهید کرد. مثلا :
کد:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
Dim filePath As String = Environment.GetCommandLineArgs(1).Trim
If Len(filePath) > 0 And System.IO.File.Exists(filePath) Then
MessageBox.Show(filePath)
End If
Catch ex As Exception
End Try
End Sub
در مثال بالا صرفا نام آن فایل توسط MessageBox نمایش می یابد، اما شما می توانید هر بلایی که خواستید
سر فایل مورد نظر در بیاورید، بازش کنید، ویرایش اش کنید و یا حذفش کنید.
توجه داشته باشید که مسیر برنامه شما از Application.ExecutablePath خوانده شده و در Registry ثبت می شود،
پس اگر فایل اجرایی برنامه را جابجا کرده و یا تغییر نام دهید، Explorer نمی تواند برنامه را برای باز کردن فایل ها
پیدا کند. می بایستی AssociateExtension را بعد از هر جابجایی مجددا اجرا کنید.