Win32 API - Спрятать окно до того как оно отобразилось на экране
-
Sanchos
Win32 API - Спрятать окно до того как оно отобразилось на экране
В общем суть вопроса такова:
Есть утилита, которая никак не реагирует на запуск себя как HIDE. Она всё время запускается видимая и с активным фокусом.
Если применить ShowWindow hwnd, SW_HIDE сразу после запуска, тогда видно моргание окна, то есть оно сначала появляется и тут же прячется.
Нужно как то "спрятать" его сразу после запуска, но до того как окно отобразится... говорят что можно сделать хук на это дело.
Правда ли это, и если можно то как именно?
Есть утилита, которая никак не реагирует на запуск себя как HIDE. Она всё время запускается видимая и с активным фокусом.
Если применить ShowWindow hwnd, SW_HIDE сразу после запуска, тогда видно моргание окна, то есть оно сначала появляется и тут же прячется.
Нужно как то "спрятать" его сразу после запуска, но до того как окно отобразится... говорят что можно сделать хук на это дело.
Правда ли это, и если можно то как именно?
-
Casper-SC
Re: Win32 API - Спрятать окно до того как оно отобразилось на экране
Я вот тоже искал ответ на этот вопрос. Но или ярано перестал искать или просто посчитал вполне возможным сделать так:
Просто делаю, чтобы форма не отображала своё присутствие на панели задач, и имела координаты на экране по оси Х: -ширина формы -10 (десять с потолка на всякий случай).
C#
Проверено, работает:
Код:
Какая разница как прятать, главное работает. да и антивирус явно не заругается.
Просто делаю, чтобы форма не отображала своё присутствие на панели задач, и имела координаты на экране по оси Х: -ширина формы -10 (десять с потолка на всякий случай).
C#
Проверено, работает:
Код:
Код: Выделить всё
public Form1()
{
InitializeComponent();
this.ShowInTaskbar = false;
this.StartPosition = FormStartPosition.Manual;
this.Left = -this.Width - 10;
}Какая разница как прятать, главное работает. да и антивирус явно не заругается.
-
ganselo
Re: Win32 API - Спрятать окно до того как оно отобразилось на экране
Можно перехватить API функцию, которая создаёт окно и выставить ей флаг SW_HIDE. Некоторые антивирусы могут ругатся на такое, т.к. большинство вирусов используют перехват API.
-
Sanchos
Re: Win32 API - Спрятать окно до того как оно отобразилось на экране
Знать бы ещё какие функции перехватывать и самое главное КАК ))))
-
Sanchos
Re: Win32 API - Спрятать окно до того как оно отобразилось на экране
Sanchos CreateProcess() - создать (запустить) процесс с атрибутом wShowWindow в STARTUPINFO равному SW_HIDE. Консольные программы при этом даже не показываются, есть шанс что и данная оконная утилита поведёт себя так же.
-
Admiral
Re: Win32 API - Спрятать окно до того как оно отобразилось на экране
Я пробовал через CreateProcess(), в этом случае возникает куча ошибок в самом приложении.
-
RUVATA
Re: Win32 API - Спрятать окно до того как оно отобразилось на экране
что за утилита, есть исходники?
.StartInfo.UseShellExecute = False
пробовал?
.StartInfo.UseShellExecute = False
пробовал?
-
Sanchos
Re: Win32 API - Спрятать окно до того как оно отобразилось на экране
Какие исходники? )))) утилита сторонняя, к тому же является частью недешёвой программы.
Называется BarCode Vizard
.StartInfo.UseShellExecute = False это где пробовать?
Называется BarCode Vizard
.StartInfo.UseShellExecute = False это где пробовать?
-
Sanchos
Re: Win32 API - Спрятать окно до того как оно отобразилось на экране
Sanchos, а если через эту программу запустить
p.s.
В архиве присутствует исходный код.
Скрытный запуск приложений (NB: скрытно - значит без промелькиваний)
?p.s.
В архиве присутствует исходный код.
-
Admiral
Re: Win32 API - Спрятать окно до того как оно отобразилось на экране
Спасибо за ссылку. Крутил я эту прогу и так и сяк. Запускать запускает, но всё как обычно.
И ещё, после недавних тестов, отказался от ShowWindow hWnd, SW_HIDE. Почему то на ХР с ним заметно тормознее отсылаются команды приложению. А порой и вообще подвисает.
И ещё, после недавних тестов, отказался от ShowWindow hWnd, SW_HIDE. Почему то на ХР с ним заметно тормознее отсылаются команды приложению. А порой и вообще подвисает.