怎么检查一个指针是否有效? 我用FindWindow得到一个窗口句柄,用这个句柄要发送消息到目的窗口(多次),但我怎么知道窗口是否在中途关闭了,有什么办法可以检测吗? 或者有什么函数可以快速检查一个指针是否有效? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 每次发送之前 判断一下 句柄是否为NULL 不,我的句柄已经赋值了,我就是怕在中途窗口关闭了,句柄又不知道设为NULL HWND hwnd = ::FindWindow(NULL,"计算器");if(hwnd == NULL){ MessageBox("没有打开计算器");}你可以试试啊 没打开hwnd就是NULL 晕倒,可能我没有说清楚,就像这样CWnd *pWnd=FindWindow(NULL,"Name");while(true){ pWnd->SendMessage(XXX,XXX,XXX);}代码较简单,大致也是这样,如果在循环的过程中窗口关闭了, pWnd 先前已经赋值过了,会自动变为NULL吗?还有 IsWindow 用的类型是 HWnd ,CWnd 怎么转为 HWnd 类型?但有一个成员变量 m_hWnd ,应该是吧,但pWnd无效了,怎么得到m_hWnd HWND hwnd =FindWindow(NULL,"Name");while(true){ ::SendMessage(hwnd,XXX,XXX);}可以通过句柄发送的 不一定非给使用 指针 HWND hWnd = ::Findow(NULL, _T("Name"));if(hWnd){ ::SendMessage(hWnd,..);} 每次都要找窗口?不断使用FindWindow 会不会降低效率啊? FIND 来的句柄恐怕没什么别的方法了吧,别的程序的窗口,只能每次都判断下。人家又不会告诉你某个标志,我的窗口已经关闭了。 楼主把代码改成这样while(true){ HWND hWnd = FindWindow(....); if(NULL == hWnd) { //窗口挂了 } else { SendMessage(......); }} while(HWND hWnd = FindWindow(....)){ SendMessage(......);} 加个判断啊!CWnd *pWnd=FindWindow(NULL,"Name");while(true){ if(pWnd && IsWndow(pWnd->m_hWnd)) pWnd->SendMessage(XXX,XXX,XXX);} HWND hWnd = ::Findow(NULL, _T("Name"));if(hWnd){ ::SendMessage(hWnd,..);}接收时做判空 嗯 谢谢了 我就是不知道 每次都要 FindWindow会不会影响效率 vfw 视频录制问题 菜鸟提问啦 据说是OnInitDialog初始化的指针要在OnClose里释放 在vs2008中,CString对象执行+=运算时错误?? 在CFormView的窗口中添加属性页有点问题! 难啊!VC+Excel程序发布的问题 列表框中如何获得当前选择栏的数据? 高分求在三维空间中圆环的数学模型和算法 help!! 急!!!怎么让菜单响应函数带参数啊? 从32位转换为64位的问题 inno setup如何包含vcredist_x86.exe
不,我的句柄已经赋值了,我就是怕在中途窗口关闭了,句柄又不知道设为NULL
if(hwnd == NULL)
{
MessageBox("没有打开计算器");
}
你可以试试啊 没打开hwnd就是NULL
while(true)
{
pWnd->SendMessage(XXX,XXX,XXX);
}
代码较简单,大致也是这样,如果在循环的过程中窗口关闭了, pWnd 先前已经赋值过了,会自动变为NULL吗?还有 IsWindow 用的类型是 HWnd ,CWnd 怎么转为 HWnd 类型?但有一个成员变量 m_hWnd ,应该是吧,但pWnd无效了,怎么得到m_hWnd
while(true)
{
::SendMessage(hwnd,XXX,XXX);
}
可以通过句柄发送的 不一定非给使用 指针
if(hWnd)
{
::SendMessage(hWnd,..);
}
while(true)
{
HWND hWnd = FindWindow(....);
if(NULL == hWnd)
{
//窗口挂了
}
else
{
SendMessage(......);
}
}
{
SendMessage(......);
}
加个判断啊!
CWnd *pWnd=FindWindow(NULL,"Name");
while(true)
{
if(pWnd && IsWndow(pWnd->m_hWnd))
pWnd->SendMessage(XXX,XXX,XXX);
}
if(hWnd)
{
::SendMessage(hWnd,..);
}
接收时做判空