RT
系统是WINDOWS 7 .XP时代的代码不顶用了。去MSDN翻了翻也没找到相关的说明。function EnumCallback(lpGuid: PGUID; lpcstrDescription, lpcstrModule: PANSIChar;
lpContext: Pointer): BOOL; stdcall;
begin
//取得相应的回放设备了。如何把指定的设备设置为默认的呢。
Result := True;
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
DirectSoundEnumerate(EnumCallback,mmo1.lines );
系统是WINDOWS 7 .XP时代的代码不顶用了。去MSDN翻了翻也没找到相关的说明。function EnumCallback(lpGuid: PGUID; lpcstrDescription, lpcstrModule: PANSIChar;
lpContext: Pointer): BOOL; stdcall;
begin
//取得相应的回放设备了。如何把指定的设备设置为默认的呢。
Result := True;
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
DirectSoundEnumerate(EnumCallback,mmo1.lines );
解决方案 »
- 寻高手帮忙编译一个开源邮件客户端系统
- 如何 把一个字符串中 指定字符(数字与'.'字符) 以外的字符全部删除
- 百分比怎样搞出来的?
- kyilx的webservice做apache应用服务器,客户端为delphi采用soapconection连接。
- 在自己的程序里要用另一个文本编辑工具(现有的)打开word文档,怎么做?
- 设置word的页码!
- 请指教怎样用table1.emptytable清空paradox表,我做的总是出问题(100分)?
- 远程文件传送问题:巨好的点对点远程文件传送控件Sax Comm Object 8.0,并且有注册码?需要的请进!!!
- 关于无模式窗体的问题
- 绝对给分的问题.
- DBCtrlGrid问题
- 21cn.com邮箱注册
waveOutMessage(
hWaveOut: HWAVEOUT; {设备句柄}
uMessage: UINT; {消息}
dw1: DWORD {消息参数}
dw2: DWORD {消息参数}
): Longint; {将由设备给返回值}
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, MMSystem; type
TMainForm = class(TForm)
ComboBox1: TComboBox;
ComboBox2: TComboBox;
ComboBox3: TComboBox;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure GetOutDevices;
procedure GetInDevices;
procedure GetMidiOutDevices;
public
{ Public declarations }
end; var
MainForm: TMainForm; implementation {$R *.dfm} { TMainForm } const
DRVM_MAPPER = $2000; // mmddk.h #define DRVM_MAPPER 0x2000
DRVM_MAPPER_PREFERRED_GET = DRVM_MAPPER+21; // mmddk.h
DRVM_MAPPER_PREFERRED_SET = DRVM_MAPPER+22; // in einer uralten version von mmddk.h function ChangePrimarySndOutDevice(dev: cardinal): integer;
{dev Bereich: 0 bis waveOutGetNumDevs - 1}
begin
result := waveOutMessage(HWAVEOUT(WAVE_MAPPER), DRVM_MAPPER_PREFERRED_SET, dev, 0);
end; function ChangePrimarySndInDevice(dev: cardinal): integer;
{dev Bereich: 0 bis waveInGetNumDevs - 1}
begin
result := waveInMessage(HWAVEIN(WAVE_MAPPER), DRVM_MAPPER_PREFERRED_SET, dev, 0);
end; function ChangePrimaryMidiOutDevice(dev : cardinal): integer;
{dev Bereich: 0 bis midiOutGetNumDevs - 1}
begin
result := midiOutMessage(HMIDIOUT(MIDI_MAPPER), DRVM_MAPPER_PREFERRED_SET, dev, 0);
end; procedure TMainForm.Button1Click(Sender: TObject);
begin
if ChangePrimarySndOutDevice(Combobox1.ItemIndex) = MMSYSERR_NOERROR then
begin
GetOutDevices; //Windows setzt immer die primire Karte als 0, daher missen wir die Liste neu holen
MessageDlg('Primares Ausgabegerat wurde erfolgreich geandert', mtInformation, [mbOK], 0);
end else
MessageDlg('Fehler beim Setzen des primaren Ausgabegerates', mtError, [mbOK], 0); if ChangePrimarySndInDevice(Combobox2.ItemIndex) = MMSYSERR_NOERROR then
begin
GetInDevices; //Windows setzt immer die primire Karte als 0, daher missen wir die Liste neu holen
MessageDlg('Primares Aufnahmegerat wurde erfolgreich geandert', mtInformation, [mbOK], 0);
end else
MessageDlg('Fehler beim Setzen des primaren Aufnahmegerites', mtError, [mbOK], 0); if ChangePrimaryMidiOutDevice(Combobox3.ItemIndex) = MMSYSERR_NOERROR then
begin
GetMidiOutDevices; //Windows setzt immer die primare Karte als 0, daher mussen wir die Liste neu holen
MessageDlg('Primares MIDI-Ausgabegert wurde erfolgreich geandert', mtInformation, [mbOK], 0);
end else
MessageDlg('Fehler beim Setzen des primren MIDI-Ausgabegerates', mtError, [mbOK], 0);
end; procedure TMainForm.FormCreate(Sender: TObject);
begin
GetOutDevices;
GetInDevices;
GetMidiOutDevices;
end; procedure TMainForm.GetInDevices;
var
dev: Integer;
caps: TWaveInCaps;
begin
ComboBox2.Clear;
for dev := 0 to waveInGetNumDevs - 1 do
begin
waveInGetDevCaps(dev, @caps, sizeof(TWaveInCaps));
ComboBox2.Items.Add(caps.szPname);
end;
ComboBox2.ItemIndex := 0;
end; procedure TMainForm.GetMidiOutDevices;
var
dev: Integer;
caps: TMidiOutCaps;
begin
ComboBox3.Clear;
for dev := 0 to midiOutGetNumDevs - 1 do
begin
midiOutGetDevCaps(dev, @caps, sizeof(TMidiOutCaps));
ComboBox3.Items.Add(caps.szPname);
end;
ComboBox3.ItemIndex := 0;
end; procedure TMainForm.GetOutDevices;
var
dev: Integer;
caps: TWaveOutCaps;
begin
ComboBox1.Clear;
for dev := 0 to waveOutGetNumDevs - 1 do
begin
waveOutGetDevCaps(dev, @caps, sizeof(TWaveOutCaps));
ComboBox1.Items.Add(caps.szPname);
end;
ComboBox1.ItemIndex := 0;
end; end.