AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

CreateWindowStation`?

Ein Thema von Sascha999999999 · begonnen am 7. Jul 2007 · letzter Beitrag vom 2. Okt 2007
 
Sascha999999999

Registriert seit: 28. Sep 2006
45 Beiträge
 
#1

CreateWindowStation`?

  Alt 7. Jul 2007, 10:59
Hallo, ich möchte für einen Servies einen interactiven Desktop erstellen und diesen auch "Abfotografieren" können.

Erstelle ich einen Desktop, so wird dieser beim Screenshot leider immer weiß.

Andere Dienste wie pcAnywhere oder der Microsoft Terminal Services können das ja auch iregndwie.

Also erstes muss man wohl eine Window Station erstellen, und dann den Desktop.

Delphi-Quellcode:
procedure DoScreenShot();
var
  c: TCanvas;
  r: TRect;
  Bild: TBitMap;
begin
  c := TCanvas.Create;
  Bild:=TBitMap.Create;
  c.Handle := GetWindowDC(GetDesktopWindow);
  try
    r := Rect(0, 0, 800, 600);
    Bild.Width := 800;
    Bild.Height := 600;
    Bild.Canvas.CopyRect(r, c, r);
  finally
    ReleaseDC(0, c.Handle);
    Bild.SaveToFile('C:\screencapture.bmp');
    c.Free;
  end;
end;

procedure TVDesk.Execute;
var
   hDesktop : HDESK;
   hWinstation : HWINSTA;
begin
   hWinstation := CreateWindowStation('TVStation', 0, STANDARD_RIGHTS_REQUIRED or WINSTA_ACCESSCLIPBOARD or WINSTA_ACCESSGLOBALATOMS or WINSTA_CREATEDESKTOP or WINSTA_ENUMDESKTOPS or WINSTA_ENUMERATE or WINSTA_EXITWINDOWS or WINSTA_READATTRIBUTES or WINSTA_READSCREEN or WINSTA_WRITEATTRIBUTES, nil);
   if hWinstation <> 0 then
   begin
      if SetProcessWindowStation(hWinstation) then
      begin
         hDesktop := CreateDesktop(PAnsiChar('TVDesktop'), nil, nil, 0, DESKTOP_CREATEMENU or DESKTOP_CREATEWINDOW or DESKTOP_ENUMERATE or DESKTOP_HOOKCONTROL or DESKTOP_JOURNALPLAYBACK or DESKTOP_JOURNALRECORD or DESKTOP_READOBJECTS or DESKTOP_SWITCHDESKTOP or DESKTOP_WRITEOBJECTS or STANDARD_RIGHTS_REQUIRED, nil);
         if hDesktop <> 0 then
         begin
            if SetThreadDesktop(hDesktop) then
            begin
               DoScreenShot();
            end;
            CloseDesktop(hDesktop);
         end;
      end;
      CloseWindowStation(hWinstation);
   end;
end;
Danke für jede hilfe. Oder weiß jemand wie der "Microsoft Terminal Services" das schafft?
Sascha999999999
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:50 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