windows - Delphi 的 XP/2003 中的 SetFileInformationByHandle?

标签 windows delphi

SetFileInformationByHandle 的 MSDN 文档指的是“Windows Server 2003 和 Windows XP 上的 FileExtd.lib”。我设法找到了库和 .h 文件,可以从以下位置下载“Win32 FileID APIs 1.1”:

http://www.microsoft.com/downloads/details.aspx?FamilyID=1DECC547-AB00-4963-A360-E4130EC079B8&displaylang=en

似乎实现在静态 .lib 文件中 - 如何将其引用/链接到 Delphi 应用程序?我是在 Visual Studio 中创建“C Dll”并导出函数的唯一选择吗?有没有人将 .h 文件移植到 Delphi 头文件定义中?

最佳答案

C 和 C++ 使用 lib 文件提供链接器可用于 DLL 函数的“ stub ”。实际的功能实现在 DLL 中。 Delphi 不使用 lib 文件;它的 external 指令完成同样的事情。因此,您通常可以忽略 MSDN 中的“库”要求。不过,“DLL”要求仍然有效。

如果 Delphi 附带的单元不包含您想要的 API 函数,那么您有两个选择:

  • 找到为您声明它的其他人的代码。一个常见的候选人是 Jedi API units .

  • 自己声明。

    interface
    function SetFileInformationByHandle(
      hFile: THandle;
      FileInformationClass: TFileInfoByHandleClass;
      lpFileInformation: Pointer;
      dwBufferSize: DWord
    ): Bool; stdcall;
    
    implementation
    function SetFileInformationByHandle; external 'kernel32';
    

    我不知道 TFileInfoByHandleClass 是否已经在某处声明;您可能也需要声明这一点。 MSDN 包含函数声明,但有时缺少关联的枚举和常量值,因此附近有 Platform SDK header 很方便(因此您问题中的下载链接并非完全无用)。

关于windows - Delphi 的 XP/2003 中的 SetFileInformationByHandle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/967316/

相关文章:

java - Windows GetClassName 函数返回 JFrame 的完全限定类名

windows - 从 Console2 复制到剪贴板

c++ - 如何以编程方式设置系统IP

Delphi XE - 调用 Crystal Reports

delphi - 将 TImageList 字形绘制到 TDirect2DCanvas

java - socket.getInetAddress().getHostAddress() 奇怪的问题

windows - 如何为windows和linux电脑设置通用的emacs环境?

mysql - Delphi mysql 日期时间加分钟减去当前时间

delphi - 在 WMI 查询中获取 "Associators of "语句的结果时出现问题(无效变体操作!)

svn - 我如何开始使用子版本 + Delphi?