gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:40:28 30 4
gpt4 key购买 nike

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

您可以将 HWND 参数值作为 IntPtr 传递出去,并使用 public static System.Windows.Forms.NativeWindow FromHandle(IntPtr handle) 转换它>.

关于c# - 表单未显示在凭据提供程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52083206/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com