|
楼主 |
发表于 2005-10-28 18:11:05
|
显示全部楼层
<BR>API技巧集 (二)<BR><BR><BR><BR> (二)得到系统声卡的个数<BR><BR> 当我们编写一个多媒体程序(如播放器)的时候,有时需要检测一下计算机中是否安装了声卡,如果没有装声卡程序则会终止运行。<BR><BR> 在这里,我们就要使用API函数waveOutGetNumDevs,调用这个函数可返回系统中安装了的声卡的个数。在C++ Builder 5.0中,它被包含在头文件“mmsystem.h”里面。<BR><BR> 例子:<BR><BR> 1、首先在程序头部加入包含头文件的代码:<BR><BR>#include $#@60;mmsystem.h$#@62;<BR><BR> 2、在窗体的OnCreate事件中加入下面的代码:<BR><BR>int Num;<BR><BR>//得到声卡的个数<BR><BR>Num=waveOutGetNumDevs();<BR><BR>if(Num)<BR><BR>ShowMessage("你有安装了"+IntToStr(Num)+"块声卡");<BR><BR>else<BR><BR>{<BR><BR>ShowMessage("你没有安装声卡!\n程序终止运行!");<BR><BR>Close();<BR><BR>}<BR><BR> 3、编译运行程序。<BR><BR>API技巧集 (二)<BR><BR><BR> (三)获得、设置鼠标双击的间隔时间<BR><BR> 在指定间隔的时间内,连续两次鼠标单击操作称为双击,双击间隔的时间可以在控制面板中的鼠标属性里面改变。若要在自编的应用程序中能获得或设置鼠标双击的间隔时间,我们只需使用Windows的两个API函数GetDoubleClickTime和SetDoubleClickTime。调用GetDoubleClickTime可以返回鼠标双击的间隔时间,而使用SetDoubleClickTime则可以设置鼠标双击间隔的时间。<BR><BR> 下面让我们来做一个获得和设置鼠标双击间隔时间的简单的程序:<BR><BR> 首先,在Borland C++ Builder 5.0 中新建一个工程,往窗体Form1中添加两个Button组件,把它们的Caption属性分别改为“获取双击间隔时间”和“设置双击间隔时间”,再添加一个Edit组件,将Edit1的Text属性改为“200”,添加一个Label组件,把Caption属性改为“毫秒”。<BR><BR> 然后,双击按钮Button1,在它的OnClick(单击)事件中加入下面的代码:<BR><BR>//返回鼠标双击间隔时间<BR><BR>ShowMessage("鼠标双击间隔时间为"+IntToStr(GetDoubleClickTime())+"毫秒");<BR><BR> 再双击按钮Button2,也在它的OnClick事件中加入代码:<BR><BR>//设置鼠标双击间隔时间<BR><BR>SetDoubleClickTime(StrToInt(Edit1-$#@62;Text));<BR><BR> 最后,按F9编译运行一下程序。点击窗口中的“获取双击间隔时间”按钮就会弹出一个显示当前系统鼠标双击间隔的时间,若要设置鼠标双击间隔的时间,只要改变文本框中的数值,比如300吧,再点击“设置双击间隔时间”按钮就可以了。需要注意的是,鼠标双击间隔时间的单位是毫秒,设置的值越小,间隔的时间就越小,双击的速度就越快,系统默认的是400毫秒,可不要设得太小了,否则“我的电脑”会打不开的(你双击的速度不够快,^_^)。<BR><BR><BR><BR><BR><BR><FONT color=#ff0000> API技巧集 (二)</FONT><BR><BR><BR><BR> (四)启动控制面板控制台应用程序<BR><BR> 在控制面板里有许多的控制面板项目,这些项目就是控制台应用程序,它们都是标准的DLL(动态链接库)文件,我们经常需要通过它们来对Windows进行配置。rundll32.exe就是专门用来调用DLL文件的程序,在C++ Builder编程中,我们可以通过使用API函数WinExec运行外部程序rundll32.exe调用DLL来实现启动控制面板的控制台应用程序。下面是收集的一些调用DLL启动控制台应用程序的例子:<BR><BR> 1、打开控制面板 <BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL",SW_SHOWNORMAL);<BR><BR> 2、打开方式对话框<BR><BR>WinExec("rundll32.exe shell32.dll,OpenAs_RunDLL "c:\\autoexec.bat"",SW_SHOWNORMAL);<BR><BR> 3、添加Modem<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL modem.cpl,,add",SW_SHOWNORMAL);<BR><BR> 4、添加打印机<BR><BR>WinExec("rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter",SW_SHOWNORMAL);<BR><BR> 5、复制磁盘<BR><BR>WinExec("rundll32.exe diskcopy.dll,DiskCopyRunDll",SW_SHOWNORMAL);<BR><BR> 6、鼠标<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL main.cpl",SW_SHOWNORMAL);<BR><BR> 7、网络<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl",SW_SHOWNORMAL);<BR><BR> 8、密码<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL password.cpl",SW_SHOWNORMAL);<BR><BR> 9、游戏控制器<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL joy.cpl",SW_SHOWNORMAL);<BR><BR> 10、日期/时间<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL timedate.cpl",SW_SHOWNORMAL);<BR><BR> 11、Internet 属性<BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl",SW_SHOWNORMAL);<BR><BR> 12、添加/删除程序<BR><BR>//安装/卸载<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1",SW_SHOWNORMAL);<BR><BR>//Windows 安装<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2",SW_SHOWNORMAL);<BR><BR>//启动盘<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3",SW_SHOWNORMAL);<BR><BR> 13、区域设置<BR><BR>//区域设置<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0",SW_SHOWNORMAL);<BR><BR>//数字<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1",SW_SHOWNORMAL);<BR><BR>//货币<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2",SW_SHOWNORMAL);<BR><BR>//时间<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3",SW_SHOWNORMAL);<BR><BR>//日期<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4",SW_SHOWNORMAL);<BR><BR> 14、辅助选项<BR><BR>//键盘<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1",SW_SHOWNORMAL);<BR><BR>//声音<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2",SW_SHOWNORMAL);<BR><BR>//显示<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3",SW_SHOWNORMAL);<BR><BR>//鼠标<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4",SW_SHOWNORMAL);<BR><BR>//常规<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5",SW_SHOWNORMAL);<BR><BR> 15、多媒体<BR><BR>//音频<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0",SW_SHOWNORMAL);<BR><BR>//视频<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1",SW_SHOWNORMAL);<BR><BR>//MIDI<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2",SW_SHOWNORMAL);<BR><BR>//CD 音乐<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3",SW_SHOWNORMAL);<BR><BR>//设备<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4",SW_SHOWNORMAL);<BR><BR> 16、系统<BR><BR>//常规<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0",SW_SHOWNORMAL);<BR><BR>//设备管理器<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1",SW_SHOWNORMAL);<BR><BR>//硬件配置文件<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2",SW_SHOWNORMAL);<BR><BR>//性能<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3",SW_SHOWNORMAL);<BR><BR> 17、显示器<BR><BR>//背景<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0",SW_SHOWNORMAL);<BR><BR>//屏幕保护<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1",SW_SHOWNORMAL);<BR><BR>//外观<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2",SW_SHOWNORMAL);<BR><BR>//设置<BR><BR>WinExec("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3",SW_SHOWNORMAL); <BR><BR> 这些例子在Windows 98和Windows 2000中都可以使用通过,前提是在控制面板中安装了该项目。<BR> |
|