greenshot / greenshot

Greenshot for Windows - Report bugs & features go here: https://greenshot.atlassian.net or look for information on:
https://getgreenshot.org
GNU General Public License v3.0
4k stars 577 forks source link

After multiple Greenshots with Print Screen to MS Paint - on WIN 10 Pro Enterprise the printscreen no longer activates Greenshot Region Capture #426

Open stixoffire opened 2 years ago

stixoffire commented 2 years ago

After multiple Greenshots with Print Screen to MS Paint - on WIN 10 Pro Enterprise the print screen no longer activates Greenshot Region Capture, you must go to task bar window and select it as an option form Greenshot.

1: Use Windows 10 Enterprise Pro 64 Build 20H2 ( I dont know about other builds ) 2: Print Screen to MS Paint. Do this about 10 times dont save anything or close anything just keep snap shotting. 3: Eventually the print screen activation of region capture no longer functions and you must manually do it from the task tray and right click the greenshot icon and select capture region. If you close the windows it might start functioning again.

I expect it to just take shot after shot up to hundreds if need be.

Greenshot Version 1.2.10.6 .this occurred in a previous version as well.

ThomasChr commented 2 years ago

I can confirm the problem, this seems to be happening to me for years, but I‘ve been never been able to pin it down. After some time screenshoting a region with the print key doesn‘t work anymore.

It maybe has to do with the way remote desktop captures key presses? I‘m accessing many rdp sessions along the day.

stixoffire commented 2 years ago

I have not looked at the code; but greenshot appears to keep the process open until I close MS Paint - as when I close it I got a sound from greenshot. I am not sure why the process must remain open / active . Maybe it is some limitation on the print screen function in windows process. Maybe I will try on a box with out print screen to hit it several times and manually paste into paint and see what happens ...

Lakritzator commented 2 years ago

Sorry for the delay, but it's so hot that I sit less behind my computer.

It's most likely what @stixoffire says, Greenshot keeps a link with the process and waits for it to finish, so it can clean up the temporary file. Why this is limited to "about 10 times" I do not know.

I'll look at it, but do not want to "just" fix it so that it can do more exports. I like to know what is the best option. Back then when I implemented this, I never really spend much time on the whole user-experience. I'd love to know what users actually need.

What is currently done:

  1. Screenshot is stored as a temporary file
  2. An MS Paint process is started with this temporary file as arguments to the commandline of MS Paint
  3. The process is awaited until it finished
  4. The temporary file is deleted.

I'm not 100% sure, would need to look, if the capture is kept in memory during this time.

Now if Greenshot doesn't track the process, the file will just sit there, and nobody will clean it up....

I'm not sure yet why people actually use MS Paint, maybe this is "just because", and we might be able to provide a better solution. I'm also not sure if the whole deletion makes sense.

So I would love to hear more about why you export to MS Paint, and also what you do with it afterwards.

stixoffire commented 2 years ago

First to answer the question about MS Paint I do a lot of work where by people need to have examples of issues - I need to screenshot many different tabs or information windows of various applications and systems at once - and since I am working with multiple systems and users of systems - I am constantly screenshotting for later use to put together as a series in either multiple emails or in multiple documents and I get called away during these processes am frequently multitasking during the process. I also have opportunity to put writing on them and red boxing of things in the captured image - which is why paint a low budget (low resource) editor works fine. Gimp while I use it is way too much for this kind of stuff (kindergarten version vs the college version).

I am thinking if the application is called and opened with the image - at that point greenshot can exit the thread - no need to wait for me to close anything it has done its part of the process, after all the whole point was to capture and provide it to the application.

Lets say this for example - I am told to take a package and deliver it to your house. I do that . Now should I await until you are finished doing stuff with that box or should I just leave now that I have done my part. I think UPS, FedEx would argue it is more efficient to drop off the package and leave.

Putting that back into context - it takes resources to store references and to run threads and keep the temporary file, none of those things are required after the app has it (of course the temporary file is probably linked to MS Paints open window).

I have not checked into cpu usage / memory usage. I also noticed just now I had to click on the taskbar and then hit print screen. I switched to interactive mode and that seems to have resolved that issue.