如何检测运行ASP.NET程序的监视器?

Siv*_*vvy 2 c# asp.net multiple-monitors

我已经阅读了大量其他问题并搜索了这个问题,但如果我使用winforms,我只能弄明白该怎么做.我正在编写一个库,该库的一个功能是处理日志记录.我正在实现的功能之一是在将问题写入日志之前自动获取页面的屏幕截图.这个问题是我不知道哪个显示器截取屏幕截图,所以如果用户将浏览器移动到不同的显示器,我仍然会拍摄主显示器.

public static Bitmap ScreenShot(string saveLocation, string fileName)
{
    Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
    Graphics.FromImage(bitmap).CopyFromScreen(0, 0, 0, 0, bitmap.Size);
    string savePath = Path.Combine(Path.GetDirectoryName(saveLocation), "ScreenShots");
    if (!Directory.Exists(savePath))
        Directory.CreateDirectory(savePath);
    bitmap.Save(Path.Combine(savePath, fileName), ImageFormat.Png);
    return bitmap;
}
Run Code Online (Sandbox Code Playgroud)

我试过Screen.FromControl(),但由于它不是一个winforms应用程序,我没有任何System.Windows.Forms.Controls可供查找.

ASP.NET有任何等价物吗?或者我可以明确地转换为winform控件的东西?

Joe*_*orn 7

这不行.您的c#代码在Web服务器上运行,而不是在用户的Web浏览器上运行,而不是在他们的计算机上运行.代码可以访问的唯一监视器是连接到Web服务器的监视器.

这可能似乎适用于您的开发平台,但仅限于您的Web服务器和客户端计算机是同一台计算机.

您可以期待的最好的方法是在页面上包含可以捕获的flash或silverlight对象,甚至可能无法正常工作.