MkParseDisplayName возвращает неверный синтаксис - PullRequest
0 голосов
/ 23 июня 2019

Я борюсь с чем-то, что должно быть простым, я хочу создать моникер с конкретным отображаемым именем (например, "MyApplicationMnk")

Мне нужен этот моникер, чтобы связать его с приложением EXE, зарегистрированным вреестр Windows как LOCAL SERVER типа для регистрации его в таблице запущенных объектов (он же ROT)

функция COM MkParseDisplayName возвращает invalid syntax ошибка, единственная источник Я обнаружил, что упомянутое решение этой проблемы не работает со мной.

Код такой же простой, как и следующий

IMoniker* appmnk;
HRESULT hr;
CComPtr<IBindCtx> bct;
DWORD wctx = 0;
ULONG ulng = 0L;
CreateBindCtx(wctx, &bct);
OLECHAR dspnm = (wchar_t)"MyApplicationMnk";
LPCOLESTR dspnmptr = &dspnm;
hr = MkParseDisplayName(bct, dspnmptr, &ulng, &appmnk); // returns invalid syntax
.
.
//some code
.
.
appmnk->Release();

Я пытался вставитьзначение прямо как это

hr = MkParseDisplayName(bct, OLESTR("MyApplicationMnk"), &ulng, &appmnk);

и с вышеупомянутым предлагаемым решением, как это

hr = MkParseDisplayName(bct, (wchar_t *)(_bstr_t)(char *)"MyApplicationMnk", &ulng, &appmnk);

Я не знаю, чтонеправильно !, все поставляемые типы соответствуют тому, что сказано в документации.

Любая помощь обязательно будет оценена.

...