博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
超级gnFindWindow
阅读量:4933 次
发布时间:2019-06-11

本文共 1430 字,大约阅读时间需要 4 分钟。

gnFindWindow(String caption, integer nParentHwnd)
功能:递归式查找所有的窗口,包括多层的子窗口,以找到标题为包含<参数1>的窗口句柄。
这样可以找到报表窗口了。
一般情况下,在VFP里处理不到报表窗口,用这函数取得它句柄后,就可以随心所欲的处置它了。
参数1 :窗口标题的一部分文本。
参数2(选项):父窗口句柄 hwnd,用来限定搜索的范围。不指定的话,以windows desktop 作范围,即在windows所有窗口及子窗口中查找。
返回:窗口句柄。
例子:gnFindWindow('Report Designer', _vfp.hwnd) 
{"gnFindWindow", (FPFI) gnFindWindow, 2,"C,.I"}
HWND FindWindowByCaption(HWND hParentWin, 
char
 
*
 caption)
//
 hParentWin为0,则取desktop
    HWND hChild,hNext,hResult
=
0
;
    
char
 cTmp[
100
] ;
    
string
 pattern 
=
  caption  ;
    
if
(hParentWin
==
0
)
        hParentWin
=
GetDesktopWindow();     
    
    
//
(0) 每次的处理:比较窗口标题 
    GetWindowText(hParentWin,cTmp,
100
);
    
string
 s 
=
 cTmp;
    
    
//
(1) 退出条件:找到 包含caption的窗口
    
if
( s.find(pattern,
0
!=
 
0xffffffff
 ) 
        
return
 hParentWin;
    
    
//
(2) 退出条件: 无子窗口 
    
if
( (hChild
=
GetWindow(hParentWin,GW_CHILD) )
==
0
 )
        
return
 hResult; 
    
//
(3) 进入方法:列举本窗口下的所有子窗口 
    hNext 
=
 hChild ; 
    
while
( hNext 
!=
0
 )
    {
        
if
( (hResult
=
FindWindowByCaption(hNext,caption))
!=
0
 )
            
return
 hResult; 
        hNext 
=
 GetWindow(hNext,GW_HWNDNEXT);
    }
    
return
 hResult;
}
void
 gnFindWindow(ParamBlk FAR 
*
parm)
//
 char cCaption, int hParent
    HWND hParent 
=
 parm
->
pCount
==
1
 
?
 
0
:(HWND) parm
->
p[
1
].val.ev_long  ;
    NullTerminate(
&
parm
->
p[
0
].val);
    
char
 
*
 cCaption 
=
 (
char
*
) _HandToPtr(parm
->
p[
0
].val.ev_handle);
    _RetInt( (
long
) FindWindowByCaption(hParent, cCaption), 
30
);
}
写C++,真是不容易呵,过后再看C#,小菜一碟

转载于:https://www.cnblogs.com/maxchan/archive/2007/10/16/925578.html

你可能感兴趣的文章
Solr服务器搭建
查看>>
画世界怎么用光影_世界绘画经典教程:水彩光影魔法教程
查看>>
win+rsync+php,跨平台的fswatch+rsync同步备份
查看>>
vue2 cdn 加载html,vue项目中使用CDN加载
查看>>
数组转集合踩坑
查看>>
node.js的异步I/O、事件驱动、单线程
查看>>
vue cli3 子目录问题
查看>>
github.com访问慢解决
查看>>
微服务架构最强详解
查看>>
转:哈夫曼树详解
查看>>
.Net Core Identity外面使用Cookie中间件
查看>>
【坐在马桶上看算法】算法1:最快最简单的排序——桶排序
查看>>
C#中泛型之Dictionary
查看>>
强连通分量
查看>>
Linux 入门 bash语句 第三课
查看>>
LeetCode 27. 移除元素
查看>>
【原创】phpcms v9 0day
查看>>
杂谈SharpDx中的WIC组件——我们需要WIC的图片编码功能么?
查看>>
移动端弹性盒
查看>>
觉得比较重要的一张触发器的图,高手跳过哈!
查看>>