Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在创建一个实用程序,它使用全局挂钩将一些(用户可自定义的)图标绘制到桌面上的其他窗口上。由于位图对象特定于一个进程,因此在绘制它们之前,我在每个进程中为这些图标创建单独的 HBITMAP 对象,并且所有这些句柄都存储在 dll 的共享段中。
现在,当我的程序中(由用户)删除一个图标时,应该删除这些不同进程中它的所有 HBITMAP 对象。我可以在我的主程序中使用 DeleteObject() 执行此操作,还是必须在创建它的过程中删除每个句柄?
当然,您必须从创建它们的进程中删除它们 - 即使它对您有用,但对于不同的 Windows 版本,它可能不会。
GDI 对象的句柄通常是私有进程。无论如何,您都可以检查 DeleteObject 的返回值。
我只是在猜测这个...... 你应该使用一个钩子来钩到另一个窗口。