Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как создать Dialog невидемый в Task Bar и System Tray

1.8K
14 мая 2007 года
ViToBrother
149 / / 13.05.2007
Прошу помогите !!!
538
15 мая 2007 года
AVDEY
188 / / 17.11.2005
Где то по моему обсуждалось, у себя нашел такой пример, правда сам ищо с ним не разбирался.
/*apphider.cpp*/
/* Alexey Chubar & Paul Ishenin*/
#pragma hdrstop
#include <condefs.h>
#include <windows.h>
#include <tlhelp32.h>
#include <string.h>
#include <stdlib.h>
USELIB("KERNEL32.lib");
#pragma argsused
extern "C" __stdcall DWORD RegisterServiceProcess(DWORD dwProcessID, DWORD
dwType);
char * ExtractFilePath(const char *Name)
{
int i = strlen(Name), l = strlen(Name);
char *res="\0";
while ((i > 0)&&(Name != '\\')) i--;
if (i)
{
res = (char *)malloc(l - i);
strcpy(res, Name + i + 1);
res[l-i-1] = '\0';
}
return res;
}
void HideApp(DWORD dwProcessID)
{
HWND MyHandle = GetTopWindow(0);
DWORD WindowProcess;
while (MyHandle != NULL)
{
if ((GetWindowThreadProcessId(MyHandle, &WindowProcess) != 0) &&
(WindowProcess == dwProcessID))
{
ShowWindow(MyHandle, SW_HIDE);
}
MyHandle = GetNextWindow(MyHandle, GW_HWNDNEXT);
}
RegisterServiceProcess(dwProcessID, 1);
}
DWORD __fastcall FindID(const char *FName)
{
HANDLE h;
PROCESSENTRY32 p;
h=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
p.dwSize=sizeof(p);
if(!Process32First(h,&p))
return -1;
if(strcmp(strlwr((char *)FName), strlwr(ExtractFilePath(p.szExeFile)))==0)
{
CloseHandle(h);
return p.th32ProcessID;
}
while(Process32Next(h,&p))
if(strcmp(strlwr((char *)FName), strlwr(ExtractFilePath(p.szExeFile)))==0)
{
CloseHandle(h);
return p.th32ProcessID;
}
CloseHandle(h);
return -1;
}
int main(int argc, char* argv[])
{
if (argc > 1)
{
DWORD ProgID=FindID(argv[1]);
if(ProgID != (DWORD)-1)
HideApp(ProgID);
}
return 0;
}

или
_asm{
mov eax,1
push eax
dec eax
push eax
call dword ptr[pRegisterServiceProcess]
}

А теперь более подробно. Невидимость по Alt-Tab:
var WnHnd : Integer;
WnHnd := GetWindowLong(Application.Handle, GWL_EXSTYLE);
WnHnd := WnHnd or WS_EX_TOOLWINDOW; {Типа Tools-окно}
SetWindowLong(Application.Handle, GWL_EXSTYLE, WnHnd);

Невидимость в Панели Задач:
ShowWindow[Async](Application.Handle,SW_HIDE)
1.8K
15 мая 2007 года
ViToBrother
149 / / 13.05.2007
Спасибо AVDEY но я тоже не могу разабратся, что небуть другое есть. :)
8.4K
19 мая 2007 года
TZA Group
120 / / 10.04.2007
Цитата: ViToBrother
Спасибо AVDEY но я тоже не могу разабратся, что небуть другое есть. :)



Есть код для Си Express.

8.4K
19 мая 2007 года
TZA Group
120 / / 10.04.2007
Есть код для Си Express.
Буквально несколько строк
284
21 мая 2007 года
michael_is_98
587 / / 25.02.2005
RegisterServiceProcess нет в kernel32.dll для Win2000!
8.9K
29 мая 2007 года
Kap
77 / / 10.09.2006
Типа, это большая проблема. Micro$oft постоянно убивает способы реализаци этого. Так что, надежных способов нет. Подсказка: ты видел когда- нибудь, чтобы в каком- нибудь диспетчере задачь отображалась кнопка? =).
1.8K
30 мая 2007 года
ViToBrother
149 / / 13.05.2007
А как создать кнопку, чтоб она небыла видна, а??????
320
30 мая 2007 года
m_Valery
1.0K / / 08.01.2007
Цитата: ViToBrother
А как создать кнопку, чтоб она небыла видна, а??????


ShowWindow(SW_HIDE);

8.9K
01 июня 2007 года
Kap
77 / / 10.09.2006
Цитата: m_Valery
ShowWindow(SW_HIDE);



Не, не так. И что, что она будет не видна? Не показывается в диспетчере задачь кнопка, принадлежащая приложению. Показывается приложение. Например, кнопка "пуск" не показывается в диспетчере. Показывается Explorer. А вот как сделать диалог дочерним от того, что уже отображается в диспетчере задач, это и есть проблема. Простых способов реализации этого мне не известно. Можно сделать перехват апи функций... но тогда антивирус может не позволить этого, начав ругаться. Можно воспользоваться приведенным выше текстом... А можно тупо самому убрать из диспетчера задачь свою программу. Только одно- для сторонних диспетчеров задач все может выглядеть по другому.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог