[ anon68680 @ 11.03.2010. 18:56 ] @

Imam aplikaciju koja radi kao servis u okviru SYSTEM naloga, koja treba po odredjenom vremenskom intervalu da uhvati screenshot korisnika koji je ulogovan na racunar. Trenutno moja funkcija za screenshot izgleda ovako:

Code:

var
  DC : HDC;
begin
  DC := GetDC (GetDesktopWindow) ;
  try
   bm.Width := GetDeviceCaps (DC, HORZRES) ;
   bm.Height := GetDeviceCaps (DC, VERTRES) ;
   BitBlt(bm.Canvas.Handle, 0, 0, width, height, DC, 0, 0, SRCCOPY) ;
  finally
   ReleaseDC (GetDesktopWindow, DC) ;
  end;


Problem je u tome sto kada se ova funkcija koristi u Servis tipu aplikacije, dobijam samo belu sliku, dok kada se koristi u obicnoj aplikaciji radi. Pretpostavljam da je problem u tome sto funkcija hvata desktop handle korisnika koji je pokrenuo aplikaciju, a to je u slucaju servis aplikacije SYSTEM, a ne korisnik ciji je screenshot meni potreban.

Ima li neko ideju kako da resim ovo? Verovatno treba nekako da dobijem handle desktopa tog korisnika.
[ abitbp6 @ 11.03.2010. 20:44 ] @
TService.Interactive na True
[ deerbeer @ 11.03.2010. 21:05 ] @
http://www.derkeiler.com/Newsg...sdk.security/2003-09/0234.html
Primer je u c++ , ali valjda ces se vec snaci ..
[ anon68680 @ 11.03.2010. 21:23 ] @
Interactive = True je posluzilo. Hvala na odgovorima.