سؤال

يمكنني استخدام التعليمات البرمجية التالية في معالج حدث FormCreate لإنشاء أيقونة علبة النظام. عندما أقوم بتشغيل البرنامج، يبدو أيقونة علبة النظام جيدا.

قمت بتعيين طلبي يتم تشغيله تلقائيا عند بدء تشغيل Windows. عندما أعيد تشغيل الكمبيوتر، بدأت عملية التطبيق الخاصة بي ولكن أيقونة علبة النظام لا تظهر أبدا.

أعتقد أنه قد يكون الأمر يتعلق بتوقيت وقت تشغيل التعليمات البرمجية، وربما أن علبة النظام ليست جاهزة للسكن.

أحصل على تطبيقي للتشغيل عند بدء التشغيل عبر IT's Installer NSIS: Writeregstr HKLM "Software Microsoft Windows CurrentVersion تشغيل" "Myapp" "$ instdir myapp.exe"

رمز لإنشاء أيقونة علبة النظام:

with TrayIconData do
  begin
    cbSize := SizeOf(TrayIconData);
    Wnd := Handle;
    uID := 0;
    uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
    uCallbackMessage := WM_ICONTRAY;
    hIcon := Application.Icon.Handle;
    StrPCopy(szTip, Application.Title);
  end;

  Shell_NotifyIcon(NIM_ADD, @TrayIconData);
هل كانت مفيدة؟

المحلول

أنت تحاول إنشاء الرمز قبل بدء تشغيل المستكشف بالكامل. يجب التعامل مع الأخطاء بأمان (قم بالتمرير لأسفل إلى "التعامل مع فشل shell_notifyicon").

يجب عليك أيضا التعامل مع إشعار شريط المهام - يمكنك من إعادة إنشاء الرموز الخاصة بك بعد تعطل Explorer وإعادة تشغيله.

نصائح أخرى

سبب المشكلة لأن الدليل الحالي أثناء بدء التشغيل ليس هو الدليل الذي يعيش فيه الحياة القابلة للتنفيذ.

لذلك كان GetCurrentdir فعلا إرجاع الدلائل المختلفة عند بدء التشغيل وعندما تم تشغيل التطبيق في أي وقت آخر.

كان طلبي يجعل الافتراض الفقراء أن DIR الحالي سيكون هو الشخص الذي يقيم فيه التنفيذ.

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

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