Я использую IApplicationActivationManager :: ActivateApplication() из MSDN ActivateApplication API2-й параметра "Аргументы" от IApplicationActivationManager :: ActivateApplication() Синтаксис
написать консольное приложение EXE (VC++), который запускает «Фото приложения метро & дисплеев PNG-изображение ". Вот фрагмент кода. Он активирует приложение «Photos metro», но не может отображать изображение с помощью приложения «Фотографии».
CoInitializeEx(NULL, COINIT_MULTITHREADED);
LPCWSTR appId = L"Microsoft.Windows.Photos_8wekyb3d8bbwe!App";
LPCWSTR imageArg = L" C:\\data\\Users\\Public\\Pictures\\image123.png";
IApplicationActivationManager* paam = NULL;
HRESULT hr = E_FAIL;
__try
{
hr = CoCreateInstance(CLSID_ApplicationActivationManager, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&paam));
if (FAILED(hr))
{
cout << "Error creating CoCreateINstance & HR is" <<hr<< endl;
return 0;
}
DWORD pid = 0;
hr = paam->ActivateApplication(appId, imageArg, AO_NONE, &pid);
if (FAILED(hr))
{
cout << "Error in ActivateApplication call & HR is " <<hr<< endl;
return 0;
}
cout << hex << hr;
if (hr == 0)
wprintf(L"Activated %s with pid %d\r\n", appId, pid);
}
__finally
{
if (paam) paam->Release();
}
CoUninitialize();
Я уверен, что ошибка во 2-й аргумент функции «ActivateApplication()», где я даю аргумент. Я пробовал разные способы, давая аргументы, как:
LPCWSTR imageArg = L " C: \ Data \ Users \ Public \ Pictures \ image123.png"; ИЛИ
LPCWSTR imageArg = L "- C: \ data \ Users \ Public \ Pictures \ image123.png";
LPCWSTR imageArg = L "C: \ data \ Users \ Public \ Pictures \ image123.png";
Да, я действительно использовал «\\». – codeLover
Ваша программа заканчивается слишком быстро, делая строку недействительной к тому времени, когда целевое приложение будет готово получить аргумент командной строки. Вместо этого вы должны использовать CLSCTX_LOCAL_SERVER. Всегда объясняйте, что вы * действительно хотите достичь, когда задаете вопрос, таким образом, вы, скорее всего, получите необходимую помощь. И прочитайте лицензию сайта, здесь требуется атрибуция. –
Я попытался использовать CLSCTX_LOCAL_SERVER, но на этот раз он не работает в CoCreateInstance(). – codeLover