我一直想知道如何做这个年龄。 我正在创build一个小应用程序,我需要弄清楚在TaskBar中显示了多less个应用程序或窗口。
我还没有find任何信息,我会很感激任何帮助。
谢谢 :)
“这个文件来自另一台计算机,可能被阻止,以保护这台计算机。” – 如何以编程方式在C#.net中删除此属性?
在Mono上使用system.windows.forms在Linux上开发
.net 2.0 Windows应用程序需要提升uac权限
最佳文件缓冲区读取大小?
得到所有打开的窗口的标题
如何计算任务pipe理器的内存使用情况?
我如何快速创build大(> 1GB)的文本+二进制文件与“自然”的内容? (C#)
有没有办法来检查用户是否有特定的权利?
如何模拟慢读和慢读磁盘驱动器
正如其他人所说的,你需要使用Win32 EnumWindows函数来枚举窗口,并以这种方式计算。
你也可以使用Process.GetProcesses();来枚举整个进程Process.GetProcesses(); 但是,像浏览器窗口这不是一个单独的进程窗口不会显示在该列表中。
int appCount = 0; public bool EnumerateWindows(IntPtr hwnd,IntPtr lParam) { if (IsWindowVisible(hwnd)) { StringBuilder sb = new StringBuilder(); string text = ""; GetwindowText(hwnd,sb,1024); text = sb.ToString(); if (text != string.Empty && text != "Program Manager") { appCount++; } } return true; } private int GetAppCount() { appCount = 0; EnumWindows(EnumerateWindows,new IntPtr(0)); return appCount; } internal delegate bool EnumThreadWindowsCallback(IntPtr hwnd,IntPtr lParam); [DllImport("user32.dll",CharSet = CharSet.Auto,SetLastError = true)] internal static extern bool EnumWindows(EnumThreadWindowsCallback callback,CharSet = CharSet.Auto)] internal static extern bool IsWindowVisible(IntPtr hwnd); [DllImport("user32.dll",SetLastError = true)] internal static extern int GetwindowText(IntPtr hWnd,[Out,MarshalAs(UnmanagedType.LPTStr)] StringBuilder lpString,int nMaxCount);
这里是一篇文章,展示了如何获得使用ALT + TAB组合键时显示的窗口。
基本上,你将得到与任务栏中显示的窗口相同的窗口(除非它是不显示的工具窗口),但是可以随时检查WS_EX_TOOLWINDOW (未显示)和WS_EX_APPWINDOW (显示)。
你可以看看我以前的答案。 这里的主要区别是你只需要计算符合给定要求的窗口。
据我所知,没有管理方式访问任务栏。 这里是描述如何通过Windows API访问任务栏的链接 。 但是,我快速扫描没有显示任何“数量”或类似的东西。 不过这可能会让你指向正确的方向。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。