Re: ScreenShot von nichtsehbaren Desktop
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Zitat:
Gruß xaromz |
Re: ScreenShot von nichtsehbaren Desktop
Kann es sein das Du die Screens im nicht im normalen "Usermodus" machst?
Ich hatte früher ein ähnliches Problem für eine "Remotedesktopverbindung". Der dafür aufgesetzte Dienst war auch nicht in der Lage meinen Desktop "zusehen". |
Re: ScreenShot von nichtsehbaren Desktop
letzte Antwort exilent, auch danke für das Beispielprogramm.
Kannst du mir auchnoch ferraten wie du das Problem damals gelöst hast? Danke. |
Re: ScreenShot von nichtsehbaren Desktop
Noch gar nicht. Hab mich nachher auch net weiter drum gekümmert. Aber ich werden das im laufe diesen Jahres sicher nochmal aufnehmen (müssen).
|
Re: ScreenShot von nichtsehbaren Desktop
Normalerweise kann man das aus einem Service so machen (DoScreenshot ist eine ganz normale Screenshot Routine). IMHO funktioniert das aber nur aus einem eigenen Thread - denn die Zuordnung Thread <-> Desktop ist 1:1!
Delphi-Quellcode:
//------------------------------------------------------------------------------
procedure TThreadScreenShot.Execute; //------------------------------------------------------------------------------ // Thread ausführen //------------------------------------------------------------------------------ var hDesktop : HDESK; hWinstation : HWINSTA; pDesktopName : array[0..255] of char; Desktopname : string; dwLen : DWORD; begin hWinstation := OpenWindowStation('winsta0', true, GENERIC_ALL); if hWinstation <> 0 then begin if SetProcessWindowStation(hWinstation) then begin GetUserObjectInformation(OpenInputDesktop(0, false, GENERIC_ALL), UOI_NAME, @pDesktopname, 256, dwLen); SetString(DesktopName, pDesktopName, dwLen-1); hDesktop := OpenDesktop(PAnsiChar(Desktopname), 0, false, GENERIC_ALL); if hDesktop <> 0 then begin if SetThreadDesktop(hDesktop) then begin DoScreenShot(DesktopName); end; CloseDesktop(hDesktop); end; end; CloseWindowStation(hWinstation); end; end; |
Re: ScreenShot von nichtsehbaren Desktop
Die Frage sollte eigelich sein wie man den Anmeldescreen sieht ohne LogonSession.
Alles andere übernimmt dann ja der Kontex des angemeldeten Benutzers. |
Re: ScreenShot von nichtsehbaren Desktop
Das machst Du dann so (ohne das ganze Winstation-Gelumpe):
Delphi-Quellcode:
HDesktop := OpenDesktop ('Winlogon', 0, False, DESKTOP_ALL);
if (HDesktop <> 0) then begin if SetThreadDesktop (HDesktop) then begin DoScreenshot('Winlogon'); CloseDesktop (HDesktop); end; end; |
Re: ScreenShot von nichtsehbaren Desktop
Wäre net schlecht! Ich werde sich bald drauf zurückkommen da ich wie schon erwähn das alte Projekt bald wieder aufnehmen will.
|
Re: ScreenShot von nichtsehbaren Desktop
ein dank an alle!
Mache mich gleich an die Arbeit und werde das testen! Gruß Sascha |
Re: ScreenShot von nichtsehbaren Desktop
weiß noch jemand den unterschied zwischen:
MAXIMUM_ALLOWED, GENERIC_ALL und DESKTOP_ALL? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz