*/
UINT WINAPI ImmGetVirtualKey(HWND hWnd)
{
- OSVERSIONINFOA version;
- InputContextData *data = ImmGetContext( hWnd );
- TRACE("%p\n", hWnd);
-
- if ( data )
- return data->lastVK;
-
- version.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA);
- GetVersionExA( &version );
- switch(version.dwPlatformId)
- {
- case VER_PLATFORM_WIN32_WINDOWS:
- return VK_PROCESSKEY;
- case VER_PLATFORM_WIN32_NT:
- return 0;
- default:
- FIXME("%d not supported\n",version.dwPlatformId);
- return VK_PROCESSKEY;
- }
+ HIMC hIMC;
+ LPINPUTCONTEXTDX pIC;
+ UINT ret = VK_PROCESSKEY;
+
+ TRACE("(%p)\n", hWnd);
+
+ hIMC = ImmGetContext(hWnd);
+ pIC = (LPINPUTCONTEXTDX)ImmLockIMC(hIMC);
+ if (!pIC)
+ return ret;
+
+ if (pIC->bHasVKey)
+ ret = pIC->nVKey;
+
+ ImmUnlockIMC(hIMC);
+ return ret;
}
/***********************************************************************