标签: windows-api-code-pack

Windows API代码包:它在哪里?

为什么自己和它曾经存在的证据被删除了?

仅仅半年之前,它在channel9上被宣传为应该包含在每个人中的东西 - 今天微软档案馆已经"退役"并且完全保持API代码包存在的安静.

.net windows-api-code-pack

95
推荐指数
3
解决办法
6万
查看次数

如何仅使CommonOpenFileDialog选择文件夹,但仍显示文件?

我使用Microsoft的CommonOpenFileDialog来允许用户选择文件夹,但是当对话框出现时没有文件可见.当IsFolderPicker设置为true 时,是否可以显示文件和文件夹?

我目前的代码看起来像这样

var dialog = new CommonOpenFileDialog();
dialog.IsFolderPicker = true;

if (dialog.ShowDialog() == CommonFileDialogResult.Ok)
{
    SelectedFolderPath = dialog.FileName;
}
Run Code Online (Sandbox Code Playgroud)

c# openfiledialog windows-api-code-pack

15
推荐指数
1
解决办法
2万
查看次数

如何使用ilMerge将dll合并到exe文件中?

我试过了:

C:\Windows\System32>ilmerge /target:winexe /out:c:\output.exe c:\MyProgram.exe c:\Microsoft.WindowsAPICodePack.dll
Run Code Online (Sandbox Code Playgroud)

但得到了:

'ilmerge' is not recognized as an internal or external command, operable program or batch file.
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?(顺便说一句,是否有更好的方法将dll合并到exe文件中?)

谢谢

ilmerge windows-api-code-pack

11
推荐指数
1
解决办法
1万
查看次数

访问不存在的缩略图

我已经创建了一个应用程序,它为您提供计算机中的文件列表.每当您单击列表中的任何项目时,它旁边的小PictureBox都应显示相应文件的缩略图.我在Windows 7上使用C#.

为了获得缩略图,我再次发现了一个在不同问题中发布的方法.首先,我引用Windows API代码包.然后,我使用以下代码:

ShellFile shellFile = ShellFile.FromFilePath(fullPathToFile);
myPictureBox.Image = shellFile.Thumbnail.LargeBitmap;
Run Code Online (Sandbox Code Playgroud)

这并不总是有效.有时,显示的缩略图仅仅是"默认应用程序"图标.我发现只有Windows以前为该文件生成了缩略图并将其存储在缩略图缓存中才会显示真正的缩略图.这意味着我必须手动打开文件夹,等待Windows为每个文件生成缩略图,然后我的应用程序将能够看到那些拇指.

我的程序如何在使用它们之前强制Windows 7生成真正的缩略图?

更新(由Li0liQ提供)

可以通过添加FormatOption强制缩略图检索:

ShellFile shellFile = ShellFile.FromFilePath(fullPathToFile);
shellFile.Thumbnail.FormatOption = ShellThumbnailFormatOption.ThumbnailOnly;
myPictureBox.Image = shellFile.Thumbnail.LargeBitmap;
Run Code Online (Sandbox Code Playgroud)

但是,我得到一个例外,如果缩略图还没有:

当前的ShellObject没有有效的缩略图处理程序,或者在提取此特定shell对象的缩略图时出现问题.---> System.Runtime.InteropServices.COMException:类未注册(来自HRESULT的异常:0x80040154(REGDB_E_CLASSNOTREG))

请参阅如何在Windows资源管理器中刷新文件的缩略图?潜在线索的问题和代码片段.

c# windows-shell thumbnails windows-api-code-pack

11
推荐指数
2
解决办法
3251
查看次数

窗口中进程打开的文件名?

如何在窗口中通过某个进程(PID)打印文件名?或者所有进程(PID)当前打开一个文件.
Process Explorer是一个实用工具.但它怎么没有提到呢?Windows中存在的 任何/ proc文件系统类型的东西?

Can we read any Window's Registry?  
I wants to write a programming code And I rarely work on windows. 
Run Code Online (Sandbox Code Playgroud)

在Python中有两个解决方案:
1.import psutil
2. import win32api,win32con,win32process

但这对我来说仍然是一个问题!
1.这些图书馆如何运作?
2.任何寄存器,内存或虚拟文件系统都会保留此信息吗?

如果它可能在窗口中,为什么TasK-Manager中不存在此信息?

c python windows filesystems windows-api-code-pack

11
推荐指数
1
解决办法
2762
查看次数

CommonOpenFileDialog导致Windows窗体缩小

我一直在研究Windows窗体应用程序,并且最近添加了一个简单的设置页面,允许用户选择输出所在的文件夹.OpenFileDialog是丑陋的,不好用,所以我已经在Windows API CodePack中添加了访问CommonOpenFileDialog-所有好处.

当我打开CommonOpenFileDialog时,Windows窗体应用程序缩小到较小的大小,如附加的图像所示.

左边是程序,右边是打开的对话框:

左边是程序正常,右边是打开对话框.

我之前和之后都试过检查表格的大小,这没有改变,所以我打了一个砖墙.任何信息都是有用的,如果需要我可以提供更多细节.

打开表单的代码是:

CommonOpenFileDialog dialog = new CommonOpenFileDialog();
dialog.DefaultDirectory = selectedFolderTextBox.Text;
dialog.IsFolderPicker = true;

if (dialog.ShowDialog() != CommonFileDialogResult.Ok) return;

selectedFolderTextBox.Text = dialog.FileName;
Run Code Online (Sandbox Code Playgroud)

c# dialog winforms windows-api-code-pack

10
推荐指数
2
解决办法
1449
查看次数

Windows XP上的Windows API Codepack向后兼容性

我没有方便的XP机器.如果我使用Windows API Codepack在C#中对Vista/Win7做一些新的事情(例如"TaskDialog"),它如何应对在Windows XP机器上运行?

如果我使用Codepack,我是否有效地使我的应用程序仅支持Vista和更高版本的Windows?

c# backwards-compatibility windows-api-code-pack

8
推荐指数
1
解决办法
1931
查看次数

如何获取文件属性?

我想要一个显示媒体文件的一些文件属性的应用程序,如果可用,比如(不知道windows中使用的确切英文单词)FileName,Length/Duration,FileType(.avi .mp3等)我试过taglib和windowsapishell但我没有得到一个工作结果(参考是好的)

ShellFile so = ShellFile.FromFilePath(file);
so.Properties.System.(everythingIwant)
Run Code Online (Sandbox Code Playgroud)

向我展示了我想要显示的很多文件属性,但我无法让它工作一个错误的例子:

'WindowsFormsApplication2.vshost.exe'(托管(v4.0.30319)):已加载'C:\ Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll',跳过加载符号.模块已经过优化,调试器选项"Just My Code"已启用.程序'[6300] WindowsFormsApplication2.vshost.exe:Program Trace'已退出,代码为0(0x0).程序 '[6300] WindowsFormsApplication2.vshost.exe:托管(v4.0.30319)' 已经与代码0(为0x0)退出.

容易的事情

var thing = so.Properties.System.FileName.Description;
Console.WriteLine(thing);
Run Code Online (Sandbox Code Playgroud)

不会工作

我确实知道一些Java和PHP编程,但我对C#完全不熟悉


特别感谢@ marr75和@errorstacks!

一个跟进问题:我做了这个,它有效

class Program
{
    static void Main(string[] args)
    {   
        string file = "E:/Dump/Shutter Island.avi";

        FileInfo oFileInfo = new FileInfo(file);
        Console.WriteLine("My File's Name: \"" + oFileInfo.Name + "\"");
        DateTime dtCreationTime = oFileInfo.CreationTime;
        Console.WriteLine("Date and Time File Created: " + dtCreationTime.ToString());
        Console.WriteLine("myFile Extension: " + oFileInfo.Extension);
        Console.WriteLine("myFile total Size: " + oFileInfo.Length.ToString());
        Console.WriteLine("myFile filepath: " …
Run Code Online (Sandbox Code Playgroud)

c# windows-shell taglib getproperties windows-api-code-pack

8
推荐指数
2
解决办法
7万
查看次数

检查文件是否正在使用以及哪个应用程序?

尝试使用下面提到的方法来获取有关锁定文件的更多详细信息.

文件正在使用中

function GetFileInUseInfo(const FileName : WideString) : IFileIsInUse;
var
  ROT : IRunningObjectTable;
  mFile, enumIndex, Prefix : IMoniker;
  enumMoniker : IEnumMoniker;
  MonikerType : LongInt;
  unkInt  : IInterface;
begin
  result := nil;

  OleCheck(GetRunningObjectTable(0, ROT));
  OleCheck(CreateFileMoniker(PWideChar(FileName), mFile));

  OleCheck(ROT.EnumRunning(enumMoniker));

  while (enumMoniker.Next(1, enumIndex, nil) = S_OK) do
  begin
    OleCheck(enumIndex.IsSystemMoniker(MonikerType));
    if MonikerType = MKSYS_FILEMONIKER then
    begin
      if Succeeded(mFile.CommonPrefixWith(enumIndex, Prefix)) and
         (mFile.IsEqual(Prefix) = S_OK) then
      begin
       if Succeeded(ROT.GetObject(enumIndex, unkInt)) then
        begin
          if Succeeded(unkInt.QueryInterface(IID_IFileIsInUse, result)) then
          begin
            result := unkInt as IFileIsInUse;
            exit;
          end;
        end;
      end;
    end; …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-2009 windows-api-code-pack

7
推荐指数
1
解决办法
2273
查看次数

.NET 5 使用 Windows Shell 的方式是什么?

我最近将我的一些软件项目转移到了 .NET 5。我使用 Microsoft WindowsAPICodePack 来处理 Windows Shell,但是这个库已经过时了,似乎不再维护了。此外,它是为 .NET Framework 4.7 或 4.8 编译的,可能与 .NET 5 不兼容。那么从 .NET 5 应用程序使用 Windows Shell 的“正确”(最好是现代的)方式是什么?例如,我使用旧的 API 代码包来获取用户的库、获取文件图标等。我注意到命名空间 Windows.Storage 似乎具有部分或全部这些功能,但它似乎更有针对性UWP(也许这对于 .NET 5 项目来说无关紧要?)。还是我需要研究 WinRT?有任何想法吗?

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

7
推荐指数
1
解决办法
912
查看次数