Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.12.14;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
15-1223603320
S2
2008-10-10 05:48
2008.12.14
Чтение поля сертификата


3-1211271563
Ega23
2008-05-20 12:19
2008.12.14
Select * from - порядок полей


1-1203967029
Thor
2008-02-25 22:17
2008.12.14
Каким образом получаем exe?


15-1223281509
boriskb
2008-10-06 12:25
2008.12.14
Microsoft признал поражение


15-1223614472
TUser
2008-10-10 08:54
2008.12.14
Большой брат наблюдает за нами