Дескриптор
Nic; 30.9.03

Подскажите как получить дескриптор окна? например WinCC Online Trend Control

Re: Дескриптор
Лев Шерешевский; 7.10.03

Ну, примерно так, как показано ниже. В данном примере функция приложения VisualC ищет окно трендов и закрывает его. Использовалось в Win2k SP4 с WinCC 5.1.


typedef UINT (WINAPI *lpfnRealGetWindowClass)(HWND hwnd, LPTSTR pszType, UINT cchType);

BOOL CALLBACK EnumChildProc(HWND hWnd, LPARAM lParam)
{
const size = 100;
char szType [size+1];
CString Msg;
lpfnRealGetWindowClass RealGetWindowClass;

HMODULE hUser32 = GetModuleHandle("USER32.DLL");

RealGetWindowClass = (lpfnRealGetWindowClass)GetProcAddress(hUser32, "RealGetWindowClass");

RealGetWindowClass(hWnd, szType, size);
if (!strcmp(szType, "WinCC Online Trend Control"))
{
::PostMessage(hWnd, WM_SYSCOMMAND, SC_CLOSE, 0);
return FALSE;
}
return TRUE;
}

void CTestFindWindowDlg::OnBtn1()
{
HWND hWndP;
hWndP = ::FindWindow("PDLRTisAliveAndWaitsForYou", NULL);
EnumChildWindows(hWndP, EnumChildProc, 0);
}

См. Центр компетенции WinCC

Re: Дескриптор
Маслов Дмитрий; 8.10.03

Дескриптор окна можно получить так (пример для калькулятора):


HWND Handle = FindWindow("SciCalc", NULL);

Функция FindWindow ищет окно по типу или по заголовку. В данном примере используется поиск по типу.



См. WinCC Competence Center