1,我现在启动进程“A”,那么在windows任务栏将出现一个“A”的按钮;
2,我又启动进程“B”,那么在windows任务栏就又有一个“B”的按钮;
3,我在windows任务栏中先点击“A”进程,紧接着点击“B”进程。
问题是,如何在“B”进程中获取上述动作,换句话说动作3会给进程“B”发什么消息呢?个人觉得另一种表述可以是“进程如何获取自己在windows任务栏上的状态,如何响应它在windows任务栏上的状态变化?”如果有人说是SYSCOMMAND,那么我已经试过了,似乎它只是对单个进程的状态的变化响应。我的问题是在多个进程中的切换状态。请大拿指教。
2,我又启动进程“B”,那么在windows任务栏就又有一个“B”的按钮;
3,我在windows任务栏中先点击“A”进程,紧接着点击“B”进程。
问题是,如何在“B”进程中获取上述动作,换句话说动作3会给进程“B”发什么消息呢?个人觉得另一种表述可以是“进程如何获取自己在windows任务栏上的状态,如何响应它在windows任务栏上的状态变化?”如果有人说是SYSCOMMAND,那么我已经试过了,似乎它只是对单个进程的状态的变化响应。我的问题是在多个进程中的切换状态。请大拿指教。
解决方案 »
- 急!!请教一个WSAAsyncSelect模型下用CFile类进行文件传输的问题,十分感谢!!!
- 注册论坛6年了,终于上星了,散分~~~~
- 关于UNICODE的问题
- ATL组件封装问题(初学)
- 怎样从进程ID获取他的主窗口的句柄?
- 请问怎么重载系统的open消息处理函数!
- 有关显示当前所有进程的操作。
- 关于文档得视图关闭的问题,请大家帮忙谢谢!
- 用VC实现---信任站点检测方法
- 请问;;怎样用sockt改变隐藏自己的IP??
- opengl+mfc 用鼠标控制模型(3ds)移动时模型有时在屏幕视野范围内,有时却不知去向
- 我想获取dshow中的filter的guid,然后再转化为字符串形式,该怎么做?
wawaku:我这个应该是和多进程无关的,我只是想监控一种程序的操作,并对其做出反应。
其实就是想知道用户在windows任务栏不断点击不同的按钮时,什么时候我的程序被点击激活。不知道说清楚了没有。
而且我用SPY++看过,没有发现什么特殊的消息被发送给我的程序。
chenyu2202863:WM_MOUSEACTIVATE似乎没有效果,我打了断点,但进不去。
Mackz:WM_ACTIVATE是可以响应的,但WM_ACTIVATE似乎在操作中不止一个,这样就需要用到其参数来判断了。目前我正在测试是否可行,先谢谢了。一伙我再更新回复。
LPARAM lParam;
ParameterswParam
The low-order word specifies whether the window is being activated or deactivated. This parameter can be one of the following values. The high-order word specifies the minimized state of the window being activated or deactivated. A nonzero value indicates the window is minimized.
WA_ACTIVE
Activated by some method other than a mouse click (for example, by a call to the SetActiveWindow function or by use of the keyboard interface to select the window).
WA_CLICKACTIVE
Activated by a mouse click.
WA_INACTIVE
Deactivated.
lParam
Handle to the window being activated or deactivated, depending on the value of the wParam parameter. If the low-order word of wParam is WA_INACTIVE, lParam is the handle to the window being activated. If the low-order word of wParam is WA_ACTIVE or WA_CLICKACTIVE, lParam is the handle to the window being deactivated. This handle can be NULL.
Return ValueIf an application processes this message, it should return zero.
ResIf the window is being activated and is not minimized, the DefWindowProc function sets the keyboard focus to the window. If the window is activated by a mouse click, it also receives a WM_MOUSEACTIVATE message.
LRESULT CDialogTestDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if((message == WM_ACTIVATE))&&(wParam == WA_ACTIVE))
{
//your code
} return CDialog::DefWindowProc(message, wParam, lParam);
}
=====================================================================建议应该去多看一些MFC消息机制的书. DefWindowProc就是用来处理这些消息的.
因为我只要我说的这种情况的响应,别的情况不会触发我的代码。
还是谢谢了。
我写了一个很简单的Dialog,如果遇到WA_ACTIVE就弹出一个MessageBox,其它什么内容也没有.
发现在这个Dialog出现之前,MessageBox弹出了4次,出现之后无论我怎么切换,切到其他窗口再切回来,WA_ACTIVE都没有出现过了...