|
Если ты хочешь найти кнопку в чужой апликации(не важно на чем написанной) и знаешь хендл формы то последовательность действий примерно такая:
(поиск по надписи на кнопке)
полчаешь хендл первого ребенка формы
HWND hChild = ::GetWindow(hParentWnd, GW_CHILD);
получаешь заголовок кнопки
char strCapt[255];
::GetWindowText(hChild,strCapt,254);
если это тот текст который тебе нужен то можешь ставить на этот хендл фокус.
если нет то идешь на следушего ребенка формы
hChild=::GetWindow(hChild,GW_HWNDNEXT);
опять проверяешь заголовок, и так пока не найдешь нужную тебе кнопку.
С фокусом все не так просто. Дело в том что,функция SetFocus(HWND hWnd) работает только для окон твоего потока. Если ты хочешь установить фокус на окно в в чужой апликации то сначала нужно присоединиться к очереди сообщений. Примерно так :
DWORD Tid=0;
DWORD MyTid=0;
Tid= ::GetWindowThreadProcessId(hWnd,NULL);
MyTid= ::GetWindowThreadProcessId(AfxGetApp()->m_pMainWnd->m_hWnd,NULL);
::AttachThreadInput(MyTid,Tid,TRUE);
::SetFocus(hWnd);
::AttachThreadInput(MyTid,Tid,FALSE);
где (AfxGetApp()->m_pMainWnd->m_hWnd --- твое окно.
hWnd --- найденное тобой окно на которое нужно установить фокус.
__________________
Best Regards
|