Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.11.29;
Скачать: [xml.tar.bz2];

Вниз

"Чужое" окно.   Найти похожие ветки 

 
MonoLife ©   (2009-10-14 16:52) [0]

Приветствую!
ShowWindow(HWND, SW_SHOWNORMAL);
SetForegroundWindow(HWND);
Как убедиться, что это окно окончательно "нарисовалось" над всеми остальными окнами на рабочем столе?


 
clickmaker ©   (2009-10-14 17:00) [1]

GetForegroundWindow() = HWND


 
MonoLife ©   (2009-10-14 17:10) [2]


> clickmaker ©   (14.10.09 17:00) [1]

спасиб!


 
MonoLife ©   (2009-10-14 17:45) [3]

Не получилось, однако.. Иду не тем путем?
Поясню, хочу сделать скриншот нужного окна.
0. ...
1. Нахожу окно по заголовку
2. ShowWindow(HWND, SW_SHOWNORMAL);
3. SetForegroundWindow(HWND);
4. GetWindowRect(HWND, Rect);
5. repeat
   until GetForegroundWindow()=HWND;
6. ...Canvas.CopyRect(Rect, canvas, Rect);
7. Сохраняю битмэп.

Если нужное окно было позади других скрин делается раньше, чем окно "нарисовалось". Спасает только sleep() перед CopyRect(). Но вот интервал задержки неизвестно сколько делать, на разных компах по разному...


 
Юрий Зотов ©   (2009-10-14 17:55) [4]

Попробуйте так:
repeat
 Sleep(1)
until GetForegroundWindow = HWND;


 
MonoLife ©   (2009-10-14 18:06) [5]

Благодарю. Работает!


 
Юрий Зотов ©   (2009-10-14 18:10) [6]

А еще лучше так:

repeat
SwitchToThread
until GetForegroundWindow = HWND;


 
MonoLife ©   (2009-10-14 18:43) [7]

Нет, всё не так, как я думал:(
Пока требуемое окно свернуто на панели задач работает и
repeat
Sleep(1)
until GetForegroundWindow = HWND;

и
repeat
SwitchToThread
until GetForegroundWindow = HWND;

Но, если окно просто, позади других, то все равно, не успевает перерисоваться.


 
Юрий Зотов ©   (2009-10-15 13:35) [8]

Посмотрите функции API:

- GetWindowThreadProcessID (дает ID потока и процесса окна)
- OpenProcess (дает хэндл процесса)
- WaiForInputIdle (ждет, когда процесс выйдет на ожидание ввода юзера)


 
Юрий Зотов ©   (2009-10-15 13:36) [9]

И CloseHanlle после всего этого, конечно (освободить хэндл процесса).


 
MonoLife ©   (2009-10-15 16:44) [10]


> Юрий Зотов ©   (15.10.09 13:35) [8]
>
> Посмотрите функции API:

Спасибо за участие, Юрий, функции приму к сведению, hlp по ним имеется :).



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.11.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
2-1255428458
Franzy
2009-10-13 14:07
2009.11.29
"Убить" программу


15-1254227405
istok20
2009-09-29 16:30
2009.11.29
WiMax...


3-1230124390
interbase
2008-12-24 16:13
2009.11.29
без sp_executeSQL не обойтись?


2-1255358930
Nutz
2009-10-12 18:48
2009.11.29
Визуальное отбражение кода


15-1254379545
@!!ex
2009-10-01 10:45
2009.11.29
Помогите с оплатой счета по PayPal





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский