在win10的64位系统中编程VS的32位程序ShellExecute打开屏幕键盘时失败原因及操作

在win10的64位系统中编程VS的32位程序ShellExecute打开屏幕键盘时:

ShellExecute(NULL,_T("open"),_T("osk.exe"),NULL,NULL,SW_SHOWNORMAL);

发现不启作用。但是打开计算器calc.exe和记事本notepad.exe时却可以。

因为32bit程序在64bit Windows操作系统,要访问system32目录。

那32bit程序要真正访问64bit程序的system32目录要如何做呢? 

   微软提供一套API,可以做到上面的要求。 通过 Wow64DisableWow64FsRedirection 和 Wow64RevertWow64FsRedirection API 来配合使用。

PVOID OldValue = NULL;  
BOOL bRet = Wow64DisableWow64FsRedirection (&OldValue);  
ShellExecute(NULL,_T("open"),_T("osk.exe"),NULL,NULL,SW_SHOWNORMAL);
if (bRet)
{   
Wow64RevertWow64FsRedirection(OldValue); 
}
OldValue = NULL;

你可能感兴趣的:(MFC)