VC++ 高手进 :findwindow函数怎么获取不到这个窗口?
我用VC操作word打开文件,然后word会弹出一个文件转换的窗口。因为程序运行的是不会有人在旁边点击,所以我想用程序获取这个窗口然后发送确定命令。我用spy++得到这个...
我用VC操作word打开文件,然后word会弹出一个文件转换的窗口。因为程序运行的是不会有人在旁边点击,所以我想用程序获取这个窗口然后发送确定命令。
我用spy++得到这个窗口的类名为“bosa sdm Microsoft Office Word 12.0”
然后我用error = ::FindWindow("bosa sdm Microsoft Office Word 12.0",NULL);这个函数想得到这个窗口。但是error一直是NULL。获取不到。有么样高手知道怎么获取这个窗口的吗? 展开
我用spy++得到这个窗口的类名为“bosa sdm Microsoft Office Word 12.0”
然后我用error = ::FindWindow("bosa sdm Microsoft Office Word 12.0",NULL);这个函数想得到这个窗口。但是error一直是NULL。获取不到。有么样高手知道怎么获取这个窗口的吗? 展开
展开全部
因为是子窗口,所以找不到。可以用EnumChildWindows来寻找。
BOOL EnumChildWindows( HWND hWndParent,
WNDENUMPROC lpEnumFunc,
LPARAM lParam
);
BOOL EnumChildWindows( HWND hWndParent,
WNDENUMPROC lpEnumFunc,
LPARAM lParam
);
更多追问追答
追问
具体怎么用呢?要先获取到Word的句柄吗?然后传给第一个参数?第二个参数怎么用?能给点具体代码吗?
追答
msdn的实例代码
#define ID_FIRSTCHILD 100
#define ID_SECONDCHILD 101
#define ID_THIRDCHILD 102
LONG APIENTRY MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
RECT rcClient;
int i;
switch(uMsg)
{
case WM_SIZE: // main window changed size
// Get the dimensions of the main window's client
// area, and enumerate the child windows. Pass the
// dimensions to the child windows during enumeration.
GetClientRect(hwnd, &rcClient);
EnumChildWindows(hwnd, EnumChildProc, (LPARAM) &rcClient);
return 0;
// Process other messages.
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
BOOL CALLBACK EnumChildProc(HWND hwndChild, LPARAM lParam)
{
LPRECT rcParent;
int i, idChild;
// Retrieve the child-window identifier. Use it to set the
// position of the child window.
idChild = GetWindowLong(hwndChild, GWL_ID);
if (idChild == ID_FIRSTCHILD)
i = 0;
else if (idChild == ID_SECONDCHILD)
i = 1;
else
i = 2;
// Size and position the child window.
rcParent = (LPRECT) lParam;
MoveWindow(hwndChild,
(rcParent->right / 3) * i,
0,
rcParent->right / 3,
rcParent->bottom,
TRUE);
// Make sure the child window is visible.
ShowWindow(hwndChild, SW_SHOW);
return TRUE;
}
展开全部
第一个参数是class name,第二个参数才是window name。
看看msdn吧,http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499(v=vs.85).aspx
看看msdn吧,http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499(v=vs.85).aspx
更多追问追答
追问
我第一个参数就是类名啊。
追答
楼下说的对,子窗体的话,FindWindow抓不到,用FindWindowEx,然后一次次遍历。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询