Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скрыть приложение из ALT+TAB и списка приложений. Как скрыть в windows xp\2k 
:(
    Опции темы
mkmv
Дата 2.6.2005, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 2.6.2005

Репутация: нет
Всего: нет



Господа! только не отсылайте меня к поиску...я им уже воспользовался!

ОС windows XP\2k(и только)
Приложение должно быть в трее, не видно в ТаскБаре(это я сделал), не видно в ALT+TAB и в списке приложений(ИМЕННО ПРИЛОЖЕНИЙ!!!!, А НЕ ПРОЦЕССОВ) диспетчера задач. Пробовал использовать способ с nthide.dll - но он скрывает процесс! А в ALT+TAB и списке приложений все как было так и есть.

Так скрыл из таскбара:
Код

program rei;

uses
  Forms,
  Windows,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2},
  Unit3 in 'Unit3.pas' {Form3},
  About in 'About.pas' {Form4};

{$R *.res}

var
EStyle : integer;
HM: THandle;

function Check: boolean;
begin
  HM := OpenMutex(MUTEX_ALL_ACCESS, false, 'mupdate');
  Result := (HM <> 0);
  if HM = 0 then HM := CreateMutex(nil, false, 'mupdate');
end;

begin
  if Check then Exit;
  Application.Initialize;
  EStyle:=GetWindowLong(application.Handle, GWL_EXSTYLE);
  SetWindowLong(Application.Handle, GWL_EXSTYLE, EStyle or WS_EX_TOOLWINDOW);
  Application.Title := 'Автоматическое обновление';
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.CreateForm(TForm3, Form3);
  Application.CreateForm(TFrmAbout, FrmAbout);
  Application.Run

end.


Код
  
  ShowWindow(Handle,SW_HIDE);
  ShowWindow(Application.Handle,SW_Hide);

это не катит smile

неужели нужно писать сервис????
Или все таки есть способ??? smile

Это сообщение отредактировал(а) mkmv - 2.6.2005, 12:37
PM MAIL   Вверх
mkmv
Дата 2.6.2005, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 2.6.2005

Репутация: нет
Всего: нет



Сам задаю - сам отвечаю smile) smile

Project > View Source

Всего-то заменить:

Код

Application.Title := 'Автоматическое обновление';


на

Код

Application.Title := '';



И.....ОООО ЧУДО !!! smile

Это сообщение отредактировал(а) mkmv - 2.6.2005, 12:44
PM MAIL   Вверх
poor_yorik
Дата 2.6.2005, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 12.1.2005
Где: Общаги г. Киева

Репутация: нет
Всего: 8



А вот так программа не будет видна на Alt+Tab и Ctrl+Alt+Del. Не увидишь ее и на TaskBar.
Код

...
function RegisterServiceProcess(ProcessID, Typ: Integer): Integer;
  external 'KERNEL32.DLL';

procedure TForm1.Button1Click(Sender: TObject);
begin
  RegisterServiceProcess(GetCurrentProcessId, 1);
  ShowWindow(Application.Handle, SW_HIDE);
  SetWindowLong(Application.Handle, GWL_EXSTYLE,
    GetWindowLong(Application.Handle, GWL_EXSTYLE) or
    WS_EX_TOOLWINDOW);
end;
...

--------------------
Семь раз отмерь, один раз - откомпиль.... Семь раз отпей, один раз - отлей... Семь раз отъешь, один раз - не жадничай и другим дай...
PM MAIL YIM   Вверх
Marriage
Дата 2.6.2005, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 4.5.2004
Где: Таганрог

Репутация: нет
Всего: 2



Цитата
А вот так программа не будет видна на Alt+Tab и Ctrl+Alt+Del. Не увидишь ее и на TaskBar.
...
function RegisterServiceProcess(ProcessID, Typ: Integer): Integer;
  external 'KERNEL32.DLL';

procedure TForm1.Button1Click(Sender: TObject);
begin
  RegisterServiceProcess(GetCurrentProcessId, 1);
  ShowWindow(Application.Handle, SW_HIDE);
  SetWindowLong(Application.Handle, GWL_EXSTYLE,
    GetWindowLong(Application.Handle, GWL_EXSTYLE) or
    WS_EX_TOOLWINDOW);
end;
...

А не для 98-й винды ли это????
Уж до боли знакомый код ...
Проверил для точности на ХР, не работает smile







--------------------
Praemonitus, praemunitus
PM MAIL ICQ   Вверх
Albinos_x
Дата 2.6.2005, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 3
Всего: 108



Цитата
А не для 98-й винды ли это????
Уж до боли знакомый код ...
Проверил для точности на ХР, не работает


так и есть под NT ента штука никогда не работала


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Леша
Дата 24.7.2005, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 7.11.2004
Где: Менск, Беларуская НР

Репутация: нет
Всего: 1



Поднимаю старую тему.
Вопрос-то вроде не решен...

mkmv, твой код не скрывает из Альт+Таб приложение. Ты решил проблему?
Код

if ДА then КАК?


В принципе вопрос всем. Кто-нибудь знает как это сделать?

Ну и вопрос по коду, приведенному mkmv'ом.
Код

var
...
HM: THandle;

function Check: boolean;
begin
HM := OpenMutex(MUTEX_ALL_ACCESS, false, 'mupdate');
Result := (HM <> 0);
if HM = 0 then HM := CreateMutex(nil, false, 'mupdate');
end;


Что делает этот чек? Работает и без него. Другое дело, может без него не корректно... Что такое мьютекс вообще и с чем его едят? (читал хелп - не понял; кто-нибудь может "на пальцах") Ну и напоследок (это уже, наверное, к автору) какой смысл в переменной НМ?

Спасибо.

З.Ы. Отдельное спасибо z-END за ссылку.
PM MAIL ICQ   Вверх
Z10
Дата 24.7.2005, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 6.5.2005
Где: Россия

Репутация: нет
Всего: нет



Цитата
Что делает этот чек?

Код

function Check: boolean;    
begin    
HM := OpenMutex(MUTEX_ALL_ACCESS, false, 'mupdate');    
Result := (HM <> 0);    
if HM = 0 then HM := CreateMutex(nil, false, 'mupdate');    
end;

Этот "чек" проверяет не запущен ли экземпляр приложения.

Скрыть прогу отовсюду кроме списка процессов можно так
ShowWindow(Handle,SW_HIDE);
ShowWindow(Application.Handle, SW_HIDE)

или так

Application.ShowMainForm:= false;
PM ICQ   Вверх
Romikgy
Дата 25.7.2005, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Цитата(Z10 @ 24.7.2005, 16:27)
ShowWindow(Handle,SW_HIDE);
ShowWindow(Application.Handle, SW_HIDE)


Эт точно, но скорее всего , чтобы пропало по alt+tab и из деспечера задач (не из процессов !)
вполне хватит и
ShowWindow(Application.Handle, SW_HIDE)

smilesmilesmile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1038 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.