![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как спрятать приложение(не смешно) [D7, Win95/98]
Prov © (2004-01-19 00:42:00)Доброе время суток, господа программисты...
Не писал каких-то 4 месяца, а забыл всё ! :((
Я что-то делаю неправильно.
Вообщем, проблема такова:
Ловлю хэндл окна, пытаюсь его спрятать вот так:
ShowWindow(Wnd, SW_HIDE);
Всё бы хорошо но, когда нажимаю комбинацию клавиш Alt+Tab, видно иконку приложения. Как её спрятать ? Приложение прячется, но и иконки по Alt+Tab не должно быть. Подскажите, пожалуйста, как быть ?
И вот ещё. Вроде бы прятал приложения ещё и так:
SendMessage(Wnd, SW_HIDE, 0, 0) - окно не прячет... Подскажите, пожалуйста, и по сему вопросу...
Заранее благодарен всем, кто оказал какую-либо помощь в решении вопроса.
YuRock (2004-01-26 13:41:00) [1]Я бы сделал так:
var Wnd: hWnd;
begin
Wnd := FindWindow(nil, 'Gen');
if Wnd <> 0 tnen ShowWindow(Wnd, SW_HIDE)
else raise Exception.Create ('Окно не найдено!');
end;
Игорь Шевченко (2004-01-25 19:58:00) [2]Перед фразой
ShowWindow(Wnd, SW_HIDE);
Я бы поставил проверку:
if IsWindow(Wnd) then
ShowWindow(Wnd, SW_HIDE)
else
raise Exception.Create ('Не получилось');
Prov (2004-01-24 22:38:00) [3]
var Wnd: hWnd;
begin
if FindWindow(nil, 'Gen')<> 0 tnen
Wnd:= FindWindow(nil, 'Gen');
ShowWindow(Wnd, SW_HIDE);
end;
Окно не прячется :((
Игорь Шевченко (2004-01-24 20:01:00) [4]Prov © (24.01.04 13:06)
А мне без кода трудно будет подсказывать...Код бы надо привести в форуме, хотя бы краткий :)
Prov (2004-01-24 13:06:00) [5]
> Раз ты такой умный, что можешь спрятаться от Task Manager
> в NT, то наверное и эту проблему тебе решить - пара пустяков,
> достаточно запустить WinSight.
Прошу Вас, не надо ехидничать.. Я прекрастно знаю, что Ваши знания в сфере программирования огромны. Если что не так ляпнул, прошу прощения, но не могли бы Вы мне всё-таки подсказать решение этой задачи... Я довольно долго не писал ничего, многое забылось...
Но приложение всё равно не уходит с панели задач.
Игорь Шевченко (2004-01-22 11:04:00) [6]
> SetWindowLong(Wnd, GWL_EXSTYLE, GetWindowLong(Wnd, GWL_EXSTYLE)
> or WS_EX_TOOLWINDOW);
> Окно всё равно видно на панели задач. Причём, тоже самое
> пишу для окна своего приложения, и оно тоже не прячется.
> Ничего не могу понять, всё делаю в точности с помощью и
> хелпами.
Раз ты такой умный, что можешь спрятаться от Task Manager в NT, то наверное и эту проблему тебе решить - пара пустяков, достаточно запустить WinSight.
---
LMD
YuRock (2004-01-22 10:30:00) [7]Извините за дублирование - я не специально
YuRock (2004-01-22 10:23:00) [8]SW_HIDE - это не сообщение, а один из флагов функции ShowWindow;
Использовать надо так: ShowWindow(Wnd, SW_HIDE);
YuRock (2004-01-22 10:23:00) [9]SW_HIDE - это не сообщение, а один из флагов функции ShowWindow;
Использовать надо так: ShowWindow(Wnd, SW_HIDE);
Prov (2004-01-22 08:07:00) [10]Всем большое спасибо.
Для общего развития скажу, что пишу программу я на 98 винде, но будет использоваться для ХР. Для некоторых людей скажу, что я знаю, что такое RegisterServiceProcess, и если понадобится, то даже умею спрятать от таскМенеджера в НТ. :))
делаю так:
SetWindowLong(Wnd, GWL_EXSTYLE, GetWindowLong(Wnd, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);
Окно всё равно видно на панели задач. Причём, тоже самое пишу для окна своего приложения, и оно тоже не прячется. Ничего не могу понять, всё делаю в точности с помощью и хелпами.
И вот ещё, пожалуйста, скажите мне вот что: я раньше прятал приложения так: SendMessage(Wnd, SW_HIDE, ..., ...); Но не помню, какие нужны параметры для сообщения SW_HIDE. ПОдскажите, плиз.
VMcL (2004-01-22 07:46:00) [11]Я даже догадываюсь, когда она может fail: GWL_WNDPROC или DWL_DLGPROC :))
BiN (2004-01-20 23:20:00) [12]YuRock © (20.01.04 19:19) [22]
Если бы я не проверял этот пример, то и не стал бы выкладывать здесь [9].
И вместо того, чтобы злиться лучше бы ты посерьезней исследовал этот пример.
win32.hlp в поставке дельфи, к сожалению, является устаревшей версией справки MSDN. В справке же от майкрософта на сайте есть следующее замечание по поводу SetWindowLong:
Windows 95/98/Me: The SetWindowLong function mayfail if the window specified by the hWnd parameter does not belong to the same process as the calling thread.
Думаю, видна разница.
YuRock (2004-01-20 19:19:00) [13]> DeadMeat © (20.01.04 18:46) [21]
The SetWindowLong function fails if the window specified by the hWnd parameter does not belong to the same process as the calling thread.
Цитата из хелпа. Я проверял- возвращается 0 (если процесс чужой).
DeadMeat (2004-01-20 18:46:00) [14]> YuRock © (20.01.04 13:57) [20]
Не знаю что у вас не выходит, но окно калькулятора, после установки ему WS_EX_TOOLWINDOW из ALT+TAB у меня ушло...
Может мы друг-друга не поняли...??
YuRock (2004-01-20 13:57:00) [15]> BiN © (20.01.04 11:35) [19]
Что, в Рихтере "на картинках" нарисовано, что [9] будет работать для окон других процессов??? (см. DeadMeat [16]).
А, извините, Вы же пробовали. Можно Ваш код попробовать у себя?
BiN (2004-01-20 11:35:00) [16]YuRock © (20.01.04 11:12) [18]
Конечно пробовали. (а что плохого в Рихтере - картинок мало?)
YuRock (2004-01-20 11:12:00) [17]> DeadMeat © (19.01.04 22:26) [16]
>> Но как выставить этот стиль "чужому" окну (другого процесса)?..
> см. BiN © (19.01.04 17:24) [9]
А интересно, Вы (и/или BiN) этот пример пробовали или в Рихтере прочитали?
Игорь Шевченко (2004-01-20 10:23:00) [18]YuRock © (19.01.04 19:06)
> Но как выставить этот стиль "чужому" окну (другого процесса)?..
ЗАЧЕМ ?????? Вопль души уже, к тебе, разумеется, не относится, а относится ко всем желающим странного с чужими окнами и процессами.
Способ выставить стили окна чужого приложения, разумеется есть, но не следует забывать, что при смене стилей оконной процедуре посылается пара сообщений WM_STYLECHANGING и WM_STYLECHANGED, обработав которые можно запретить любые изменения стиля окна, как со стороны, так и самому :)
С уважением,
DeadMeat (2004-01-19 22:26:00) [19]> YuRock © (19.01.04 19:06)
> Но как выставить этот стиль "чужому" окну (другого процесса)?..
см. BiN © (19.01.04 17:24) [9]
YuRock (2004-01-19 19:06:00) [20]> Игорь Шевченко © (19.01.04 18:52) [14]
Я с этим и не спорил. Возможно, это еще один способ. Но как выставить этот стиль "чужому" окну (другого процесса)?..