LS,
我在c#应用程序中使用FindWindow方法从Web浏览器获取窗口句柄
我在c#应用程序中使用FindWindow方法从Web浏览器获取窗口句柄
[DllImport("user32.dll")] public static extern int FindWindow(string lpClassName,string lpWindowName );
当窗口标题不包含像这里的utf字符时,它运行良好:
string caption1 = "pinvoke.net: findwindow (user32) - Google Chrome"; int hwnd = FindWindow(null,caption1);
但是当窗口标题中出现utf chars时它会失败:
string caption2 = "Słownik języka polskiego - Google Chrome"; int hwnd2 = FindWindow(null,caption2);
例如hwnd == 0
您能不能给我任何建议如何在c#应用程序中处理包含utf-8字符的浏览器窗口.
提前致谢.
PS
我已经看过关于在c中使用带有utf的FindWindow的评论,说:
“您可以明确使用API的Unicode版本
HWND windowHnd = FindWindowW(NULL,L“Minesweeper”);“
但是我仍然不知道如何在c#中正确地做到这一点
解决方法
我自己没试过,但你应该能够这样做:
[DllImport("user32.dll",CharSet = CharSet.Unicode)] public static extern int FindWindow(string lpClassName,string lpWindowName );
根据MSDN在DllImportAttribute.CharSet Field上的文章,默认假设将是CharSet.Ansi,这将导致您描述的行为.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。