繁体   English   中英

表单未显示在凭据提供程序中

[英]Form not displaying in credential provider

我在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();
}

试试看:

调用ICredentialProviderCredentialEvents::OnCreatingWindow方法

HRESULT OnCreatingWindow(
    HWND *phwndOwner
);

要获取窗口句柄,请将其他参数传递到您的库中,并使用重载方法ShowDialog

public DialogResult ShowDialog(
    IWin32Window owner
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM