标签: delphi-xe2

在Delphi XE2中从dll调用过程

所以,我试图从Delphi XE2中的DLL调用一个过程.但程序不会分配.

我试过在互联网上找到几个例子.正在按预期加载DLL.导出正确写入.

一切似乎都很好,但仍然没有成功.

怎么了?

我的代码如下

type
  TStarter = procedure; stdcall;

...

fTheHookStart: TStarter;

...

procedure TForm1.LoadHookDLL;
begin
  LogLn('Keyboard Hook: Loading...');
  // Load the library
  DLLHandle := LoadLibrary('thehookdll.DLL');

  // If succesful ...
  if Handle <> 0 then
  begin
    LogLn('Keyboard Hook: DLL load OK!');
    LogLn('Keyboard Hook: assigning procedure ...');

    fTheHookStart := TStarter(GetProcAddress(DLLHandle, 'StartTheHook'));
    if @fTheHookStart <> nil then
    begin
      LogLn('Keyboard Hook: procedure assignment OK!');
      LogLn('Keyboard Hook: Starting...');
      fTheHookStart;
    end
    else
    begin
      LogLn('Keyboard Hook: procedure assignment FAIL!');
      FreeLibrary(DLLHandle);
      if Handle <> 0 …
Run Code Online (Sandbox Code Playgroud)

windows delphi dll procedure delphi-xe2

-2
推荐指数
1
解决办法
347
查看次数

CopyFile函数仅适用于xp

我有一个带有按钮的delphi表单.单击此按钮,它允许用户浏览文件并将文件复制到目录.

我的功能代码是这样的:

function TdmData.CopyAFile(Const Sourcefile, DestFile: string): boolean;
var Src, Dest : PChar;
begin
  Src := StrAlloc(Length(SourceFile)+1);
  Dest := StrAlloc(Length(DestFile)+1);
try
  StrPCopy(Src,SourceFile);
  StrPCopy(Dest,DestFile);
  result := (CopyFile(Src,Dest,FALSE));
finally
  StrDispose(Src);
  StrDispose(Dest);
end;
end;
Run Code Online (Sandbox Code Playgroud)

按钮的单击事件:

CopyAFile(fn, Path +'\'+ ExtractFileName(fn));
Run Code Online (Sandbox Code Playgroud)

当我运行这个表单并按下win XP机器上的按钮时,我无法理解,它工作正常,如果我浏览到它被复制到的目录,我可以在那里看到该文件.

但是,在以后的操作系统(如Win 8.1)上运行此表单时,它不会复制文件,再次检查目录,我看不到其中的文件.

我没有得到任何错误,我已经完成了通过罚款的代码.

有没有人遇到过这个或者知道原因是什么?如果有的话,任何帮助都会很棒.

delphi operating-system file delphi-xe2

-2
推荐指数
1
解决办法
391
查看次数

没有解决众所周知的idMappedPortTCP问题?

我正在使用Delphi XE2和indy 10.5.8.0

我遇到了6年前这篇文章中描述的完全相同的问题!

http://www.delphigroups.info/2/1/213924.html

我有一个简单的表单,只有idMappedPortTCP组件设置为活动状态.它按预期工作几秒钟转发输入/输出,而不是突然冻结.该组件停止响应,而应用程序中的其他所有内容仍然有效

遗憾的是同样的项目就像indy9的冠军一样!但我不能使用indy9我必须坚持使用indy10 :(

我无法相信没有人为这个众所周知的问题提供解决方案或解决方法.必须有一个解决方案!

delphi delphi-xe2

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

Win api的SendMessage永远等待

我在Windows 7 64位上有一个GUI应用程序(Service Pack 1)我的GUI应用程序中有一些Java并且它调度Delphi代码 -

最近,在升级到多核PC之后 - 我们注意到一些繁重的GUI动作会导致GUI卡住.我们只有一个更新GUI的线程.

在调试之后,我们注意到偶尔会有一个delphi用来赢取api的"SendMessage"的电话等待.

然后我们尝试将程序的亲和性设置为1 - 问题解决了,但它减慢了我们的应用程序.

我知道将SendMessage替换为PostMessage或SendMessageTimeout是很常见的,但是在很多地方我们使用SendMessage +我们也使用也使用SendMessage的DevExpress组件 - 我们不可能映射所有这些地方.

最奇怪的是,即使我们的GUI有一个线程,将亲和度设置为1也可以解决问题(系统中还有其他后台线程,但它们都是纯java并执行一些数据计算).

我的问题是:

  1. 任何已知的方法来解决这个问题?也许已知Windows 7中的错误?

  2. 我发送的邮件是否有可能丢失?总消息或速率是否有限制?如果是这样,我怎样才能增加这些限制?

  3. 我怎样才能获得更多信息 - 例如:在Windows的某个地方检查我的消息发生了什么 - 在哪里/为什么窗户被卡住等等.任何进一步分析问题的方法都将非常感激.

非常感谢你

java windows delphi winapi delphi-xe2

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

标签 统计

delphi ×4

delphi-xe2 ×4

windows ×2

dll ×1

file ×1

java ×1

operating-system ×1

procedure ×1

winapi ×1