1

I have on remote assistence app coded in Delphi, and I need to take one screenshot of the whole screen without show my active form... If I set the AlphaBlend := true then when I take de screenshot the form hides sucessfully, but only if the aero is disabled, I want do know if theres a way to take this snapshot without disable the aero??

ps: hide my form take a screenshot and then show the form again is not a option!!

I need a way to take screenshot without show my actual form and without disable dwm!!! Anyone have some idea???

SUCESS IN WIN7

image1

FAILED IN WIN8

image2

SUSPEND WINLOGON.EXE and KILL DWM.EXE IN WIN8 WORKS FINE

image3

Remy Lebeau
  • 555,201
  • 31
  • 458
  • 770
  • 2
    You could always just move your window offscreen, take the screenshot, then move the window back. It is a perfectly valid option. – Remy Lebeau Mar 07 '16 at 15:58
  • 1
    Hoping for things behind your window to be drawn seems unrealistic. – David Heffernan Mar 07 '16 at 16:11
  • Why would you be taking a screenshot of the same screen where you're viewing it from anyway? Isn't this view going to be on a remote computer? Either way, apps like TeamViewer and GoToMeeting tend to show these windows too, just fade them out. – Jerry Dodge Mar 07 '16 at 16:34
  • @JerryDodge because I need to block the client screen while I'm connected with a form in full screen and always on top... So with the alphablend I can hide this form and get the desktop to keep working on the machine while de screen client is blocked... you understand me? sry about my english! if you dont understand something please feel free to ask me anything. thanks... – user2581705 Mar 07 '16 at 18:45
  • any ideas to solve this problem? – user2581705 Mar 07 '16 at 18:46
  • 2
    Hide your window, take your screenshot, show your window – David Heffernan Mar 07 '16 at 20:42
  • @DavidHeffernan in this case the client will see the desktop and I wanna hide desktop while i'm connected. do you have some idea to solve this? thanks – user2581705 Mar 08 '16 at 01:06
  • None of this makes any sense to me any more. I can't see any reason why you can't do what you say you can't do. Clearly I don't understand any of this. Good luck. – David Heffernan Mar 08 '16 at 07:35

1 Answers1

0

The following works for me:

procedure TForm2.Button1Click(Sender: TObject);
begin
    Self.AlphaBlend := True;
    Self.AlphaBlendValue := 0;
    try
        Toolkit.CaptureDesktop(Image1);
    finally
        Self.AlphaBlend := False;
    end;
end;

enter image description here

For another technique, you can see:

Community
  • 1
  • 1
Ian Boyd
  • 246,734
  • 253
  • 869
  • 1,219