Windows 如何以编程方式显示文件的shell提示(在资源管理器中悬停文件时显示的文本)

Windows 如何以编程方式显示文件的shell提示(在资源管理器中悬停文件时显示的文本),windows,winapi,windows-shell,Windows,Winapi,Windows Shell,这就是我想要的: 我知道这是可能的,因为Total Commander显示完全相同的信息,尽管在不同样式的窗口中。这让我想到,一定有一种方法可以查询任何给定文件的文本。界面就是您想要的。简要说明(仅psuedo代码,抱歉): PCUITEMID\u子pidl= IShellFolder*psf= IQueryInfo*pqi; if(成功(psf->GetUIObjectOf(hWnd,1,&pidl,0,&pqi))) { LPWSTR lpszTip; if(成功(pqi->GetInfo

这就是我想要的:

我知道这是可能的,因为Total Commander显示完全相同的信息,尽管在不同样式的窗口中。这让我想到,一定有一种方法可以查询任何给定文件的文本。

界面就是您想要的。简要说明(仅psuedo代码,抱歉):

PCUITEMID\u子pidl=
IShellFolder*psf=
IQueryInfo*pqi;
if(成功(psf->GetUIObjectOf(hWnd,1,&pidl,0,&pqi)))
{
LPWSTR lpszTip;
if(成功(pqi->GetInfoTip(0,&lpszTip))&&lpszTip)
{
//用小费做点什么,然后把它放出来
CoTaskMemFree(lpszTip);
}
}

一旦你有了文本,你当然可以以任何你喜欢的方式显示它。

谢谢,这正是我想要的。上面的代码是什么编程语言?(我知道你说的是伪代码)。这将帮助我了解如何实现它。@ KAE:它是C++(或者可能是C)。
PCUITEMID_CHILD pidl = <PIDL of item in question>
IShellFolder* psf = <IShellFolder parent folder of item in question>

IQueryInfo* pqi;
if (SUCCEEDED(psf->GetUIObjectOf(hWnd, 1, &pidl, 0, &pqi)))
{
    LPWSTR lpszTip;
    if (SUCCEEDED(pqi->GetInfoTip(0, &lpszTip)) && lpszTip)
    {
        // do something with the tip, and then free it
        CoTaskMemFree(lpszTip); 
    }
}