PDA

View Full Version : تشخیص مسیر و نام فولدر انتخاب شده



S_VB.max
جمعه 12 اسفند 1384, 23:10 عصر
چه جوری می توانم در هر کجا از ویندوز وقتی یک فولدر را انتخاب کردم مسیر و نام آن فولدر را بدست بیاورم
اضافه کنم که من نمی خوام از کنترل Common dialog استفاده شود بلکه می خواهم در خارج از برنامه این کار انجام شود
ممنون می شوم اگر جواب دهید

Milad Mohseny
شنبه 13 اسفند 1384, 02:42 صبح
اگر میشود بیشتر توضیح بده چون متوجه نمیشوم میخواهی چه کارکنی .

H_SH_VB
شنبه 13 اسفند 1384, 09:11 صبح
منم متوجه نشدم

S_VB.max
شنبه 13 اسفند 1384, 10:59 صبح
با تشکر از توجه شما

برای اینکه منظورم را بیشتر متوجه شوید این جوری بیان می کنم
من برنامه ام را Minimize می کنم و از درایو مثلا C یک فولدر را انتخاب می کنم حالا می خوام توی برنامه ام مسیر و نام آن فولدر را بدست بیاورم

H_SH_VB
شنبه 13 اسفند 1384, 12:48 عصر
کاشکی می دونستم چون منم دنبالشم
اگه کسی فهمید اینجا بگه

S_VB.max
یک شنبه 14 اسفند 1384, 11:09 صبح
کسی نیست که جواب بده ؟

S_VB.max
دوشنبه 15 اسفند 1384, 12:13 عصر
بابا جواب بدین دیگه ، هیچ کس نیست به فریاد من برسد ؟ :گریه:
من که میدونم بلد هستید پس چرا جواب نمی دیدن ؟

هانی هاشمی
دوشنبه 15 اسفند 1384, 18:09 عصر
با سلام
فکر نمی کنم همچین برنامه ای وجود داشته باشه من که نظیرش رو ندیدم اگر هم باشه با وی بی نیست.

Payman62
دوشنبه 15 اسفند 1384, 18:35 عصر
با سلام
اگر هم باشه با وی بی نیست.
یه ضرب المثل بین برنامه نویسا هست که میگه کار نشد نداره.

هانی هاشمی
دوشنبه 15 اسفند 1384, 19:27 عصر
اگه نشد نداره خب درست کن

Payman62
سه شنبه 16 اسفند 1384, 01:28 صبح
من ضرب المثل رو گفتم که شما وارد عمل شی. گفتم که روحیه بگیری. وگرنه خودم که میدونستم.

هانی هاشمی
پنج شنبه 18 اسفند 1384, 01:09 صبح
سلام چطوری
آقا پیمان دستت درد نکنه روحیه دادی
من یه راه پیدا کردم روش انجام کار من فقط راهش رو میگم برنامه نویسیش با بقیه بچه ها(آخه بلد نیستم)
1.به قسمت TOOLS در بالای صفحه ی MY COMPUTERET بورو وبعد FOOLDER OPTION بعدش View --> بعد DISPLAY THE FULL PATH ... - حالا بالای هر پنجره ای آدرس کاملش رو می نویسه
2.می تونی با تسک منیجر اون رو بخونی

Payman62
پنج شنبه 18 اسفند 1384, 09:41 صبح
روش جالبیه ولی چرا میگی از تسک منجر بخونیم؟ باید هندل پنجره سلکت شدرو بگیریم و مسیر رو بخونیم.

S_VB.max
شنبه 20 اسفند 1384, 15:46 عصر
من هم یک راه پیدا کردم هر چند که می دونم زیاد کارساز نیست
در رجیستری به مسیر زیر بروید و مقدار پیش فرض را برابر cmd.exe قرار دهید
اکنون وقتی روی هر فولدر راست کلیک می کنید یک گزینه به اسم Command اضافه شده است که وقتی روی آن کلیک می کنید مسیر فولدر را در Command prompt می دهد



[HKEY_CLASSES_ROOT\Directory\shell\Command\command]
@="cmd.exe"

Payman62
شنبه 20 اسفند 1384, 17:09 عصر
یعنی چی در command promt میدهد؟

S_VB.max
یک شنبه 21 اسفند 1384, 07:31 صبح
command promt یک برنامه ویندوزی است که اونا می تونی از مسیر
All programs|Accessories پیدا کنی

touraj
یک شنبه 21 اسفند 1384, 08:10 صبح
منم فکر میکنم بهترین راه استفاده از رجیستریه. باید یه متغیر بذاری که مقدار همون کلاسی که S_VB.max گفت رو بگیره

Payman62
یک شنبه 21 اسفند 1384, 12:04 عصر
دوست عزیز دیگه کیه که ندونه داس چیه؟ من میدونم command promt چیه ولی میگم یعنی چی که در command promt نشون میده. مثلا یه صفحه داس باز میشه و فوریم بسته میشه ؟
در ضمن command promt داس شبیه سازی شده در ویندوزه و خودش یه محیط جداست. درسته که در ویندوز اجرا میشه ولی شاید درست نباشه که بگیم برنامه ویندوزیه.

S_VB.max
سه شنبه 23 اسفند 1384, 10:10 صبح
آقا پیمان شما درست می فرمایید

حالا اگر در رجیستری ، مقدار پیش فرض را برابر مسیر برنامه قرار دهیم ، باعث می شود وقتی روی گزینه Command (در منوی راست کلیک فولدر) کلیک کنیم برنامه باز شود و بعد از انجام مراحلی که هانی هاشمی گفت ،برنامه عنوان پنجره فوکوس شده را بخواند
با این کار حداقل مسیر فولدر را می توان بدست آورد

siahacker
سه شنبه 23 اسفند 1384, 13:03 عصر
سلام
من این کار رو می کنم
form1.appilication.path
و آدر کامل رو می گیرم

vbhamed
سه شنبه 23 اسفند 1384, 22:32 عصر
سلام
من سورسی که این کار رو کنه ندارم
اما برنامه ای مثل FileMon این کار رو انجام می ده و هر نوع دسترسی به فایل و شاخه ها را Log می کنه باید دید از چه روشی استفاده میشه اما فکر می کنم از توابع API ویندوز استفاده کنه
دنبال راهی توی API باشید
برنامه ای هم APIMON هم هست که هنگام دسترسی به توابع API می گه کدوم تابع استفاده شده
حالا اگر فرضیات درست باشه پس هنگام اجرای FileMon اگر APIMon رو هم اجرا کنیم میشه فهمید FileMon از کدوم تابع استفاده کرده
البته اینا همه یک حدسه
ولی اگه این راه رو ادامه بدین احتمالا به نتیجه می رسین

Payman62
چهارشنبه 24 اسفند 1384, 02:01 صبح
siahacker اگه منظورت app.path هست آدرس برنامه رو میده نه فولدرهای دیگرو.
S_VB.max من به مسیری که شما گفتی رفتم ولی کلید command نبود مسیری رو که گفتین ایجاد کردم و مقدار دیفالت رو کردم cmd.exe ولی command به راست کلیکم اضافه نشد.
در ضمن چرا command عنوان پنجره فوکوس رو برامون بخونه. خودمون با api ها خیلی راحت میتونیم این کار رو از تو برنامه بکنیم. ولی تغییرات تو فولدر آپشن کارو میپیچونه.
روش vbhamed هم جالبه. این برنامه هارو اگه داری بذار تا روشون کار کنیم شاید api شو پیدا کنیم .

vbhamed
چهارشنبه 24 اسفند 1384, 07:25 صبح
سلام
اینم دو برنامه FileMon و ApiMon
نرم افزارهای بسیار مفیدی هستند مخصوصا برای سر درآوردن از کار برنامه های دیگه

یه دونه دیگه هم هست به نام RegMon که حتما می دونین چیکار میکنه
PortMonitor
VXDMonitor
:لبخند:

S_VB.max
چهارشنبه 24 اسفند 1384, 11:37 صبح
Payman62 عزیز
من مسیر دقیق را نوشتم حتما یه جایی اشتباه کردی


HKEY_CLASSES_ROOT\Directory\shell\MyProgram\comman d

برای کلید Shell ، یک زیر کلید با نام اختیاری بساز تا اینجای کار باید برای راست کلیک فولدر ها یک گزینه با نام MyProgram وجود داشته باشد و بعد برای این کلید هم یک زیر کلید دیگه که باید اسمش حتما Command باشه بساز و مقدار دیفالت را برابر cmd.exe کن
اگر بازم مشکل داشتی بگو تا کد ویبی را برات بذارم

S_VB.max
چهارشنبه 24 اسفند 1384, 11:38 صبح
من یک روش دیگه برای بدست آوردن مسیر فولدر بدست آوردم
اول برنامه را با این دستورات کامپایل کن و بعد در رجیستری همانطوری که قبلا گفتم مسیر برنامه را وارد کن


Private Sub Drive1_Change()
Dir1 = Drive1
End Sub

Private Sub Form_Load()
Text1.Text = Dir1
End Sub
:لبخند:

Payman62
جمعه 18 فروردین 1385, 01:47 صبح
سلام
اینم دو برنامه FileMon و ApiMon
نرم افزارهای بسیار مفیدی هستند مخصوصا برای سر درآوردن از کار برنامه های دیگه

یه دونه دیگه هم هست به نام RegMon که حتما می دونین چیکار میکنه
PortMonitor
VXDMonitor
:لبخند:
میشه در مورد طریقه کار ApiMon توضیح بدی. من چک کردم ولی اطلاعات نامفهوم به جای API داد.

S_VB.max روشت جواب داد. صفحه داس باز شد و آدرس فولدر توش بود. ولی چه طور میخوای از این تو برنامه استفاده کنی؟

S_VB.max
جمعه 18 فروردین 1385, 11:48 صبح
با صفحه داس فکر نکنم بشه کاری کرد ولی با کنترلهای Dir1 و Drive1 حداقل میشه مسیر فولدر را بدست آورد .
بابت اسم فولدر هنوز جوابی پیدا نکردم.

Payman62
جمعه 18 فروردین 1385, 14:33 عصر
مشکل کار با ApiMon حل شد.
DirListBox و DriveListBox فقط تو خود برنامه کاربرد دارن. شما که نمیتونی ازشون تو خارج محیط برنامه استفاده کنی.

S_VB.max
جمعه 18 فروردین 1385, 19:11 عصر
اگر برنامه را با دستورات زیر کامپایل کنی و بعد در رجیستری مقدار دیفالت Command را برابر مسیر برنامه قرار بدی ، وقتی روی راست کلیک فولدر ، کلیک می کنی مسیر فولدر در TextBox نشان داده می شود .



Private Sub Drive1_Change()
Dir1 = Drive1
End Sub

Private Sub Form_Load()
Text1.Text = Dir1
End Sub


البته اگر دقت کنی اینا در بالا گفته بودم .

hamid2002ir
چهارشنبه 23 فروردین 1385, 09:25 صبح
ابتدا داخل مای کامپیوترت بشو بعد در منوی تولز فولدر آپشن را بنزن
بعد توی File Type
فولدر را انتخاب کن بعد رووی advance کلیک کن
بعدش روی new بزن در قسمت اکشن یک اسم بده و در قسمت پایین مسیر برنامه که کامپایل کردی را وارد کن بعد روی هر فولدری که راست کلیک کنی اون کلمه ای که تو اکشن نوشتی ظاهر می شه بعدش با کلیک کردنت روی اون اگر برنامه بسته باشه باز می شه و مسیر را انتقال می ده به تکست باکست اگر هم برنامه باز باشه بازم همین کار رو می کنه

اگر سئوالی بود در خدمتم

Payman62
چهارشنبه 23 فروردین 1385, 10:10 صبح
ابتدا داخل مای کامپیوترت بشو بعد در منوی تولز فولدر آپشن را بنزن
بعد توی File Type
فولدر را انتخاب کن بعد رووی advance کلیک کن
بعدش روی new بزن در قسمت اکشن یک اسم بده و در قسمت پایین مسیر برنامه که کامپایل کردی را وارد کن بعد روی هر فولدری که راست کلیک کنی اون کلمه ای که تو اکشن نوشتی ظاهر می شه بعدش با کلیک کردنت روی اون اگر برنامه بسته باشه باز می شه و مسیر را انتقال می ده به تکست باکست اگر هم برنامه باز باشه بازم همین کار رو می کنه

اگر سئوالی بود در خدمتم
خوب گیر ما سر همین ایجاد تغییر در فولدر آپشنه دیگه. وگرنه راهی که هانی پیشنهاد کرده بود که خیلی ساده تره. کافیه هندل پنجره دارای فوکوس رو بگیریم و کپشنش رو بخونیم.

سلام چطوری
آقا پیمان دستت درد نکنه روحیه دادی
من یه راه پیدا کردم روش انجام کار من فقط راهش رو میگم برنامه نویسیش با بقیه بچه ها(آخه بلد نیستم)
1.به قسمت TOOLS در بالای صفحه ی MY COMPUTERET بورو وبعد FOOLDER OPTION بعدش View --> بعد DISPLAY THE FULL PATH ... - حالا بالای هر پنجره ای آدرس کاملش رو می نویسه
2.می تونی با تسک منیجر اون رو بخونی

hamid2002ir
چهارشنبه 23 فروردین 1385, 12:12 عصر
HKEY_CLASSES_ROOT\Directory\shell\Open With our Program\command
در مسیر بالا تو ریجستری کلید زیر را وارد کن عزیز جان نوشتی ای که حالت بولد داره نام اکشن شماست
"C:\Documents and Settings\Vatan\My Documents\Project1.exe" %1
مسیر بالا هم مسیر برنامه ات است

S_VB.max
چهارشنبه 23 فروردین 1385, 12:30 عصر
آقا حمید دستت درد نکنه ، خیلی ممنون :تشویق:

hamid2002ir
چهارشنبه 23 فروردین 1385, 13:53 عصر
قابلی نداشت

Payman62
چهارشنبه 23 فروردین 1385, 17:25 عصر
Payman62 عزیز
من مسیر دقیق را نوشتم حتما یه جایی اشتباه کردی


HKEY_CLASSES_ROOT\Directory\shell\MyProgram\comman d

برای کلید Shell ، یک زیر کلید با نام اختیاری بساز تا اینجای کار باید برای راست کلیک فولدر ها یک گزینه با نام MyProgram وجود داشته باشد و بعد برای این کلید هم یک زیر کلید دیگه که باید اسمش حتما Command باشه بساز و مقدار دیفالت را برابر cmd.exe کن
اگر بازم مشکل داشتی بگو تا کد ویبی را برات بذارم
این جا چه خبره. hamid2002ir این روشو که S_VB.max گفته بود. S_VB.max شما خودت این روشو پیشنهاد کردی و حالا که حمید پستتو تکرار کرده براش دست میزنیو تشکر میکنی؟ مگه برات تازگی داشت؟

S_VB.max
چهارشنبه 23 فروردین 1385, 17:49 عصر
در روش من تنها مسیر فولدر بدست می آمد در صورتی که در روش hamid2002ir می تونی علاوه بر مسیر فولدر ،نام فولدر را هم بدست بیاوری

S_VB.max
چهارشنبه 23 فروردین 1385, 19:50 عصر
شما اصلا نیاز نیست به folderoption کاری داشته باشید تنها در رجیستری مسیر برنامه را به همان صورتی که hamid2002ir گفت وارد کنید، در این روش در تکس باکس علاوه بر مسبر فولدر ، نام فولدر با هم داده می شود. مثلا بصورت: E:\WINDOWS\system32
برای جدا کردن این دو از هم از دستورات زیر استفاده کنید:



Dim path, NameFolder As String
Dim i As Integer
Private Sub Form_Load()
Text1.Text = Command

For i = 0 To Len(Text1.Text)
NameFolder = Right(Text1.Text, i)
If Left(NameFolder, 1) = "\" Then
NameFolder = Right(Text1.Text, i - 1)
path = Left(Text1.Text, Len(Text1.Text) - i)
Exit For
End If
Next

MsgBox "name folder is =" & NameFolder & vbCrLf & " path folder is =" & path


End Sub

hamid2002ir
چهارشنبه 23 فروردین 1385, 21:38 عصر
من متوجه نمی شم اینجا چه خبره!

Payman62
چهارشنبه 23 فروردین 1385, 22:00 عصر
یعنی همه گیر سر یه 1% بود. جالبه. ولی من فکر میکردم شما میخوای کاربر وارد هر فولدری بشه مسیرش رو به دست بیاری. نه به این صورت که رایت کلیک کنه و یه گزینه انتخاب کنه. بلکه همین که وارد یه فولدر شد مسیرش به دست بیاد.
حالا که مشکل S_VB.max حل شد. ولی من دلم میخواد با این روشم که گفتم نام فولدر رو به دست بیارم. یعنی وارد فولدر که شدی بدون هیچ کلیکی آدرس فولدر گیر بیاد.

S_VB.max
دوشنبه 28 فروردین 1385, 19:43 عصر
payman62 من هنوز نتونستم جوابی برای سئوال شما پیدا کنم ، اگه کسی از دوستان میدونه اینجا بگه
چه جوری می تونم کنار گزینه راست کلیک فولدرها یک آیکون بگذارم ؟

Payman62
دوشنبه 28 فروردین 1385, 21:49 عصر
رضا سوتی شما رو دوباره یاد این تاپیک انداخت.
با این روش که ما رو رجیستری کار کردیم بعیده که بشه آیکونم گذاشت. باید با برنامه نویسی این کارو کرد.

S_VB.max
سه شنبه 29 فروردین 1385, 07:23 صبح
اینطور که شما میگید نیست. رضا سوتی هم اگر نمی گفت من خودم این تاپیک را فعال می کردم. چون خیلی دنبالشم که بدونم که چجوری میشه اینکار را کرد.
شما برنامه winrar در نظر بگیرید، می دونم که آیکون منوی راست کلیکش توی فایل dll گذاشته، حتما یه جایی تو رجیستری اونو ثبت می کنه.