【发布时间】:2019-08-07 19:47:44
【问题描述】:
在一个 c# 应用程序中,我正在对桌面上的所有窗口执行 EnumWindows,并在回调中获取每个窗口的窗口标题。特别是一个第 3 方应用程序可以在 ansi 或 unicode 模式下运行,即使应用程序在 ansi 模式下运行,始终使用 GetWindowTextW 是否安全,或者我是否需要能够检测是否为所有外部启用了 unicode 模式应用程序以确定我需要调用哪个 GetWindowText?我遇到的问题是我们甚至在 unicode 应用程序上也一直在使用 GetWindowTextA 并且一直工作到现在。当标题栏有中文字符时,由于明显的原因无法返回正确的窗口标题。
【问题讨论】:
-
它总是安全和最佳的选择致电
GetWindowTextW -
AFAIK所有窗口都是一样的,系统在幕后使用unicode。 “A”和“W”变体只是客户端调用 Windows NT 系统的两种可能方式,它们与其他应用程序的运行方式无关。长话短说:只需使用“W”,不要想太多。 :-)