Определить, когда вызывается Nuance Dragon
Мне нужно знать, когда пользователь запускает Nuance Dragon (Naturally Speaking) для Windows.
На платформе Windows всплывающее окно Dragon Assistant появляется после того, как пользователь говорит "Привет, Дракон". Появляется небольшое окно со значком дракона и текстом, используемым для обращения к пользователю.
Мое приложение должно определить, когда Dragon Assistant просыпается и засыпает. Выставляет ли Дракон какие-либо события для этой цели? Если нет, возможно ли "свернуть" окно "Ассистент дракона" и обнаружить что-то, что может сообщить мне об этом? При использовании UI Spy я вижу, что значок Dragon Assistant меняется, а также я вижу текстовый элемент управления, используемый для пользовательских запросов, но мне нужно, чтобы UI Spy работал под учетной записью Adminstrator, чтобы получить эти сведения.
1 ответ
Вы можете использовать Window Events для прослушивания событий EVENT_OBJECT_SHOW:
SetWinEventHook( EVENT_OBJECT_SHOW, EVENT_OBJECT_SHOW, NULL, MyWinEventProc,
0, 0, WINEVENT_OUTOFCONTEXT | WINEVENT_SKIPOWNPROCESS);
затем, в вашем событии proc, вы можете проверить, является ли отображаемое окно Помощником Дракона:
void CALLBACK MyWinEventProc(
HWINEVENTHOOK hWinEventHook,
DWORD event,
HWND hwnd,
LONG idObject,
LONG idChild,
DWORD dwEventThread,
DWORD dwmsEventTime
)
{
if (idObject == OBJID_WINDOW) // the window itself is being shown
{
// compare window class and/or title here
WCHAR szClass[255];
if (GetClassName(hwnd, szClass, ARRAYSIZE(szClass)) != 0 &&
wcscmp(szClass, "WhatEverDragonAssistantClassNameIs") == 0)
{
// the Dragon Assistant is showing; notify the rest of your app here
}
}
}