我正在尝试使用Visual C++ 2008在Windows 7中调试shell扩展(IContextMenu).我在注册表中设置了DesktopProcess = 1并将主机应用程序设置为explorer.exe.但是当我启动调试器时,它会启动explorer.exe然后从进程中分离.不调用shell扩展的DllMain.
在Windows XP + Visual C++ 2008中,在调试器中启动的相同代码具有完全相同的设置,没有任何问题.
有任何想法如何在Win7中调试shell扩展?
我是单元测试的新手.我不知道是否值得对下面的代码进行单元测试.这是用Delphi编写的示例方法:
function TCoreAudio.CreateAudioClient: IAudioClient;
var
MMDeviceEnumerator: IMMDeviceEnumerator;
MMDevice: IMMDevice;
MixFormat: PWaveFormatEx;
AudioClient: IAudioClient;
HR: HResult;
begin
Result := nil;
if CheckWin32Version(6, 0) then // The Core Audio APIs were introduced in Windows Vista.
begin
HR := GetInstance().CoCreateInstance(CLSID_MMDeviceEnumerator, nil, CLSCTX_ALL,
IMMDeviceEnumerator, MMDeviceEnumerator);
if Failed(HR) then
Exit;
HR := MMDeviceEnumerator.GetDefaultAudioEndpoint(eRender, eConsole, MMDevice);
if Failed(HR) then
Exit;
HR := MMDevice.Activate(IAudioClient, CLSCTX_ALL, nil, AudioClient);
if Failed(HR) then
Exit;
HR := AudioClient.GetMixFormat(MixFormat);
if Failed(HR) then
Exit;
HR := AudioClient.Initialize(AUDCLNT_SHAREMODE_SHARED, 0, 0, 0, MixFormat, nil);
CoTaskMemFree(MixFormat); …Run Code Online (Sandbox Code Playgroud)