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

Вниз

Блокировать попытки приложения выйти на передний план   Найти похожие ветки 

 
Tack   (2008-02-26 12:08) [0]

Привет.

Запускаю стороннее приложение через CreateProcess с флагом SW_SHOWMINNOACTIVE, чтобы оно отработало и закрылось, не перехватывая фокус ввода (например, при вызове через планировщик каждый 5 минут).

При запуске данное приложение хоть и минимизируется, но все равно его кнопка на панели задач активируется и фокус ввода из текущего окна уходит.

Очевидно, данное приложение само себя выводит на передний план.

Можно ли как-нибудь блокировать его попытки захватить фокус?


 
Thrasher ©   (2008-02-26 12:59) [1]

Не могу понять, где  CreateProcess вызывается с параметром SW_SHOWMINNOACTIVE.


 
Tack   (2008-02-26 13:22) [2]


var
 ExeFile: String;
 si: TStartupInfo;
 pi: TProcessInformation;
begin
 ZeroMemory(@si, SizeOf(si));
 si.cb := SizeOf(si);
 si.dwFlags := STARTF_USESHOWWINDOW;
 si.wShowWindow := SW_SHOWMINNOACTIVE;

 if not CreateProcess(PAnsiChar(ExeFile), PAnsiChar(ExeFile), nil, nil, FALSE,
   NORMAL_PRIORITY_CLASS, nil, nil, si, pi) then ...


 
clickmaker ©   (2008-02-26 13:23) [3]

а почему не SW_HIDE?


 
Tack   (2008-02-26 13:27) [4]


> а почему не SW_HIDE?
>


Приложение после показа всегда выходит на передний план. Минимизация срабатывает, SW_HIDE не срабатывает

скорее всего там в коде приложения где-то стоит ShowWindow с выводом своего окна наперед


 
Thrasher ©   (2008-02-26 14:21) [5]

Пошли окну сообщение  WM_Close. Handle уже есть ведь


 
Tack   (2008-02-26 15:04) [6]

Ключевые слова здесь
не перехватывая фокус ввода

закрыть я его всегда успею


 
Leonid Troyanovsky ©   (2008-02-26 22:13) [7]


> Tack   (26.02.08 15:04) [6]

Если [2] исполняется из foreground процесса, то все объяснимо, msdn.
А wShowWindow пускаемое  приложение вольно проигнорировать.
(Хотя, "с выводом своего окна наперед" - преувеличение).

--
Regards, LVT.


 
Tack   (2008-02-27 10:21) [8]


> (Хотя, "с выводом своего окна наперед" - преувеличение).


почему?
ShowWindow(hwnd, SW_SHOWNORMAL) - разве не активирует окно на переднем плане?


 
Leonid Troyanovsky ©   (2008-02-27 13:07) [9]


> Tack   (27.02.08 10:21) [8]

> ShowWindow(hwnd, SW_SHOWNORMAL) - разве не активирует окно
> на переднем плане?

Активирует, при первом вызове.
Но, не все так просто, приложение может и не делать то, что
оно must use or must call (see also msdn: ShowWindow Function).

А речь, видимо, именно о подобном.

--
Regards, LVT.


 
Tack   (2008-02-27 13:17) [10]

И кто его, это приложение, написал на мою голову... :(

спасибо за консультацию



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

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

Наверх





Память: 0.46 MB
Время: 0.007 c
2-1225627652
Rav4
2008-11-02 15:07
2008.12.14
Отобрать записи и расчитать значения по полю в БД


2-1225870583
Scarllett
2008-11-05 10:36
2008.12.14
Как ухапшить файл


4-1202120742
igor666
2008-02-04 13:25
2008.12.14
USB-порты


15-1223232390
Алексин
2008-10-05 22:46
2008.12.14
Что это за музыка?


15-1223466254
KSergey
2008-10-08 15:44
2008.12.14
Расскажите мне про Windows-домен





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