delphi 列挙デバイスの使用コード
delphi (2010、xe) には、directx 関連のユニット (...sourcertlwin) が既に付属しています。
-------------------------------------------------- ----------------------------------
関数 directsoundenumerate(
lpdsenumcallback: tdsenumcallback; //コールバック関数
lpcontext: pointer //ユーザーポインター
): hresult; // エラーコードを返し、成功した場合は s_ok(0)
を返します。
tdsenumcallback = 関数(
lpguid: pguid; // デバイスの guid;
lpcstrdescription: pchar; //デバイスの説明
lpcstrmodule: pchar; //モジュール識別
lpcontext: pointer //directsoundenumerate によって提供されるユーザー ポインター
): bool; // 列挙を続ける場合は true を返し、検索を続行しない場合は false を返します
------------------------------------------------- ----------------------------------
これは共通コードです:
-------------------------------------------------- ----------------------------------
ユニットユニット1;
インターフェース
用途
ウィンドウ、メッセージ、sysutils、バリアント、クラス、グラフィックス、コントロール、フォーム、
ダイアログ、stdctrls;
タイプ
Listbox1: tlistbox; // フォーム上にリストボックスを 1 つだけ配置します
プロシージャ formcreate(sender: tobject);
終わり;
変数
実装
{$r *.dfm}
ダイレクトサウンドを使用します。 //!
関数 enumcallback(lpguid: pguid; lpcstrdescription, lpcstrmodule: pchar;
lpcontext: ポインタ): stdcall;;
始まります
form1.listbox1.items.add(lpcstrdescription);
結果 := true;
終わり;
プロシージャ tform1.formcreate(送信者: tobject);
directsoundenumerate(enumcallback, nil);
終わり;
終わり
------------------------------------------------- ----------------------------------
コールバック関数内でフォームコントロールを直接使用するのは良くありません:
-------------------------------------------------- ----------------------------------
ダイレクトサウンドを使用します;
関数 enumcallback(lpguid: pguid; lpcstrdescription, lpcstrmodule: pchar;
;
始まります
tstrings(lpcontext).add(lpcstrdescription);
結果 := true;
終わり;
プロシージャ tform1.formcreate(送信者: tobject);
directsoundenumerate(enumcallback, listbox1.items);
終わり;
------------------------------------------------- ----------------------------------
詳細情報を入手:
-------------------------------------------------- ----------------------------------
ダイレクトサウンドを使用します;
関数 enumcallback(lpguid: pguid; lpcstrdescription, lpcstrmodule: pchar;
;
始まります
if lpguid <> then tstrings(lpcontext).add(guidtostring(lpguid^));
tstrings(lpcontext).add(lpcstrdescription);
if lpcstrmodule <> then tstrings(lpcontext).add(lpcstrmodule);
tstrings(lpcontext).add(emptystr);
結果 := true;
終わり;
プロシージャ tform1.formcreate(送信者: tobject);
directsoundenumerate(enumcallback, listbox1.items);
終わり;
http://www.bkjia.com/PHPjc/632336.html