كيف يمكنني فلاش شريط مهام Windows باستخدام البديل ؟

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

  •  20-08-2019
  •  | 
  •  

سؤال

انا تطوير تطبيق البديل و أنا بحاجة إلى فلاش شريط مهام Windows.لا أستطيع استخدام frame.requestFocus() لأنني لا أريد أن يسرق التركيز من أي تطبيق آخر.

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

المحلول

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

وهذا يعني أن الدعوة frame.toFront () على إطار التقليل من شأنها أن تجعل دائما فلاش ...

نصائح أخرى

JNIWrapper مع ه winpack تمديد تستطيع أن تفعل ما تريد.

والتجريبي على موقع يظهر أنه في العمل.

يمكنك إما القوة-تصغير واجهة المستخدم الرسومية ، .toFront-ar:

        Gui.frame.setState(Frame.ICONIFIED);
        for (int i = 0; i < 3; i++) {
            Thread.sleep(10);
            Gui.frame.toFront();
            Thread.sleep(10);
            Gui.frame.setVisible(false);
            Thread.sleep(10);
            Gui.frame.toBack();
            Thread.sleep(10);
            Gui.frame.setVisible(true);
        }
        // be creative!!

والتي للأسف سيتم إزالة التركيز من الإطار النشط.هل يمكن معرفة الإطار النشط و تفعيلها بعد ذلك.ولكن لا يزال, وامض سوف تستمر فقط لمدة ثلاث ثوان.

أو أن نصل إلى الحقيقة جذر المسألة باستخدام DLL-الاتصال على FlashWindow.داعيا dlls غير ممكن مع تنظيف كود جافا, سوف تحتاج مساعدة من لغات البرمجة الأخرى, ممكن مثلامع JNA.بخلاف ذلك, يمكنك أيضا كتابة البرنامج الخاص بك في لغة أخرى و نسميها من تطبيق Java.سأعطيك مثالا في أوتوهوتكي أدناه:

أوتوهوتكي كود:

    if 0 != 1       ; note: in ahk, 1 corresponds args[1] and 0 corresponds args.length
    {
        msgbox, There needs to be ONE parameter passed over to this file, which is the name of the window that should be flashed.
        ExitApp
    }
    programName = %1%
    winget, hWnd, ID, %programName%
    DllCall("FlashWindow",UInt,hWnd,Int,True)

تجميعها في ملف يسمى flash.exe, ضع في جافا دليل العمل, يمكنك الاتصال من أي وظيفة:

    Runtime.getRuntime().exec("./flash.exe \"" + MyJFrame.getTitle() + "\"");

وكبديل عن ذلك ، يمكن استخدام AutoHotkey.dll والوصول إليه في Javacode (هناك أدلة على كيفية القيام بذلك على الإنترنت) ، لذلك سوف يكون هناك حاجة لأي الخارجية ملفات exe.

إذا كنت لا تزال تواجه مشاكل في تحقيق وامض في شريط مهام windows, واسمحوا لي أن أعرف!

وأفضل طريقة للقيام بذلك:

if (!isFocused()) {
        setVisible(false);
        setVisible(true);
    }

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

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