我基本上运行一个Windows窗体来获取活动窗口的文本,例如Google Chrome - 一些文字:
我的方法在这里:
public static String GetActiveWindowText()
{
var handle = GetForegroundWindow();
var sb = new StringBuilder();
GetWindowText(handle, sb, 1000);
return sb.Length == 0 ? "Unhand Window" : sb.ToString();
}
用于GetForegroundWindow():
[DllImport("user32", CharSet = CharSet.Ansi, ExactSpelling = true, SetLastError = true)]
public static extern IntPtr GetForegroundWindow()
注意:当我尝试使用记事本或类似程序(如记事本或阻塞程序)时,它可以正常运行但是当我在Google Chrome上试用它时会导致程序崩溃,vshost32.exe已停止工作。< / p>
答案 0 :(得分:1)
已解决:
我必须首先获得文本的长度:
public static String GetActiveWindowText()
{
var handle = GetForegroundWindow();
int length = GetWindowTextLength(handle); // Length First
var sb = new StringBuilder(length + 1);
GetWindowText(handle, sb, sb.Capacity);
return sb.Length == 0 ? "Unhand Window" : sb.ToString();
}
GetWindowTextLength是:
[DllImport("user32.dll", SetLastError= true, CharSet= CharSet.Auto)]
public static extern Int32 GetWindowTextLength(IntPtr hWnd);