所以,我试图从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) 我有一个带有按钮的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 XE2和indy 10.5.8.0
我遇到了6年前这篇文章中描述的完全相同的问题!
http://www.delphigroups.info/2/1/213924.html
我有一个简单的表单,只有idMappedPortTCP组件设置为活动状态.它按预期工作几秒钟转发输入/输出,而不是突然冻结.该组件停止响应,而应用程序中的其他所有内容仍然有效
遗憾的是同样的项目就像indy9的冠军一样!但我不能使用indy9我必须坚持使用indy10 :(
我无法相信没有人为这个众所周知的问题提供解决方案或解决方法.必须有一个解决方案!
我在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并执行一些数据计算).
我的问题是:
任何已知的方法来解决这个问题?也许已知Windows 7中的错误?
我发送的邮件是否有可能丢失?总消息或速率是否有限制?如果是这样,我怎样才能增加这些限制?
我怎样才能获得更多信息 - 例如:在Windows的某个地方检查我的消息发生了什么 - 在哪里/为什么窗户被卡住等等.任何进一步分析问题的方法都将非常感激.
非常感谢你