【问题标题】:delphi Import dll function with specified entry pointdelphi 导入指定入口点的dll函数
【发布时间】:2011-07-13 13:02:55
【问题描述】:

如何在 Delphi 中定义这个函数?我只知道没有入口点的导入,找不到任何有用的例子:(

这是用 C# 编写的

[DllImport("dwmapi.dll", EntryPoint = "#131")]
static extern int DwmpSetColorizationParameters(ref DwmColorParams dcpParams, 
bool alwaysTrue);

非常感谢

最好的问候

【问题讨论】:

    标签: c# delphi winapi dll entry-point


    【解决方案1】:

    EntryPoint 字段允许使用不同于 DLL 用于导出它的名称来声明函数。如果值的第一个字符是#,那么它表示函数的序数值,而不是它的DLL 名称。

    Delphi 使用两个不同的子句。如果 DLL 使用的名称与代码中的名称不同,则可以使用 name 子句:

    procedure Foo(...); external DLL name 'Bar';
    

    但如果 DLL 根本不导出任何名称,那么您可以使用 index 子句来判断函数具有哪个序数值:

    procedure Foo(...); external DLL index 131;
    

    【讨论】:

      【解决方案2】:

      这应该可以,虽然我不确定const 是否为alwaysTrue

      function DwmpSetColorizationParameters(var dcpParams: TDwmColorParams; 
        alwaysTrue: BOOL): Integer; stdcall; 
        external 'dwmapi.dll' index 131;
      

      【讨论】:

      • 还要感谢 David Heffernan 的优点(来自已删除的答案)。我是这样写的(stdcall),因为我是把代码从屏幕写到笔记本上,而且是外部调用的常见做法,所以我没有考虑就使用了。而将指针作为参数是次要的。
      • @David Heffernan - 这是您两次删除您的答案以支持我的答案。如果你到了美国,我欠你一品脱。 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-09
      • 2021-07-04
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多