سؤال

السؤال:

لا أحد يعرف كيفية تغيير الدليل الحالي بالفعل تشغيل فتح ملف الحوار ؟

التفاصيل:

لدي تخصيص مربع حوار فتح ملف (باستخدام قالب مخصص لإضافة المزيد الضوابط) الذي يحتوي أيضا على كل من صحة القائمة الشيكات ، و إنشاء الاختبارات إيقاف (عبر OpenFileName الأعلام).

تحول تلك الأشياء من تعطيل المدمج في سلوك الحوار الذي سوف يؤدي إلى تغيير المجلد المعروض حاليا إذا قام المستخدم بكتابة اسم المجلد في "اسم الملف" مربع التحرير والسرد و يضرب على مفتاح enter.

أود أن أضيف هذا السلوك مرة أخرى.لا يمكن الكشف عن عندما يحدث هذا عن طريق إجراء موضع الإضافة في الروتين.لقد خفي على زر موافق ، إيقاف انه مسرع و وضع بلدي "حدد" زر على لوحة التحكم.وهذا يعني أن المرة الوحيدة التي يمكنني الحصول على CDN_FILEOK الرسالة عندما يقوم المستخدم يضرب أدخل في مربع النص بعد الكتابة.

لا أستطيع ، ومع ذلك ، معرفة كيفية برمجيا اقول مربع الحوار تغيير الدليل الحالي.

كنت أفكر في أنني قد تكون قادرة على إنجاز هذا عن طريق إرسال نوعا من رسالة إلى SHELLDLL_DefView التحكم في النافذة ، ولكن لم أكن قادرة على العثور على أي وثائق على ذلك.

هل كانت مفيدة؟

المحلول 2

كنت قادرا على معرفة عمل حول.

اتضح أنه عند التحقق من صحة إيقاف تشغيل كتابة اسم الدليل الذي ينتهي في "\" لا تزال تغيير المجلد الذي يتم عرضه ، ولكن كتابة اسم الدليل الذي لا ينتهي في "\" سوف لا.

باستخدام spy++ كنت قادرا على رؤية ذلك عندما أدخل هو ضرب WM_COMMAND رسالة سيتم إرسالها إلى الحوار الشائعة السيطرة مع wParam الحجة التي مرحبا أجل كلمة BN_CLICKED والتي الترتيب المنخفض كلمة ID_OK.

إذا كنت فرعية مشتركة الحوار لا يمكن اعتراض رسالة تغيير النص في الملف اسم مربع التحرير والسرد إلى الأمام الرسالة الأصلية فرعية الإجراء ، ومن ثم تغيير النص مرة أخرى بعد ذلك.

انها قليلا من الإختراق, لكنه تمكن من الحصول علي السلوك أريد من مربع الحوار.

نصائح أخرى

لست متأكدا من الإجابة المباشرة ، ولكن إذا كان لديك SPY++ أو أي رسالة أخرى التطفل برنامج محاولة التحقق من الرسائل التي يذهب بها عند تغيير العادي OpenFileName الحوار دليل.قد كشف الجواب هناك (على الرغم من أنه هو الطريق الصعب).

شخص آخر قد تعرف الجواب من ناحية على الرغم ؛ دعونا نأمل أنها تفعل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top