使用C+;解析添加到任务栏的程序中的信息+; 基本上我想做的就是在C++中编写自己的伪任务条。程序需要空闲,直到另一个程序启动,此时它需要直观地描述另一个程序正在运行。对于正在运行的每个其他程序,用户应该能够单击可视化表示,并让Windows将焦点切换到所选程序

使用C+;解析添加到任务栏的程序中的信息+; 基本上我想做的就是在C++中编写自己的伪任务条。程序需要空闲,直到另一个程序启动,此时它需要直观地描述另一个程序正在运行。对于正在运行的每个其他程序,用户应该能够单击可视化表示,并让Windows将焦点切换到所选程序,c++,windows,winapi,C++,Windows,Winapi,目前最大的潜在问题是:这是否有可能?或者Windows是否隐藏了它的大部分/所有精巧的部分,使其接近(如果不是完全)不可能 [编辑:]重新组织了问题显而易见的起点是SetWindowsHookEx(WH_SHELL,…)在创建或销毁顶级窗口时(以及其他一些相关事件,如激活不同的窗口、更改窗口标题等),将向您发送通知。我认为至少在基本方面是可能的: 1.按照Jerry的描述设置壳钩 2.图1显示模块句柄中的可执行文件,以使用shell服务访问其图标 像Vista一样,保持屏幕“实时”缩影的功能似乎

目前最大的潜在问题是:这是否有可能?或者Windows是否隐藏了它的大部分/所有精巧的部分,使其接近(如果不是完全)不可能


[编辑:]重新组织了问题

显而易见的起点是
SetWindowsHookEx(WH_SHELL,…)在创建或销毁顶级窗口时(以及其他一些相关事件,如激活不同的窗口、更改窗口标题等),将向您发送通知。

我认为至少在基本方面是可能的: 1.按照Jerry的描述设置壳钩 2.图1显示模块句柄中的可执行文件,以使用shell服务访问其图标


像Vista一样,保持屏幕“实时”缩影的功能似乎更具挑战性。

像我自己曾经研究过的那样,提前考虑将窗口放在前面。

除非从前台进程发出SetForegroundWindow(),否则SetForegroundWindow()将不起作用-切换到该窗口()或AttachThreadInput()kludge似乎都不起作用,但也许我做得不对。
无论如何,据我所知,没有办法使窗口前台像Windows一样好,如果您发现了一个实际工作的未记录调用,请告诉我。

我不太熟悉使用钩子,但据我所知,钩子需要设置在全局线程空间中,这意味着实际的ShellProc需要驻留在单独的.dll中,以便从实际的任务栏程序访问,这听起来像是准确的细分吗?