PrintScreen only active window

后端 未结 6 2054
太阳男子
太阳男子 2021-01-07 08:22

I\'m writing a simple Windows Forms utility to screenshot either the entire screen or an active window and save the file. The winform has a button called \'Capture\' that, w

6条回答
  •  生来不讨喜
    2021-01-07 09:00

    As far as I can see your code uses the bounds of its own form to capture the "active" window. That is probably not what you intend.

    If you want to use the mouse to "print" a window (and not hotkey which probably is easier to implement) you need to be able to from your own form let the user point to another window to capture. Here is an idea describing how to do that:

    1. When the user presses the "Capture" button capture the mouse and initiate a drag operation.
    2. Let the user drag the mouse (perhaps now having a "bullseye" or a "camera" cursor) to the window to capture.
    3. When the user releases the mouse determine the window it was on top and use the location and size of this window to capture the correct pixels.

    You will probably need to use P/Invoke to get information about all top-level windows on the desktop.

    Note that "mouse capture" is very different from "screen capture". When an application "captures the mouse" it takes ownership of the mouse cursor and doesn't the ability to track the mouse even when it is moved outside the bounds of the window of the application.

提交回复
热议问题