【问题标题】:Get the default tooltip for a file or folder in C#在 C# 中获取文件或文件夹的默认工具提示
【发布时间】:2016-09-08 19:26:54
【问题描述】:

在 Windows/C# 中,如何将默认工具提示文本作为文件或文件夹的字符串(意思是,当您将鼠标悬停在 Windows 中的文件或文件夹上时看到的文本相同)?这是我的意思的一个例子:

我尝试在网上查找,但找不到关于此主题的任何内容。

【问题讨论】:

  • 你可能想看看little closer - 另外:见this 提示:这一切都在注册表中..
  • @TaW 那么,解析所有 HKCR 注册表项并使用目标文件或文件夹上的自定义属性构建字符串?你会认为会有一种内置的方法来获得所有这些的结果。
  • @Alexandru 我不认为我掌握了你想要的东西。您想获取文件数据,还是仅获取工具提示中数据的显示方式?
  • @IanH。我想要工具提示文本字符串。因此,在上图中,您会看到工具提示。我想要的是它显示的相应文本,在这种情况下它将是Type: TXT File\nSize: 0 bytes\nDate modified: 9/8/2016 11:22 AM。正如@TaW 指出的那样,这可能会因注册表中的内容而有很大不同。
  • @Alexandru 不过,它必须是系统提供的确切字符串吗?获取原始数据会容易得多,您可以继续使用这些值。

标签: c# .net windows file tooltip


【解决方案1】:

好吧,经过一些深入的研究和一些混乱,我想出了这个:

工具提示中显示的值由注册表项决定。更具体地说,通过键 HKEY_CLASSES_ROOT\* 和值 InfoTip
要获取此键的值,请使用一些 windows 注册表获取。

string root = "HKEY_CLASSES_ROOT";
string subkey = "*";
string keyName = root + "\\" + subkey;

string value = Registry.GetValue(keyName, "InfoTip", string.Empty);

value 应该具有注册表键值的值。

之后,只需将字符串分成几个部分。对我来说,字符串是prop:System.ItemTypeText;System.Size;System.DateModified,所以我会尝试将其划分为

System.ItemTypeText
System.Size
System.DateModified

通过使用一些字符串拆分。

之后,使用FileInfo类获取被检查文件的信息,并按照你获取注册表键值的方式格式化。

【讨论】:

  • 这行不通,因为注册表扩展自身以提供此功能的程度非常大。例如,HKCR\Directory 具有 InfoTipprop:System.Comment;System.DateCreated。更不用说,每个文件扩展名(.docx.doc)都可以有自己的 HKCR 条目,即InfoTip。一些InfoTip 条目甚至包含指向文件本身包含的内部资源的链接。编写或正常工作将是一场噩梦。
  • @Alexandru 是的,它会起作用,但可能只是在一定程度上......如果你查看工具提示的其他条目,你可能会为所有这些条目创建案例,但它会是大量的工作。
  • 也许如果你有一个美好的一年,并且你的要求使你能够编写一个内核驱动程序来完成所有这些......但是,这对我来说不是这样。
猜你喜欢
  • 2015-08-11
  • 1970-01-01
  • 1970-01-01
  • 2011-05-19
  • 1970-01-01
  • 1970-01-01
  • 2015-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多