gpt4 book ai didi

c++ - 我可以创建一个与提交按钮一样工作的 CommandLink 吗?

转载 作者:行者123 更新时间:2023-11-30 04:59:43 24 4
gpt4 key购买 nike

写作能力不足请谅解。

我正在测试制作自定义凭证提供程序。我想创建一个 CommandLink 来对提交按钮做同样的事情。我想通过 CommandLink 与“提交”按钮分开登录。目前,只有自定义凭证提供程序通过 providerFilter::Filter(CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus, DWORD dwFlags, GUID* rgclsidProviders, BOOL* rgbAllow, DWORD cProviders) 公开。 enter image description here单击 [anathor longon 按钮] 登录。

这是我的示例代码:

 HRESULT CSampleCredential::CommandLinkClicked(DWORD dwFieldID)
{
HRESULT hr = S_OK;
DWORD dwResult = 0;

if (dwFieldID < ARRAYSIZE(_rgCredProvFieldDescriptors) &&
(CPFT_COMMAND_LINK == _rgCredProvFieldDescriptors[dwFieldID].cpft))
{
HWND hwndOwner = nullptr;
switch (dwFieldID)
{
case SFI_ANATHOR_SUBMIT_LINK:
dwResult = function_foo();
if(dwResult == 1) {
Call GetSerialization()...?
Run the logon.
}
break;
// ...
}
}
}

最佳答案

因为您正在编写凭据提供程序,所以您已经实现了 ICredentialProvider 接口(interface)及其 Advise 方法:

    virtual HRESULT STDMETHODCALLTYPE Advise( 
/* [annotation][in] */
_In_ ICredentialProviderEvents *pcpe,
/* [annotation][in] */
_In_ UINT_PTR upAdviseContext) = 0;

第一个参数是指向事件接口(interface) ICredentialProviderEvents 的指针,它只有一个方法:CredentialsChanged。您的任务是从用户(登录名/密码)获取凭据,将它们存储在您的内部并调用此方法。在下一轮,您的提供者将调用此方法:

    virtual HRESULT STDMETHODCALLTYPE GetCredentialCount( 
/* [annotation][out] */
_Out_ DWORD *pdwCount,
/* [annotation][out] */
_Out_ DWORD *pdwDefault,
/* [annotation][out] */
_Out_ BOOL *pbAutoLogonWithDefault) = 0;

你的任务是在 pdwDefaultpbAutoLogonWithDefault 参数中返回正确的值(我的建议是 0TRUE).比你实现 ICredentialProviderCredential 接口(interface)的类将立即调用 GetSerialization 方法。

您可以在此处返回已存储的凭据。

关于c++ - 我可以创建一个与提交按钮一样工作的 CommandLink 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51073959/

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