【问题标题】:C# - Capture screenshot of window under pointerC# - 在指针下捕获窗口的屏幕截图
【发布时间】:2012-09-30 02:40:58
【问题描述】:

我正在制作一个屏幕捕捉应用程序。

有关于如何捕获活动窗口的答案,但我希望能够在鼠标下捕获一个窗口,即使它不活动。

我是否正确理解我需要在鼠标下找到窗口句柄然后调用Image.captureWindow(IntPtr handle)

【问题讨论】:

标签: c# screenshot


【解决方案1】:

使用以下函数获取屏幕上下文中的光标位置

    POINT p;
if (GetCursorPos(&p))
{
    //cursor position now in p.x and p.y
}

现在你将不得不使用 EnumWindow 函数来枚举所有顶级窗口,然后为每个尝试这个

    if (ScreenToClient(hwnd, &p))
{
    //p.x and p.y are now relative to hwnd's client area
}

当你得到一个窗口的两个值时,这就是你的光标所在的窗口。这是一个如何从句柄捕获窗口的示例

http://www.codeproject.com/Articles/19192/How-to-capture-a-Window-as-an-Image-and-save-it

希望对你有帮助

【讨论】:

  • Stackoverflow 不允许我回答我自己的问题,我想出了如何让它发挥作用。我使用了来自developerfusion.com/code/4630/capture-a-screen-shot 的代码` var curWindowHndl = WindowFromPoint(Cursor.Position.X, Cursor.Position.Y); ScreenCapture cs = 新的 ScreenCapture(); cs.CaptureWindowToFile(curWindowHndl, "capture.bmp", ImageFormat.Bmp);`你觉得你的代码更干净吗?
  • 我试图用不同的方式向你解释同样的事情。从点开始的窗口将为您提供确切的窗口(请记住,所有按钮、状态栏、工具栏按钮、文本框等都是窗口),我相信您不想捕获它们。我假设您只想捕获顶级窗口。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 2012-01-04
  • 2021-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多