كيفية عرض أيقونات صينية البرنامج دائما في Windows بواسطة * الافتراضي *؟

StackOverflow https://stackoverflow.com/questions/904790

  •  05-09-2019
  •  | 
  •  

سؤال

إذا تم تنفيذ برنامج لأول مرة في Windows 7، فإنه يخفي تلقائيا الرمز. هل هناك أي إعداد أو خيار بيان لإجبار Windows 7 على إظهار الأيقونة دائما افتراضيا؟

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

المحلول

في .NET الصخور البودكاست، لست منذ وقت طويل، كان كيت غريغوري من مايكروسوفت يقول أنه من المستحيل.

قالت شيئا مثل: "إذا كان المستخدم يريد ذلك (أيقونة الدرج)، فسوف يضعها هناك". سبب هذا هو منع الفوضى في منطقة الدرج.

نصائح أخرى

إذا كنت ترغب حقا في إظهار أيقونة الدرج الخاصة بك، فيمكنك منبثق عن البالون مع نص أدنى وبعد ذلك إخفاء البالون وظل الظل مرة أخرى باتباع المثال التعليمات البرمجية:

trayIcon.ShowBalloonTip(30000, "", ".", ToolTipIcon.None)

Dim balloonHandle As IntPtr = GetBalloonHwnd(balloonText) ' mainly: FindWindow("tooltips_class32", Nothing)

If (balloonHandle <> IntPtr.Zero) Then
  Dim sysShadowClassHwnd As IntPtr = FindWindow("SysShadow", Nothing)

  ' will hide balloon and leaving a small shadow artifact - just for this balloon
  PostMessage(balloonHandle, WM_SETREDRAW, IntPtr.Zero, IntPtr.Zero)
  SetWindowPos(balloonHandle, IntPtr.Zero, 0, 0, 0, 0, SWP_HIDEWINDOW)

  If (sysShadowClassHwnd <> IntPtr.Zero) Then
    ' this will remove the small shadow artifact
    PostMessage(sysShadowClassHwnd, WM_CLOSE, IntPtr.Zero, IntPtr.Zero)
  End If
End If

إذا كررت هذا (على سبيل المثال، كل 30 ثانية)، سيبقى Trayicon هناك لأن Explorer.exe يفكر، فهناك بالون مفتوح لعرضه للمستخدم. هناك عدد قليل من المشكلات الطفيفة - مثل عدم النقر بزر الماوس الأيمن مباشرة على أيقونة - لا تزال هناك.

اعتدت حقا أن أظهر أيقونة الدرج لبرامج شركتنا حيث لا يقصد المستخدم القيام بذلك يدويا ولكل تحديث. لذلك ربما هذا سوف يساعد شخص ما ... :)

خلاف ذلك، أنا أوافق تماما: يجب أن يكون هذا فقط في أيدي المستخدم، لا يتحكم في التطبيق.

بالتأكيد ليس "مستحيلا". هناك واجهة COM غير موثقة ITrayNotify لاسترداد أيقونات الدرج وتغيير وضوحها، المستخدمة من قبل Explorer نفسه. مصدر C ++ الكامل هنا: http://thread0.me/tag/windows/

بالطبع، باستخدام API غير الرسمي هو محفوف بالمخاطر ويندوز 8 قد أزال التغييرات العاجلة في واجهة برمجة التطبيقات هذه، مما يعني أن عليك استخدام تعريفين مختلفين ل XP - WIN7 و WIN8 - WIN10. لكن مهلا، حتى يستخدم Chrome هذه الخدعة. وبعد فقط تأكد من التعامل مع الفشل بشكل صحيح.

أ سؤال ملحوظ باسم مكررة لديه إجابة كيف يتم ذلك.

إليك رابط (الرابط البديل) يشرح كيف و هنا رمز C #.

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