HWND可以在进程之间共享,否则SendMessage()将不起作用.然而,它们限定在特定桌面上,桌面与会话相关联.每个登录用户都有一个会话.会话0是特殊的,即运行服务的会话.并且有一个安全的桌面,您在登录时看到的或当您按Ctrl + Alt + Del时,您不会弄乱密码输入框.但只要两个进程在同一台桌面上运行,您就不会遇到任何麻烦.
HDC是阴暗的,从未尝试过.我不推荐它.您始终可以使用GetDC()从HWND创建一个.
所有GDI句柄都存储在映射到每个进程的表中.表中的条目包含拥有进程的进程ID,并在每次对句柄的GDI访问时检查.
因此,(具有讽刺意味的是),GDI处理 - 包括HDC - 在系统范围内是有效的.但只能从创建它们的过程中使用.
此页面记录了GDI对象的进程关联.当然,作为一个反点,值得注意的是一些COM函数和像WM_PRINT这样的窗口消息没有任何进程间限制并且它们都是通过HDC的,所以他们显然必须在幕后做一些事情来从一个进程封送HDC到下一个.