我正在编写一个小应用程序,我希望从 Chrome 浏览器中获取 URL。

为了首先检查 Chrome 浏览器是否打开,我使用以下代码:

 IntPtr WindowTitleTextPtr = GetForegroundWindow();

 StringBuilder WindowTitleText = new StringBuilder();

 GetWindowText(WindowTitleTextPtr, WindowTitleText, 256); // Problem

 ...

我正在使用 GetWindowText() 函数来获取 Windows 标题文本,但我在那里遇到了问题。

如果 Chrome 窗口没有 URL 并且只是一个新标签,那么我没有问题, WindowTitleText.ToString() 等于 New Tab - Google Chrome

但是,如果我打开一个网页,在这种情况下,URL 会填充一些 URL,然后在 GetWindowText() 行我得到:
vs32host.exe 已停止工作 消息窗口要求我

这是怎么回事?

帮助!

最佳答案

您应该在 StringBuilder 实例中分配内存:

  StringBuilder WindowTitleText = new StringBuilder();

  int size = 256;
  WindowTitleText.Length = size; // <- Memory allocation

  // Read text into allocated memory
  GetWindowText(WindowTitleTextPtr, WindowTitleText, WindowTitleText.Length);

关于c# - GetWindowText() 函数未始终正确执行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17377453/

10-10 13:01