论坛: 编程破解 标题: 也是关于PC扬声器的问题 复制本贴地址    
作者: yuanrulai [yuanrulai]    论坛用户   登录
环境为windows xp
同样的一个程序
#include<stdio.h>
void main()
{
    int i;
    for (i=0; i<=10; i++)
    {
        printf("%c", 7);  //7为响铃
    }
}
在TC, win-tc 里面编译成功,但是不能响铃,
在VISUAL C++里面调试成功,并且能响铃。

在ms_dos 7.1下,我用汇编语言编的响铃程序也是不响,而且源程序错误的可能性非常小,请问这是怎么回事。小弟我先谢谢了!

地主 发表时间: 05-03-31 18:21

回复: lida1818 [lida1818]   论坛用户   登录
PC扬声器接触不良

B1层 发表时间: 05-04-01 14:16

回复: 286 [unique]   版主   登录
这个原因很简单。

你的程序响应该没问题的,并且与语言无关。也就是说汇编当然也可以响。
只是在不同的环境中就不一样了。DOS是个全开放的系统,任何程序可以作任何事情,而WIDNOWS由于保护就不能任由程序随便作了。

在VC中,你的响声由原来的直接传给PC扬声器现在转给了API,API再转给扬声器,这个响是正常的。而TC不知道什么叫API,直接调用PC扬声器,WIN系统一看,你不经过我还想用我的东西,没门!于是就不能响。

当然不同系统处理不完全一样,上面只是说明原理,不要拿特例非要找也所以然来。

B2层 发表时间: 05-04-01 14:46

回复: jhkdiy [jhkdiy]   版主   登录
286的回复让我佩服!高啊。

B3层 发表时间: 05-04-01 16:45

回复: yuanrulai [yuanrulai]   论坛用户   登录
thank you very much!

B4层 发表时间: 05-04-01 18:07

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号