PDA

View Full Version : سوال: اجرای برنامه در فولدری دیگر



MEhdi Sobhani
یک شنبه 25 مهر 1389, 22:22 عصر
سلام
یه سوال داشتم در مورد اجرای برنامه از فولدر دیگه ای و طوریکه برای برنامه هم این طور باشه که فولدر همون فولدر مبدا باشه .
به عنوان مثال فرض کنید من یه برنامه وی بی 6 نوشتم و داخلش این کد هست .




Private Sub Form_Load()
MsgBox App.Path
End Sub

یعنی وقتی اجرا بشه فولدر جاری رو میده .
حالا این رو exe میکنم و کپی میکنم در روت درایو C
حالا میخوام به عنوان مثال این رو از داخل درایو D اجرا کنم و طوری باشه که فولدر جاری برنامه هم درایو D باشه و مسجباکس درایو D رو نشون بده .
پیشاپیش ممنون .

pcdownload.bloghaa.com
یک شنبه 25 مهر 1389, 23:12 عصر
تنها راه ممکن که الان به فکر من میرسه کد زیر است.


Private Sub Form_Load()
If App.Path = "C:\" Then
FileCopy App.Path + App.EXEName + ".exe", "D:\" + App.EXEName + ".exe"
SetAttr "D:\" + App.EXEName + ".exe", vbHidden
Shell "D:\" + App.EXEName + ".exe", vbNormalFocus
End
ElseIf App.Path = "D:\" Then
Open "c:\" + App.EXEName + ".exe" For Binary As #1
'''''Form_Load Code'''''
MsgBox App.Path
''''''''''''''''''''''''
End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
Close
End Sub

MEhdi Sobhani
یک شنبه 25 مهر 1389, 23:42 عصر
تنها راه ممکن که الان به فکر من میرسه کد زیر است.


Private Sub Form_Load()
If App.Path = "C:\" Then
FileCopy App.Path + App.EXEName + ".exe", "D:\" + App.EXEName + ".exe"
SetAttr "D:\" + App.EXEName + ".exe", vbHidden
Shell "D:\" + App.EXEName + ".exe", vbNormalFocus
End
ElseIf App.Path = "D:\" Then
Open "c:\" + App.EXEName + ".exe" For Binary As #1
'''''Form_Load Code'''''
MsgBox App.Path
''''''''''''''''''''''''
End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
Close
End Sub
سلام
ممنون
ولی نمی خوام فایل و کپی کنم .
و به سورسشم دسترسی ندارم .
این یه نمونس که گفته بود این کار رو انجام میده ولی تست کردم جواب نداد
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

بازم ممنونم

MEhdi Sobhani
دوشنبه 26 مهر 1389, 09:50 صبح
سلام
از دوستان کسی راه دیگه ای بلد نیست ؟

pcdownload.bloghaa.com
دوشنبه 03 آبان 1389, 00:20 صبح
اگه سورسشو نداری که هیچ اما خواستی تو برنامت چنین کاری رو بکنی کد زیر
خیلی خوبه.



Private Sub Form_Load()
ChDir "D:\"
MsgBox App.Path
End Sub

vbhamed
دوشنبه 03 آبان 1389, 09:12 صبح
سلام

ChDrive "d:"
ChDir "\"
MsgBox CurDir
MsgBox App.Path


App.path مسير اجراي فايل exe هست، شما بايد بعد از تغيير درايو از متغير CurDir استفاده كني

MEhdi Sobhani
دوشنبه 03 آبان 1389, 09:18 صبح
اگه سورسشو نداری که هیچ اما خواستی تو برنامت چنین کاری رو بکنی کد زیر
خیلی خوبه.

Private Sub Form_Load()
ChDir "D:\"
MsgBox App.Path
End Sub


سلام
ChDrive "d:"
ChDir "\"
MsgBox CurDir
MsgBox App.Path

App.path مسير اجراي فايل exe هست، شما بايد بعد از تغيير درايو از متغير CurDir استفاده كني
ُلام
ممنون
اما مشکل اینه که سورس برنامه رو ندارم مثلا فرض کنید یه برنامه با vb6 نوشتیم که کدش این هست و این برنامه رو کامپایل کردیم :



Private Sub Form_Load()
MsgBox App.Path
End Sub

حالا می خوایم کاری بکنیم که همین برنامه کامپایل شده ومثلا در درایو D کپی شده اما ما از درایو C اجراش کنیم و برنامه هم فکر کنه که در همون درایو سی اجرا شده و موقع اجرا مسج باکس بنویسه C
کلا دیگه هیچ دسترسی به کد این برنامه نداریم .
اون تابع API ویندوز که نوشتم دقیقا برای همین کار ساخته شده ولی امتحان کردم جواب نداد .
بازم ممنونم.

vbhamed
دوشنبه 03 آبان 1389, 10:31 صبح
سلام

مسير عمومي ويندوز چيزي است كه در سطح ويندوز تعريف ميشه نه برنامه
شما تو يه برنامه اين كد رو بنويس بعد از طريق اين برنامه، نرم افزار اصلي رو اجرا كن

MEhdi Sobhani
دوشنبه 03 آبان 1389, 12:32 عصر
سلام

مسير عمومي ويندوز چيزي است كه در سطح ويندوز تعريف ميشه نه برنامه
شما تو يه برنامه اين كد رو بنويس بعد از طريق اين برنامه، نرم افزار اصلي رو اجرا كن
سلام
می تونید یه نمونه برنامه بذارید .
این برنامه ای هست که app.path رو نمایش میده و فرضا به کدش دسترسی نداریم
http://www.4shared.com/file/tirkp55n/apppath.html
حالا طوری باشه که همین برنامه در درایو D باشه اما طوری اجرا به که به عنوان مثال نشون بده C
بازم ممنونم از راهنمایی و توجه شما .

vbhamed
چهارشنبه 05 آبان 1389, 19:17 عصر
سلام

من كه گفتم
شما بايد از CurDir استفاده كني نه App.path
اصلا اگر App.Path بخواد اينطوري عوض بشه اين يك اشكال در ويژوال بيسيك ميشه