2008-08-20 12 views
7

एक ऐसे एप्लिकेशन में जिसमें मैं वर्तमान में काम कर रहा हूं, एक आवश्यकता है कि बाहरी एप्लिकेशन की खिड़की को अग्रभूमि में लाया जाए। Win32 API कॉल जैसे BringWindowToTop और SetForeground विंडो बनाना हर समय काम नहीं करता है। यह विंडोज एक्सपी के भीतर कुछ प्रतिबंधों के कारण है। मैं इसके बजाय क्या करना चाहता हूं, माउस को अनुकरण करना टास्कबार पर विंडो के बटन पर क्लिक करें, जिसे मैं उम्मीद कर रहा हूं कि खिड़की सामने लाएगी। क्या किसी को पता है कि यह कैसे संभव है?माउस भेजना टास्कबार में एक बटन पर क्लिक करें C#

उत्तर

5

http://www.codeproject.com/KB/dialog/dlgboxtricks.aspx पर "2K/XP पर फ़ोकस कैसे चुराएं" अनुभाग देखें, क्योंकि यह वही है जो आपको चाहिए। मैं टास्कबार मार्ग नहीं जाऊंगा क्योंकि टास्कबार छुपाया जा सकता है या बस वहां नहीं।

2

यह संभव है। लेकिन यह बेहद स्केची है। आपका एप्लिकेशन विंडोज के अगले संस्करण के साथ भी टूट सकता है, क्योंकि यह अनियंत्रित है। आपको क्या करना है टास्कबार के विंडो हैंडल को ढूंढें, फिर बटन का प्रतिनिधित्व करने वाली बाल विंडो के विंडो हैंडल को ढूंढें, फिर इसे एक WM_MOUSEDOWN (मुझे लगता है) संदेश भेजें।

यहाँ टास्कबार की खिड़की संभाल खोजने पर एक सा है:

http://www.codeproject.com/

Fwiw, BringWindowToTop/SetForeground पर प्रतिबंध वहाँ जब एक खिड़की चुरा ध्यान केंद्रित है क्योंकि यह परेशान है कर रहे हैं। इससे कोई फर्क नहीं पड़ता कि आप कॉर्पोरेट वातावरण पर काम कर रहे हैं या नहीं। बस इसे ध्यान में रखें। :)

1

मैंने इसे एक ऐसे प्रोग्राम में उपयोग किया जहां मुझे क्लिक और माउस मूवमेंट अनुकरण करने की आवश्यकता थी;

Global Mouse and Keyboard Library

1

ईमानदार मैं एक मुद्दा XP/Vista/2003/2000 को अग्रभूमि के लिए एक खिड़की को लाने के लिए किया था कभी नहीं किया है होना करने के लिए।

आप निम्न सुनिश्चित करें कि आप कर बनाने की जरूरत है: अगर IsIconic (कम से कम)

  1. चेक
  2. अगर सही में # 1 परिणाम तो फोन ShowWindow गुजर SW_RESTORE
  3. फिर फोन SetForegroundWindow

मुझे कभी ऐसी समस्याएं नहीं आईं जिन्हें मैं उन चरणों के साथ करने के बारे में सोच सकता हूं।

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