===
一个小项目中需要用刀点击任务栏右下角通知区域的小图标,从而触发事件
其中比较容易出问题的地方是
public bool FindNotifyIcon(IntPtr hTrayWnd, ref Rect rectNotify)
{
UInt32 trayPid = 0;
Rect rectTray = new Rect();
GetWindowRect(hTrayWnd, out rectTray);
int count = (int)SendMessage(hTrayWnd, TB_BUTTONCOUNT, 0, IntPtr.Zero); //给托盘窗口发消息,得到托盘里图标
bool isFind = false;
if (count > 0)
{
GetWindowThreadProcessId(hTrayWnd, out trayPid); //取得托盘窗口对应的进程id
//获取托盘图标的位置
IntPtr hProcess = OpenProcess(ProcessAccess.VMOperation | ProcessAccess.VMRead | ProcessAccess.VMWrite,
false, trayPid); //打开进程,取得进程句柄
IntPtr address = VirtualAllocEx(hProcess, //在目标进程中申请一块内存,放TBBUTTON信息
IntPtr.Zero,
1024,