Спрятать окно до того как оно отобразилось на экране
В общем суть вопроса такова:
Есть утилита, которая никак не реагирует на запуск себя как HIDE. Она всё время запускается видимая и с активным фокусом. Если применить ShowWindow hwnd, SW_HIDE сразу после запуска, тогда видно моргание окна, то есть оно сначала появляется и тут же прячется. Нужно как то "спрятать" его сразу после запуска, но до того как окно отобразится... говорят что можно сделать хук на это дело. Правда ли это, и если можно то как именно? |
Я вот тоже искал ответ на этот вопрос. Но или ярано перестал искать или просто посчитал вполне возможным сделать так:
Просто делаю, чтобы форма не отображала своё присутствие на панели задач, и имела координаты на экране по оси Х: -ширина формы -10 (десять с потолка на всякий случай). C# Проверено, работает: Код:
public Form1() |
Можно перехватить API функцию, которая создаёт окно и выставить ей флаг SW_HIDE. Некоторые антивирусы могут ругатся на такое, т.к. большинство вирусов используют перехват API.
|
Знать бы ещё какие функции перехватывать и самое главное КАК ))))
|
Sanchos CreateProcess() - создать (запустить) процесс с атрибутом wShowWindow в STARTUPINFO равному SW_HIDE. Консольные программы при этом даже не показываются, есть шанс что и данная оконная утилита поведёт себя так же.
|
Я пробовал через CreateProcess(), в этом случае возникает куча ошибок в самом приложении.
|
что за утилита, есть исходники?
.StartInfo.UseShellExecute = False пробовал? |
Какие исходники? )))) утилита сторонняя, к тому же является частью недешёвой программы.
Называется BarCode Vizard .StartInfo.UseShellExecute = False это где пробовать? |
Sanchos, а если через эту программу запустить Скрытный запуск приложений (NB: скрытно - значит без промелькиваний)?
p.s. В архиве присутствует исходный код. |
Спасибо за ссылку. Крутил я эту прогу и так и сяк. Запускать запускает, но всё как обычно.
И ещё, после недавних тестов, отказался от ShowWindow hWnd, SW_HIDE. Почему то на ХР с ним заметно тормознее отсылаются команды приложению. А порой и вообще подвисает. |
.StartInfo.UseShellExecute
например: Код:
MyProcess.StartInfo.FileName = "7z" |
Время: 13:56. |
Время: 13:56.
© OSzone.net 2001-