1

IDMクライアント アプリケーション用のいくつかの API を提供します: http://www.internetdownloadmanager.com/support/idm_api.html

Delphi経由でこれを行うにはどうすればよいですか?

4

2 に答える 2

4

わかった。IDM がインストールされているとします。

IDManTypeInfo.tlbライブラリには、IDM ライブラリのデータ型に関する情報が含まれていないようです。この場合、このライブラリを使用する唯一の方法は、C++ ヘッダー ファイルを Delphi に書き直すことです。

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%正しいとは言えませんが、試してみてください。

于 2012-10-20T16:18:03.403 に答える
2
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%

于 2014-10-27T07:13:59.673 に答える