C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Дескриптор окна
programmer_of_fortune
Отправлено: 17.09.2003, 12:29


Не зарегистрирован







Как в билдере получить дескриптор окна программуі, а потом свернуть эту программу???, если можно, присылайте исходники....Заранее спасибо
Admin
Отправлено: 17.09.2003, 14:21


Владимир

Группа: Администратор
Сообщений: 1190



EnumWindows()
CloseWindow()

Получаем список всех главных окон приложений
и сворачиваем их.

CODE

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include <winbase.h>
bool __stdcall EnumProc(HWND hWnd,long k);
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
       : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    EnumWindows((WNDENUMPROC)EnumProc,0);
}
//---------------------------------------------------------------------------

bool __stdcall EnumProc(HWND hWnd,long k)
{
char buffer[100];
if(hWnd==NULL) return false;
GetWindowText(hWnd,buffer,sizeof(buffer));
if (buffer[0] && IsWindowVisible(hWnd) &&
    GetWindowLong(hWnd,GWL_HWNDPARENT)==0) {
       CloseWindow(hWnd);
}
return true;
}

//---------------------------------------------------------------------------

Иван
Отправлено: 17.09.2003, 14:26


Машинист паровоза

Группа: Участник
Сообщений: 207



см. ф-ию FindWindow для получения дескриптора окна
Гость_programmer_of_fortune
Отправлено: 18.09.2003, 15:53


Не зарегистрирован







Спасибо большое Admin за исходники....Работает как часы....Даже не ожидал что все так просто...еще раз спасибо....
Гость_programmer_of_fortune
Отправлено: 19.09.2003, 12:41


Не зарегистрирован







Еще вопрос к Admin: данный код прекрасно работает в Application, но при попытке создать службу, не дает никакого эффекта.....Как быть?
Иван
Отправлено: 19.09.2003, 17:41


Машинист паровоза

Группа: Участник
Сообщений: 207



И у меня вопрос такой:
Можно ли как нибудь получить дескриптор окна,над которым в данный момент находится указатель мыши.
Имеется ввиду всех открытых окон,а не только моей программы.
Спасибо!

Вернуться в Вопросы программирования в C++Builder