ورود

View Full Version : تابع shell



MohammadGh2011
پنج شنبه 05 خرداد 1390, 12:34 عصر
من ميخوام با دستور شل تو يه كامند بنويسم كه فايل pmgh.exe رو باز كنه و اين فايل من تو يكي از درايو ها است.
ميخوام خودش بگرده پيدا كنه.
يعني وقتي من رو كامند كليك ميكنم بدون اين كه ما بهش دستور داده باشيم كه تو درايو F هست اون رو باز كنه.
ممنون.

Mr'Jamshidy
پنج شنبه 05 خرداد 1390, 12:51 عصر
خوب شما با این تابع فقط میتونی اجرا کنی نمیتونی جستجو کنی

اگر فایل مورد نظرت توی روت درایو هست که خوب با این کد میتونی تو هر درایوی بود اجراش کنید اما اگر تو زیر شاخه باشه که باید یک کد بنویسی برای جستجو

On Error Resume Next
For i = Asc("A") To Asc("Z")
If Not Trim(Dir(Chr(i) & ":\pmgh.exe")) = "" Then
Shell Chr(i) & ":\pmgh.exe"
Exit Sub
End If
Next
MsgBox "Sorry, File not FOUND!", vbCritical

MohammadGh2011
پنج شنبه 05 خرداد 1390, 13:19 عصر
سلام من براي مثال فايلم رو ريختم تو دايو :d
ولي نفهميدم چرا ارور ميده
70373
بازم ممنونم

Mr'Jamshidy
پنج شنبه 05 خرداد 1390, 13:51 عصر
راستیاتش من همین الان تست کردم 100% درست کار میکرد اما شما برای امتحان Asc("A") رو به Asc("C") تغییر بده و نتیجه رو خبر بده تا اگر درست کار کرد بگم ایراد از چیه

MohammadGh2011
پنج شنبه 05 خرداد 1390, 15:15 عصر
بله جناب Mr'Jamshidy (http://barnamenevis.org/member.php?43330-Mr-Jamshidy) من تغيير دادم درست كار كرد.
ولي من نميخوام كه مستقيم فايلم تو درايو باشه.مثلا من pmgh.exe رو تو همون درايو داخل يه پوشه ريختم همون ارور قبلي رو داد و كار نكرد.:ناراحت:
حالا: چگونه ميشه كه مستقيم تو درايو نباشه و تو چند تا پوشه تو اون درايو باشه و اجرا شه؟
ممنونم ازت

Mr'Jamshidy
پنج شنبه 05 خرداد 1390, 15:40 عصر
اگر پوشه ای که میریزی مشخص باشه که خوب مشکلی نداری اما اگر مشخص نباشه کارت سخت میشه

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

اگر پ.شه مشخص نباشه باید کل دایرکتوری رو جستجو کنی

یعنی یا از API استفاده کنی یا از کد های یکم پیچ در پیچ استفاده کنی

محسن واژدی
پنج شنبه 05 خرداد 1390, 16:09 عصر
سلام علیکم
در واقع این کد یک جستجوگر است که محتویات درایو را جستجو میکند و در صورت یافتن فایل مورد نظرمان انرا در لیست باکس اضافه میکند که میتوانید با ویرایش از آن به عنوان یک اجرا کننده فایل استفاده کنین،
البته یک موتور جستجو گر ساده است اما میتوانید با تغییراتی آنرا بهینه تر کنید

موفق باشید

MohammadGh2011
پنج شنبه 05 خرداد 1390, 17:20 عصر
سلام آقاي mohsenvj (http://barnamenevis.org/member.php?104729-mohsenvj) ممنونم از اين فايلي كه ضميمه كردين.
شايد يه كم كار باهاش مشكل باشه. همون طور كه جناب Mr'Jamshidy (http://barnamenevis.org/member.php?43330-Mr-Jamshidy) اون كدي رو در بالا نوشتن

On Error Resume NextFor i = Asc("‍‍C") To Asc("Z")If Not Trim(Dir(Chr(i) & ":\pmgh.exe")) = "" ThenShell Chr(i) & ":\pmgh.exe"Exit SubEnd IfNextMsgBox "Sorry, File not FOUND!", vbCritical
رو نميشه كاري كرد كه داخل پوشه ها رو هم جستوجو كنه؟
به پست 5# يه نگاهي دوستان بندازن.
من ميخوام كه كل درايو هارو جستوجو كنه و بعد اون فايل pmgh.exe كه هر جا پيداش كرد رو برام باز كنه.
اگه دوستان عزيز تونستين ممنون ميشم راهنماييم كنين.

محسن واژدی
پنج شنبه 05 خرداد 1390, 21:13 عصر
سلام علیکم
اگه فایلتون در اول درایو قرار دارد کد آقای جمشیدی بسیار مناسب این کار است اما از اونجایی که فرمودین فایل در هرجای هارد دیسک باشد، برای اینکار نیازمند جستجو گر هستید که یک نمونه ساده اش را در پست قبل 7 گذاشته ام
البته دستورالعمل های خیلی آسانی دارد که در نمونه پست 7 وجود دارد

موفق باشید

MohammadGh2011
پنج شنبه 05 خرداد 1390, 21:40 عصر
بله دوستان ممنونم ازتون

Mr'Jamshidy
پنج شنبه 05 خرداد 1390, 22:54 عصر
اما اینجا جا داره که یک نکته رو یاد آور بشم

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

جستجو

Private Declare Function SearchTreeForFile Lib "imagehlp" (ByVal RootPath As String, ByVal InputPathName As String, ByVal OutputPathBuffer As String) As Long
Private Const MAX_PATH = 260
Private Sub Form_Load()
'KPD-Team 2000
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim tempStr As String, Ret As Long
'create a buffer string
tempStr = String(MAX_PATH, 0)
'returns 1 when successfull, 0 when failed
Ret = SearchTreeForFile("c:\", "myfile.ext", tempStr)
If Ret <> 0 Then
MsgBox "Located file at " + Left$(tempStr, InStr(1, tempStr, Chr$(0)) - 1)
Else
MsgBox "File not found!"
End If
End Sub
موفق باشید