MFC中,如何获取一个已知窗口标题的窗口的句柄
如题,比如说我现在打开了一个记事本程序,然后我想获取这个记事本程序的句柄,我该怎么做呢?最好能根据我说的情况举个例子,一个完整的例子,谢过各位了...
如题,比如说我现在打开了一个记事本程序,然后我想获取这个记事本程序的句柄,我该怎么做呢?最好能根据我说的情况举个例子,一个完整的例子,谢过各位了
展开
5个回答
展开全部
使用windows API的FindWindow()函数;
函数原型为 :
HWND FindWindow
(
LPCSTR lpClassName,
LPCSTR lpWindowName
);
lpClassName
指向一个以null结尾的、用来指定类名的字符串或一个可以确定类名字符串的原子。如果这个参数是一个原子,那么它必须是一个在调用此函数前已经通过GlobalAddAtom函数创建好的全局原子。这个原子(一个16bit的值),必须被放置在lpClassName的低位字节中,lpClassName的高位字节置零。
如果该参数为null时,将会寻找任何与lpWindowName参数匹配的窗口。
lpWindowName
指向一个以null结尾的、用来指定窗口名(即窗口标题)的字符串。如果此参数为NULL,则匹配所有窗口名。
返回值:
如果函数执行成功,则返回值是拥有指定窗口类名或窗口名的窗口的句柄。
如果函数执行失败,则返回值为 NULL 。可以通过调用GetLastError函数获得更加详细的错误信息。
可作如下使用:
HANDLE hDlg=::FindWindow(NULL,"")
if(hDlg!=NULL)
{
//Your operations
}
else
{
GetLastError();
}
如果您想熟悉使用API函数,可以下载一个MSDN帮助。里面介绍的是函数的使用方法以及参数的赋值操作
函数原型为 :
HWND FindWindow
(
LPCSTR lpClassName,
LPCSTR lpWindowName
);
lpClassName
指向一个以null结尾的、用来指定类名的字符串或一个可以确定类名字符串的原子。如果这个参数是一个原子,那么它必须是一个在调用此函数前已经通过GlobalAddAtom函数创建好的全局原子。这个原子(一个16bit的值),必须被放置在lpClassName的低位字节中,lpClassName的高位字节置零。
如果该参数为null时,将会寻找任何与lpWindowName参数匹配的窗口。
lpWindowName
指向一个以null结尾的、用来指定窗口名(即窗口标题)的字符串。如果此参数为NULL,则匹配所有窗口名。
返回值:
如果函数执行成功,则返回值是拥有指定窗口类名或窗口名的窗口的句柄。
如果函数执行失败,则返回值为 NULL 。可以通过调用GetLastError函数获得更加详细的错误信息。
可作如下使用:
HANDLE hDlg=::FindWindow(NULL,"")
if(hDlg!=NULL)
{
//Your operations
}
else
{
GetLastError();
}
如果您想熟悉使用API函数,可以下载一个MSDN帮助。里面介绍的是函数的使用方法以及参数的赋值操作
展开全部
FindWindow 查找指定窗口标题的窗口句柄. 得到了他的窗口句柄,就可以继续得到他窗体的子控件句柄. 然后setText 啥的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你用spy++这个工具VC上带的然后取到记事本的窗口名字和类名字
HWND hd=FindWindow("窗口名字","类名字");
if(hd)//这里已经取到
printf("%d\n",hd);
else
printf("error\n");
HWND hd=FindWindow("窗口名字","类名字");
if(hd)//这里已经取到
printf("%d\n",hd);
else
printf("error\n");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
HANDLE m_dlg=::FindWindow(NULL,"图片数据管理服务器");
if (m_dlg!=NULL)
{
::ShowWindow((HWND)m_dlg,SW_SHOW);
return TRUE;
}
if (m_dlg!=NULL)
{
::ShowWindow((HWND)m_dlg,SW_SHOW);
return TRUE;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
调用Windows API
EnumWindows就可以枚举所有顶级窗口,所谓顶级窗口就是指没有父窗口的窗口。
函数定义:
BOOL WINAPI EnumWindows(
__in WNDENUMPROC lpEnumFunc,
__in LPARAM lParam
);
第一个参数是回调函数的指针,回调函数必须要是这样的形式
BOOL CALLBACK EnumWindowsProc(
__in HWND hwnd,
__in LPARAM lParam
);
调用EnumWindow之后,你自己的回调函数会被系统调用,没调用你的回调函数一次,他给你一个HWND的句柄,如果你的回调函数返回TRUE,那么系统继续给你下一个窗口的句柄,返回FALSE系统停止枚举窗口。
获得窗口的标题可以通过SendMessage来获得,然后可以对比窗口是否为你需要的窗口。
EnumWindows就可以枚举所有顶级窗口,所谓顶级窗口就是指没有父窗口的窗口。
函数定义:
BOOL WINAPI EnumWindows(
__in WNDENUMPROC lpEnumFunc,
__in LPARAM lParam
);
第一个参数是回调函数的指针,回调函数必须要是这样的形式
BOOL CALLBACK EnumWindowsProc(
__in HWND hwnd,
__in LPARAM lParam
);
调用EnumWindow之后,你自己的回调函数会被系统调用,没调用你的回调函数一次,他给你一个HWND的句柄,如果你的回调函数返回TRUE,那么系统继续给你下一个窗口的句柄,返回FALSE系统停止枚举窗口。
获得窗口的标题可以通过SendMessage来获得,然后可以对比窗口是否为你需要的窗口。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询