چطور ميشه يك ارتباط داخلي با اكسپلور ويندوز ايجاد كرد
منظورم يك چيزي شبيه تابع message هستش
دقيق تر بگم يعني اينكه بعد از اجراي اكسپلورر بشه فهميد كه كاربر تو چه مسيري از هارد قرار داره يا تو چه مسيري داره سير مي كنه
و يكي ديگه اينكه :
تا حالا همتون با search ويندوز كار كردين و ديدين كه روي هر يك از موارد پيدا شده اگر كليك راست كنيد گزينه open containing folder در صدر همه گزينه هاست بعد از كليك روي اون اكسپلورر باز ميشه و به مسير فايل يا فولدر پيدا شده ميره اما از همه جالب تر اين كه روي مورد پيدا شده در مسير مورد نظر فوكوس ميكنه و براي راحتي ما اون رو درحالت انتخاب نگه مي داره تا كار ما رو راحت تر كنه
سرتون رو درد نيارم خلاصه دنبال يك همچنين چيزي هم هستم با وي بي
مي دونم سخته ولي ممكنه !
اگر كسي مطلبي در اين مورد داره بسم اللله
فكر مي كردم اين موضوع ساده تر از اين حرفها باشه اما مثل اينكه حتي يك نفر هم ازش سر در نياورده
شايد هم من نتونستم به خوبي موضوع رو بيان كنم - ديگه از اين بهتر فكر نكنم كه بشه
راستي اگر كسي اطلاعاتي كامل در مورد توابع getmessage و sendmessage داره خيلي ها خواستارن منظورم آرگومان هاي هگزادسيمال عجيب و غريبش هستن
الان بهت مي گم چي كار كن.
برو يه كد بنويس كه در مرحله ي اول رجيستري را دستكاري كنه و كاري كنه كه برنامه ي Explorer.exe مسير جاري را روي تايتل همون Explorer نشون بده.بعد برو توي برنامت يه مقدار ديگه كد بنويس تا تايتل برنامه ها رو چك كنه و اين طوري مي توني ميسر جاري كه كاربر توش هست رو بدست بياري.
البته من به صورت خيلي خيلي خلاصه گفتم.الگوريتمش همينه.
اگه خواستي به من بگو تا يه سورسشو بهت بدم.باي.
sepehrEZ نوشته است:الان بهت مي گم چي كار كن.
برو يه كد بنويس كه در مرحله ي اول رجيستري را دستكاري كنه و كاري كنه كه برنامه ي Explorer.exe مسير جاري را روي تايتل همون Explorer نشون بده.بعد برو توي برنامت يه مقدار ديگه كد بنويس تا تايتل برنامه ها رو چك كنه و اين طوري مي توني ميسر جاري كه كاربر توش هست رو بدست بياري.
البته من به صورت خيلي خيلي خلاصه گفتم.الگوريتمش همينه.
اگه خواستي به من بگو تا يه سورسشو بهت بدم.باي.
www.Escada.Blogfa.Com
دمت گرم چرا به فكر خودم نرسيد البته همون طور كه گفتي ساده هستش اما بدك نيست بابت سورس هم ممنون سورسش رو دارم اما اگر تونستي بزار شايد مال شما بهتر باشه تازه بقيه هم استفاده مي كنن
راستي در مورد اون يكي كه گفتم كسي ديگه اطلاعات نداره كليك راست روي موارد پيدا شده در search ويندوز
باز هم ممنون از sepehrEZ عزيز
كسي ديگه نظر در مورد مطالب بالا نداره
(:
خب یه کار دیگه هم میتونی بکنی ادرس بار ویندوز یه کمبو باکس هست اول هندل اونو بگیربعد با getwindowtext میتونی مقادیر داخلشو بخونی
در مورد مسئله دومت
روشی که بالا گتم رو بگیر با setwindowtext میتونی ادرس مورد نظرت رو داخلش بنویسی بعد یه sendmessage کلید اینتر رو بهش میفرستی با این کار اکسپلورر یه محل مورد نظر میره بعد فایلها تو اکسپلورر داخل یه shelllistview32 نشون داده میشن اونجا مکان فایلتو پیدا میکنی بعد با sendwindows راست کلیک شدن تو اون نقطه رو شبیه سازی میکنین.همین
برای کار با sendmessage یه نگاه به این لینک بنداز
http://api32.persianblog.ir/1384_5_api32_archive.html
lord_viper نوشته است:خب یه کار دیگه هم میتونی بکنی...
روشی که بالا گتم رو بگیر با setwindowtext میتونی ...
ممنون
روشي كه lord_viper نوشتند خيلي عالي هست.
اين روش دريافت از تكس باكس براي آدرس رو امتحان كردم
خوبه اما اين هم يك مشكل داره !!
اگر طرف سيستم اكسپلورر رو تنظيم كرد كه آدرس رو كامل نشون نده اون وقت چي ؟ اين رو كه ميگم از رو هوا حرف نميزنم ها ، چون تست كردم و ديدم دو نفر از 10 نفر اين كار رو مي كنن
ديگه راهي نيست ؟!!
راستي روش دوم
من آدرس فايل يا پوشه رو دارم فقط مي خوام بعد از باز كردن اكسپلورر توسط من درون shelllistview32 فايل من رو select كنه
بازم ممنون از توضيحي كه داديد
اگر امكان داره يك تكيه از سورس رو در حد راهنمايي بزارين
اون موقع باید از تبدیل shortnme به fullname استفاده کنی تبدیل ادرس خلاصه شده به کامل (سورس هم واسش زیاده
lord_viper نوشته است:اون موقع باید از تبدیل shortnme به fullname استفاده کنی تبدیل ادرس خلاصه شده به کامل
سلام و ممنون از Lord_viper عزيز
منظورم اينه كه اگر طرف در مسير زير
tools\Folder Option -> View -> Display full path in address bar
تيك رو برداره
اون وقت چي ؟
در اين صورت من فقط يك اسم از اون پوشه اي كه توش هست رو در كامپو باكس دارم ، نه مسير !
به خاطر همين گفتم يكمي اين روش ناقصه .
از يكي پرسيدم ، گفت :
برو تو رجيستري تيكي كه طرف برداشته رو بزار بعد folder option رو غير فعال كن تا ديگه نره اون رو برداره !
در جواب بايد بگم :
خوب من اگه بخوام اين كار رو بكنم ، برنامه من چه فرقي با اسكريبتهاي مخرب داره ( چون داره كاربر رو ازيت ميكنه )
هر چي هست زير سر همين API هستش
راستي اون يكي سوال چي؟
خلاصه تر بگم :
من اكسپلورر رو باز كردم و به مسير مورد نظرم رفتم ، هندل syslistview32 كه درون اون برگه از اكسپلورر هست رو هم گرفتم
حالا ميخوام با
syslistview32 ارتباط بر قرار كنم يعني :
1 - بدونم تو چه مسيري هست ( اين يكي به سوال قبل هم كمك ميكنه )
2 - چندتا فايل يا پوشه درونش select شده
3 - بتونم تعداد select ها رو كم يا زياد كنم
4 - بفهمم تو چه حالت نمايشي قرار داره مثلا thumbnails يا ....
5 - ....
همين چندتا كوچولو
در این حالت میتونی از hook استفاده کنی
تو دلفی یه کامپوننت هست به اسمshellchangenotifyer که هر تغییری بر روی فایلها یا پوشه های درایو مورد نظر بیاد اون اعمال رو با ادرس فایلها نشون میده(شاید vb هم داشته باشه)
راحترین کار هم اینه همون ادرس بار رو بخون و با مقدار قبلی اون جمع کن و بینشون یه \ بگذار اینجوری هم میفهمی که تو کدوم پوشهای
با تشكرات فراوان از جناب lord_viper
معادل shellchangenotifyer رو تو وي بي نديدم ولي با API راحت يك چيزايي يادم مياد
دارم در مورد API براي مسائل بالا به يك جاهايي مي رسم اما نميدونم به كارم مياد يا نه
البته حالا ديگه فقط دنبال ارتباط داخلي با syslistview32 هستم
چون جواب سوال مسير رو تو خودش داره
اگر باز هم كسي مي تونه كمك كنه دريغ نكنه ها
راستي ميدونيد چطوري ميشه يك مسير در regedit رو باز كرد
منظورم استفاده از switch براي regedit هست ، يا هرجوري كه بشه !
مثلا من ميخوام يك مسير خواص مثل
HKEY_CURRENT_USER\Software\Microsoft\Office
رو حاضر و آماده جلوي كاربر با regedit نشون بدم ، بدون اين كه كاربر حتي دست به سياه و سفيد بزنه
چون تو برنامه Autostart viewer اين كار رو ميكرد ، فقط كافي بود كليك راست كني و jump to with regedit رو بزني اون وقت مسير رو با regedit باز ميكنه
واقعا ميشه!!!