我用过ACMIN/ACMOUT控件,在创建时必须有有个TCOMPENT的句柄才可以,可是在DLL中我不想创建任何窗体,如何实现ACM控件在DLL中的录音呢?

解决方案 »

  1.   

    可以使用Classes.AllocateHWnd方法来创建Handle的
    不需要有Form都可以的参看MSDN吧http://lysoft.7u7.net
      

  2.   

    以TMediaPlayer为例吧,下面的代码运行错误为无TWINCONTROL,就是TMediaPlayer没有parent,请问如何修改代码?
    unit Unit2;interfaceuses
      Classes,MPlayer,SysUtils,Forms;typetype
      TRecord = class(TThread)
      private
        { Private declarations }
      protected
        procedure Execute; override;
      public
        handle:integer;
        Filename:string;
        MediaPlayer1: TMediaPlayer;
        procedure CreateWav(channels : word; resolution : word; rate : longint; fn : string);
        Constructor  create(Handles:Integer;FIleNames:string);
      end;
    implementation
    constructor TRecord.create(Handles: Integer; FIleNames: string);
    begin
      inherited create(true);
      handle:=Handles;
      Filename:=FIleNames;
      MediaPlayer1:=TMediaPlayer.Create(nil);
      MediaPlayer1.parent:=??????
      CreateWav(1, 8, 11025, filename);
      MediaPlayer1.DeviceType := dtAutoSelect;
      MediaPlayer1.FileName := filename;
      MediaPlayer1.Open;
      MediaPlayer1.StartRecording;
    end;
    end.