2010-09-14 16 views
8

मुझे क्या करना चाहते हैं तो देखें कि क्या अपने आवेदन क्योंकि ध्यान केंद्रित किया गया है अगर यह तो मैं अंत उपयोगकर्ता के लिए कुछ संदेश प्रदर्शित करने के लिए सिर्फ अधिसूचना क्षेत्र एक चेतावनी खिड़की पॉपअप जाएगा नहीं है।मैं कैसे जांच सकता हूं कि मेरे एप्लिकेशन पर ध्यान केंद्रित किया गया है या नहीं?

उत्तर

16

Windows.GetForegroundWindow() पर कॉल करें और फिर को Controls.FindControl() फ़ंक्शन पर पास करें। HWND आपकी प्रक्रिया से संबंधित है, तो यह एक गैर-शून्य TWinControl सूचक वापस करेगा। उदाहरण के लिए:

if FindControl(GetForegroundWindow()) <> nil then 
    // has focus ... 
else 
    // does not have focus ... 
4

आपके आवेदन एक ही रूप होते हैं, तो

GetForegroundWindow = Handle 

पर्याप्त होगा। उपर्युक्त अभिव्यक्ति सच है यदि केवल और यदि आपका फॉर्म अग्रभूमि विंडो है, यानी, यदि कीबोर्ड फोकस इस फ़ॉर्म (या स्वयं के रूप में) पर नियंत्रण से संबंधित है।

अपने आवेदन पत्र, बस उन्हें के माध्यम से लूप और अगर उनमें से किसी से मेल खाता है GetForegroundWindow जाँच के एक नंबर के होते हैं तो।

0

Remys प्रतिक्रिया पर एक मामूली बदलाव है:

Var 
    Win: TWinControl; 
Begin 
    Win := FindControl(GetForegroundWindow); 
    if Win <> nil then 
//  StringGrid1.Row :=5; 
//  StringGrid1.SetFocus; 

मेरे लिए ठीक संकलित, लेकिन मैं इसे अविश्वसनीय पाया डिबग के दौरान, stringgrid.setfocus भी जब खिड़की प्रतिसाद नहीं कहा जाता है ' एक त्रुटि पैदा करने पर ध्यान केंद्रित नहीं किया।

3

D2007 इस उपयोगी संपत्ति है

if Application.Active then 
// 
संबंधित मुद्दे

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