标签: windows-api-code-pack

将新的扩展属性添加/编辑到现有文件的详细信息选项卡中

我尝试在SO上查看,但所有试图回答的问题都没有提供完整的答案.

我实际上想要在现有文件的详细信息选项卡中添加属性.文件是sldprt扩展名.必须在Windows资源管理器中显示属性/值.

不确定如何使用Windows API Code Pack Shell或DSOFile完成此操作?任何其他解决方案也很好.

我在Windows 10上使用VS,C#.

如果有人能提供详细的解决方案,我会非常感激.

完美的解决方案是:

  • 通过dsofile,ADS或任何可能的方法将属性添加到文件中.
  • 编辑到Windows Registery或负责在文件属性的详细信息选项卡和Windows资源管理器中显示新属性的Windows的任何部分
  • 显示如何编辑属性的值.

如此这样的回答问题不属性的细节选项卡,也没有Windows资源管理器的详细视图中添加.

我认为这是可能的,因为SOLIDWORKS(3d包)将所有名为sw的属性添加到所有SOLIDWORKS文件中.详细信息窗口中有很多其他属性.

如果您没有正确的解决方案,请不要回答.非常感谢你.

我不确定这个问题与向文件添加新元数据属性有关.

预览:

在此输入图像描述 在此输入图像描述

编辑:

关于sldprt扩展的注册(供参考):

在此输入图像描述

c# attributes windows-api-code-pack dsofile

4
推荐指数
1
解决办法
1150
查看次数

指定图标时,TaskDialog窗口高度不正确

编辑:

我修复了Code Pack的源代码并上传了更新的NuGet包:

https://www.nuget.org/packages/WindowsAPICodePack-Shell/

感谢dmex修复错误:http: //archive.msdn.microsoft.com/WindowsAPICodePack/WorkItem/View.aspx?WorkingItemId = 108

如您所见,问题已修复,无需使用繁琐的Opened事件语法:

在此输入图像描述


指定图标时,对话框高度不正确; 最后一个命令链接不完全可见:

在此输入图像描述

您对如何解决此问题有所了解吗?

用于显示此对话框的代码:

var dialog = new TaskDialog
{
    Caption = Title,
    InstructionText = "Some files added are already in the collection.",
    Text = "They have been skipped."
};
dialog.Opened += (s1, e1) => { dialog.Icon = TaskDialogStandardIcon.Warning; };

var linkContinue = new TaskDialogCommandLink("Continue", "Continue", string.Empty);
linkContinue.Click += (s2, e2) =>
{
    var s = (TaskDialogCommandLink)s2;
    var taskDialog = (TaskDialog)(s.HostingDialog);
    taskDialog.Close();
};
dialog.Controls.Add(linkContinue); …
Run Code Online (Sandbox Code Playgroud)

c# taskdialog windows-api-code-pack

3
推荐指数
1
解决办法
1003
查看次数

Windows API代码包TaskDialog缺少图标

我的图标TaskDialog丢失了:

在任务栏中:

我的代码是这样的:

using Microsoft.WindowsAPICodePack;
using Microsoft.WindowsAPICodePack.Dialogs;

...

TaskDialog taskDialog = new TaskDialog();
taskDialog.Caption = "Error";
taskDialog.InstructionText = "Test error message.";
taskDialog.Text = "Icon seems to be missing.";
taskDialog.DetailsExpandedText = "Test";
taskDialog.DetailsCollapsedLabel = "Expand";
taskDialog.StandardButtons = TaskDialogStandardButtons.Ok;
taskDialog.Icon = TaskDialogStandardIcon.Error;
taskDialog.Show();
Run Code Online (Sandbox Code Playgroud)

我从这里使用1.1版.任何线索,为什么他们失踪以及如何启用它们?依赖关系设置如下:

  <dependency>
    <dependentAssembly>
      <assemblyIdentity
      type="win32"
      name="Microsoft.Windows.Common-Controls"
      version="6.0.0.0"
      processorArchitecture="*"
      publicKeyToken="6595b64144ccf1df"
      language="*"
/>
    </dependentAssembly>
  </dependency>
Run Code Online (Sandbox Code Playgroud)

c# windows icons windows-api-code-pack

3
推荐指数
1
解决办法
1853
查看次数

使用 .NET Core 读取扩展文件属性

我正在尝试将 .NET Framework 应用程序移植到 .NET Core。该应用程序读取文件的扩展属性,就像在文件资源管理器中右键单击文件时可以看到的那样:

在此输入图像描述

在我的 4.7.2 Framework 应用程序中,代码如下所示:

using Microsoft.WindowsAPICodePack.Shell;
      
var shellFile = ShellFile.FromFilePath(file.FullName);
var title = shellFile.Properties.System.Title.Value;
var albumTitle = shellFile.Properties.System.Music.AlbumTitle.Value;
Run Code Online (Sandbox Code Playgroud)

我的项目引用了这样的 Shell 代码:

在此输入图像描述

我需要在 .NET Core 应用程序中执行哪些操作才能访问 Microsoft.WindowsAPICodePack.Shell 的代码?或者 .NET Core 是否提供了另一种读取这些文件属性的方法?

在将此问题标记为重复之前

我知道已经有人问过类似的问题: Obtaining file Extended Properties in .Net Core

然而,这个问题是 3 年前提出的,当时 .NET Core 还很年轻。这两个答案没有解释如何读取文件的扩展属性。似乎回答的人不理解扩展文件属性和可以从中获取的文件属性之间的区别FileInfo。也许问题还不够清楚?我还希望 .NET Core 已经得到足够的改进,以便可以再次使用此类遗留功能。

c# windows-api-code-pack .net-core

3
推荐指数
1
解决办法
1898
查看次数

RegistryKey在Windows窗体应用程序上执行的操作

我有一个Windows窗体应用程序的维护工作,其中包含窗体的Form_Load方法上的Windows RegistryKey代码.但我不知道是什么工作正在由RegistryKey代码片段执行.这是我的代码令我困惑的是..

 try
        {
            RegistryKey rkStartUp = Registry.LocalMachine;
            RegistryKey StartupPath;
            StartupPath = rkStartUp.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true);
            if (StartupPath.GetValue("ABCDXYZ") == null)
            {
                StartupPath.SetValue("ABCDXYZ", Application.ExecutablePath, RegistryValueKind.ExpandString);
            }
        }
        catch
        {
        }
Run Code Online (Sandbox Code Playgroud)

任何帮助解释它将受到高度赞赏.

c# registry windows-api-code-pack

0
推荐指数
1
解决办法
345
查看次数

如何使用 Windows API 代码包在 ShellFile/ShellFolder/ShellObject 对象上调用动词?

我正在寻找一个C#orVb.NET解决方案来了解如何调用存储在回收站中undeleteShellObject(ShellFileShellFolder)上的动词。

我写的回收站部分,我只需要知道如何在删除的项目上调用动词。

为了更好地理解我,我将展示这个示例,说明我如何使用Shell32接口调用动词,但在我有兴趣使用ShellObject/ShellFile/ShellFolderWindows API Code Pack库项目上找不到任何类似的方法:

Private SH As New Shell
Private RecycleBin As Folder = 
        SH.NameSpace(ShellSpecialFolderConstants.ssfBITBUCKET)

Dim RandomDeletedItem As FolderItem = RecycleBin.Items.Cast(Of FolderItem)(1)

RandomDeletedItem.InvokeVerb("undelete")
Run Code Online (Sandbox Code Playgroud)

这应该是Windows API Code Pack不完整的等价物 (In VB.NET)

Private Shared RecycleBin As IKnownFolder = KnownFolders.RecycleBin

Dim RandomDeletedItem As ShellObject = RecycleBin(1)
Dim RandomDeletedFile As ShellFile = RecycleBin(1)
Dim RandomDeletedFolder As ShellFolder = RecycleBin(1)

' Here I …
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net recycle-bin windows-api-code-pack

0
推荐指数
1
解决办法
2764
查看次数