Utworzyłem aplikację AIR, która ma dwa okna. Pierwszym z nich jest okno główne (aplikacja z iskrowym oknem), a drugie to komponent (okno iskrowe). Używam Java do przechwytywania ekranu pulpitu za pomocą Flex-Java Bridge Flerry.Okno przechodzenia z przechwytywania
Oto kod do przechwytywania ekranu, który jest: -
HDC hdcWindow = User32.INSTANCE.GetDC(hWnd);
HDC hdcMemDC = GDI32.INSTANCE.CreateCompatibleDC(hdcWindow);
RECT bounds = new RECT();
User32Extra.INSTANCE.GetClientRect(hWnd, bounds);
int width = bounds.right;
int height = bounds.bottom ;
HBITMAP hBitmap = GDI32.INSTANCE.CreateCompatibleBitmap(hdcWindow, width, height);
HANDLE hOld = GDI32.INSTANCE.SelectObject(hdcMemDC, hBitmap);
GDI32Extra.INSTANCE.BitBlt(hdcMemDC, 0, 0, width, height, hdcWindow, 0, 0, WinGDIExtra.SRCCOPY);
Nie chcę się główne okno Flex do niewoli. Powinien zostać pominięty (przezroczysty) przed przechwyceniem.
Czy to możliwe, zmieniając konfigurację projektu flex?
Jeśli nie można tego zrobić w Flex i Java, w jakiej platformie można to zrobić?
[ 'SetWindowDisplayAffinity'] (https://msdn.microsoft.com/en-us/library/windows/desktop/dd375340.aspx)' (hWnd, WDA_MONITOR); ' – IInspectable
@iinspectable SetWindowDisplayAffinity nie pomija przechwyconego okna. Po prostu uchroni okno przed przechwyceniem. Nie chcę mieć czarnego ekranu w miejscu tego okna, chcę, żeby wyświetlał się jego tył okna. – Vishnu
W jaki sposób ktoś powinien wiedzieć, czego chcesz, kiedy twoje pytanie nie określa w sposób zdalny pożądanego zachowania? To, o co prosiłeś w swoim komentarzu, jest - ogólnie rzecz biorąc - niemożliwe. – IInspectable