use*_*800 7 c# pinvoke window utf-8 find
LS,我在c#应用程序中使用FindWindow方法从Web浏览器获取窗口句柄
[DllImport("user32.dll")]
public static extern int FindWindow(string lpClassName, string lpWindowName );
Run Code Online (Sandbox Code Playgroud)
当窗口标题不包含像这里的utf字符时,它运行良好:
string caption1 = "pinvoke.net: findwindow (user32) - Google Chrome";
int hwnd = FindWindow(null, caption1);
Run Code Online (Sandbox Code Playgroud)
但是当窗口标题中出现utf chars时它会失败:
string caption2 = "S?ownik j?zyka polskiego - Google Chrome";
int hwnd2 = FindWindow(null, caption2);
Run Code Online (Sandbox Code Playgroud)
例如,hwnd == 0
您能不能给我任何建议如何在c#应用程序中处理包含utf-8字符的浏览器窗口.提前致谢.
ps我已经看过关于在c ++中使用带有utf的FindWindow的评论,他说:"你可以明确地使用API版本的API HWND windowHnd = FindWindowW(NULL,L"Minesweeper");" 但是我仍然不知道如何在c#中正确地做到这一点
jsz*_*eti 10
我自己没试过,但你应该能够做到这一点:
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern int FindWindow(string lpClassName, string lpWindowName );
Run Code Online (Sandbox Code Playgroud)
根据MSDN关于DllImportAttribute.CharSet字段的文章,默认的假设是CharSet.Ansi,这将导致您描述的行为.
| 归档时间: |
|
| 查看次数: |
1413 次 |
| 最近记录: |