C++ mailto:在未安装邮件客户端的URL中

C++ mailto:在未安装邮件客户端的URL中,c++,winapi,email,mailto,C++,Winapi,Email,Mailto,我遇到了一个问题。我在UI中显示电子邮件链接。当用户单击该链接时,将按如下方式打开: LPCTSTR url=L"mailto:myemail@gmail.com?subject=my_subject"; ShellExecute(hParentWnd, _T("open"), url, NULL, NULL, SW_SHOWNORMAL); 只要最终用户安装了电子邮件客户端,这种方法就可以使用。但是,如果电子邮件客户端不是安装程序,则该命令只会在默认web浏览器中打开主页 您知道如何解决这个

我遇到了一个问题。我在UI中显示电子邮件链接。当用户单击该链接时,将按如下方式打开:

LPCTSTR url=L"mailto:myemail@gmail.com?subject=my_subject";
ShellExecute(hParentWnd, _T("open"), url, NULL, NULL, SW_SHOWNORMAL);
只要最终用户安装了电子邮件客户端,这种方法就可以使用。但是,如果电子邮件客户端不是安装程序,则该命令只会在默认web浏览器中打开主页


您知道如何解决这个问题吗?

您可以确定哪个可执行文件/命令处理
mailto:
协议(或通过查看
hkcr\mailto\shell\open\command


如果幸运的话,对于没有关联集的机器,这将是空的。

您希望发生什么样的行为?@JohnSibly:给我一个错误,这样我就可以使用其他方法来显示它。下面介绍如何操作:
TCHAR buff[1024];DWORD大小=1024;BOOL bOK=successed(AssocQueryString(0,ASSOCSTR_可执行文件,L“mailto”、NULL、buff和size))@c00000fd:上述“mailto”代码未在win10 x64中运行。AssocQUeryString总是返回false,但如果我们选中“http”,它将返回true,并打印执行路径的位置,如HRESULT hr=AssocQUeryString(ASSOCF_NOTRUNCATE | ASSOCF_REMAPRUNDLL | ASSOCF_NOFIXUPS,ASSOCSTR_EXECUTABLE,L“http”、NULL、buff和size);