Winapi 重新创建windows';在另一个地方打开自己的托盘图标窗口

Winapi 重新创建windows';在另一个地方打开自己的托盘图标窗口,winapi,system-tray,Winapi,System Tray,我有一个类似WindowBlinds的应用程序,它可以重新创建窗口外观。但我现在要用托盘的窗户。 我反汇编了Shell_NotifyIcon()func,发现它使用了Shell_NotifyIconW()func,然后使用了just by ordinal(来自shellw.dll)函数215来创建、修改和删除图标 在这个函数中,我发现我可以通过hwnd找到WndProc(在反汇编代码中,我通过FindWindowW(L“Shell_TrayWnd”,0);)得到hwnd),但是如何找到呢 有人用

我有一个类似WindowBlinds的应用程序,它可以重新创建窗口外观。但我现在要用托盘的窗户。 我反汇编了Shell_NotifyIcon()func,发现它使用了Shell_NotifyIconW()func,然后使用了just by ordinal(来自shellw.dll)函数215来创建、修改和删除图标

在这个函数中,我发现我可以通过hwnd找到WndProc(在反汇编代码中,我通过FindWindowW(L“Shell_TrayWnd”,0);)得到hwnd),但是如何找到呢

有人用这个吗?
请提供帮助。

资源管理器刚刚收到一条WM_COPYDATA消息IIRC,因此您可以子类化(您需要处于相同的过程中)并捕获该消息,或者使用工具栏消息与托盘图标列表交互,请参阅开源应用程序


你也可以看看一些开源的替代shell,它们有很多没有文档记录的东西。我用一个有点关联的答案回答了其中几个问题。

“但是如何”什么?你的问题很不清楚。我如何获取WndProc中用于trayicon区域的代码。我也尝试拦截Shell_NotifyIcon,对于其他应用程序,拦截可以正常工作。它们只是无法启动。感谢linksI所说的在explorer Shell进程中拦截Shell_NotifyIcon生成的消息,而不是每个应用程序。无论哪种方式,您都必须处理ansi和unicode。