2012-10-20 77 views
1

IDM調用IDM(互聯網下載管理器)提供了客戶端應用程序API的一些:http://www.internetdownloadmanager.com/support/idm_api.html如何從我的Delphi應用程序

如何通過德爾福這樣做呢?

+2

它是一個COM對象。是你如何使用COM的問題?簡而言之:您必須下載庫,使用'regsvr32'將其註冊爲COM庫,然後在Delphi中導入'IDManTypeInfo.tlb',並將導入的'.pas'文件添加到您的應用程序中。 – teran

回答

2

好的。假設我們安裝了IDM。

似乎IDManTypeInfo.tlb庫不包含有關IDM庫的數據類型的信息。 在這種情況下,要使用這個庫中的唯一方法是C++頭文件重寫德爾福:

unit IDMan; 

interface 
uses windows, ActiveX; 

const 
    CLSID_CIDMLinkTransmitter : TGUID = '{AC746233-E9D3-49CD-862F-068F7B7CCCA4}'; 

    IID_ICIDMLinkTransmitter : TGUID = '{4BD46AAE-C51F-4BF7-8BC0-2E86E33D1873}'; 
    IID_ICIDMLinkTransmitter2 : TGUID = '{94D09862-1875-4FC9-B434-91CF25C840A1}'; 
type 
    ICIDMLinkTransmitter = interface(IInterface) 
     ['{4BD46AAE-C51F-4BF7-8BC0-2E86E33D1873}'] 

     function SendLinkToIDM(
      Url : WideString; 
      Referer : WideString; 
      Cookies : WideString; 
      Data: WideString; 
      User: WideString; 
      Password: WideString; 
      LocalPath: WideString; 
      LocalFileName: WideString; 
      Flags : longint):HRESULT; stdcall; 
    end; 

    ICIDMLinkTransmitter2 = interface(ICIDMLinkTransmitter) 
     ['{94D09862-1875-4FC9-B434-91CF25C840A1}'] 
     function SendLinkToIDM2(
      Url : WideString; 
      Referer: WideString; 
      Cookies: WideString; 
      Data: WideString; 
      User: WideString; 
      Password: WideString; 
      LocalPath: WideString; 
      LocalFileName: WideString; 
      Flags : longint; 
      reserved1 : Variant; 
      reserved2 :Variant): HResult; stdcall; 

     function SendLinksArray(
      location : WideString; 
      LinksArray : PSafeArray):HResult; stdcall; 
    end; 

implementation 

end. 

這個單元添加到您的項目,並嘗試使用下面的代碼:

uses IDMan, ComObj; 
.... 
procedure TMainForm.TestIDM(); 
var lt : ICIDMLinkTransmitter; 
begin 
    lt := CreateComObject(CLSID_CIDMLinkTransmitter) as ICIDMLinkTransmitter; 
    lt.SendLinkToIDM('http://www.internetdownloadmanager.com/trans_kit.zip', 'teran.karelia.pro','','','','','','', 0); 
end; 

我沒有安裝IDM,所以我沒有檢查這個代碼。我不確定它是100%正確的,但試試吧。

1
uses ShellAPI,Registry; 

function GetProgramFilesDir: string; 
begin 
    with TRegistry.Create do begin 
    try 
    RootKey := HKEY_LOCAL_MACHINE; 
    OpenKeyReadOnly('SOFTWARE\Microsoft\Windows\CurrentVersion'); 
    Result := ReadString('ProgramFilesDir'); 
    finally 
    Free; 
    end; 
    end; 
end; 


var url:string; 

begin 
url:='http:\\yourfile'; 
if FileExists(GetProgramFilesDir+'\Internet Download Manager\IDMan.exe') then 
ShellExecute(Handle, 'open',pchar('"'+GetProgramFilesDir+'\Internet Download Manager\IDMan.exe"'),PChar(' /d "'+url+'"'),nil, 1) else 
ShellExecute(Handle, 'open',nil,PChar(url),nil, 1) ; //1=show -- 
end; 

工作100%

相關問題