C# 如何检测何时共享我的应用程序窗口

C# 如何检测何时共享我的应用程序窗口,c#,windows,desktop-application,screensharing,C#,Windows,Desktop Application,Screensharing,当我的任何桌面应用程序窗口被任何屏幕共享工具共享时,如何在Windows操作系统级别进行检测。我确信,如果没有Windows操作系统的支持,任何屏幕共享工具都无法向远程用户共享屏幕。我想知道当任何桌面应用程序窗口被屏幕共享时,设置/完成的“事情”是什么。我正在编写一个桌面应用程序,当我的应用程序窗口被屏幕共享时,我希望表现得有所不同。我正在寻找一个通用的解决方案,而不是特定的屏幕共享工具。任何手动检测它的指针或围绕它的代码片段都将非常有帮助。谢谢。如果一个屏幕共享工具只是将桌面DC的截图转换成位

当我的任何桌面应用程序窗口被任何屏幕共享工具共享时,如何在Windows操作系统级别进行检测。我确信,如果没有Windows操作系统的支持,任何屏幕共享工具都无法向远程用户共享屏幕。我想知道当任何桌面应用程序窗口被屏幕共享时,设置/完成的“事情”是什么。我正在编写一个桌面应用程序,当我的应用程序窗口被屏幕共享时,我希望表现得有所不同。我正在寻找一个通用的解决方案,而不是特定的屏幕共享工具。任何手动检测它的指针或围绕它的代码片段都将非常有帮助。谢谢。

如果一个屏幕共享工具只是将桌面DC的截图转换成位图并编码成jpg,然后通过网络发送,那该怎么办?除非你dll注入并代理那些api调用,比如
GetDC
,否则我不确定是否有可靠的方法。也许,请务必阅读备注。这个问题基于这样一个错误的前提,即操作系统中存在“某物”,可以让你毫不含糊地识别正在进行的屏幕捕获。就像操作系统中没有任何东西允许您判断用户是否正在运行计算器应用程序一样。或文本编辑器。@IInspectable-谢谢回复。不过,我至少可以在任务管理器中检查notepad.exe是否正在运行,这将确保notepad确实在运行。类似地,如果可能的话,我正在寻找屏幕共享后操作系统可能发出的跟踪(我可以检查的任何东西)。您无法检查在某个时刻将要存在的每个文本编辑器。所以,不,你甚至不能这样做。如果一个屏幕共享工具只是把桌面DC的截图转换成位图,然后编码成jpg,然后通过网络发送呢?除非你dll注入并代理那些api调用,比如
GetDC
,否则我不确定是否有可靠的方法。也许,请务必阅读备注。这个问题基于这样一个错误的前提,即操作系统中存在“某物”,可以让你毫不含糊地识别正在进行的屏幕捕获。就像操作系统中没有任何东西允许您判断用户是否正在运行计算器应用程序一样。或文本编辑器。@IInspectable-谢谢回复。不过,我至少可以在任务管理器中检查notepad.exe是否正在运行,这将确保notepad确实在运行。类似地,如果可能的话,我正在寻找屏幕共享后操作系统可能发出的跟踪(我可以检查的任何东西)。您无法检查在某个时刻将要存在的每个文本编辑器。所以,不,你甚至不能那样做。