c # — форма не отображается в провайдере учетных данных

У меня есть функция в C #, которая отображает форму. Я показал функцию, используя Unmanaged Exports и вызывая ее из C ++ в образце провайдера учетных данных по ссылке на команду. Форма не отображается (ничего не происходит). Однако когда я вызываю ту же форму C # с помощью консольного приложения C ++, форма отображается без каких-либо проблем. Какая разница, что консольное приложение C ++ загружает его, а код поставщика учетных данных C ++ не загружает его?

Код C ++:

using CSharpForm = void(__stdcall *)(wchar_t* message);
int _tmain(int argc, _TCHAR* argv[])
{
HMODULE mod = LoadLibraryA("CSharp.dll");
CSharpForm form = reinterpret_cast<CSharpForm>(GetProcAddress(mod, "form1"));
form(L"This is a c# form");
getchar();
return 0;
}

Код C #:

[DllExport(ExportName = "form1", CallingConvention = CallingConvention.StdCall)]
public static void showForm([MarshalAs(UnmanagedType.LPWStr)]string message)
{
Form_Test form = new Form_Test();
form.Text = message;
form.ShowDialog();
}

2

Решение

Попробуйте это:

Вызов ICredentialProviderCredentialEvents::OnCreatingWindow метод

HRESULT OnCreatingWindow(
HWND *phwndOwner
);

чтобы получить дескриптор окна, передайте дополнительный параметр в вашу библиотеку и используйте перегруженный метод ShowDialog,

public DialogResult ShowDialog(
IWin32Window owner
)

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]