Add "capture application" method with context menu and hotkey
A feature I miss from WinSnap is the ability to capture the focused application's parent window along with any child windows. Currently, you must use "capture full screen" and manually crop the screenshot to achieve the same result.
Adding this feature is straightforward-ish.
Here's my implementation (en-US only and sans context menu icon):
Please see my comments in the second commit.
@Robin: Before I was using Greenshot, I was using WinSnap. WinSnap has two capture modes Greenshot does not:
Capture object (see link below under "Capture a Separate Popup Menu")
Capture application (see link below under "Capture a Menu Alongside with the Main Window")
Both are described here: http://www.ntwind.com/tutorials/how-to-capture-a-popup-menu-with-winsnap.html
Essentially, "capture application" creates a region sized to the main window of the focused application, and captures that region. This allows you to capture the main application window plus any child windows plus any controls/popups and their states (e.g., open dropdown menus.)
How is this different from "capture window"?
Using "capture window" from the context menu will force you into interactive mode and you will have to select the window you want to capture. If you want to capture the main window of a complex application, you will have to carefully select the main window.
Using "capture window" from the hotkey will capture the main window and any child windows, but using "capture window" from the context menu or hotkey will close any open controls or popups.
I tried to implement a facsimile of "capture application." (There's a bug in how WindowRectangle is calculated in WindowsHelper.cs, so maximized windows are not captured correctly using WindowRectangle.) WinSnap's "capture object" is a bit more complex, and I did not attempt that.
Very nice of you to support us with code, for a feature you are missing.
I wish all users would do this, but I know that currently Greenshot is to complicated.
I somehow fail to understand the difference between the already available "Alt + PrntScrn" and your implementation.
How can I understand this? Is the only difference that you take the parent of the current active window?
I guess I will have to try this out