更新:2007 年 11 月
此接口表示设备仿真器管理器。该对象用于控制“设备仿真器管理器”窗口以及循环访问设备仿真器管理器 (DEM) 中的根级节点,例如“数据存储”、“我的设备仿真程序”、“所有设备仿真程序”和“其他”。
interface IDeviceEmulatorManager : IDispatch ();
方法
| 方法 | 说明 | 
|---|---|
| 枚举当前节点中的平台。 | |
| 显示或隐藏“设备仿真器管理器”窗口 | |
| 移至下一个节点。 | |
| 移回第一个节点(通常为“数据存储”)。 | |
| 通过重新读取“数据存储”中的信息刷新枚举。 | |
| 获取当前节点的名称,例如“数据存储”、“我的设备仿真程序”、“所有设备仿真程序”或“其他”。 | |
| 注册设备仿真器管理器的刷新事件。 | |
| 取消对刷新事件的注册。 | 
备注
若要创建实现此接口的对象,请使用 CoCreateInstance。
实现此接口的对象是一个链接列表,其中包含 DEM 窗口中的所有根级节点。
示例
下面的示例将列出“设备仿真器管理器”窗口中的节点、SDK/平台和仿真程序。
int _tmain(int argc, _TCHAR* argv[])
{
    if (SUCCEEDED(CoInitializeEx(NULL, COINIT_MULTITHREADED)))
    {
        // HRESULT is used to determine whether method calls are successful
        HRESULT hr;
        // Instantiate DeviceEmulatorManager (DEM) object.
        // This starts DvcEmuManager.exe in silent mode
        CComPtr<IDeviceEmulatorManager> pDeviceEmulatorManager;
        hr = pDeviceEmulatorManager.CoCreateInstance(__uuidof(DeviceEmulatorManager));
        if (FAILED(hr)) {
            wprintf_s(L"Error: Unable to instantiate DeviceEmulatorManager. ErrorCode=0x%08X\n", hr);
            return false;
        }
        // For each of the four nodes in the Device Emulator Manager window
        // (Datastore, My Device Emulators, All Device Emulators, and Others)  
        for (; SUCCEEDED(hr); (hr = pDeviceEmulatorManager->MoveNext()))
        {
            // Output the name of node
            CComBSTR node;
            hr = pDeviceEmulatorManager->get_Name(&node);
            if (FAILED(hr)) {
                wprintf_s(L"Error: Failed to get current SDK category name. ErrorCode=0x%08X\n", hr);
                return false;
            }
            wprintf_s(L"- %s\n", node);
            // Get a list of SDKs/platforms in this node
            CComPtr<IEnumManagerSDKs> pSDKEnumerator;
            hr = pDeviceEmulatorManager->EnumerateSDKs(&pSDKEnumerator);
            if (FAILED(hr)) {
                wprintf_s(L"Error: Failed to get enumerator for the SDK Category[%s]. ErrorCode=0x%08X\n", node, hr);
                return false;
            }
            // For every SDK/platform in the list
            for (; SUCCEEDED(hr); (hr = pSDKEnumerator->MoveNext()))
            {
                // Output its name
                CComBSTR sdkName;
                hr = pSDKEnumerator->get_Name(&sdkName);
                if (hr == E_ENUMSDK_NOT_LOADED ) {
                    continue;
                } else if (FAILED(hr)) {
                    wprintf_s(L"Error: Failed to get SDK details. ErrorCode=0x%08X\n", hr);
                    return false;
                }
                wprintf_s(L"\t- %s\n", sdkName);
                // Get the list of emulators in the SDK/platform
                CComPtr<IEnumVMIDs> pDeviceEnumerator;
                hr = pSDKEnumerator->EnumerateVMIDs(&pDeviceEnumerator);
                if (FAILED(hr)) {
                    wprintf_s(L"Error: Failed to get enumerator for VM devices. ErrorCode=0x%08X\n", hr);
                    return false;
                }
                // For every emulator in the list
                for (; SUCCEEDED(hr); (hr = pDeviceEnumerator->MoveNext()))
                {
                    // Get the IDeviceEmulatorManagerVMID object.
                    CComPtr<IDeviceEmulatorManagerVMID> pDevice;
                    hr = pDeviceEnumerator->GetVMID(&pDevice);
                    if (FAILED(hr)) {
                        continue;
                    }
                    // Output the name of the emulator.
                    CComBSTR deviceName;
                    hr = pDevice->get_Name(&deviceName);
                    if (FAILED(hr)){
                        continue;
                    }
                    wprintf_s(L"\t\t%s\n", deviceName);
                }
            }
        }
        return true;
        CoUninitialize();
    }
    return false;
}
要求
DEMComInterface.tlb