Здравствуйте, Аноним, Вы писали:
А>Есть диалоговое окно Excel. Я знаю его хэндл.
А>А как определить хэндл какого-нибудь элемента этого диалога.
А>GetDlgItem не работает. Вернее работает, но не для все контролов.
А>Есть в диалоге поля ввода, итх хендлы определяются. А вот хэндлы
А>кнопок и т.д. не определяются.
А>В чем дело? Причем, это во многих приложениях.
GetDlgItem ,помоему, и не должен работать. Откуда ты control identifier знаешь в чужой программе?
А кнопку можно найти по заголовку, примерно так:
HWND GetButtonHandle(HWND DlgWnd,LPCSTR ButtonText)
{
HWND tmpWnd= GetWindow(DlgWnd,GW_CHILD);
char Caption[30];
while(tmpWnd)
{
GetWindowText(tmpWnd,Caption,30);
if(strstr(ButtonText,Caption))
break;
tmpWnd= GetWindow(tmpWnd,GW_HWNDNEXT);
}
return tmpWnd;
}
Если на диалоге есть вложенные контролы то нужно будет рекурсивно искать.