社区
C#
帖子详情
获取任务栏上程序运行个数
B_S
2007-09-04 11:25:51
例如:打开一个Excel程序,新建了很多的文档,Book1,Book2,Book3,Book4....
在任务栏上也会显示出Book1,Book2,Book3,Book4....
我怎么能获取有多少个Book文档存在任务栏上呢?
...全文
157
7
打赏
收藏
获取任务栏上程序运行个数
例如:打开一个Excel程序,新建了很多的文档,Book1,Book2,Book3,Book4.... 在任务栏上也会显示出Book1,Book2,Book3,Book4.... 我怎么能获取有多少个Book文档存在任务栏上呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bigeyescat
2007-09-04
打赏
举报
回复
强! 学习
mlhy20060406
2007-09-04
打赏
举报
回复
up
懒牛科技
2007-09-04
打赏
举报
回复
学习
hm7921936
2007-09-04
打赏
举报
回复
up and mark
symbol441
2007-09-04
打赏
举报
回复
mark
best8625
2007-09-04
打赏
举报
回复
帮Up一下
王集鹄
2007-09-04
打赏
举报
回复
参考如下代码
using System.Runtime.InteropServices;
[DllImport("user32.DLL")]
public static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
[DllImport("user32.DLL")]
public static extern IntPtr FindWindow(string lpszClass, string lpszWindow);
[DllImport("user32.DLL")]
public static extern IntPtr FindWindowEx(IntPtr hwndParent,
IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("user32.dll")]
public static extern uint GetWindowThreadProcessId(IntPtr hWnd,
out uint dwProcessId);
public const uint PROCESS_VM_OPERATION = 0x0008;
public const uint PROCESS_VM_READ = 0x0010;
public const uint PROCESS_VM_WRITE = 0x0020;
[DllImport("kernel32.dll")]
public static extern IntPtr OpenProcess(uint dwDesiredAccess,
bool bInheritHandle, uint dwProcessId);
public const uint MEM_COMMIT = 0x1000;
public const uint MEM_RELEASE = 0x8000;
public const uint MEM_RESERVE = 0x2000;
public const uint PAGE_READWRITE = 4;
[DllImport("kernel32.dll")]
public static extern IntPtr VirtualAllocEx(IntPtr hProcess, IntPtr lpAddress,
uint dwSize, uint flAllocationType, uint flProtect);
[DllImport("kernel32.dll")]
public static extern bool VirtualFreeEx(IntPtr hProcess, IntPtr lpAddress,
uint dwSize, uint dwFreeType);
[DllImport("kernel32.dll")]
public static extern bool CloseHandle(IntPtr handle);
[DllImport("kernel32.dll")]
public static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress,
IntPtr lpBuffer, int nSize, ref uint vNumberOfBytesRead);
public const int WM_USER = 0x0400;
public const int TB_BUTTONCOUNT = WM_USER + 24;
public const int TB_GETBUTTONTEXTW = WM_USER + 75;
private void button1_Click(object sender, EventArgs e)
{
IntPtr vHandle = FindWindow("Shell_TrayWnd", null);
vHandle = FindWindowEx(vHandle, IntPtr.Zero, "ReBarWindow32", null);
vHandle = FindWindowEx(vHandle, IntPtr.Zero, "MSTaskSwWClass", null);
vHandle = FindWindowEx(vHandle, IntPtr.Zero, "ToolbarWindow32", null);
int vCount = SendMessage(vHandle, TB_BUTTONCOUNT, 0, 0);
uint vProcessId;
GetWindowThreadProcessId(vHandle, out vProcessId);
IntPtr vProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ |
PROCESS_VM_WRITE, false, vProcessId);
IntPtr vPointer = VirtualAllocEx(vProcess, IntPtr.Zero, 0x1000,
MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
char[] vBuffer = new char[256];
uint vNumberOfBytesRead = 0;
try
{
for (int i = 0; i < vCount; i++)
{
SendMessage(vHandle, TB_GETBUTTONTEXTW, i, vPointer.ToInt32());
ReadProcessMemory(vProcess, vPointer,
Marshal.UnsafeAddrOfPinnedArrayElement(vBuffer, 0),
vBuffer.Length * sizeof(char), ref vNumberOfBytesRead);
int l = 0;
for (int j = 0; j < vBuffer.Length; j++)
{
if (vBuffer[j] == (char)0)
{
l = j;
break;
}
}
Console.WriteLine(new string(vBuffer, 0, l));
}
}
finally
{
VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE);
CloseHandle(vProcess);
}
}
基于.NET的Windows高级
任务栏
技术
由于Windows
任务栏
十分显眼,它会对每个程序都会产生影响,多年来,微软为它绞尽脑汁进行改进和优化。有别于低版本的Windows系统,虽然从Vista开始大幅改进,而真正在Win7中,微软对其从内到外进行了该进。
任务栏
不再仅仅只是用于呈现运行中的应用程序图标,在管理重要应用程序方面已经处于核心地位。根据Win7、Win8、Win10安装所启用的功能,
任务栏
瞬间摇身一变成为各个窗口的一站式服务中心。
任务栏
上显示的状态信息能让用户在做其它工作的同时监控应用程序的情况。此项功能非常重要,它无需切换到应用程序主界面,即可达到监控应用程序的目的,这正是许多用户梦寐以求的多任务解决之道。随着Win8、Win10相继推出,
任务栏
越来越被大众所熟悉和喜爱,其的地位越来越显重要,因此对于开发人员来说,
任务栏
也变得更加重要,忽视
任务栏
的不可限量的潜能,会是一种失策。这个课程中,跟随赵老师用代码开始构建这个“重要”的功能!
获取
任务栏
所有正在运行程序
mfc程序添加 CListCtrl名称 m_userlist
获取
任务栏
打开的程序
添加一个列表控件,并为列表控件添加一个变量:CList m_listTask ; 头文件中申明: static BOOL CALLBACK EnumWindowProc(HWND hWnd, LPARAM lParam); 在OnInitDialog()中写入: //
获取
任务栏
上打开的程序 EnumWindows(EnumWindowProc,(LPARAM)this)
计算机windows前台运行图标,
获取
window
任务栏
已经打开应用程序窗口(也就是任务管理器中前台进程)的图标...
获取
window
任务栏
已经打开应用程序窗口(也就是任务管理器中前台进程)的图标1.功能描述
获取
到window
任务栏
已经打开的应用程序的窗口图标。如下:(要
获取
到QQ,浏览器,文件夹的图标,但是
任务栏
中隐藏的图标不显示)2.使用技术及工具JAVA,JNA,eclipse。需要去下载JNA的包(一个是jna.jar,一个时jna-platform.jar);包的下载在文章结尾提供地址。3.实现思路(...
获取
window
任务栏
运行程序图标和标题
1、写回调函数: static BOOL CALLBACK StaticEnumWindowsProc(HWND hwnd, LPARAM lParam) { GetWindowText(hwnd, app_name, sizeof(app_name)); //
获取
窗口名称 HICON hIcon = (HICON)GetClassLong(hwnd, GCL_...
C#
110,499
社区成员
642,566
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章