WinCe FindWindow函数无法打开窗口

时间:2022-02-05 19:22:50
我的程序是:
void CBrowserDlgDlg::OnButton1() 
{
// TODO: Add your control notification handler code here
 // TODO: Add your control notification handler code here
        CWnd *pWnd = NULL;
        HWND hWnd;

  //      hWnd = ::FindWindow(NULL, _T("\\C\\index.htm"));
          hWnd = ::FindWindow(NULL, _T("\\C\\七仔.txt"));

        if(!hWnd)
        {
                AfxMessageBox( _T("FindWindow 失败") );
                return;
        }

        pWnd = (CWnd*)GetWindowLong(hWnd, GWL_WNDPROC);
        GetCurrentPermissions();
        SetProcPermissions(0xFFFFFFFF);

}
我明明index.htm和七仔.txt已经打开,但是还是出现("FindWindow 失败") ,为什么啊?

13 个解决方案

#1


你窗体名有问题吧,用SPY++看看倒底是什么名称的窗体名。

#2


不好意思,什么是SPY++啊?

#3


打开你的开始菜单在VS2005/vs2003下都有一个REMOTE TOOLS的选项,打开SPY++和你的终端连上,看看窗口的名称.呵呵.

#4


我知道了,如果用SPY++的话,是不是就要先打开index.htm和七仔.txt窗口,然后用SPY++里面的Search\Find Window对话框里面的那个十字坐标,把它移动到我要找的已经打开的窗口上,看看窗口名称阿?
如果是的话,我现在遇到两个问题:
一来我的终端设备(一台WinCE5.0的开发板)和我的PC机连接上以后,就算在我的终端设备上打开文件窗口,在我的PC机上也是看不见的,怎么用SPY++里面的那个Find Window的十字坐标呢?
二来我把终端设备的index.htm和七仔.txt复制到PC的桌面上,用SPY++的Search\Find Window,把十字坐标移到指定的窗口上,按OK出现的是:Cannot find window which matchs search criteria。难道在PC机上还有看的到的窗口,而查不到窗口信息的窗口吗?

#5


Find Window的参数是你打开窗口的标题名(左上角)或者是对应的类名,你的程序参数有误,

#6


这个函数,错误肯定是参数传的不对啦!

啊!在PC上Find终端上的,LZ真强!!!要找终端上的窗体,只能运行终端上的程序。

#7


没有用过这个函数,学习一下

#8


你把你的程序放到wince上运行

#9


晕啊!!!我现在已经在PC机上创建了一个txt文档,名字就为AT.txt,就用英文名字试试看,结果在CE调试板上,随便我执行:
hWnd = ::FindWindow(NULL, _T("\\C\\AT.txt"));
或者
hWnd = ::FindWindow(NULL, _T("\\C\\AT"));  
        if(!hWnd) 
        { 
                AfxMessageBox( _T("FindWindow 失败") ); 
                return; 
        } 
结果都是显示:"FindWindow 失败"的对话框。
晕!这是为什么啊?
难道AT文件名还不对?

#10


"\\C\\AT"中的C是什么啊?目录名吗?
我认为:你的参数还是错的,
比如在xp下,打开at.txt文件,它的标题应该是“at.txt - 记事本”
这才是你应该使用的参数,你写的这两个不像啊。

#11


对的,“C”是目录名字,难道不用加目录名吗?

#12


我刚才试过了,确实是盘符路径错了,是不需要加盘符路径“C”的。这样的话,就不会弹出("FindWindow 失败") 对话框报错了。谢谢高手,非常感谢!!!

#13


请问,终端上有那些程序可以查找wince上的类名呢

#1


你窗体名有问题吧,用SPY++看看倒底是什么名称的窗体名。

#2


不好意思,什么是SPY++啊?

#3


打开你的开始菜单在VS2005/vs2003下都有一个REMOTE TOOLS的选项,打开SPY++和你的终端连上,看看窗口的名称.呵呵.

#4


我知道了,如果用SPY++的话,是不是就要先打开index.htm和七仔.txt窗口,然后用SPY++里面的Search\Find Window对话框里面的那个十字坐标,把它移动到我要找的已经打开的窗口上,看看窗口名称阿?
如果是的话,我现在遇到两个问题:
一来我的终端设备(一台WinCE5.0的开发板)和我的PC机连接上以后,就算在我的终端设备上打开文件窗口,在我的PC机上也是看不见的,怎么用SPY++里面的那个Find Window的十字坐标呢?
二来我把终端设备的index.htm和七仔.txt复制到PC的桌面上,用SPY++的Search\Find Window,把十字坐标移到指定的窗口上,按OK出现的是:Cannot find window which matchs search criteria。难道在PC机上还有看的到的窗口,而查不到窗口信息的窗口吗?

#5


Find Window的参数是你打开窗口的标题名(左上角)或者是对应的类名,你的程序参数有误,

#6


这个函数,错误肯定是参数传的不对啦!

啊!在PC上Find终端上的,LZ真强!!!要找终端上的窗体,只能运行终端上的程序。

#7


没有用过这个函数,学习一下

#8


你把你的程序放到wince上运行

#9


晕啊!!!我现在已经在PC机上创建了一个txt文档,名字就为AT.txt,就用英文名字试试看,结果在CE调试板上,随便我执行:
hWnd = ::FindWindow(NULL, _T("\\C\\AT.txt"));
或者
hWnd = ::FindWindow(NULL, _T("\\C\\AT"));  
        if(!hWnd) 
        { 
                AfxMessageBox( _T("FindWindow 失败") ); 
                return; 
        } 
结果都是显示:"FindWindow 失败"的对话框。
晕!这是为什么啊?
难道AT文件名还不对?

#10


"\\C\\AT"中的C是什么啊?目录名吗?
我认为:你的参数还是错的,
比如在xp下,打开at.txt文件,它的标题应该是“at.txt - 记事本”
这才是你应该使用的参数,你写的这两个不像啊。

#11


对的,“C”是目录名字,难道不用加目录名吗?

#12


我刚才试过了,确实是盘符路径错了,是不需要加盘符路径“C”的。这样的话,就不会弹出("FindWindow 失败") 对话框报错了。谢谢高手,非常感谢!!!

#13


请问,终端上有那些程序可以查找wince上的类名呢