[DllImport("User32.dll", EntryPoint = "FindWindow", CharSet = CharSet.Auto)]
public extern static IntPtr FindWindow(string lpClassName, string? lpWindowName);
[DllImport("User32.dll", EntryPoint = "GetWindowText", CharSet = CharSet.Auto)]
public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
[DllImport("User32.dll", EntryPoint = "GetWindow", CharSet = CharSet.Auto)]
public static extern IntPtr GetWindow(IntPtr hWnd, int nCmd);
public static List<string>? GetQQNumber()
{
IntPtr fw = FindWindow("CTXOPConntion_Class", null);
List<string> rt = new List<string>(); StringBuilder sb = new StringBuilder(512);
string? wt; int tlen;
// 标题特征
string[] tz = { "OP_", "OPENSDK_SHARE2QQ_QQ_WINNAME_", "OPENSDK_AUTH_IPC_WINDOW_QQ_" };
do
{
tlen = GetWindowText(fw, sb, 512);
if (tlen > 0)
{
wt = Convert.ToString(sb);
// Console.WriteLine(wt); // 筛查全部标题
if (!string.IsNullOrEmpty(wt))
{
foreach (var flag in tz)
{
if (wt.Contains(flag))
{
rt.Add(wt.Replace(flag, string.Empty));
}
}
}
}
fw = GetWindow(fw, 2); sb.Length = 0;
} while (fw != IntPtr.Zero);
if (rt.Count > 0)
{
return rt.Distinct().ToList();
}
else
{
return null;
}
}
}
【调用代码】
static void Main(string[] args)
{
List<string>? v = GetQQNumber();
if (v != null)
{
foreach (var kv in v)
{
Console.WriteLine(kv);
}
}
Console.ReadKey();
}