برای باز کردن یک فایل exe از کد
Shell "explorer E:\G\ghoran\ghoran.exe", vbNormalFocus
استفاده می کنم و جواب هم میده اما بعضی از فایلها رو نمی تونه باز کنه
آیا این کد رو بهتر از این یا به نوع دیگه میشه نوشت
برای باز کردن یک فایل exe از کد
Shell "explorer E:\G\ghoran\ghoran.exe", vbNormalFocus
استفاده می کنم و جواب هم میده اما بعضی از فایلها رو نمی تونه باز کنه
آیا این کد رو بهتر از این یا به نوع دیگه میشه نوشت
آخرین ویرایش به وسیله علیرضا5 : چهارشنبه 31 تیر 1394 در 17:42 عصر
فایل رو کپی کن محلی که برنامه اجرا میشه و از دستور App.path استفاده بکن شاید را بیفته
متاسفانه فرقی نکرد
دوستان دستور باز کردن یک فایل exe بجز shell چیه ؟
سلام
باید مشکل کار رو پیدا کنید، اگر با این نشه با روشی دیگه هم احتمال زیاد نمیشه
اگر من و شما هر كدوم يك چيز ياد داشته باشيم و به هم ياد بديم، حالا هر كدوم دو تا چيز ياد داريم !http://www.ArminaCo.com
سلام
شاید با این کار مشکلتون حل بشه
Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Const SW_HIDE = 0
Private Const SW_MAXIMIZE = 3 'State
Private Const SW_MINIMIZE = 6
Private Const SW_RESTORE = 9
Private Const SW_SHOW = 5
Private Const SW_SHOWDEFAULT = 10
Private Const SW_SHOWMAXIMIZED = 3
Private Const SW_SHOWMINIMIZED = 2
Private Const SW_SHOWMINNOACTIVE = 7
Private Const SW_SHOWNA = 8
Private Const SW_SHOWNOACTIVATE = 4
Private Const SW_SHOWNORMAL = 1
Private Const ERROR_FILE_NOT_FOUND = 2&
Private Const ERROR_PATH_NOT_FOUND = 3&
Private Const ERROR_BAD_FORMAT = 11&
Private Const SE_ERR_ACCESSDENIED = 5 ' access denied
Private Const SE_ERR_ASSOCINCOMPLETE = 27
Private Const SE_ERR_DDEBUSY = 30
Private Const SE_ERR_DDEFAIL = 29
Private Const SE_ERR_DDETIMEOUT = 28
Private Const SE_ERR_DLLNOTFOUND = 32
Private Const SE_ERR_NOASSOC = 31
Private Const SE_ERR_OOM = 8 ' out of memory
Private Const SE_ERR_SHARE = 26
Private Const STYLE_NORMAL = 11
Public Sub cmdExecute(ByVal File As String)
Dim result As Long
result = ShellExecute(Print_FRM.hWnd, "open", File, "", "", SW_SHOWMAXIMIZED)
End Sub
دوست عزیر از کدی که نوشتی ممنونم ولی سر در نیاوردم اگه ممکنه به صورت سورس بگذارش
حامد جان شما درست میگی کد shell همه فایلهای exe رو باز میکنه مشکل من با یک بازی به نام gta_sa.exe هست و ویندوزم هم ویندوز8 شاید مشکل از ویندوزم باشه به هر حال باید تنظیماتی داشته باشهباید مشکل کار رو پیدا کنید، اگر با این نشه با روشی دیگه هم احتمال زیاد نمیشه
تو خود ویندوز این برنامه اجرا میشود اصلا؟!
بله اجرا میشه
با کد زیر امتحان کنید. که برای مثال یه فایل پی دی اف رو باز میکنه.
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Function ShellX(PathName, Optional WindowStyle As VbAppWinStyle = vbNormalFocus, Optional sParameters$ = vbNullString) As Long
ShellX = ShellExecute(0, "open", PathName, sParameters$, App.Path, WindowStyle)
End Function
Private Sub Command1_Click()
ShellX App.Path & "\Help.pdf", vbMaximizedFocus
End Sub
متاسفانه نشد
جالب اینه که بعد از اجرای برنامه فایل مورد نظرم در قسمت task manajer هم اجرا شده نشون میده ولی اجرا نمیشه
فایل موردنظری که میخوای اجرابشه رو درصورت امکان قرار بدید بررسی شود.
آخرین ویرایش به وسیله vbhamed : شنبه 03 مرداد 1394 در 07:32 صبح
از اونجایی که میگین تو تسک منیجر نشون میده من احتمال میدم به فوکوس ربط داشته باشه شما یبار vbnormalfocus رو حذف کنید و امتحان کنین.
موفق باشید
سلام
1 - :
داخل عبارتی که جلوی Shell مینویسید Explorer رو نزارید چون خود فایل Exe رو دارید اجرا میکنید
2 - :
روش زیر رو امتحان کنید فقط قبلش از منوی Project گزینه References و سپس آیتم Microsoft Scripting Runtime رو تیک بزنید
Dim fn$, fso As New FileSystemObject, x As Drive
fn = "E:\G\ghoran\ghoran.exe"
ChDrive fso.GetDriveName(fn)
ChDir fso.GetParentFolderName(fn)
Shell fn, vbNormalFocus
دلیل این مشکل هم اینه که بعضی از برنامه ها موقع اجرا نیاز به فایلهایی دارند که اونها رو از مسیر جاری سیستم میخونن (در VB6 مسیر جاری با App.Path بدست میاد) ولی وقتی شما با برنامه دیگه ای قراره اون برنامه رو فراخوانی کنید ممکنه مسیر جاری سیستم مسیر همون برنامه نباشه مثلا شما قصد دارید از درون یک فایل exe که در درایو d قرار داره، فایل exe ای که در درایو e قرار داره رو اجرا کنید، در اینجا مسیر جاری \:D هست نه \:E و اگر فرضا برنامهای که در درایو E قرار داره و باید اجرا بشه، با VB6 نوشته شده باشه اونموقع App.Path مسیر \:D رو برمیگردونه نه \:E
اگر دقت کنید Shortcut هایی که ویندوز برای برنامه ها میزاره هم گزینه ای تحت عنوان Start in داره، روی icon یک فایل exe روی دسکتاپ کلیک راست کنید و سپس گزینه Properties رو بزنید تا این گزینه رو ببینید، اونهم کارش اینه که ابتدا مسیر جاری سیستم رو به مسیر اون برنامه تغییر میده و بعد برنامه رو اجرا میکنه
آخرین ویرایش به وسیله vbhamed : چهارشنبه 14 مرداد 1394 در 06:58 صبح
اگر من و شما هر كدوم يك چيز ياد داشته باشيم و به هم ياد بديم، حالا هر كدوم دو تا چيز ياد داريم !http://www.ArminaCo.com