نمایش نتایج 1 تا 32 از 32

نام تاپیک: بدست آوردن مسیر جاری پنجره ها

  1. #1

    Arrow بدست آوردن مسیر جاری پنجره ها

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


  2. #2

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    شاید این بتونه کمک کنه

    توابع undocument ویندوز در مورد shell name spacing extention

    http://www.shellplus.com/examples/na...n-example.html

  3. #3

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    بدست آوردن مسیر جاری پنجره ها
    پنجره ها مسیر جاری ندارند. سیستم عامل ویندوز یک مسیر جاری داره. سوال را درست و دقیق بپرسید. اگر میخواید آدرس فایل EXE یک برنامه را به دست بیارید، این اسمش آدرس پنجره ها نیست، بلکه اسمش آدرس Image یک Process هست که با استفاده از توابع API قابل استخراج هست. در سورس ProcessInfo هم چگونگی استخراج آن را نمایش دادم.


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  4. #4

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    فکر میکنم ایشون میخوان آدرسی رو که الان کاربر داره تو Windows Explorer کنکاش میکنه به دست بیارند ، مثلا اگر کاربر در درایو D هست و داره تو شاخه ای کار میکنه به صورت زیر آدرس رو پیدا کنن :

    D:\Project\Sample

  5. #5

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    پنجره ها عضوی از برنامه هستند دیگه . این عمل رو من قبلاً در نرم افزار Process Explorer دیدم . که با انتخاب پنجره ی خاص هندل اون رو میگیره و ضمن دسترسی به اسم پروسه ، مسیر فایل اجرایی رو هم استخراج میکنه .

  6. #6

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    نقل قول نوشته شده توسط .M8SPY. مشاهده تاپیک
    پنجره ها عضوی از برنامه هستند دیگه . این عمل رو من قبلاً در نرم افزار Process Explorer دیدم . که با انتخاب پنجره ی خاص هندل اون رو میگیره و ضمن دسترسی به اسم پروسه ، مسیر فایل اجرایی رو هم استخراج میکنه .
    خوب این جا هم بحث گرفتن آدرس جاری هست که در Windows Explorer هست ، وگرنه هر کسی میدونه Windows Explorer تو کدوم شاخه از درایو ویندوز قرار داره و نیازی به بهدست آوردنش نیست !
    منظور آدرس فایل اجرایی پروسه نیست ، منظور آدرسی هست که الان ما توش قرار داریم ( متنی که تو Address Bar هست ) ، که ایشون میخوان از روشی به جز گرفتن این متن استفاده کنن ...

  7. #7

    Arrow نقل قول: بدست آوردن مسیر جاری پنجره ها

    نقل قول نوشته شده توسط SilverSoft مشاهده تاپیک
    خوب این جا هم بحث گرفتن آدرس جاری هست که در Windows Explorer هست ، وگرنه هر کسی میدونه Windows Explorer تو کدوم شاخه از درایو ویندوز قرار داره و نیازی به بهدست آوردنش نیست !
    منظور آدرس فایل اجرایی پروسه نیست ، منظور آدرسی هست که الان ما توش قرار داریم ( متنی که تو Address Bar هست ) ، که ایشون میخوان از روشی به جز گرفتن این متن استفاده کنن ...
    ممنون.
    سوال بنده هم همینه.


  8. #8

    Arrow نقل قول: بدست آوردن مسیر جاری پنجره ها

    نقل قول نوشته شده توسط cayberfox مشاهده تاپیک
    شاید این بتونه کمک کنه

    توابع undocument ویندوز در مورد shell name spacing extention

    http://www.shellplus.com/examples/na...n-example.html
    ممنون دوست من.
    اما این لینکی که قرار دادید .محتوی نداره.
    با تشکر.


  9. #9
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    کاشان
    پست
    809

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    نقل قول نوشته شده توسط Delphi-7 مشاهده تاپیک
    ممنون دوست من.
    اما این لینکی که قرار دادید .محتوی نداره.
    با تشکر.
    این سورس مشکل شما رو حل میکنه

    البته من با Win Xp تست زدم و درست بود
    فایل های ضمیمه فایل های ضمیمه

  10. #10

    Arrow نقل قول: بدست آوردن مسیر جاری پنجره ها

    نقل قول نوشته شده توسط alireza v.f مشاهده تاپیک
    این سورس مشکل شما رو حل میکنه

    البته من با Win Xp تست زدم و درست بود
    ممنون دوست من.
    این کد و کد بدست آوردن کپشن رو دارم.
    اما نمیخام با استفاده از این گزینه ها مسیر رو بدست بیارم چون کافیه تو قسمت Folder Option تغییری اعمال بشه که دیگه مسیر در آدرسبار به طور کامل نشون داده نمیشه.
    بازم ممنونم.


  11. #11

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    چون کافیه تو قسمت Folder Option تغییری اعمال بشه...
    خوب شما هم تغییر ایجاد کنید در این قسمت

  12. #12

    Arrow نقل قول: بدست آوردن مسیر جاری پنجره ها

    خوب شما هم تغییر ایجاد کنید در این قسمت
    آهان.
    این است که آنتی ویروس عزیز اونوقت برنامه ویروس اعلام میفرمایند.


  13. #13
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    کاشان
    پست
    809

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    نقل قول نوشته شده توسط Delphi-7 مشاهده تاپیک
    ممنون دوست من.
    این کد و کد بدست آوردن کپشن رو دارم.
    اما نمیخام با استفاده از این گزینه ها مسیر رو بدست بیارم چون کافیه تو قسمت Folder Option تغییری اعمال بشه که دیگه مسیر در آدرسبار به طور کامل نشون داده نمیشه.
    بازم ممنونم.
    دوست عزیز اتفاقا این کد هیچ کاری با فعال بودن .... Display the full path در کادر Folder Option نداره.

    امتحان کنید .!

  14. #14

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    نقل قول نوشته شده توسط alireza v.f مشاهده تاپیک
    دوست عزیز اتفاقا این کد هیچ کاری با فعال بودن .... Display the full path در کادر Folder Option نداره.

    امتحان کنید .!
    سورس رو مطالعه کنید ، داره متن داخل Edit قسمت Address Bar رو میخونه ، این کار اصلا اصولی نیست .
    آخرین ویرایش به وسیله Felony : چهارشنبه 20 مرداد 1389 در 10:25 صبح

  15. #15
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    کاشان
    پست
    809

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    نقل قول نوشته شده توسط SilverSoft مشاهده تاپیک
    سورس رو مطالعه کنید ، داره متن داخل Edit قسمت Address Bar رو میخونه ، این کار اثلا اصولی نیست .
    خوب دوست عزیز پیشنهاد شما چیست ؟

    من که با این کد مشکلم رو در یکی از پروژه هام حل کردم .

  16. #16
    کاربر تازه وارد آواتار MFiRE
    تاریخ عضویت
    مهر 1386
    محل زندگی
    كيانپارس
    پست
    98

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    اين برنامه متن باز هم هست كه ميتونه براتون كد بدست آوردن همچين متنهايي رو توليد كنه:
    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... غيرفعال بود، از ريجستري فعالش كنيد و برنامه تون رو اجرا كنيد.

    موفق و پيروز باشيد

  17. #17

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    آهان.
    این است که آنتی ویروس عزیز اونوقت برنامه ویروس اعلام میفرمایند.
    به خاطر استفاده از توابع Registry ؟ خوب شما کاری کنید که آنتی ویروس نتواند اعلام بفرماید . مثلاً کد کردن رشته ها ..

  18. #18

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    حرفهای جناب 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 به راحتی بدون ادرس بار ادرس روبدست میاره

  19. #19

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    با تشکر از دوستان
    اما حتما راهی هست . چون برنامه های آنتی ویروس بدون استفاده از کپشن فرم یا متن آدرس بار به راحتی در مسیر جاری کاربر عملیات اسکن رو انجام میدهند.


  20. #20

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    راهه حلي براي اين كار سراغ داريد ؟
    ما حتما راهی هست . چون برنامه های آنتی ویروس بدون استفاده از کپشن فرم یا متن آدرس بار به راحتی در مسیر جاری کاربر عملیات اسکن رو انجام میدهند.
    حتما با هوک کردن پیغام های های ویندوز میشه ، بحث این هست که پیدا کنید کدوم پیغام باید هوک بشه .

  21. #21

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    اگر دقت کرده باشید حتی در زمان استفاده از توابع API جستجوگر فایل ، با اینکه اینجا Windows Explorer هیچ نقشی ایفا نمی کنه اما آنتی ویروس هایی با قابلیت Real-time protection میتونند فایل های جستجو شده رو مورد بررسی قرار بدن. پس میشه نتیجه گرفت هوک در سطح پایین تری انجام میشه .

  22. #22

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    ممکنه انتی ها توابع FindfirstFile و FindNextfile رو هوک میکنن(البته در سطح کرنل نه یوزر مثل NtQueryDirectoryFile) در این حالت در هر برنامه ای که از این توابع استفاده بشه انتی به راحتی ادرس پوشه رو پیدا میکنه
    شما هم وقتی وارد یک پوشه میشید Explorer با استفاده از همین توابع پوشه ها و فایلهای داخل اون پوشه رو لیست میکنه

  23. #23

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    در مورد Shell Monitoring تحقیق کنید ، در سایت Delphi.About در بارش توضیح داده شده و کامپوننت هایی هم برای این کار عرضه شده ، این هم یک نمونه لینک در همین مورد .

  24. #24

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    در اینجا راه حلی ارائه شده ...

  25. #25

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    نقل قول نوشته شده توسط SilverSoft مشاهده تاپیک
    در مورد Shell Monitoring تحقیق کنید ، در سایت Delphi.About در بارش توضیح داده شده و کامپوننت هایی هم برای این کار عرضه شده ، این هم یک نمونه لینک در همین مورد .
    ممنون
    برنامه و کامپوننت زیر رو گرفتم.
    فکر کنم برای کار دیگیه.


  26. #26

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    ممنون
    برنامه و کامپوننت زیر رو گرفتم.
    فکر کنم برای کار دیگیه.
    این کامپوننت تغییرات Shell رو نمایش میده ، مثلا تغییر در کلیدهای رجیستری و ...

  27. #27

    Arrow نقل قول: بدست آوردن مسیر جاری پنجره ها

    نقل قول نوشته شده توسط Mahmood_N مشاهده تاپیک
    این کامپوننت تغییرات Shell رو نمایش میده ، مثلا تغییر در کلیدهای رجیستری و ...
    یادت رفت کامپوننتو بزاری


  28. #28

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    یادت رفت کامپوننتو بزاری
    منظورم همون کامپوننتی بود که شما ضمیمه کردی ! ( شرمنده ، باید می گفتم )

  29. #29

    Arrow نقل قول: بدست آوردن مسیر جاری پنجره ها

    نقل قول نوشته شده توسط Mahmood_N مشاهده تاپیک
    منظورم همون کامپوننتی بود که شما ضمیمه کردی ! ( شرمنده ، باید می گفتم )
    اما اصلا با این برنامه روسیستم من مانیتورینگی صورت نمیگیره!!


  30. #30

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    اما اصلا با این برنامه روسیستم من مانیتورینگی صورت نمیگیره!!
    \
    شما اون لینکی رو که دادم بخون و با توجه به گفته هاش پیاده سازیش کن ، من خودم با کمی تغییر ازش جواب گرفتم .

  31. #31

    Arrow نقل قول: بدست آوردن مسیر جاری پنجره ها

    نقل قول نوشته شده توسط SilverSoft مشاهده تاپیک
    \
    شما اون لینکی رو که دادم بخون و با توجه به گفته هاش پیاده سازیش کن ، من خودم با کمی تغییر ازش جواب گرفتم .
    ممنون
    کلی بهش ور رفتم و بازم چیزی رو مانیتور نکرد.
    خواهشا میشه یه نمونه برنامه بزارید.؟


  32. #32

    نقل قول: بدست آوردن مسیر جاری پنجره ها

    shellchangeNotify فقط چیزهایی رو که تو Notify Filterش هست مانیتور میکنه اون هم در ادرس پوشه ای که در قسمت root میدن

    http://z.about.com/d/delphi/1/0/O/7/shellmonitor1.gif

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •