2012-10-20 1 views
1

IDM에서 IDM (인터넷 다운로드 관리자)를 호출하는 클라이언트 응용 프로그램에 대한 몇 가지 API를 제공?어떻게 내 델파이 응용 프로그램

+2

IT는 COM 개체입니다. COM을 사용하는 방법에 대한 질문입니까? 즉, 라이브러리를 다운로드하고'regsvr32'를 사용하여 COM 라이브러리로 등록한 다음 델파이에서'IDManTypeInfo.tlb'을 가져 와서 가져온'.pas' 파일을 애플리케이션에 추가해야합니다. – teran

답변

2

확인. IDM이 설치되어 있다고 가정 해 보겠습니다.

보이는 IDManTypeInfo.tlb 라이브러리에는 IDM 라이브러리의 데이터 유형에 대한 정보가 없습니다.

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; 

I를이 경우 ,이 라이브러리를 사용하는 유일한 방법은 델파이 C++ 헤더 파일을 재 작성하는 것입니다 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 %