PDA

View Full Version : دریافت اطلاعات یک فایل و ارسال ان به برنامه با راست کلیک روی فایل



rezapassword
شنبه 06 شهریور 1389, 12:58 عصر
سلام علیک
ببخشید دارم هی مزاحم میشم ها
یه فکر هایی دارم
میخوام با کلیک راست بر روی یک فایل با فرمت قابل اجرا مثل اگزه یک گزینه به اسم برنامه وجود داشته باشه که با کلیک بر روی اون اسم فایل + ادرس کامل اون + یک ایکون از روی ایکون اون به برنامه ارسال بشه تا برنامه بتونه از اونا در جا های خاص استفاده کنه ؟
امکان داره ؟
میشه یه نمومنه برنامه این طوری برام بزارید ؟
خیلی ممنون میشم!

nasim bahari
شنبه 06 شهریور 1389, 14:30 عصر
سلام..دوست عزیز

یه نمون برنامه می زارم ...... که اطلاعات بسیار جالبی رو از یه فایل Exe به شما میده....

موفق باشین

Saman_12
شنبه 06 شهریور 1389, 15:00 عصر
سلام.
می بخشین توی این تایپیک این سوال رو مطرح می کنم.
آیا راهی هست که اطلاعات کاملی مثل نام شر کت سازنده , ورژن و .....(و اینگونه اطلاعات) رو از یه فایل بدست آورد.(من با پروسس می تونم این کا رو بکنم با فایل نه!)
با تشکر.

Artisoft
شنبه 06 شهریور 1389, 17:32 عصر
سلام آره می شه تمام اطلاعاتی رو که با راست کلیک روی برنامه از dialoge ویندوز مشاهده می کنی با VB بدست بیاری. روی منوی Help کلیک کن و samples رو بزن و اونارو ببین. توش بروژه های جالبی واسه Filesystem هست که به دردت می خوره.

rezapassword
یک شنبه 07 شهریور 1389, 19:12 عصر
میشه یه نمونه کامل از برنامه ایی که این کارو بکنه برام بزارید
خیلی حیاتی و فوری لازم دارم

Saman_12
دوشنبه 08 شهریور 1389, 08:37 صبح
نمونه نمی خواد که.! من خودم توی کد های دات نت افتادم فهمیدم چجوریه خیلی کوتاه و کار آمد تقریبا تمام اطلاعات (یه چند تایی رو از قلم می ندازه که خودت می تونی اظافه کنی.) :

MsgBox(FileVersionInfo.GetVersionInfo("Your Path").ToString)
هر چی دوست داشتی مثل کمپانی سازندش و .... رو هم می تونی اظافه کنی.

rezapassword
دوشنبه 08 شهریور 1389, 08:46 صبح
بیشتر مشکل من روی گرفتن ایکون برنامه و سند اون به برنامه خودم هست

Saman_12
دوشنبه 08 شهریور 1389, 09:55 صبح
برای گرفتن آیکون می تونی از API ی SHGetFileInfo توی Shell32.dll استفاده کنی.
خواستی بگو یه نمونه کد برات بزارم.

rezapassword
دوشنبه 08 شهریور 1389, 12:14 عصر
ممنون میشم اگه این کارو کنید

Saman_12
دوشنبه 08 شهریور 1389, 12:30 عصر
خوب اول این Structure زیر کلاست تعریف کن :


Private Structure SHFILEINFO
Public hIcon As IntPtr
Public iIcon As Integer
Public dwAttributes As Integer
Public szDisplayName As String
Public szTypeName As String
End Structure

بعد هم خود API رو :


Private Declare Ansi Function SHGetFileInfo Lib "shell32.dll" (ByVal pszPath As String, ByVal dwFileAttributes As Integer, _
ByRef psfi As SHFILEINFO, ByVal cbFileInfo As Integer, ByVal uFlags As Integer) As IntPtr

حالا این ها هم زیر API :


Private Const SHGFI_ICON = &H100
Private Const SHGFI_SMALLICON = &H1
Private Const SHGFI_LARGEICON = &H0

طریقه استفادش هم این جوریه :


Dim Shinfo As SHFILEINFO = New SHFILEINFO

SHGetFileInfo("C:\Saman_12.exe", 0, Shinfo, Marshal.SizeOf(Shinfo), SHGFI_ICON Or SHGFI_SMALLICON Or SHGFI_LARGEICON)

Dim Icon As System.Drawing.Icon
Icon = System.Drawing.Icon.FromHandle(Shinfo.hIcon)

خوب این یک آیکون ازبرنامه مورد نظر که اینجا همون Saman_12 موجود توی درایو C هستش رو به هت میده برای این که بتونی توی پیکچر باکس نشونش بدی از خاصیت ToBitmap خود Icon استفاده کن.

rezapassword
سه شنبه 09 شهریور 1389, 08:32 صبح
سلام
ظاهرا که marshal تعریف نشده در کد و vb به این ایراد میگیره

Saman_12
سه شنبه 09 شهریور 1389, 09:34 صبح
می بخشین من یادم رفت که قبلش باید فضای نام System.Runtime.InteropServices رو Imports کرد.

mahdi1373
سه شنبه 09 شهریور 1389, 13:58 عصر
ببخشید،
اون قسمت اول چی شد؟
یغنی اینکه وقتی روی هر فایل exe کلیک راست می کنی، نام برنامه ات بیاد توی اون لیست؟

rezapassword
سه شنبه 09 شهریور 1389, 23:33 عصر
اگه مخاطبتون منم
بله