Delphi 枚举设备使用代码_PHP教程
现在的 delphi(2010、xe) 已经自带了 directx 的相关单元(...sourcertlwin).
--------------------------------------------------------------------------------
//枚举函数
function directsoundenumerate(
lpdsenumcallback: tdsenumcallback; //回调函数
lpcontext: pointer //用户指针
): hresult; stdcall; //返回错误代码, 成功则返回 s_ok(0)
//directsoundenumerate 需要的回调函数的原形:
tdsenumcallback = function(
lpguid: pguid; //设备的 guid
lpcstrdescription: pchar; //设备描述
lpcstrmodule: pchar; //模块标识
lpcontext: pointer //由 directsoundenumerate 提供的用户指针
): bool; stdcall; //返回 true 表示要继续枚举, 不在继续找了就返回 false
--------------------------------------------------------------------------------
这是常见的代码:
--------------------------------------------------------------------------------
unit unit1;
interface
uses
windows, messages, sysutils, variants, classes, graphics, controls, forms,
dialogs, stdctrls;
type
tform1 = class(tform)
listbox1: tlistbox; //只在窗体上放了一个列表框
procedure formcreate(sender: tobject);
end;
var
form1: tform1;
implementation
{$r *.dfm}
uses directsound; //!
function enumcallback(lpguid: pguid; lpcstrdescription, lpcstrmodule: pchar;
lpcontext: pointer): bool; stdcall;
begin
form1.listbox1.items.add(lpcstrdescription);
result := true;
end;
procedure tform1.formcreate(sender: tobject);
begin
directsoundenumerate(enumcallback, nil);
end;
end.
--------------------------------------------------------------------------------
在回调函数中直接使用窗体控件不好, 修改如下:
--------------------------------------------------------------------------------
uses directsound;
function enumcallback(lpguid: pguid; lpcstrdescription, lpcstrmodule: pchar;
lpcontext: pointer): bool; stdcall;
begin
tstrings(lpcontext).add(lpcstrdescription);
result := true;
end;
procedure tform1.formcreate(sender: tobject);
begin
directsoundenumerate(enumcallback, listbox1.items);
end;
--------------------------------------------------------------------------------
获取更多信息:
--------------------------------------------------------------------------------
uses directsound;
function enumcallback(lpguid: pguid; lpcstrdescription, lpcstrmodule: pchar;
lpcontext: pointer): bool; stdcall;
begin
if lpguid nil then tstrings(lpcontext).add(guidtostring(lpguid^));
tstrings(lpcontext).add(lpcstrdescription);
if lpcstrmodule nil then tstrings(lpcontext).add(lpcstrmodule);
tstrings(lpcontext).add(emptystr);
result := true;
end;
procedure tform1.formcreate(sender: tobject);
begin
directsoundenumerate(enumcallback, listbox1.items);
end;
推荐阅读
-
Delphi 枚举设备使用代码_PHP教程
-
php使用类继承解决代码重复的问题_PHP教程
-
php同时使用session和cookie来保存用户登录信息的实现代码,sessioncookie_PHP教程
-
php实例教程:使用php代码实现在网页上生成图片的步骤
-
php使用adodb连接mssql数据库代码_PHP教程
-
php中使用__autoload()自动加载未定义类的实现代码_PHP教程
-
PHP中使用crypt()实现用户身份验证的代码_PHP教程
-
php识别微信客户端并且使用html静态页面引导用户使用浏览器打开这个页面(代码实现教程)
-
php_screw安装使用教程(另一个PHP代码加密实现)
-
php识别微信客户端并且使用html静态页面引导用户使用浏览器打开这个页面(代码实现教程)