程序在WindowsXP和Windows7可以调用,在Windows2003下出错!

[复制链接]
查看11 | 回复8 | 2021-1-27 07:04:30 | 显示全部楼层 |阅读模式
unitConvertToWav;
interface
uses
SysUtils,Variants,Classes,Types,FileOperator,DataTypeDef,StrUtils,MMSystem,DMUnit,ADODB,ActiveX,ComObj,
Windows,Forms;
type
TSoundInfo=class
classfunctionGetSoundLength(fileName:string):Integer;
end;
implementation

classfunctionTSoundInfo.GetSoundLength(fileName:string):Integer;
var
lengthBuf:Array[0..31]ofChar;
begin
MCISendString(PChar('open"'+fileName+'"typewaveaudioaliaswave'),nil,0,0);
MCISendString('statuswavelength',lengthBuf,Length(lengthBuf),0);
MCISendString('closewave',nil,0,0);
try
Result:=StrToInt(lengthBuf)div1000;
except
Application.MessageBox('获取通话时长出错','',0);
end;
end;

如上代码调用在WindowsXP和Windows7下都正常,在WindowsServer2003下出错,请问是什么原因?谢谢大家!
分 -->
回复

使用道具 举报

千问 | 2021-1-27 07:04:30 | 显示全部楼层
AV错误码?试试把这程序加入DEP数据执行保护例外,或者关闭DEP。
回复

使用道具 举报

千问 | 2021-1-27 07:04:30 | 显示全部楼层



回复

使用道具 举报

千问 | 2021-1-27 07:04:30 | 显示全部楼层
试了楼上的方法,不行的!
回复

使用道具 举报

千问 | 2021-1-27 07:04:30 | 显示全部楼层
代码没什么问题,俺也没装有2003,发完这最后的第三贴就恢复不了,等高人给你指路吧。
其实如果你跟踪调试下,问题根源不难找


回复

使用道具 举报

千问 | 2021-1-27 07:04:30 | 显示全部楼层
我倒是经常听说xp下的程序到win7中跑不起来的
回复

使用道具 举报

千问 | 2021-1-27 07:04:30 | 显示全部楼层
是不是没打开音频服务?2003默认是不打开音频相关的服务的。
回复

使用道具 举报

千问 | 2021-1-27 07:04:30 | 显示全部楼层
except中获取下错误信息发出来看看。
回复

使用道具 举报

千问 | 2021-1-27 07:04:30 | 显示全部楼层
引用2楼sololie的回复:


一般用这个方法就可以处理.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行