活动的可访问兼容型应用给程序员带来使用软件的新工具
2007-03-22 21:31:12 来源:WEB开发网核心提示: SetWinEventHook函数使用WinEventProc回调函数来设置WinEvent hook,一旦设置了这个挂钩,活动的可访问兼容型应用给程序员带来使用软件的新工具(9),每次产生WinEvent时,WinEventProc函数都将被系统调用,因为我希望回调函数只看到窗口弹出来,
SetWinEventHook函数使用WinEventProc回调函数来设置WinEvent hook。一旦设置了这个挂钩,每次产生WinEvent时,WinEventProc函数都将被系统调用。
在我的例程里,我检查是否Find: All Files窗口存在。如果不存在,我就设置WinEvent 挂钩去守候直到该窗口创建。如果窗口存在,我就发送WM_TARGET_WINDOW_FOUND消息通知主线程可以访问该窗口了。下面从WinMain取出的代码演示了本方法:
if(NULL == (hWndMainWindow = FindWindow(NULL, szMainTitle)))
{
hEventHook = SetWinEventHook(
EVENT_MIN, // eventMin ID
EVENT_MAX, // eventMax ID
NULL, // always NULL for outprocess hook
WinEventProc, // call back function
0, // idProcess
0, // idThread
WINEVENT_SKIPOWNPROCESS | // always the same for
WINEVENT_OUTOFCONTEXT); //outproc hook
}
else
PostThreadMessage(GetCurrentThreadId(),
WM_TARGET_WINDOW_FOUND, 0, 0);
因为我将0作为第5、6个参数传给SetEventHook,回调函数WinEventProc将因为系统中所有激发WinEvent的进程或线程而被调用。
不是所有的UI元素在激发WinEvents时都表现出相同的行为,有些在创建之时可能并不激发自己的EVENT_ OBJECT_CREATE事件,而是激发一个告诉你其父亲正在被创建的事件。有些窗口只会在第一次创建时激发自己的EVENT_ OBJECT_CREATE事件,接着在关闭时激发EVENT_OBJECT_HIDE事件,在重新开始后激发EVENT_OBJECT_SHOW事件。在开发WinEvent支持时使用ActiveAccessibilitySDK中的AccessibleEventWatcher工具来检查事件,通常是个好主意。在例程中,我对EVENT_OBJECT_ CREATE和EVENT_OBJECT_SHOW事件感兴趣是因为它们在一个可访问元素(在此例中是一个窗口)创建或者变得可见时被激发。因为我希望回调函数只看到窗口弹出来,它在触发的事件不是EVENT_OBJECT_ CREATE和EVENT_OBJECT_SHOW,或者相应元素的窗口指针是NULL时返回,
- ››兼容ie6浏览器窗口四角固定背景代码
- ››兼容FF和IE的html传递参数给swf的方法
- ››兼容IE和Firefox的设为首页和收藏的Javascript代码...
- ››兼容多种浏览器“复制到剪贴板”的解决方案
- ››访问频率监测有助数据库管理
- ››访问控制大师,使用pam来支持login的访问控制
- ››活动目录系列之十四:实战SYSVOL文件夹共享丢失后...
- ››活动目录的安装:深入浅出Active Directory系列(二...
- ››活动目录的介绍:深入浅出Active Directory系列(一...
- ››兼容IE6/IE7/IE8/FireFox的CSS hack
- ››活动贴发布
- ››访问Windows 2008共享资源出错解决方法
更多精彩
赞助商链接