मैं जानना चाहता हूं कि वर्तमान सक्रिय विंडो का विंडो शीर्षक कैसे पकड़ा जाए (यानी जिस पर ध्यान केंद्रित किया गया है) C # का उपयोग करना।
मैं जानना चाहता हूं कि वर्तमान सक्रिय विंडो का विंडो शीर्षक कैसे पकड़ा जाए (यानी जिस पर ध्यान केंद्रित किया गया है) C # का उपयोग करना।
जवाबों:
उदाहरण देखें कि आप यहां पूर्ण स्रोत कोड के साथ ऐसा कैसे कर सकते हैं:
http://www.csharphelp.com/2006/08/get-current-window-handle-and-caption-with-windows-api-in-c/
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);
private string GetActiveWindowTitle()
{
const int nChars = 256;
StringBuilder Buff = new StringBuilder(nChars);
IntPtr handle = GetForegroundWindow();
if (GetWindowText(handle, Buff, nChars) > 0)
{
return Buff.ToString();
}
return null;
}
बेहतर शुद्धता के लिए @Doug McClean टिप्पणियों के साथ संपादित किया गया।
using System.Runtime.InteropServices;
और डीएल आयात और स्थिर बाहरी लाइनों को फिर से रखने के लिए कहाँ। इसे कक्षा के भीतर चिपकाना
यदि आप WPF के बारे में बात कर रहे थे तो उपयोग करें:
Application.Current.Windows.OfType<Window>().SingleOrDefault(w => w.IsActive);
Windows API का उपयोग करें। पुकारते हैं GetForegroundWindow()
।
GetForegroundWindow()
आपको hWnd
सक्रिय विंडो में एक हैंडल (नामांकित ) देगा।
GetForegroundWindow फ़ंक्शन के आधार पर | Microsoft डॉक्स :
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern int GetWindowTextLength(IntPtr hWnd);
private string GetCaptionOfActiveWindow()
{
var strTitle = string.Empty;
var handle = GetForegroundWindow();
// Obtain the length of the text
var intLength = GetWindowTextLength(handle) + 1;
var stringBuilder = new StringBuilder(intLength);
if (GetWindowText(handle, stringBuilder, intLength) > 0)
{
strTitle = stringBuilder.ToString();
}
return strTitle;
}
यह UTF8 वर्णों का समर्थन करता है।
यदि ऐसा होता है कि आपको अपने MDI एप्लिकेशन से वर्तमान सक्रिय प्रपत्र की आवश्यकता है : (MDI- मल्टी दस्तावेज़ इंटरफ़ेस)।
Form activForm;
activForm = Form.ActiveForm.ActiveMdiChild;
आप प्रक्रिया वर्ग का उपयोग कर सकते हैं यह बहुत आसान है। इस नाम स्थान का उपयोग करें
using System.Diagnostics;
यदि आप सक्रिय विंडो प्राप्त करने के लिए एक बटन बनाना चाहते हैं।
private void button1_Click(object sender, EventArgs e)
{
Process currentp = Process.GetCurrentProcess();
TextBox1.Text = currentp.MainWindowTitle; //this textbox will be filled with active window.
}