मुझे क्या करना चाहते हैं तो देखें कि क्या अपने आवेदन क्योंकि ध्यान केंद्रित किया गया है अगर यह तो मैं अंत उपयोगकर्ता के लिए कुछ संदेश प्रदर्शित करने के लिए सिर्फ अधिसूचना क्षेत्र एक चेतावनी खिड़की पॉपअप जाएगा नहीं है।मैं कैसे जांच सकता हूं कि मेरे एप्लिकेशन पर ध्यान केंद्रित किया गया है या नहीं?
उत्तर
Windows.GetForegroundWindow()
पर कॉल करें और फिर को Controls.FindControl()
फ़ंक्शन पर पास करें। HWND
आपकी प्रक्रिया से संबंधित है, तो यह एक गैर-शून्य TWinControl
सूचक वापस करेगा। उदाहरण के लिए:
if FindControl(GetForegroundWindow()) <> nil then
// has focus ...
else
// does not have focus ...
आपके आवेदन एक ही रूप होते हैं, तो
GetForegroundWindow = Handle
पर्याप्त होगा। उपर्युक्त अभिव्यक्ति सच है यदि केवल और यदि आपका फॉर्म अग्रभूमि विंडो है, यानी, यदि कीबोर्ड फोकस इस फ़ॉर्म (या स्वयं के रूप में) पर नियंत्रण से संबंधित है।
अपने आवेदन पत्र, बस उन्हें के माध्यम से लूप और अगर उनमें से किसी से मेल खाता है GetForegroundWindow
जाँच के एक नंबर के होते हैं तो।
Remys प्रतिक्रिया पर एक मामूली बदलाव है:
Var
Win: TWinControl;
Begin
Win := FindControl(GetForegroundWindow);
if Win <> nil then
// StringGrid1.Row :=5;
// StringGrid1.SetFocus;
मेरे लिए ठीक संकलित, लेकिन मैं इसे अविश्वसनीय पाया डिबग के दौरान, stringgrid.setfocus भी जब खिड़की प्रतिसाद नहीं कहा जाता है ' एक त्रुटि पैदा करने पर ध्यान केंद्रित नहीं किया।
D2007 इस उपयोगी संपत्ति है
if Application.Active then
//