CIS Inc. Ltd.

Sign by Dealighted - Coupons & Discount Shopping

Домашняя Обратная связь Поиск

Hide
Вверх

 

[В стадии разработки]

Домашняя
Секреты
Ловушка
Перехват CD
Формы
Нонсенс
Hide
Alias

 

 
www.yandex.ru

Не жадничай!
ЯндексЯндекс. ДеньгиХочу такую же кнопку

Праздники славян

бесплатная музыка mp3

Яндекс цитирования

 


Components and tools for developers

PoleSoft Technologies Group

DIGITLAND.RU Портал программирования, цифровых технологий и электроники

Шрифт

Locations of visitors to this page

free counters


Hide

    Хотите скрыть свою программу? Что может быть проще!
Создайте новый проект. Свойства формы biMinimize и biMaximize (группа BorderIcons) установите в false. Поместите на форму всплывающее меню (компонент PopupMenu), и создайте три пункта: Show, Hide и Exit. Поместите на форму компонент RxTrayIcon из состава RxLib. Свяжите свойство RxTrayIcon PopupMenu с Вашим PopupMenu. Если у Вас еще нет библиотеки RxLib (настоятельно рекомендую установить ее), воспользуйтесь компонентом TrayIcon из раздела Samples палитры компонентов VCL Borland C++ Builder 6. В результате получится что-то вроде того, что изображено на рисунке.

    Подготовительные операции закончены. Теперь приступим к самому главному. Как скрыть свою программу в диспетчере задач - сделать ее процессом! В Microsoft® Windows® XP в диспетчере задач ловится в процессах! Для этого воспользуемся функцией WinAPI RegisterServiceProcess. Эта функция объявлена следующим образом:
    BOOL RegisterServiceProess(DWORD dwProcessId, DWORD dwType);
где    dwProcessId - идентификатор процесса,
        dwType - что нужно делать, 1 - зарегистрировать процесс, 0 - удалить из процессов.
Соответственно, в случае успешного выполнения функции возвращается 1, при возникновении ошибки - 0.
Небольшое замечание - для вызова функции необходимо использовать указатель. Сама функция находится в KERNEL32.DLL (кто еще не знает что это такое?), и получить ее адрес поможет другая функция WinAPI GetProcAddress.
    В Borland C++ Builder 6 в меню Project выберите пункт View Source и добавьте следующий код, как показано в листинге.

#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    try
    {
        HINSTANCE hInstKernel;
        DWORD (__stdcall *pRegisterServiceProcess)(DWORD,DWORD);
        hInstKernel=LoadLibrary("KERNEL32.DLL");
        if(hInstKernel)
        {
        pRegisterServiceProcess = (DWORD(__stdcall *)(DWORD,DWORD))GetProcAddress(hInstKernel,"RegisterServiceProcess");
            if(pRegisterServiceProcess)
            {
                pRegisterServiceProcess(NULL,1);
            }
        FreeLibrary(hInstKernel);
        }

    Application->Initialize();
    Application->CreateForm(__classid(TForm1), &Form1);
    Application->ShowMainForm = false;    //Спрячем форму!
    Application->Run();
    ...


В обработчик событий формы OnShow и OnHide вставьте соответствующий код:
             ShowWindow(Application->Handle, SW_SHOW);
и
             ShowWindow(Application->Handle, SW_HIDE);
а в обработчики пунктов меню:
             Form1->Show();
             Form1->Hide();
             Close();
   
Почти все готово. Теперь удалим нашу программу с панели задач. Это делает следующий код, который необходимо поместить между
    Application->Initialize();
и
    Application->CreateForm(__classid(TForm1), &Form1);
 
 SetWindowLong(Application->Handle, GWL_EXSTYLE,
             GetWindowLong(Application->Handle, GWL_EXSTYLE) | WS_EX_TOOLWINDOW);

который управляет расширенными стилями при создании окна приложения.
    И наконец, уберем кнопку закрытия формы. Поместите следующий код в обработчик события формы OnCreate.
        HMENU MenuHandle = GetSystemMenu(WindowHandle, false);
        if(MenuHandle)
            DeleteMenu(MenuHandle, SC_CLOSE, MF_BYCOMMAND);

   
Все готово. Запустите проект на выполнение. Наслаждайтесь своими знаниями!

Скачать

This site is a member of WebRing.
To browse visit Here.


 

Отправить сообщение для: Web-мастера с вопросами и замечаниями об этом веб-узле.
© 2010 Serg Kappa CIS Inc. Ltd. ©1990 - 2010
Дата изменения: 21.10.2010

Одноклассники.ru - Поиск одноклассников, однокурсников, бывших выпускников и старых друзей

 

Сайт управляется системой uCoz