PDA

View Full Version : فرمان Shell



m_zi
چهارشنبه 26 دی 1386, 16:13 عصر
با سلام

من در برنامه ام می خواهم فایل دیگری را اجرا نمایم واز دستور shell نیز استفاده می نمایم . ولی هنگام مشخص کردن مسیر فایل نمی خواهم مسیر کامل را بدهم می خواهم نام فولدر و فایل اجرایی را بدهم و خود سیستم تشخصی دهد که برنامه بر روی چه درایوی است چه کار کنم ؟؟؟؟

مثلا :
shell "blue\blue.exe

نمی خواهم بنویسم : shell "c:\blue\blue.exe
چون مشخص نیست کاربر برنامه را بر روی چه درایوی نصب می کند
ممنون میشم اگه کمکم کنید

ƒxmahdi
چهارشنبه 26 دی 1386, 16:44 عصر
اگر برنامه Setup را خودتان ساخته اید می توانید بعد از نصب مسیر نصب را در فایل یا ریجستری ذخیره کنید در غیر این صورت بعد از اولین اجرا مسیر را ذخیره نمایید


ذخیره در ریجستری
SaveSetting "Nameprogram", "save", "path1", App.Path
گرفتن مقدار
str1 = GetSetting("Nameprogram", "save", "path1")

perfeshnal
چهارشنبه 26 دی 1386, 16:55 عصر
سلام دوست عزیز

شما باید به این شکل بنویسید.

q = Shell(App.Path & "\File\Setup.exe", vbNormalFocus)

majjjj
پنج شنبه 27 دی 1386, 14:16 عصر
با سلام

من در برنامه ام می خواهم فایل دیگری را اجرا نمایم واز دستور shell نیز استفاده می نمایم . ولی هنگام مشخص کردن مسیر فایل نمی خواهم مسیر کامل را بدهم می خواهم نام فولدر و فایل اجرایی را بدهم و خود سیستم تشخصی دهد که برنامه بر روی چه درایوی است چه کار کنم ؟؟؟؟

مثلا :
shell "blue\blue.exe

نمی خواهم بنویسم : shell "c:\blue\blue.exe
چون مشخص نیست کاربر برنامه را بر روی چه درایوی نصب می کند
ممنون میشم اگه کمکم کنید

سلام
شما باید با فایند فرست از توابع api ابتدا فایلتون رو پیدا وبا شل اجرا کنید
موفق باشید

اوبالیت به بو
پنج شنبه 27 دی 1386, 22:39 عصر
سلام
شما باید با فایند فرست از توابع api ابتدا فایلتون رو پیدا وبا شل اجرا کنید
موفق باشید
من تابع Api رو نمیدونم خیلی دنباش گشتم ولی وقتی پیداش نکردم دیگه دلسرد شدم و ولش کردم. میشه کدش رو بدین!

ali_habibi1384
جمعه 28 دی 1386, 11:37 صبح
من تابع Api رو نمیدونم خیلی دنباش گشتم ولی وقتی پیداش نکردم دیگه دلسرد شدم و ولش کردم. میشه کدش رو بدین!
سلام
یکی از تاپیکهایی که خودم توی این سایت ایجاد کردم در همین مورد توابع API بود که دقیقا همین کارو می کرد عنوانش هم 100 سورس از توابع api بود. کنکاش کنید حتما نتیجه می گیرید.
موفق باشید

m_zi
چهارشنبه 03 بهمن 1386, 08:05 صبح
سلام
ممنون از جوابتون. ولی لزوما فایل Exe را که می خوام از طریق برنامه ام اجرا کنم در مسیر برنامه ام قرار ندارد .
بذارید خیلی ساده سوالم را بگم . فرض کنید می خواهید در برنامه تان نرم افزار ورد را اجرا کنید و نمی دانید که از قبل این نرم افزار در کدام درایو نصب شده چه جوری می تونم فایل اجرایی را جستجو و بعد با Shell اجرا کنم.
امیدوارم منظورم را رسانده باشم .

مرسی

m_zi
چهارشنبه 03 بهمن 1386, 08:07 صبح
سلام
منم گشتم توابع Apiای که گفتید پیدا کردم ولی این مورد که بتونه فایلی را جستجو کنه نبود .میشه اینجا کدش را بذارید
ممنون

m_zi
چهارشنبه 03 بهمن 1386, 08:10 صبح
سلام
شما باید با فایند فرست از توابع api ابتدا فایلتون رو پیدا وبا شل اجرا کنید
موفق باشید

سلام
تابع فایند فرست را توی توابع api ای که گفتید پیدا نکردم . اگه میشه کدش را اینجا بذارید خیلی نیاز دارم

ممنون

majjjj
چهارشنبه 03 بهمن 1386, 09:46 صبح
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long




Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type

ftmotlagh
چهارشنبه 03 بهمن 1386, 12:51 عصر
این کد api ارور میده ...؟؟؟
تو api- Viewer همین بود...

majjjj
چهارشنبه 03 بهمن 1386, 13:25 عصر
این کد api ارور میده ...؟؟؟
تو api- Viewer همین بود...



Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type


ایا تعاریف بالا رو هم استفاده کردین؟

ftmotlagh
چهارشنبه 03 بهمن 1386, 14:09 عصر
این کد وقتی عمل می کنه ...
وِیژوال بیسیک Don't Send می ده...؟؟؟؟
؟؟

m_zi
شنبه 06 بهمن 1386, 14:22 عصر
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long


ممنون از جوابتون ولی نفهمیدم چه جوری ازش استفاده کنم میشه یک مثال بزنید.

در ضمن WIN32_FIND_DATA را هم نمی شناسد .
منتظرم

ftmotlagh
شنبه 06 بهمن 1386, 14:29 عصر
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type

ABERTINO
شنبه 06 بهمن 1386, 16:16 عصر
ببخشید مگه مسیر برنامتون رو نمی تونید از دستور app.path بدست بیارین پس دعوا سر چیه ؟
برای این دستور فرقی نمی کنه که برنامه شما در کجا نصب شده باشه مسیرش رو میده و بعد هر فلدر یا چیز دیگه ای خواستید می تونین بهش اضافه کنید

ftmotlagh
یک شنبه 07 بهمن 1386, 11:24 صبح
مثل اینکه شما تاپیک رو کامل نخوندید ...
فایل ایشون تو app.path نیست یه جایی تو هارد مثل ورد...