用程序
怎么获取modem的状态?怎样通过modem拨号?

解决方案 »

  1.   

    1. 获得Modem的状态、如何知道Modem接在哪个COM 1.1 获得Modem的状态var
     CommPort : string;
     hCommFile : THandle;
     ModemStat : DWord;
    begin
     CommPort := 'COM2';{打开端口}
     hCommFile := CreateFile(PChar(CommPort),GENERIC_READ,0,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
     if hCommFile = INVALID_HANDLE_VALUE then
      begin
       ShowMessage('无法打开端口:'+ CommPort);
       exit;
      end;{获取Modem状态}
     if GetCommModemStatus(hCommFile, ModemStat) <> false then
     begin
      if ModemStat and MS_CTS_ON <>0 then
      ShowMessage('The CTS (clear-to-send) is on.');
      if ModemStat and MS_DSR_ON <>0 then
      ShowMessage('The DSR (data-set-ready) is on.');
      if ModemStat and MS_RING_ON <>0 then
      ShowMessage('The ring indicator is on.');
      if ModemStat and MS_RLSD_ON <>0 then
      ShowMessage('The RLSD (receive-line-signal-detect) is on.');
     end;{关闭端口}
    CloseHandle(hCommFile);end;1.2 如何知道Modem接在哪个COMHKEY_CURRENT_USERMonitor其中有modem的名字和com口
      

  2.   

    2. 通过Modem拨号 
     
    var
     hCommFile : THandle;var
     PhoneNumber : string;
     CommPort : string;
     NumberWritten : LongInt;
    begin
     PhoneNumber := 'ATDT 1-555-555-1212' + #13 + #10;
     CommPort := 'COM2';{打开端口}
     hCommFile := CreateFile(PChar(CommPort),GENERIC_WRITE,0,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
     if hCommFile=INVALID_HANDLE_VALUE then
      begin
       ShowMessage('无法打开端口:'+ CommPort);
       exit;
      end;{拨号}
     NumberWritten:=0;
     if WriteFile(hCommFile,PChar(PhoneNumber)^,Length(PhoneNumber),NumberWritten,nil) = false then   begin
      ShowMessage('无法写入端口:' + CommPort);
     end;
    end;
    {关闭端口}
    begin
     CloseHandle(hCommFile);
    end;