使用Delphi 2010为MIRC创建DLL



使用Delphi 2010,我正在尝试为MIRC编写DLL。这是MIRC帮助文件中的一些信息

技术说明

本节包含想要创建DLL的程序员的技术信息。

被调用的dll中的例程必须为:

int ____stdcall procname(hwnd mwnd,hwnd awnd,char *data,char *parms,bool show,bool nopause)

mwnd是主窗口的手柄。

awnd是发出命令的窗口的句柄,如果通过远程脚本调用命令,则可能不是当前活动的窗口。

数据是您希望发送到DLL的信息。返回时,DLL可以用它希望MIRC执行的命令填充此变量。

dll可以返回整数以指示其想要的mirc做什么:

0表示MIRC应该/停止处理

1表示MIRC应该继续处理

2意味着它已经用它希望MIRC执行的命令填充了数据变量,并且在执行命令时使用的参数(如果有)填充了Parms。

3表示DLL填充了数据变量,结果$ dll()作为标识符应返回。

以下代码(应该反向输入文本)编译确定,但是使用DLL的结果不是我所期望的。

function Reverse(mWnd, aWnd: hWnd; Data, Parms: PChar; Show, NoPause: Boolean): Integer; stdcall;
var
  Temp: String;
  I: Integer;
begin
  SetLength(Temp, Length(Data));
  for I := 0 to Length(Data) do
  begin
    Temp[I] := Data[Length(Data)- I]; // Reversing string by retrieving characters from Data one at a time
  end;
  StrCopy(Data, PChar(Temp)); // Putting reversed string back into data
  Result := 3;
end;
exports
    Reverse;
begin
end.

例如,从MIRC调用DLL为//say $dll(mydll,Reverse,hello)给出Just'O'的输出。如果参数是" Hello Sailor",则输出为" Orilsao llhe"。我尝试过未能成功追踪代码的操作,但是我无法理解数据值的变化。我怀疑我自己对PCHAR行为的有限了解是一个促成因素。我欢迎任何可能有帮助的建议。欢呼

我将pchar更改为pansichar in in函数定义。 function Reverse(mWnd, aWnd: hWnd; Data, Parms: PAnsiChar; Show, NoPause: Boolean): Integer; stdcall;

我将PCHAR更改为StrCopy(Data, PChar(Temp)); // Putting reversed string back into data行中的Pansichar,现在我的问题已经不复存在了。只有一点谷歌搜索使我能够进行更改。实际上,在这个论坛上写下我的问题帮助我在解决方案中零。

欢呼,谢谢。

相关内容

  • 没有找到相关文章

最新更新