1
votes

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

1
You could always just move your window offscreen, take the screenshot, then move the window back. It is a perfectly valid option.Remy Lebeau
Hoping for things behind your window to be drawn seems unrealistic.David Heffernan
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
@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
Hide your window, take your screenshot, show your windowDavid Heffernan

1 Answers

0
votes

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: