PDA

View Full Version : پدست اوردن مسیر فایل



xxnagin
چهارشنبه 19 بهمن 1390, 11:54 صبح
سلام
من میخوام مسیر فایل وقتی که open میشه را بدست بیارم مثل همین پلیرها
که وقتی مستقیم روی فایل کلیک میکنی باز میشه و اهنگ رو میخونه

Hybrid
چهارشنبه 19 بهمن 1390, 12:22 عصر
سلام ،


OpenFileDialog1.FileName

موفق باشید./

xxnagin
چهارشنبه 19 بهمن 1390, 14:41 عصر
اینو که خودمم بلدم
از تو هارد کامپیوتر یه اهنگ را با دوبل کلیک باز کن
میبینی برنامه مدیا پلیر یا هر برنامه ای دیگری اجرا میشن

gilsoft
چهارشنبه 19 بهمن 1390, 15:24 عصر
سلام دوست عزیز
سوالتون رو درست طرح کنین ...
یه سر به لینک زیر بزن ببین بدردت میخوره ...
http://barnamenevis.org/showthread.php?326428-%D8%B1%D9%88%D8%B4-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D9%BE%D8%B3%D9%88%D9%86%D8%AF-%D8%A7%D8%AE%D8%AA%D8%B5%D8%A7%D8%B5%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%81%D8%A7%DB%8C%D9%84
موفق باشید ...

Hossis
چهارشنبه 19 بهمن 1390, 16:30 عصر
منظور شما اینه که با برنامه خودتان باز بشند؟؟
این که راحت هست

در رویداد لود فرم, در این متغیر قرار می گیرد:
filename=command()
اما اگر توسط مدیا پلیر باز شد, نقش برنامه شما این وسط چی هست؟؟

xxnagin
چهارشنبه 19 بهمن 1390, 18:30 عصر
http://us.un4seen.com/files/bass24.zip
www.un4seen.com/filez/4/Bass24.Net.zip (http://www.un4seen.com/filez/4/Bass24.Net.zip)
www.un4seen.com/filez/4/Bass24.Net_update.zip (http://www.un4seen.com/filez/4/Bass24.Net_update.zip)
من اینو خودم ساختم فعلا که مشکلی نداره
فقط این که روی یه فایل دیگه که کلیک میکنی باز نمیشه
در صورت فعال کردن
make single instance application
در تنضیمات پروژه
اول پروژه با ادمین لود بشه و تنضیمات اعمال بشه
برای فرم و پروژه یه
icon بذارید
کدها به ترتیب
Module
Class
form
'Form1.Designer
بعد اهنگ رو با openwith و با پروژه باز کنید



Imports Microsoft.Win32
Imports System.Runtime.InteropServices
Imports Un4seen.Bass
Module player
Public fname As String
Public fpach As String
Public fex As String
Public stream As Integer
Public vis As New Un4seen.Bass.Misc.Visuals
Public Sub playfile(ByVal filename As String)
If stream <> 0 Then
Bass.BASS_SampleFree(stream)
Bass.BASS_MusicFree(stream)
End If
stream = Bass.BASS_StreamCreateFile(filename, 0, 0, 0)
Bass.BASS_ChannelPlay(stream, False)
End Sub
Public Sub addfile(ByVal filename As String)
fname = New IO.FileInfo(filename).Name
fex = New IO.FileInfo(filename).Extension
fpach = New IO.FileInfo(filename).FullName
Dim item As New ListViewItem
item.Text = fname
item.SubItems.Add(fex)
item.SubItems.Add(fpach)
Form1.ListView1.Items.Add(item)
End Sub
Public Sub addfileex()
If Form1.Label1.Text > "" Then
Dim item As New ListViewItem
item.Text = IO.Path.GetFileName(Form1.Label1.Text)
item.SubItems.Add(IO.Path.GetExtension(Form1.Label 1.Text))
item.SubItems.Add(IO.Path.GetFullPath(Form1.Label1 .Text))
Form1.ListView1.Items.Add(item)
End If
End Sub
End Module


Namespace FileAssociation
Friend NotInheritable Class FileAssociate
'Notifies the filesystem that a change has been made
<DllImport("Shell32.dll")>
Shared Sub SHChangeNotify(ByVal wEventId As Integer, ByVal uFlags As UInteger, ByVal dwItem1 As IntPtr, ByVal dwItem2 As IntPtr)
End Sub
Private Const SHCNE_ASSOCCHANGED As Integer = &H8000000
Private Const SHCNF_IDLIST As Integer = 0
Private Sub New()
End Sub
Public Shared Sub Associate(ByVal Extension As String, ByVal ProperName As String)
Try
If Extension.StartsWith(".") = False Then
Extension = "." & Extension
End If
Dim FullName As String = System.Reflection.Assembly.GetExecutingAssembly(). Location.ToString()
Dim RegKey As RegistryKey = Registry.ClassesRoot.CreateSubKey(Extension)
RegKey.SetValue("", ProperName)
RegKey.SetValue("Content Type", "Application/" & ProperName)
RegKey.Close()
RegKey = Registry.ClassesRoot.CreateSubKey(ProperName)
RegKey.SetValue("", ProperName)
RegKey.Close()
RegKey = Registry.ClassesRoot.CreateSubKey(ProperName & "\" & "DefaultIcon")
RegKey.SetValue("", FullName & ",0")
RegKey.Close()
RegKey = Registry.ClassesRoot.CreateSubKey(ProperName & "\" & "shell")
RegKey = RegKey.CreateSubKey("open")
RegKey = RegKey.CreateSubKey("command")
RegKey.SetValue("", FullName & " %1")
RegKey.Close()
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero)
Catch ex As Exception

End Try
End Sub
''' <summary>
''' Removes the association with your program
''' </summary>
''' <param name="Extension">The extension your program is associated with</param>
''' <param name="ProperName">The name your program use for filetype, for ex textfile</param>
Public Shared Sub RemoveAssociation(ByVal Extension As String, ByVal ProperName As String)
Try
Registry.ClassesRoot.DeleteSubKeyTree(Extension)
Registry.ClassesRoot.DeleteSubKeyTree(ProperName)
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero)
Catch ex As Exception
Throw ex
End Try
End Sub
''' <summary>
''' Get the filetype of choosen extension
''' </summary>
''' <param name="Extension">The extension you want to know what filetype it is.</param>
''' <returns>Filetype, for ex textfile</returns>
Public Shared Function GetProperName(ByVal Extension As String) As String
Try
If Extension.Length > 0 Then
If Extension.StartsWith(".") = False Then
Extension = "." & Extension
End If
Dim key As RegistryKey
key = Registry.ClassesRoot.OpenSubKey(Extension)
If key IsNot Nothing Then
Return key.GetValue("").ToString()
End If
End If
Return ""
Catch ex As Exception
Throw ex
End Try
End Function
End Class
End Namespace


Imports System.IO
Imports Mp3player.FileAssociation
Imports Un4seen.Bass
Public Class Form1

Public Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
If File.Exists(String.Join(" ", Environment.GetCommandLineArgs(), 1, Environment.GetCommandLineArgs().Length - 1)) Then
Label1.Text = File.Open(String.Join(" ", Environment.GetCommandLineArgs(), 1, Environment.GetCommandLineArgs().Length - 1), FileMode.Open).Name
End If
End Sub
Private Sub Form_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If False = Bass.BASS_Init(-1, 44100, Un4seen.Bass.BASSInit.BASS_DEVICE_LATENCY, Me.Handle) Then
End If
FileAssociate.Associate("mp3", Application.ProductName + " File")
playfile(Label1.Text)
addfileex()
If ListView1.Items.Count > 0 Then
If ListView1.Items(0).Selected = False Then
ListView1.Items(0).Selected = True
Label2.Text = ListView1.Items(0).Text
Label1.Text = ListView1.Items(0).SubItems(2).Text
End If
End If
End Sub

Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
For Each s In OpenFileDialog1.FileNames
addfile(s)
Next
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
playfile(Label1.Text)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
OpenFileDialog1.ShowDialog()
If ListView1.Items.Count > 0 Then
If ListView1.Items(0).Selected = False Then
ListView1.Items(0).Selected = True
Label1.Text = ListView1.Items(0).SubItems(2).Text
Label2.Text = ListView1.Items(0).Text
End If
playfile(Label1.Text)
End If
End Sub
Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
If ListView1.SelectedItems.Count > 0 Then
Dim item As ListViewItem
item = ListView1.SelectedItems(0)
Label1.Text = item.SubItems(2).Text
Label2.Text = item.Text
End If
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
PictureBox1.Image = vis.CreateSpectrumLinePeak(stream, PictureBox1.Width, PictureBox1.Height, Color.Wheat, Color.Gold, Color.OrangeRed, Color.Black, 2, 1, 1, 13, False, True, False)
End Sub
End Class



'Form1.Designer.vb
<Global.Microsoft.VisualBasic.CompilerServices.Desi gnerGenerated()> _
Partial Class Form1
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(Get Type(Form1))
Me.PictureBox1 = New System.Windows.Forms.PictureBox()
Me.Label2 = New System.Windows.Forms.Label()
Me.Timer1 = New System.Windows.Forms.Timer(Me.components)
Me.Label1 = New System.Windows.Forms.Label()
Me.Button2 = New System.Windows.Forms.Button()
Me.OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog()
Me.FileBrowser = New System.Windows.Forms.OpenFileDialog()
Me.ColumnHeader1 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.ColumnHeader2 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.ColumnHeader3 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.Button1 = New System.Windows.Forms.Button()
Me.ListView1 = New System.Windows.Forms.ListView()
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginIni t()
Me.SuspendLayout()
'
'PictureBox1
'
Me.PictureBox1.BackColor = System.Drawing.Color.Black
Me.PictureBox1.Location = New System.Drawing.Point(9, 38)
Me.PictureBox1.Name = "PictureBox1"
Me.PictureBox1.Size = New System.Drawing.Size(166, 52)
Me.PictureBox1.TabIndex = 12
Me.PictureBox1.TabStop = False
'
'Label2
'
Me.Label2.AutoSize = True
Me.Label2.Location = New System.Drawing.Point(6, 287)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(0, 13)
Me.Label2.TabIndex = 11
'
'Timer1
'
Me.Timer1.Enabled = True
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Location = New System.Drawing.Point(6, 316)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(0, 13)
Me.Label1.TabIndex = 10
'
'Button2
'
Me.Button2.Location = New System.Drawing.Point(69, 7)
Me.Button2.Name = "Button2"
Me.Button2.Size = New System.Drawing.Size(54, 25)
Me.Button2.TabIndex = 9
Me.Button2.Text = "Play"
Me.Button2.UseVisualStyleBackColor = True
'
'OpenFileDialog1
'
Me.OpenFileDialog1.Multiselect = True
'
'FileBrowser
'
Me.FileBrowser.Filter = "Executable Files|*.exe|All files|*.*"
'
'ColumnHeader1
'
Me.ColumnHeader1.Width = 284
'
'ColumnHeader2
'
Me.ColumnHeader2.Width = 55
'
'ColumnHeader3
'
Me.ColumnHeader3.Width = 451
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(9, 7)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(54, 25)
Me.Button1.TabIndex = 8
Me.Button1.Text = "open"
Me.Button1.UseVisualStyleBackColor = True
'
'ListView1
'
Me.ListView1.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ColumnHeader1, Me.ColumnHeader2, Me.ColumnHeader3})
Me.ListView1.FullRowSelect = True
Me.ListView1.HideSelection = False
Me.ListView1.Location = New System.Drawing.Point(181, 7)
Me.ListView1.Name = "ListView1"
Me.ListView1.Size = New System.Drawing.Size(653, 274)
Me.ListView1.TabIndex = 7
Me.ListView1.UseCompatibleStateImageBehavior = False
Me.ListView1.View = System.Windows.Forms.View.Details
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(840, 342)
Me.Controls.Add(Me.PictureBox1)
Me.Controls.Add(Me.Label2)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.Button2)
Me.Controls.Add(Me.Button1)
Me.Controls.Add(Me.ListView1)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.Name = "Form1"
Me.Text = "Form1"
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit( )
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox
Friend WithEvents Label2 As System.Windows.Forms.Label
Friend WithEvents Timer1 As System.Windows.Forms.Timer
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents Button2 As System.Windows.Forms.Button
Friend WithEvents OpenFileDialog1 As System.Windows.Forms.OpenFileDialog
Friend WithEvents FileBrowser As System.Windows.Forms.OpenFileDialog
Friend WithEvents ColumnHeader1 As System.Windows.Forms.ColumnHeader
Friend WithEvents ColumnHeader2 As System.Windows.Forms.ColumnHeader
Friend WithEvents ColumnHeader3 As System.Windows.Forms.ColumnHeader
Friend WithEvents Button1 As System.Windows.Forms.Button
Friend WithEvents ListView1 As System.Windows.Forms.ListView
End Class

m2_farzan
چهارشنبه 19 بهمن 1390, 18:47 عصر
سلام
من میخوام مسیر فایل وقتی که open میشه را بدست بیارم مثل همین پلیرها
که وقتی مستقیم روی فایل کلیک میکنی باز میشه و اهنگ رو میخونه

وقتی فایلی با برنامه تون Open With میشه، آدرس اون فایل به عنوان آرگومان به برنامه تون ارسال میشه. شما فقط باید اون آرگومان رو پردازش کنید.

xxnagin
چهارشنبه 19 بهمن 1390, 19:00 عصر
ولی فقط برنامه باز میشه فایل رو که دیگه اجرا نمیشه

Hossis
چهارشنبه 19 بهمن 1390, 20:21 عصر
چرا میشه
شما تو کادر سومی بالا که در روال Form_Load هست, قبل از خط 18 این کد رو بنویسید
label1.text=command.replace(chr(34),"")
بعد این قسمت درست میشه
در باره نسبت دادن یک پسوند به یک فایل خاص, من خیلی کار نکردم

shadi khanum
چهارشنبه 19 بهمن 1390, 22:40 عصر
دوست عزی شما اگه میخوای بتونی با دابل کلیک رو برنامت اونو باز کنی چند تا کار باید انجام بدی (یعنی من خودم واسه پروژه خودم این کار ها رو انجام داد) ..
اول اینکه بالاخره برنامه شما باید یه فایل خروجی حالا به هر فرمتی (xml یا هر چیز دیگه) داشته باشه که اگه مستقیم برنامه رو اجرا کنید و اون فایل رو توش open کنید بتونه فایل رو باز کنه.. دوم اینکه یه پسوند دلخواه واسش در نظر بگیرید و تو نصب برنامه اون Extention رو تو registry تعریف کنید که یعنی فابلهایی که با پسوند مثلا .abc هستند باید با exeای باز شه که در فلان مسیره که این مسیر برنامه exe خودتونه.. حالا تو لود فرم اصلی و اولیه برنامتون چک کن ببین اگه command<> "" بود یعنی برنامه از طریق دابل کلیک رو یه فابل باز شده و تو همین command() مسیر اون فایلی که روش دابل کلیک شده رو بت میده و حالا میتونی این مسیر رو بدب به همون تابعی که تو برنامت داری و برای open کردن فایل های ذخیره شده برنامتونه...
من خودم یه همچین کاری کردم و خوب هم جواب داده.. موفق باشی

xxnagin
پنج شنبه 20 بهمن 1390, 00:07 صبح
یه نمونه کد بذار
اینجا تو dll داره
و تو تنظیمات پروژه هم تو قسمت publish> publish option هم داره

Microsoft.Build.Tasks.v4.0.dll
Microsoft.Build.Tasks.Deployment.ManifestUtilities .FileAssociation

m2_farzan
جمعه 21 بهمن 1390, 12:02 عصر
بذار دقیقا" توضیح بدم:

این کد مربوط به یک برنامه ی کنسول هست:
Module Module1

Sub Main(ByVal args As String())
If args.Length = 0 Then
Console.Write("No file is open")
Else
Console.Write(System.IO.File.ReadAllText(args(0)))
End If
Console.ReadKey()
End Sub

End Module
شما این رو کامپایل کنید و طرز کارش رو ببینید. اگه یه فایل txt زو با این برنامه Open with کنید، محتویات آن فایل نمایش داده میشود.

حالا برای اینکه به ویندوز بگویید که همیشه اون پسوند خاص رو با برنامه شما باز کنه، باید برای برنامه تون یک ستاپ بسازید و داخل ستاپ این مورد را تعیین کنید یا این که با دستکاری رجیستری پسوند مورد نظرتون رو ثبت کنید.

gilsoft
جمعه 21 بهمن 1390, 19:02 عصر
حالا برای اینکه به ویندوز بگویید که همیشه اون پسوند خاص رو با برنامه شما باز کنه، باید برای برنامه تون یک ستاپ بسازید و داخل ستاپ این مورد را تعیین کنید یا این که با دستکاری رجیستری پسوند مورد نظرتون رو ثبت کنید.
سلام دوست عزیز
شما سری به پست 4# همین تاپیک بزنید .. (اون لینک رو تو همین پست دوباره براتون لینک می کنم) اگه اون تاپیک رو مطالعه میکردی .. دقیقا به جواب سوالتون میرسیدید.
لینک پست 4# همین تاپیک : http://barnamenevis.org/showthread.php?326981-%D9%BE%D8%AF%D8%B3%D8%AA-%D8%A7%D9%88%D8%B1%D8%AF%D9%86-%D9%85%D8%B3%DB%8C%D8%B1-%D9%81%D8%A7%DB%8C%D9%84&p=1437706&viewfull=1#post1437706
لینک روش ایجاد پسوند اختصاصی برای فایل : http://barnamenevis.org/showthread.php?326428-%D8%B1%D9%88%D8%B4-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D9%BE%D8%B3%D9%88%D9%86%D8%AF-%D8%A7%D8%AE%D8%AA%D8%B5%D8%A7%D8%B5%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%81%D8%A7%DB%8C%D9%84