WEB开发网
开发学院软件开发VC 活动的可访问兼容型应用给程序员带来使用软件的新... 阅读

活动的可访问兼容型应用给程序员带来使用软件的新工具

 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时返回,

上一页  4 5 6 7 8 9 10  下一页

Tags:活动 访问 兼容

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接