-
بدست آوردن مسیر جاری پنجره ها
با سلام
با عرض خسته نباشید به دوستان عزیزم.
بنده با استفاده از چند سورس کد این کار رو انجام میدهم که هرکدام مشکل خاص خود را دارند.
مثلا با بدست آوردن کپشن فرم های ویندوز
یا بدست آوردن آدرسبار فرمهای ویندوز.
این کدها مشکلات خاص خود رو دارند.
حالا می خاستم از دوستان سوال کنم آیا راه بهتری وجود دارد که مسیری که کاربر در آن قرار دارد را بتوان در یک استرینگ ریخت.
با تشکر.
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
شاید این بتونه کمک کنه
توابع undocument ویندوز در مورد shell name spacing extention
http://www.shellplus.com/examples/na...n-example.html
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
نقل قول:
بدست آوردن مسیر جاری پنجره ها
پنجره ها مسیر جاری ندارند. سیستم عامل ویندوز یک مسیر جاری داره. سوال را درست و دقیق بپرسید. اگر میخواید آدرس فایل EXE یک برنامه را به دست بیارید، این اسمش آدرس پنجره ها نیست، بلکه اسمش آدرس Image یک Process هست که با استفاده از توابع API قابل استخراج هست. در سورس ProcessInfo هم چگونگی استخراج آن را نمایش دادم.
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
فکر میکنم ایشون میخوان آدرسی رو که الان کاربر داره تو Windows Explorer کنکاش میکنه به دست بیارند ، مثلا اگر کاربر در درایو D هست و داره تو شاخه ای کار میکنه به صورت زیر آدرس رو پیدا کنن :
D:\Project\Sample
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
پنجره ها عضوی از برنامه هستند دیگه . این عمل رو من قبلاً در نرم افزار Process Explorer دیدم . که با انتخاب پنجره ی خاص هندل اون رو میگیره و ضمن دسترسی به اسم پروسه ، مسیر فایل اجرایی رو هم استخراج میکنه .
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
نقل قول:
نوشته شده توسط
.M8SPY.
پنجره ها عضوی از برنامه هستند دیگه . این عمل رو من قبلاً در نرم افزار Process Explorer دیدم . که با انتخاب پنجره ی خاص هندل اون رو میگیره و ضمن دسترسی به اسم پروسه ، مسیر فایل اجرایی رو هم استخراج میکنه .
خوب این جا هم بحث گرفتن آدرس جاری هست که در Windows Explorer هست ، وگرنه هر کسی میدونه Windows Explorer تو کدوم شاخه از درایو ویندوز قرار داره و نیازی به بهدست آوردنش نیست !
منظور آدرس فایل اجرایی پروسه نیست ، منظور آدرسی هست که الان ما توش قرار داریم ( متنی که تو Address Bar هست ) ، که ایشون میخوان از روشی به جز گرفتن این متن استفاده کنن ...
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
نقل قول:
نوشته شده توسط
SilverSoft
خوب این جا هم بحث گرفتن آدرس جاری هست که در Windows Explorer هست ، وگرنه هر کسی میدونه Windows Explorer تو کدوم شاخه از درایو ویندوز قرار داره و نیازی به بهدست آوردنش نیست !
منظور آدرس فایل اجرایی پروسه نیست ، منظور آدرسی هست که الان ما توش قرار داریم ( متنی که تو Address Bar هست ) ، که ایشون میخوان از روشی به جز گرفتن این متن استفاده کنن ...
ممنون.
سوال بنده هم همینه.
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
نقل قول:
نوشته شده توسط
cayberfox
ممنون دوست من.
اما این لینکی که قرار دادید .محتوی نداره.
با تشکر.
-
1 ضمیمه
نقل قول: بدست آوردن مسیر جاری پنجره ها
نقل قول:
نوشته شده توسط
Delphi-7
ممنون دوست من.
اما این لینکی که قرار دادید .محتوی نداره.
با تشکر.
این سورس مشکل شما رو حل میکنه
البته من با Win Xp تست زدم و درست بود
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
نقل قول:
نوشته شده توسط
alireza v.f
این سورس مشکل شما رو حل میکنه
البته من با Win Xp تست زدم و درست بود
ممنون دوست من.
این کد و کد بدست آوردن کپشن رو دارم.
اما نمیخام با استفاده از این گزینه ها مسیر رو بدست بیارم چون کافیه تو قسمت Folder Option تغییری اعمال بشه که دیگه مسیر در آدرسبار به طور کامل نشون داده نمیشه.
بازم ممنونم.
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
نقل قول:
چون کافیه تو قسمت Folder Option تغییری اعمال بشه...
خوب شما هم تغییر ایجاد کنید در این قسمت :متفکر:
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
نقل قول:
خوب شما هم تغییر ایجاد کنید در این قسمت :متفکر:
آهان.
این است که آنتی ویروس عزیز اونوقت برنامه ویروس اعلام میفرمایند.
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
نقل قول:
نوشته شده توسط
Delphi-7
ممنون دوست من.
این کد و کد بدست آوردن کپشن رو دارم.
اما نمیخام با استفاده از این گزینه ها مسیر رو بدست بیارم چون کافیه تو قسمت Folder Option تغییری اعمال بشه که دیگه مسیر در آدرسبار به طور کامل نشون داده نمیشه.
بازم ممنونم.
دوست عزیز اتفاقا این کد هیچ کاری با فعال بودن .... Display the full path در کادر Folder Option نداره.
امتحان کنید .!
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
نقل قول:
نوشته شده توسط
alireza v.f
دوست عزیز اتفاقا این کد هیچ کاری با فعال بودن .... Display the full path در کادر Folder Option نداره.
امتحان کنید .!
سورس رو مطالعه کنید ، داره متن داخل Edit قسمت Address Bar رو میخونه ، این کار اصلا اصولی نیست .
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
نقل قول:
نوشته شده توسط
SilverSoft
سورس رو مطالعه کنید ، داره متن داخل Edit قسمت Address Bar رو میخونه ، این کار اثلا اصولی نیست .
خوب دوست عزیز پیشنهاد شما چیست ؟
من که با این کد مشکلم رو در یکی از پروژه هام حل کردم .
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
اين برنامه متن باز هم هست كه ميتونه براتون كد بدست آوردن همچين متنهايي رو توليد كنه:
https://barnamenevis.org/showthread.php?t=80389
در صورتي كه Display the full path غير فعال باشه،هيچ سورسي با اين توابع Api نميتونه به شما كمك كنه.
شما راهي براي بدست اوردن آدرس از طريقه روشي كه برنامه Process Explorer استفاده كرده، نداريد!
نقل قول:
دوست عزیز اتفاقا این کد هیچ کاری با فعال بودن .... Display the full path در کادر Folder Option نداره.
وقتي آدرس به صورت كامل در AddressBar نمايش داده نشه، ايشون چطور آدرسه كامل رو از ويندوز اكسپلورر بگيرن؟
نقل قول:
سورس رو مطالعه کنید ، داره متن داخل Edit قسمت Address Bar رو میخونه ، این کار اثلا اصولی نیست .
براي خواندن آدرس بايد از اون قسمت استفاده كنند.
راهه حلي براي اين كار سراغ داريد ؟
Anyway، راه حلي كه وجود داره، اينه كه اگه در كامپيوتر كاربري Display the full path... غيرفعال بود، از ريجستري فعالش كنيد و برنامه تون رو اجرا كنيد.
موفق و پيروز باشيد
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
نقل قول:
آهان.
این است که آنتی ویروس عزیز اونوقت برنامه ویروس اعلام میفرمایند.
به خاطر استفاده از توابع Registry ؟ خوب شما کاری کنید که آنتی ویروس نتواند اعلام بفرماید . مثلاً کد کردن رشته ها ..
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
حرفهای جناب MFIRE درسته
این ادرس کلید مربوط به تنظیم display full path هست
HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Explorer\CabinetState
process explorer فقط ادرس محل فایل Exe وابسته به برنامه رو میده
که این کارو با تابع GetModulefileNameEX در یونیت PSApi انجام میده
(شما با داشتن کپشن برنامه میتونین با تابع GetWindowThreadProcessId مقدار PID پروسه رو بدست بیارین با تابع OpenProcess هم هندل پرپسه رو بدست میارین و با پاس داده هندل پروسه بهGetModulefileNameEX ادرس فایل فایل exe رو میده )
در پروسس اکسپلورر قسمت lower pane هم اگه نگاه کنین لیست دایرکتوریها و فایلهای مورد استفاده برنامه رو مینویسه ادرسی جاری که کاربر در حال مشاهده اون با Windows explorer هست رو نمی نویسه
البته برنامه QTTabBar به راحتی بدون ادرس بار ادرس روبدست میاره
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
با تشکر از دوستان
اما حتما راهی هست . چون برنامه های آنتی ویروس بدون استفاده از کپشن فرم یا متن آدرس بار به راحتی در مسیر جاری کاربر عملیات اسکن رو انجام میدهند.
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
نقل قول:
راهه حلي براي اين كار سراغ داريد ؟
نقل قول:
ما حتما راهی هست . چون برنامه های آنتی ویروس بدون استفاده از کپشن فرم یا متن آدرس بار به راحتی در مسیر جاری کاربر عملیات اسکن رو انجام میدهند.
حتما با هوک کردن پیغام های های ویندوز میشه ، بحث این هست که پیدا کنید کدوم پیغام باید هوک بشه .
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
اگر دقت کرده باشید حتی در زمان استفاده از توابع API جستجوگر فایل ، با اینکه اینجا Windows Explorer هیچ نقشی ایفا نمی کنه اما آنتی ویروس هایی با قابلیت Real-time protection میتونند فایل های جستجو شده رو مورد بررسی قرار بدن. پس میشه نتیجه گرفت هوک در سطح پایین تری انجام میشه .
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
ممکنه انتی ها توابع FindfirstFile و FindNextfile رو هوک میکنن(البته در سطح کرنل نه یوزر مثل NtQueryDirectoryFile) در این حالت در هر برنامه ای که از این توابع استفاده بشه انتی به راحتی ادرس پوشه رو پیدا میکنه
شما هم وقتی وارد یک پوشه میشید Explorer با استفاده از همین توابع پوشه ها و فایلهای داخل اون پوشه رو لیست میکنه
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
در مورد Shell Monitoring تحقیق کنید ، در سایت Delphi.About در بارش توضیح داده شده و کامپوننت هایی هم برای این کار عرضه شده ، این هم یک نمونه لینک در همین مورد .
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
در اینجا راه حلی ارائه شده ...
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
نقل قول:
نوشته شده توسط
SilverSoft
ممنون
برنامه و کامپوننت زیر رو گرفتم.
فکر کنم برای کار دیگیه.
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
نقل قول:
ممنون
برنامه و کامپوننت زیر رو گرفتم.
فکر کنم برای کار دیگیه.
این کامپوننت تغییرات Shell رو نمایش میده ، مثلا تغییر در کلیدهای رجیستری و ...
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
نقل قول:
نوشته شده توسط
Mahmood_N
این کامپوننت تغییرات Shell رو نمایش میده ، مثلا تغییر در کلیدهای رجیستری و ...
یادت رفت کامپوننتو بزاری:لبخند:
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
نقل قول:
یادت رفت کامپوننتو بزاری
منظورم همون کامپوننتی بود که شما ضمیمه کردی ! :چشمک: ( شرمنده ، باید می گفتم )
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
نقل قول:
نوشته شده توسط
Mahmood_N
منظورم همون کامپوننتی بود که شما ضمیمه کردی ! :چشمک: ( شرمنده ، باید می گفتم )
اما اصلا با این برنامه روسیستم من مانیتورینگی صورت نمیگیره!!
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
نقل قول:
اما اصلا با این برنامه روسیستم من مانیتورینگی صورت نمیگیره!!
\
شما اون لینکی رو که دادم بخون و با توجه به گفته هاش پیاده سازیش کن ، من خودم با کمی تغییر ازش جواب گرفتم .
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
نقل قول:
نوشته شده توسط
SilverSoft
\
شما اون لینکی رو که دادم بخون و با توجه به گفته هاش پیاده سازیش کن ، من خودم با کمی تغییر ازش جواب گرفتم .
ممنون
کلی بهش ور رفتم و بازم چیزی رو مانیتور نکرد.
خواهشا میشه یه نمونه برنامه بزارید.؟
-
نقل قول: بدست آوردن مسیر جاری پنجره ها
shellchangeNotify فقط چیزهایی رو که تو Notify Filterش هست مانیتور میکنه اون هم در ادرس پوشه ای که در قسمت root میدن
http://z.about.com/d/delphi/1/0/O/7/shellmonitor1.gif