阅读:2746回复:18
win2000下怎么让蜂鸣器发出声音
请教高手:win2000下怎么让蜂鸣器发出声音,有没有简单的方法,在98下只要写端口就可以了。
|
|
最新喜欢:okincn |
沙发#
发布于:2002-06-25 21:10
请教高手:win2000下怎么让蜂鸣器发出声音,有没有简单的方法,在98下只要写端口就可以了。 简单的问题,可不一定有简单的方法。。。。。。。。。。 :) |
|
|
板凳#
发布于:2002-06-25 21:13
还没有解决问题呢?解决了肯定给。
|
|
地板#
发布于:2002-06-25 21:26
难道真的没有人可以解决吗?我不信
|
|
地下室#
发布于:2002-06-25 21:43
应用?驱动?
16 bit Application or 32 bit? |
|
5楼#
发布于:2002-06-25 21:51
应用。2000当然是32位
[编辑 - 6/25/02 by zjmwbb] |
|
6楼#
发布于:2002-06-25 21:57
答完呀
|
|
7楼#
发布于:2002-06-25 22:01
能不能在2000下直接写端口?好象不太行,因为我在98下用这种方式写了一个dll,但在2000下不能用
|
|
8楼#
发布于:2002-06-25 22:15
NT架构屏了端口
在应用中麻烦一些,纯Ring3代码的话,你首先得取得Se_Tcb_Privilege特权,其次用NativeAPI ZwSetInformationProcess降低本进程IOPL,随后你可以像98一样处理。 Ring0下就不说了。 |
|
9楼#
发布于:2002-06-25 22:44
用什么api降低iopl(?),能不能说的更明白一点,本人将不胜感激
[编辑 - 6/25/02 by zjmwbb] |
|
10楼#
发布于:2002-06-26 08:42
extern\"C\"{
typedef DWORD (__stdcall*ZWPROC)( IN HANDLE ProcessHandle, IN ULONG a, IN PVOID ProcessInformation, IN ULONG Length); } ... ZWPROC ZwSetInformationProcess; HINSTANCE hh=LoadLibrary(\"ntdll.dll\"); ZwSetInformationProcess=(ZWPROC)GetProcAddress(hh,\"ZwSetInformationProcess\"); 在你有TCB特权后调用之: ZwSetInformationProcess(GetCurrentProcess(),16,0,0); 麻烦的是获取特权。 |
|
11楼#
发布于:2002-06-26 08:45
???
|
|
12楼#
发布于:2002-06-26 11:22
应用程序可以调用Win32 API
Beep(Freq, Dur) 详细情况请查阅MSDN |
|
|
13楼#
发布于:2002-06-26 12:03
beep 和sleep配合使用,挺好
|
|
14楼#
发布于:2002-06-26 12:15
问题是别人专门编个DLL来发声,或许是想简单奏乐,hehe
|
|
15楼#
发布于:2002-06-26 12:25
开始主观臆想用Beep会使声音有小间断(转音时),所以认为应该直接控制端口。试了一下,二者效果差不多。faint
|
|
16楼#
发布于:2002-06-26 14:02
解决问题能简单就简单些吧
|
|
17楼#
发布于:2002-07-01 20:16
最简单的办法是下一个WINIO,它提供了用户模式下访问端口的函数,读写端口就象dos下访问端口一样,而且有跨平台特性,编译后的程序可在98,NT,2000下运行。这可是象我这样不会写驱动的懒人的福音,呵呵
|
|
18楼#
发布于:2002-07-02 17:44
如果你用VC,那么最简单的办法是:
MessageBeep(0xFFFFFFFF); 函数 BOOL MessageBeep(UINT uType); 中的参数uType为以下之一时,将通过声卡发出系统设定的声音: MB_ICONASTERISK、MB_ICONEXCLAMATION、MB_ICONHAND MB_ICONQUESTION、MB_OK(缺省) 但如果是0x7FFFFFFF-0xFFFFFFFF范围内某个HEX数值时则由 嗡鸣器发出相应频率的BEEP声。 |
|