तो, मैंने इस प्रश्न पूछने से पहले Google और SO खोजा था। असल में मेरे पास एक डीएलएल है जिसमें इसका एक रूप संकलित है। इस फॉर्म का उपयोग स्क्रीन पर जानकारी प्रदर्शित करने के लिए किया जाएगा। आखिरकार यह असीमित होगा और डीएलएल में बहुत सारे अनुकूलन का पर्दाफाश करेगा। अभी के लिए मैं बस इसे ठीक से प्रदर्शित करना चाहता हूँ। मेरी समस्या यह है कि मैं इसे पावरहेल सत्र में लोड करके डीएलएल का उपयोग करता हूं। तो जब मैं फॉर्म को प्रदर्शित करने की कोशिश करता हूं और इसे शीर्ष पर आने के लिए मिलता हूं और ध्यान केंद्रित करता हूं, तो अन्य सभी ऐप्स को प्रदर्शित करने में कोई समस्या नहीं है, लेकिन मैं अपने जीवन के लिए पावरहेल विंडो पर प्रदर्शित नहीं कर सकता । यहां वह कोड है जिसे मैं वर्तमान में उपयोग करने के लिए उपयोग करने और इसे प्रदर्शित करने के लिए उपयोग कर रहा हूं। मुझे यकीन है कि इसे समझने के बाद इसमें से अधिकतर की आवश्यकता नहीं होगी, यह केवल उन सभी चीजों का प्रतिनिधित्व करता है जिन्हें मैंने Google के माध्यम से पाया था।सी # फोर्स फॉर्म फोकस
CLass Blah
{
[DllImport("user32.dll", EntryPoint = "SystemParametersInfo")]
public static extern bool SystemParametersInfo(uint uiAction, uint uiParam, uint pvParam, uint fWinIni);
[DllImport("user32.dll", EntryPoint = "SetForegroundWindow")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("User32.dll", EntryPoint = "ShowWindowAsync")]
private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);
private const int WS_SHOWNORMAL = 1;
public void ShowMessage(string msg)
{
MessageForm msgFrm = new MessageForm();
msgFrm.lblMessage.Text = "FOO";
msgFrm.ShowDialog();
msgFrm.BringToFront();
msgFrm.TopMost = true;
msgFrm.Activate();
SystemParametersInfo((uint)0x2001, 0, 0, 0x0002 | 0x0001);
ShowWindowAsync(msgFrm.Handle, WS_SHOWNORMAL);
SetForegroundWindow(msgFrm.Handle);
SystemParametersInfo((uint)0x2001, 200000, 200000, 0x0002 | 0x0001);
}
}
मैं कहता हूँ के रूप में मुझे यकीन है कि इस बात का सबसे या तो जरूरत नहीं या यहां तक कि बाहर फ्लैट गलत हूँ, मैं सिर्फ चीजें हैं जो मैं कोशिश की थी दिखाना चाहते थे। साथ ही, जैसा कि मैंने उल्लेख किया है, मैं इसे किसी बिंदु पर असीमित रूप से प्रदर्शित करने की योजना बना रहा हूं, जिसे मुझे संदेह है कि एक अलग थ्रेड की आवश्यकता होगी। फॉर्म को अपने स्वयं के धागे में विभाजित करना इसे पावरहेल सत्र पर ध्यान केंद्रित करना आसान बनाता है?
@Joel, जानकारी के लिए धन्यवाद। यहाँ है कि मैं क्या आपके सुझाव के आधार की कोशिश की है:
msgFrm.ShowDialog();
msgFrm.BringToFront();
msgFrm.Focus();
Application.DoEvents();
प्रपत्र अभी भी PowerShell सत्र के तहत आता है। मैं थ्रेडिंग के बाहर काम करने के साथ आगे बढ़ जाऊंगा। मैंने पहले धागे पैदा किए हैं लेकिन कभी भी जहां माता-पिता को धागे को बच्चे के थ्रेड से बात करने की ज़रूरत नहीं है, इसलिए हम देखेंगे कि यह कैसा चल रहा है।
अब तक सभी विचारों के लिए Thnks।
ठीक है, इसे सूत्रण समस्या का ख्याल रखा। @Quarrelsome, मैंने उन दोनों को आजमाया। न तो (न ही दोनों एक साथ) काम किया। थ्रेडिंग का उपयोग करने के बारे में बुराई के बारे में मैं उत्सुक हूं? मैं आवेदन का उपयोग नहीं कर रहा हूँ। रुन और मुझे अभी तक कोई समस्या नहीं है। मैं मध्यस्थ वर्ग का उपयोग कर रहा हूं कि माता-पिता के धागे और बच्चे के थ्रेड दोनों तक पहुंच है। उस ऑब्जेक्ट में मैं एक प्रॉपर्टी लॉक करने के लिए रीडरवाइटर लॉक का उपयोग कर रहा हूं जो उस संदेश का प्रतिनिधित्व करता है जिसे मैं उस फॉर्म पर प्रदर्शित करना चाहता हूं जिसे बच्चा थ्रेड बनाता है। माता-पिता संपत्ति को ताला लगाते हैं तो लिखते हैं कि क्या प्रदर्शित किया जाना चाहिए। बाल धागा संपत्ति को ताला लगा देता है और यह बताता है कि इसे फ़ॉर्म पर लेबल को क्या बदलना चाहिए। बच्चे को इसे मतदान अंतराल पर करना पड़ता है (मैं इसे 500ms तक डिफ़ॉल्ट करता हूं) जिसे मैं वास्तव में खुश नहीं करता हूं, लेकिन मुझे बच्चे के धागे को यह जानने के लिए एक घटना संचालित तरीका नहीं मिला कि प्रकोति बदल गई है, इसलिए मैं ' मैं मतदान के साथ अटक गया।
तुम सिर्फ रूप में नियंत्रणों में से एक पर ध्यान दें() फोन कर सकते हैं? –
प्रतिक्रियाओं के लिए धन्यवाद। @Chad, एक ही परिणाम है कि मैं पहले से ही हो रही थी के साथ घाव अभी फोकस() फार्म पर एक नियंत्रण की कोशिश कर रहा। @Dean, मैं अपने विधि का उपयोग करने मैं अपने आप थ्रेड में फ़ॉर्म को विभाजित करने के लिए की आवश्यकता होगी लगता है। मैंने उस बिंदु को उस बिंदु पर करने की योजना बनाई ताकि मुझे लगता है कि मैं उस पर शुरू करूंगा। – EBGreen