倾家荡产600分请教一dll调用问题,在线等待(200分)

9

9278707

Unregistered / Unconfirmed
GUEST, unregistred user!
我要调用FTKernelAPI.dll提取种子信息,但是无论如何取不到种子的句柄,请高手指教!代码如下:
type
TOpenTorrent = function(lpszFileName: LPCTSTR;nCodePage:
UINT=CP_ACP;lpszDesKey:LPCTSTR=nil): hwnd;
stdcall;
var
OpenTor: TOpenTorrent;
procedure TForm1.Button1Click(Sender: TObject);
var
DllHdl: hwnd;
HTorrentFile: hwnd;
m_strTorrentFile: LPCTSTR;
begin
//.torrent种子地址
m_strTorrentFile := LPCTSTR(Edit1.Text);
DllHdl := LoadLibrary('FTKernelAPI.dll');
if DllHdl <> 0 then
try
@OpenTor := GetProcAddress(DllHdl,'FTK_Torrent_Open');
HTorrentFile := OpenTor(m_strTorrentFile,CP_ACP,'');
//htorrentfile始终为0
ListBox1.Items.Add('{DllHandle:}'+inttostr(DllHdl));
ListBox1.Items.Add('{TorrentHandle:}'+inttostr(HTorrentFile));
finally
FreeLibrary(DllHdl);
end;
end;

FTKernelAPI.dll下载地址http://www.tomore.com/1/32479.html
 
楼猪厉害,得不到种子也是高手
 
看来大富翁真的是没高手了!失望。。
 
有很多情况可能导致无法得到dll返回的数据,如:用delphi写的链接库调用了字符串或可变数据结构却没有加入sharemem单元;调用方式;。。。
所以需要具体情况具体分析,请给出FTK_Torrent_Open的源代码
 
FTKernelAPI.dll有源码吗?
 
procedure TForm1.Button1Click(Sender: TObject);
Type
PLong=^LongInt;
TFTK_Torrent_Open=function (lpszFileName:pAnsiChar;
nCodePage:UINT = CP_ACP;
lpszDesKey:pAnsiChar=nil):pLong;cdecl;
Var
Hd:THandle;
fHd:pLong;

FTK_Torrent_Open:TFTK_Torrent_Open;
begin
fHd:=nil;
Hd:=LoadLibrary('E:/BitZam_FTKernelAPI/FTKernel_API/FTKernelAPI.dll');
if Hd<>0 then
begin
FTK_Torrent_Open:=GetProcAddress(Hd,'FTK_Torrent_Open');
if @FTK_Torrent_Open<>nil then
begin
fHd:=FTK_Torrent_Open('E:/[霍元甲][1].完整更清晰版DVDTC-RMVB.torrent');
if Assigned(fHd) then
ShowMessage(IntToStr(fHd^))
end;
end;
end;
收分
 
//OpenTor(m_strTorrentFile,CP_ACP,'');
''和nil是不一样的
 
to appfirst:
不知你试过没有,我这里 fHd 始终都是 nil啊
to all:
FTKernelAPI.dll没有源码,但是有VC的例子,在http://www.tomore.com/1/32479.html
可以下到,并附有说明。
 
既然有C的例子,你试试他能不能正常运行,没问题的话翻译过去不就行了
 
tseug:
要是那么简单就弄成了,我也不会出怎么多分来浪费大家的时间了
 
C例子有什么问题?
 
终于成功了,但是有的种子可以,有的不行,种子没有问题,可能是dll的问题
 
appfirst是不是做过类似的程序,能否给我发一份?
我暂时用的是一组控件,但是存在严重的内存泄露
相关资料在http://www.tomore.com/1/37050.html
麻烦看一下!
 
我没做过,不过是根据你给的连接下了一个,不过我可是试验过了,返回了值,我想你的问题可能是那个调用方式stdcall,他那个使用的VC的默认调用方式cdecl;
 
多人接受答案了。
 
顶部