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

Вниз

Как   Найти похожие ветки 

 
cyril   (2003-05-07 20:56) [0]

Проблема заключается в следующем:
Есть два приложения, которы обмениваются друг с другом командами
Одно из них мое, и когда я получаю команду, назовем ее
- "показать окно приложения", то пытаюсь выполнить следующий код

SetForegroundWindow(Application.Handle);

Вроде бы должно появиться окно приложения, ан нет, начинает
мигать кнопка на таскбаре, что совершенно не в тему.

Вопрос: можно ли что-нибудь с этим поделать


 
Dmk   (2003-05-07 21:28) [1]

Скорее всего нужно так:
SetForegroundWindow(Application.MainForm.Handle);


 
Романов Р.В.   (2003-05-07 21:49) [2]

Способ 3
Как утверждает документация, SetForegroundWindow работает как нам нужно, только если вызывающий её процесс является активным. А активен тот процесс, чей поток обрабатывает пользовательский ввод. Оказывается, наш процесс может "прикинуться" активным, подключив свой поток к обработке пользовательского ввода. Это осуществляется при помощи функции AttachThreadInput. После вызова SetForegroundWindow можно будет отключиться от чужого потока, используя ту же функцию (но передавая в качестве третьего параметра FALSE, а не TRUE).

Реализация этой идеи выглядит так.

HWND hCurrWnd;
int iMyTID;
int iCurrTID;

hCurrWnd = ::GetForegroundWindow();
iMyTID = GetCurrentThreadId();
iCurrTID = GetWindowThreadProcessId(hCurrWnd,0);

AttachThreadInput(iMyTID, iCurrTID, TRUE);

// hWnd - дескриптор окна.
SetForegroundWindow(hWnd);

AttachThreadInput(iMyTID, iCurrTID, FALSE);


(C) Александр Шаргин


 
cyril   (2003-05-07 21:56) [3]

Большое спасибо, мне существенно полегчало ;-)



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

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

Наверх





Память: 0.45 MB
Время: 0.006 c
3-59607
Rise
2003-04-25 14:58
2003.05.19
DBGrid и Fileds?


1-59802
bkv
2003-05-07 10:21
2003.05.19
Мастера, обьясните что такое Visibroker и с чем его едят?


4-59998
DelphiN!
2003-03-21 12:15
2003.05.19
Как узнать handle текущего элемента и окна(имеющего фокус)


1-59672
Patrick
2003-05-07 10:42
2003.05.19
Кодировка клавиш


14-59917
Nikkk
2003-04-29 16:19
2003.05.19
русификатор для D7





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский