مخفی کردن یک برنامه AIR از Taskbar ویندوز

در زمان طراحی یک برنامه AIR، سه حالت مختلف برای تنظیم شکل پنجره برنامه در زمان اجرا وجود دارد: 
  –   System Chrome: همان پنجره استاندارد است.
  –   (Custom Chrome (Opaque: کادر پنجره حذف میشود.
  –   (Custom Chrome (Transparent: زمینه محو شده و پنجره حالت skin پیدا میکند.
 متاسفانه هیچ کدام از سه حالت فوق، دارای تنظیمات فرعی برای عدم نمایش نام یا دکمه برنامه در نوار وظیفه ویندوز (Taskbar) نیستند. حال آنکه وجود چنین قابلیتی برای ابزارک‌هایی که با AIR نوشته می‌شوند، کاملا حیاتی است.
راه حل این مشکل، استفاده از کلاس flash.display.NativeWindow و ساخت یک پنجره جدید با شکل و حالت دلخواه و در نهایت، انتقال محتوای شئ root یا stage از انیمیشن فعلی به آن است.
حالت پنجره‌ای که باعث عدم نمایش نام برنامه در Taskbar می‌شود، مقدار UTILITY در کلاس flash.display.NativeWindowType در زمان NONE بودن خاصیت systemChrome است.
روش کار به این صورت است:
  1. پنجره فعلی را می‌بندیم.
  2. شئ جدیدی از کلاس NativeWindowInitOptions ایجاد کرده و تمام تنظیمات مورد نظر را در آن اعمال می‌کنیم.
  3. پنجره جدیدی از کلاس NativeWindow ایجاد کرده و کلاس تنظیمات را به آن منتقل می‌کنیم. (تنظیمات NativeWindow به صورت مستقیم قابل تغییر نیستند، حتما باید از یک کلاس واسطه استفاده شود)
  4. ابعاد و موقعیت پنجره را تنظیم می‌کنیم.
  5. محتوای انیمیشن را به پنجره جدید منتقل کرده و پنجره را فعال می‌نماییم.
کد:

stage.nativeWindow.close();

var nwOptions:NativeWindowInitOptions = new NativeWindowInitOptions();

nwOptions.type = NativeWindowType.UTILITY;
nwOptions.systemChrome = NativeWindowSystemChrome.NONE;
nwOptions.transparent = true;

var newWindow:NativeWindow = new NativeWindow(nwOptions);

newWindow.stage.align = stage.align;
newWindow.stage.scaleMode = stage.scaleMode;
newWindow.stage.stageWidth = stage.stageWidth;
newWindow.stage.stageHeight = stage.stageHeight;

for (var i:int = 0; i < stage.numChildren; i++) {
newWindow.stage.addChild(stage.getChildAt(i));
}

newWindow.activate();

About محمد شمس

برنامه‌نویس، طراح انیمیشن و علاقمند به هوش مصنوعی

3 Comments

  1. ببخشید این “کاملا حیاتی” یعنی چی؟
    آیا یکی از اصول برنامه‌های خوب دسترسی پذیری نیست؟ چرا باید مخفی شود؟ چرا کاربر دسترسی و آزادی عمل نداشته باشد؟

  2. سلام
    بله دسترسی به تمام قابلیتهای ممکن، مهم است.
    اما هنوز امکانات نرم‌افزار Flash در طراحی برنامه‌های AIR تکمیل نشده است. مدت زمانی طول می‌کشد تا این برنامه در این زمینه هم به توانایی مورد انتظار درست پیدا کند.
    به خاطر داشته باشید که IDE فلش، در واقع برای تولید انیمیشن طراحی شده نه به عنوان یک استودیوی توسعه نرم‌افزار.

  3. جالب بود ، موفق و پیروز باشید

پاسخ دادن به بهروز لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


4 × = 36