Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API - Спрятать окно до того как оно отобразилось на экране

Ответить
Настройки темы
Win32 API - Спрятать окно до того как оно отобразилось на экране

Аватара для Sanchos

Пользователь


Сообщения: 124
Благодарности: 5

Профиль | Отправить PM | Цитировать


В общем суть вопроса такова:
Есть утилита, которая никак не реагирует на запуск себя как HIDE. Она всё время запускается видимая и с активным фокусом.
Если применить ShowWindow hwnd, SW_HIDE сразу после запуска, тогда видно моргание окна, то есть оно сначала появляется и тут же прячется.
Нужно как то "спрятать" его сразу после запуска, но до того как окно отобразится... говорят что можно сделать хук на это дело.
Правда ли это, и если можно то как именно?

Отправлено: 17:58, 24-08-2010

 

Новый участник


Сообщения: 12
Благодарности: 1

Профиль | Отправить PM | Цитировать


Я вот тоже искал ответ на этот вопрос. Но или ярано перестал искать или просто посчитал вполне возможным сделать так:
Просто делаю, чтобы форма не отображала своё присутствие на панели задач, и имела координаты на экране по оси Х: -ширина формы -10 (десять с потолка на всякий случай).

C#
Проверено, работает:
Код: Выделить весь код
        public Form1()
        {
            InitializeComponent();
            this.ShowInTaskbar = false;
            this.StartPosition = FormStartPosition.Manual;
            this.Left = -this.Width - 10;
        }
Какая разница как прятать, главное работает. да и антивирус явно не заругается.

Последний раз редактировалось Casper-SC, 25-08-2010 в 09:31. Причина: Код добавил


Отправлено: 21:03, 24-08-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для ganselo

Старожил


Сообщения: 232
Благодарности: 90

Профиль | Сайт | Отправить PM | Цитировать


Можно перехватить API функцию, которая создаёт окно и выставить ей флаг SW_HIDE. Некоторые антивирусы могут ругатся на такое, т.к. большинство вирусов используют перехват API.

-------
К величайшему сожалению "история учит нас тому, что она ничему не учит".


Отправлено: 21:28, 24-08-2010 | #3


Аватара для Sanchos

Пользователь


Сообщения: 124
Благодарности: 5

Профиль | Отправить PM | Цитировать


Знать бы ещё какие функции перехватывать и самое главное КАК ))))

Отправлено: 23:37, 24-08-2010 | #4


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


Sanchos CreateProcess() - создать (запустить) процесс с атрибутом wShowWindow в STARTUPINFO равному SW_HIDE. Консольные программы при этом даже не показываются, есть шанс что и данная оконная утилита поведёт себя так же.

Отправлено: 12:56, 25-08-2010 | #5


Аватара для Sanchos

Пользователь


Сообщения: 124
Благодарности: 5

Профиль | Отправить PM | Цитировать


Я пробовал через CreateProcess(), в этом случае возникает куча ошибок в самом приложении.

Отправлено: 13:56, 25-08-2010 | #6


Аватара для RUVATA

Старожил


Сообщения: 301
Благодарности: 16

Профиль | Отправить PM | Цитировать


что за утилита, есть исходники?

.StartInfo.UseShellExecute = False
пробовал?

-------
Одно дело искать сиюминутное решение, другое - искать знания...
вот и думай - что ты ищешь...


Отправлено: 09:52, 26-08-2010 | #7


Аватара для Sanchos

Пользователь


Сообщения: 124
Благодарности: 5

Профиль | Отправить PM | Цитировать


Какие исходники? )))) утилита сторонняя, к тому же является частью недешёвой программы.
Называется BarCode Vizard
.StartInfo.UseShellExecute = False это где пробовать?

Отправлено: 16:08, 26-08-2010 | #8


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


Sanchos, а если через эту программу запустить Скрытный запуск приложений (NB: скрытно - значит без промелькиваний)?
p.s.
В архиве присутствует исходный код.

Отправлено: 02:03, 29-08-2010 | #9


Аватара для Sanchos

Пользователь


Сообщения: 124
Благодарности: 5

Профиль | Отправить PM | Цитировать


Спасибо за ссылку. Крутил я эту прогу и так и сяк. Запускать запускает, но всё как обычно.
И ещё, после недавних тестов, отказался от ShowWindow hWnd, SW_HIDE. Почему то на ХР с ним заметно тормознее отсылаются команды приложению. А порой и вообще подвисает.

Отправлено: 18:10, 30-08-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API - Спрятать окно до того как оно отобразилось на экране

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как сделать чтобы дочернее окно при выходе не закрывало основное окно assch AutoIt 5 19-07-2010 02:11
2003/XP/2000 - [решено] Excel | При открытии файла .exl на экране одно только серое окно. Natalya1505 Microsoft Office (Word, Excel, Outlook и т.д.) 3 06-02-2010 18:23
перемещается не окно а его контур,а потом только оно,как это исправить? Grandi Хочу все знать 2 10-04-2009 07:37
Как перегрузить комп после того как все авто-настройки приняты? Cobra_1_Stas Автоматическая установка Windows 2000/XP/2003 9 05-03-2008 03:00
Как спрятать? MrX Вебмастеру 1 28-05-2003 20:15




 
Переход