Здравствуйте, kero, Вы писали:
K>А не покажете здесь этот ваш код — с другого desktop'а, с нюансом ?
HDESK d=CreateDesktop(dt_name,0,0,0,GENERIC_ALL,0);
...
STARTUPINFO startinfo;
startinfo.lpDesktop=dt_name;
startinfo.cb=sizeof(STARTUPINFO);
startinfo.dwFlags=0;
startinfo.lpReserved=0;
startinfo.lpReserved2=0;
startinfo.cbReserved2=0;
startinfo.lpTitle=0;
PROCESS_INFORMATION processinfo;
CreateProcess(0,proc_cmd,0,0,0,0,0,0,&startinfo,&processinfo);
...
HDC tmp=CreateCompatibleDC(0);
RECT r;::GetWindowRect(hwnd,&r);
HDC src=::GetDC(hwnd);
long style=::GetWindowLong(hwnd,GWL_EXSTYLE);
::CloseWindow(hwnd);
::RedrawWindow(hwnd,&r,0,RDW_FRAME|RDW_ERASE|RDW_INVALIDATE|RDW_ERASENOW|RDW_UPDATENOW|RDW_ALLCHILDREN);
::UpdateWindow(hwnd);
::ShowWindow(hwnd,1);
::SetWindowLong(hwnd,GWL_EXSTYLE,style|WS_EX_COMPOSITED);
::RedrawWindow(hwnd,&r,0,RDW_FRAME|RDW_ERASE|RDW_INVALIDATE|RDW_ERASENOW|RDW_UPDATENOW|RDW_ALLCHILDREN);
::UpdateWindow(hwnd);
// ::SendMessage(hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
::PrintWindow(hwnd,dst,0);
Изголялся по-всякому с вариантами перерисовки окна. Очевидно, я чего-то не понимаю... Но ведь на активном работает.
Хорошо работает выдирание каждого child-окна, но к сожалению, в нужной мне проге есть хитрые тулбары, которые пока не выдираются и поганят результат.