2010-08-24 12 views
18

क्या बैच फ़ाइल से व्यवहार को विंडोज़ ट्रिगर करना है, "टास्क बार बटन को एक्स बार या जब तक विंडो अग्रभूमि में नहीं आती" मैं पूरा होने पर उपयोगकर्ता के ध्यान को लंबे समय से चलने वाली स्क्रिप्ट पर कॉल करने की कोशिश कर रहा हूं।बैच फ़ाइल से ट्रिगर बटन को ट्रिगर करना?

फ्लैशिंग को ट्रिगर करने के लिए बाहरी प्रोग्राम का उपयोग करना ठीक है, जब तक इसे इंस्टॉल करने की आवश्यकता नहीं होती है (यानी निष्पादन योग्य को मेरी स्क्रिप्ट के साथ बंडल किया जा सकता है)।

अद्यतन

यहाँ है कि मैं क्या (एंड्रियास 'डेल्फी कोड की एक minimalist बंदरगाह) के साथ समाप्त हो गया है। मैंने इसे मिनीजीडब्लू के तहत संकलित किया है, ऐसा लगता है कि यह केवल केरलई 32. डीएलएल और USER32.DLL पर निर्भर है, इसलिए अत्यधिक पोर्टेबल होना चाहिए।

तीन बार चमकता है, फिर अग्रभूमि में लाए जाने तक हाइलाइट रहता है।

#define WINVER 0x501 
#define _WIN32_WINNT 0x501 

#include <windows.h> 

void main(int argc, char **argv) { 
    FLASHWINFO info = { sizeof(info), GetConsoleWindow(), FLASHW_TIMERNOFG | FLASHW_TRAY, 3, 0 }; 

    FlashWindowEx(&info); 
} 
+0

इस तरह का एक दिलचस्प सवाल, और 45 मिनट में केवल तीन विचार ?! –

+0

... और 24 घंटों में केवल 15 विचार। मुझे यह नहीं मिला ... –

+0

हां, 'GetConsoleWindow'' FindWindow' और एक अद्वितीय कैप्शन से काफी बेहतर है। पता नहीं क्यों मैंने ऐसा नहीं किया ... –

उत्तर

5

एक बहुत ही सरल बाहरी * .exe का उपयोग करना बहुत आसान है। इसे बस विंडोज एपीआई के FlashWindowEx फ़ंक्शन को कॉल करना होगा।

program flashwnd; 

{$APPTYPE CONSOLE} 

uses 
    SysUtils, Windows; 

var 
    OldTitle, UniqueTitle: string; 
    h: HWND; 
    c: cardinal; 
    fwi: TFlashWInfo; 

begin 

    try 
    h := GetConsoleWindow(); 

    c := 10; 
    if ParamCount = 1 then 
     c := StrToInt(ParamStr(1)); 

    FillChar(fwi, sizeof(fwi), 0); 
    fwi.cbSize := sizeof(fwi); 
    fwi.hwnd := h; 
    fwi.dwFlags := FLASHW_ALL; 
    fwi.uCount := c; 
    fwi.dwTimeout := 0; 
    FlashWindowEx(fwi); 
    except 
    on E: Exception do 
     Writeln(E.ClassName + ': ' + E.Message); 
    end; 
end. 

सीधे शब्दों में

flashwnd 

की तरह इसे कहते वर्तमान कंसोल विंडो दस बार फ्लैश करने के लिए:

यह एक नमूना डेल्फी सांत्वना अनुप्रयोग है।

flashwnd 27 

विंडो 27 बार फ्लैश करने के लिए कॉल करें।

+0

मुझे संदेह है कि ऐसा कुछ ऐसा होगा, लेकिन विंडोज एपीआई में निराश हूं! मैं देखूंगा कि मैं यह काम कर सकता हूं या नहीं। –

+0

अंत में यह मिनजीडब्ल्यू में काम कर रहा है (क्योंकि मेरे पास कोई डेल्फी कंपाइलर आसान नहीं है)। धन्यवाद! –

+0

हाय बेन, क्या आपके पास इस उपयोगिता का संकलित संस्करण है? अग्रिम में धन्यवाद –

संबंधित मुद्दे