Форум: "Основная";
Текущий архив: 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