Re: Как определить хэндл элемента диалога...
От: alexey_ma Израиль  
Дата: 22.12.02 11:59
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть диалоговое окно 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;
}

Если на диалоге есть вложенные контролы то нужно будет рекурсивно искать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.