|
Builder초보 님이 쓰신 글 :
: Form1 에 버튼1이 있습니다 그버튼을 다른 프로그램에서 클릭한 효과를 내려면 어떻게 해야 하나여..
예전에 사용했던건데, 조금 단순무식한 방법이지만 효과는 만점입니다.
원하는 윈도우를 찾아서 그안의 버튼을 찾아서 그 핸들에 SendMessage를 날려 주시면 됩니다.
// 현재 실행중인 모든 윈도우중에서 원하는 Caption을 가진 윈도우의 핸들구하기 (보통 부모윈의 핸들구하기)
HWND GetWindowsHandleByCaptionEx (LPCTSTR palpCaption)
{
bool bFound = false;
HWND hWin;
HWND h = FindWindow (NULL, NULL);
hWin = h;
while (h)
{
char* lpString = new char[1025];
int nMaxCount = 1024;
memset(lpString, 0, 1025);
int nSize = GetWindowText(h, lpString, nMaxCount);
if (nSize > 0 && strcmp (lpString, palpCaption) == 0)
{
if (h > hWin)
{
hWin = h;
}
bFound = true;
}
h = GetWindow (h, GW_HWNDNEXT);
delete[] lpString;
}
if (bFound) return hWin;
else return 0;
}
// 어느윈도우(부모윈)의 하위 윈도우중 원하는 캡션을 가지고 있는 윈도우(차일드)의 핸들찾기 (보통 버튼의 핸들구하기)
HWND GetChildWinByCaption (HWND pahParent, LPCTSTR palpCaption)
{
HWND h = GetWindow(pahParent, GW_CHILD);
while (h)
{
char* lpString = new char[1025];
int nMaxCount = 1024;
memset(lpString, 0, 1025);
int nSize = GetWindowText(h, lpString, nMaxCount);
if (nSize > 0 && strcmp (lpString, palpCaption) == 0)
{
delete[] lpString;
return h;
}
h = GetWindow (h, GW_HWNDNEXT);
delete[] lpString;
}
return 0;
}
|