ورود

View Full Version : کپی نشدن برنامه و مشکل پسوند



xrezax
شنبه 09 مهر 1390, 23:50 عصر
دوستان من با دستور زیر برناممو کپی می کنم.


"FileCopy App.Path & "\" & App.EXEName & ".exe", "D:\reza.exe


اما اگه پسوند از exe به bat تغییر می دم دیگه کپی نمیشه و میدونم ایراد کار کجاست ( در دستور بالا با قرمز نشون دادم) راهی هست که برنامه پسوندو تشخیص بده ؟؟؟؟

mr-adler
یک شنبه 10 مهر 1390, 00:51 صبح
سلام
منظورتونو متوجه نشدم . یعنی شما میخوای یه فایل با فرمت bat رو کپی کنه نمیشه؟

راهی هست که برنامه پسوندو تشخیص بده ؟؟؟؟
دقیقا یعنی چی؟

xrezax
یک شنبه 10 مهر 1390, 00:55 صبح
یعنی برنامه کار به پسوند نداشته باشه و خودشو کپی کنه ؟؟؟

"FileCopy App.Path & "\" & App.EXEName & ".exe", "D:\reza.exe

با قرمز نشون دادم. اگه این کد رو بزارم توی برنامه و برنامه رو با پسوند .bat سیو کنم این کد کار نمی ده. (واضح گفتم ؟؟)

mr-adler
یک شنبه 10 مهر 1390, 01:13 صبح
یعنی برنامه کار به پسوند نداشته باشه و خودشو کپی کنه ؟؟؟
من تا حالا ندیدم... فکر نکنم امکان پذیر باشه

اگه این کد رو بزارم توی برنامه و برنامه رو با پسوند .bat سیو کنم این کد کار نمی ده.
چطور پروژه ویژوال رو با پسوند bat سیو میکنی؟:متعجب:

xrezax
یک شنبه 10 مهر 1390, 01:24 صبح
خروجی که میگیری بجای .exe بزن .bat

mr-adler
یک شنبه 10 مهر 1390, 11:04 صبح
سلام
روز همگی بخیر و خوشی:قلب:
همون طوری که شما گفتی عمل کردم اره جواب داد . اما من راه پایینو امتحان کردم جواب داد:
یه تکست رو تو دکستاپ با پسوند bat ذخیره کردم بعد کد زیر رو توی یه کامند نوشتم و بعد از کمپایل کردن برنامه تو دکستاپ فایل تکست کپی شد....

FileCopy App.Path & "\" & "iraj" & ".bat", "d:\iraj1.bat"
اگه باز هم مسئله ای هست مطرح کن خوشحال میشم اگه تونستم کمک کنم...:لبخندساده:

xrezax
یک شنبه 10 مهر 1390, 19:24 عصر
اینو بلدم دوست من :لبخندساده: دوست عزیز من می خوام اسمی از پسوند در سورس نوشته نشه و برنامه خودش پسوندو تشخیص بده.

mr-adler
یک شنبه 10 مهر 1390, 19:35 عصر
دوست عزیز من می خوام اسمی از پسوند در سورس نوشته نشه و برنامه خودش پسوندو تشخیص بده. :متفکر:
اگه پسوند نوشته نشه پس ویژوال از کجا میخواد بفهمه برنامه رو باید به چه صورت باز کنه .مثلا نمیشه که یه فایل تکست رو با فرمت pdf باز کنه.پسوند به برنامه نشون میده که یه فایل رو چطوری open کنه.
راستی حالا چه کاریه که پسوند رو ننویسی؟:متفکر:
اما برای فولدر ها نوشتن پسوند لازم نیست .
در این زمینه این تمام اطلاعاتی بود که داشتم .
موفق باشی:چشمک:

MMR_1344
یک شنبه 10 مهر 1390, 22:00 عصر
دوست خوب
بلاخره فایلی که میخواد کژی بشه دارای پسوندی هست میتونی قبل از کژی شدن با دستور Left چهار کاراکتر آخر "یعنی پسوند" رو بخونی و به نام فایلی که میخوای کپی کنی اضافه کنی بعد دستور کپی رو اجراء کنی

xrezax
یک شنبه 10 مهر 1390, 23:04 عصر
میشه سورس بزاری ؟؟؟

xrezax
سه شنبه 12 مهر 1390, 09:33 صبح
دوست خوب
بلاخره فایلی که میخواد کژی بشه دارای پسوندی هست میتونی قبل از کژی شدن با دستور Left چهار کاراکتر آخر "یعنی پسوند" رو بخونی و به نام فایلی که میخوای کپی کنی اضافه کنی بعد دستور کپی رو اجراء کنی
میشه سورس بزاری ؟؟؟

vbhamed
سه شنبه 12 مهر 1390, 09:50 صبح
سلام
دوست عزيز، نميشه كه پسوند نزاري، پسوند يه جورايي مثل نام مي‌مونه
فرض كن شما اسم برنامت Proj1.exe هست كه شما موقع كامپايل مي‌زني proj1.bat
حالا اگر من بيام يك فايل دلخواه با نام proj1.txt يا ... هم تو پوشه برنامه كپي كنم، اونوقت برنامه از كجا بايد بفهمه كدوم فايل رو كپي كنه ؟
چون اينطوري چند تا فايل با نام يكسان داريم كه تنها راه تشخيصشون همون پسوند هست

xrezax
سه شنبه 12 مهر 1390, 10:33 صبح
من 2 صفحه مطلب زدم هنوز کسی منظورمو نفهمیده. جالبه :لبخندساده:

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

اگه exe بود اینجور بشه

"FileCopy App.Path & "\" & App.EXEName & ".exe", "D:\reza.exe

اگه bat بود اینجور بشه

"FileCopy App.Path & "\" & App.EXEName & ".bat", "D:\reza.exe

اگه com بود اینجور بشه

"FileCopy App.Path & "\" & App.EXEName & ".com", "D:\reza.exe

اگه scr بود اینجور بشه

"FileCopy App.Path & "\" & App.EXEName & ".scr", "D:\reza.exe

الی آخرررررررررررررررررر

نوشته قرمز رنگو خودش تشخیص بده.

می خوام اگر exe بدم به کاربر و bat کرد و یا هر پسوندی که exe را اجرا کنه ، برنامم خودشو کپی کنه

vbhamed
سه شنبه 12 مهر 1390, 11:02 صبح
سلام

فكر كنم راه تشخيص اينه كه تو ليست پروسس هاي ويندوز بگردين (ليست كه تو Task Manager ويندوز مياد) و پروسسي همنام برنامتون پيدا كنيد و بعد مسير و نام فايل اجرايي اون پروسس رو پيدا كنيد
براي كار با پروسسها در سايت جستجو كنيد، چندين نمونه وجود داره

xrezax
سه شنبه 12 مهر 1390, 11:47 صبح
می شه سورس بزاری ؟؟؟ ممنونت میشم

just4froum
سه شنبه 12 مهر 1390, 21:19 عصر
با سلام

Private Sub Form_Load()
Dim myFile As String
myFile = Dir(App.Path & "\" & App.EXEName & ".*")
Do While Len(myFile)
List1.AddItem myFile
myFile = Dir$
Loop
End Sub




خوب دیگه برای کپی هم نیازی نیست پسوند بگذارید یعنی به جای
app.exename & ".exe"
همون نامی رو بگذارید که برنامه پیدا می کند یا اگرم می خواهید پسوندشو پیدا کنید کافیست چند حرف آخر تا دات را جدا کنید.



موفق باشید

ali.rezaei7
سه شنبه 12 مهر 1390, 23:48 عصر
سلام. از تابع GetModuleFileName برای بدست آوردن مسیر قرارگیری ماژول های لود شده در پروسه استفاده میشه. این تابع هندل ماژول رو میگیره و آدرس رو بر میگردونه. حالا اگه به جای هندل مقدار صفر رو به تابع بدیم آدرس فایل اجرایی پروسه جاری رو بر می گردونه.

Private Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long
Private Const MAX_PATH = 260

Dim buf As String, filename As String
Dim blen As Long
buf = String(MAX_PATH, " ")
blen = GetModuleFileName(0, buf, MAX_PATH)
filename = Left(buf, blen)