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。获取不到。有么样高手知道怎么获取这个窗口的吗?
展开
 我来答
何处淬吴钩
推荐于2016-01-08 · TA获得超过5045个赞
知道大有可为答主
回答量:2947
采纳率:50%
帮助的人:2418万
展开全部
因为是子窗口,所以找不到。可以用EnumChildWindows来寻找。

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;
}
百度网友9df37c8
2011-10-13 · TA获得超过215个赞
知道小有建树答主
回答量:309
采纳率:0%
帮助的人:224万
展开全部
第一个参数是class name,第二个参数才是window name。
看看msdn吧,http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499(v=vs.85).aspx
更多追问追答
追问
我第一个参数就是类名啊。
追答
楼下说的对,子窗体的话,FindWindow抓不到,用FindWindowEx,然后一次次遍历。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友534b63319
2011-10-13
知道答主
回答量:4
采纳率:0%
帮助的人:6730
展开全部
点确定
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式