ايران ويج

نسخه‌ی کامل: تغيير مسير اجراي برنامه (حل شد)
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
دوستان راهي براي تغيير مسير برنامه اجرا شده وجود داره
راحت تر بخوام بگم اينكه مثلا وقتي كه من با shell برنامه اي مثل cmd رو اجرا مي كنم مسير پيشفرض cmd برابر با مسير اجراي برنامه منه
حالا من اگر بخوام بعد از اجراي CMD مسير اون برابر باشه با يك مسير دلخواه ديگه ، بايد مسير اجراي برنامه خودم رو تغيير بدم
يعني هر وقت با curdir مسير رو در خواست كردم چيزي باشه كه من مي خوام
اميدوارم منظورم رو واضح بيان كرده باشم
Amaze
ولي من اميدوارم نيستم!
لطفا مثال نزن دقيقا بگو مي خواي چي كار كني؟
سلام
این کد زیر را توی یک فایل Bat بریز و زمان اجرای برنامه بازش کن تا مسیر CMD عوض بشه :
اگر می خواهی مسیرت مثلا به D:\DavoodX\Test تغییر کنه :

D:&cd DavoodX\Test

اگه می خوای فایل Exe را باز کنی آخر همان دستور یه & بزن و فایل exe را اجرا کن . یعنی مثلا اگه بخوای فایل D:\DavoodX\Test\Make.exe را باز کنی باید از کد زیر توی فایل Bat استفاده کنی :

D:&cd DavoodX\Test&Make.exe

موفق باشی
با chdir و chdrive . حواست باشه كه درايو فعال با مسير فعال فرق داره. هر درايوي يه مسير فعال داره. بنابر اين اول بايد درايو فعال رو مشخص كنيد و بعد مسير فعال رو:
کد:
ChDrive "c"
ChDir "c:\windows"
سلام
خوب هستيد شايد كد زير كمك تون كنه workdir محل اي كه برنامه مثلا از اونجا ران شده ( توي تابع SuperShell)
به اميد ديدار
کد:
'This program needs a common dialog box, named CDBox
'  (To add the Common Dialog Box to your tools menu, go to Project->Components (or press CTRL-T)
'   and select Microsoft Common Dialog control)
Const INFINITE = &HFFFF
Const STARTF_USESHOWWINDOW = &H1
Private Enum enSW
    SW_HIDE = 0
    SW_NORMAL = 1
    SW_MAXIMIZE = 3
    SW_MINIMIZE = 6
End Enum
Private Type PROCESS_INFORMATION
    hProcess As Long
    hThread As Long
    dwProcessId As Long
    dwThreadId As Long
End Type
Private Type STARTUPINFO
    cb As Long
    lpReserved As String
    lpDesktop As String
    lpTitle As String
    dwX As Long
    dwY As Long
    dwXSize As Long
    dwYSize As Long
    dwXCountChars As Long
    dwYCountChars As Long
    dwFillAttribute As Long
    dwFlags As Long
    wShowWindow As Integer
    cbReserved2 As Integer
    lpReserved2 As Byte
    hStdInput As Long
    hStdOutput As Long
    hStdError As Long
End Type
Private Type SECURITY_ATTRIBUTES
    nLength As Long
    lpSecurityDescriptor As Long
    bInheritHandle As Long
End Type
Private Enum enPriority_Class
    NORMAL_PRIORITY_CLASS = &H20
    IDLE_PRIORITY_CLASS = &H40
    HIGH_PRIORITY_CLASS = &H80
End Enum
Private Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, lpProcessAttributes As SECURITY_ATTRIBUTES, lpThreadAttributes As SECURITY_ATTRIBUTES, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Function SuperShell(ByVal App As String, ByVal WorkDir As String, dwMilliseconds As Long, ByVal start_size As enSW, ByVal Priority_Class As enPriority_Class) As Boolean
    Dim pclass As Long
    Dim sinfo As STARTUPINFO
    Dim pinfo As PROCESS_INFORMATION
    'Not used, but needed
    Dim sec1 As SECURITY_ATTRIBUTES
    Dim sec2 As SECURITY_ATTRIBUTES
    'Set the structure size
    sec1.nLength = Len(sec1)
    sec2.nLength = Len(sec2)
    sinfo.cb = Len(sinfo)
    'Set the flags
    sinfo.dwFlags = STARTF_USESHOWWINDOW
    'Set the window's startup position
    sinfo.wShowWindow = start_size
    'Set the priority class
    pclass = Priority_Class
    'Start the program
    If CreateProcess(vbNullString, App, sec1, sec2, False, pclass, _
    0&, WorkDir, sinfo, pinfo) Then
        'Wait
        WaitForSingleObject pinfo.hProcess, dwMilliseconds
        SuperShell = True
    Else
        SuperShell = False
    End If
End Function
Private Sub Form_Load()
    'KPD-Team 1998
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    'Set the dialog's title
    CDBox.DialogTitle = "Choose an EXEC-File ..."
    'Error when canceled
    CDBox.CancelError = True
    'Set the dialog's fliter
    CDBox.fliter = "EXEC-Files (*.exe)|*.exe|All files (*.*)|*.*"
    'Show the 'Open File'-dialog
    CDBox.ShowOpen
    'Execute the program
    SuperShell CDBox.filename, Left$(CDBox.filename, Len(CDBox.filename) - Len(CDBox.FileTitle)), 0, SW_NORMAL, HIGH_PRIORITY_CLASS
    End
End Sub
(۱۷-شهریور-۱۳۸۷, ۱۲:۰۴:۴۶)Di Di نوشته است: [ -> ]ولي من اميدوارم نيستم!
لطفا مثال نزن دقيقا بگو مي خواي چي كار كني؟

سلام

دوستان معذرت میخوام ، چرا اینجا همه با هم دعوا دارن ؟؟
خوب بگید متوجه نشدم، واضح تر بگو !!
-------------------------------------------------------
احتیاج به این همه کد نیست
کد:
Call Shell("Cmd /k cd" & " " & Chr(34) & "Your PAth" & Chr(34))
باید به جای Your Path مسیر یا مسر فایل رو بزاری ،
همین !
مثلا واسه رفتن به یه درایو D باید بزنی
کد:
d:\
واسه اجرا گرفتن تو vb بهتره از API استفاده !

یا حق
خدمت DI DI عزيز عرض كنم كه مثالي كه من زدم تقريبا همون چيزي هست كه ميخوام
شما نتيجه ي اين دوتا كد رو باهم مقايسه كني متوجه ميشي
کد:
ChDrive ("d:")
ChDir ("D:\Converters")
Shell "cmd"
کد:
Shell "cmd"
من در اينجا فقط cmd رو براي مثال در نظر گرفتم ، اما اگر فايل ها و برنامه هاي ديگه رو اجرا كنيد متوجه ميشيد كه در حالت عادي اكثرا با مشكل در اجرا مواجه ميشن به همين خاطر بايد مسير اجراي برنامه خودم رو به مسير فايلي كه مي خوام تغيير بدم
بيشتر اين مشكل رو من در game ها ديدم.
راستي علي آقا بابت راهنمايت ممنون Wink
سلام

جناب vz67 میشه یه توضیح کامل تر بدید ؟؟ من خداییش متوجه نشدم ؟؟

ممنون

یا حق
(۱۸-شهریور-۱۳۸۷, ۱۶:۰۱:۵۸)babyy نوشته است: [ -> ]جناب vz67 میشه یه توضیح کامل تر بدید ؟؟ من خداییش متوجه نشدم ؟؟
اين تغيير مسير زماني به درد مي خوره كه شما در اجراي يك برنامه ديگه توسط Shell مشكل داشته باشيد
چند وقت پيش يك برنامه كوچولو داشتم مي نوشتم كه تو يك قسمتش آدرس فايل اجرائي رو ميدادم و اون فايل رو اجرا مي كردم اما 30% برنامه ها با اين روش من با خطا مواجه بودن
به همين دليل بايد مسير برنامه خودم رو برابر مي كردم با مسير برنامه اي كه مي خوام اجرا كنم
فكر مي كنم با اين مثالي كه گزاشتم متوجه اهميت تغيير مسير بشي .