關於抓不同 desktop 屏幕的問題. 如果知道當前屏幕顯示的是哪個 Desktop 呢?Windows 可以有多個 WindowStation 每個 WindowStation 又可以有多個 Desktop.
而顯示器同一時間只能顯示一個 Desktop 那我如何知道,當前顯示器上顯示的是哪個 Desktop 呢?

解决方案 »

  1.   

    我做的是一個遠程桌面的東東,數據傳輸都已經可以了。現在只有一個問題就是,比如我做成服務,在登錄以前,這時是在 Winlogon 桌面,而進入了系統, 這時又在 Default 桌面,而在屏保時,又是另一個桌面。服務服務默認是在 Winlogon 桌面。而進了系統後,就抓不到屏了,因為現是在 Default 桌面下。 我現在的想法就是得到當前顯示器顯示哪個桌面,這樣我就可以用 SetThreadDesktop 把線程切到對應的桌面,就可以抓屏了。但問題是,我如何知道當前顯示哪個桌面呢?
      

  2.   

    关注ing...给点个人意见,系统缺省情况下应该只有: default winlogon disconnect这三个desktop,正常启动并登录后进入default,这样你就可对default进行抓屏,不管系统进入哪种状态,屏保或者注销,系统都会有消息发送,你接收到指定的消息后即切换到对应的desktop即可,但这样可能存在一些问题,如果是用户程序创建了新的WindowStation\desktop并切换,那样系统好像不会给出任何提示,因为我发现在desktop之间进行切换其速度相当快。
    查查MSDN吧,看看是否有Active Desktop,仔细看看WindowStation和desktop的Enum函数,看看有没有突破吧
      

  3.   

    看了 VNC 的源碼是用 OpenInputDesktop  得到當前正在顯示的桌面的句柄