如何得到本机安装了的调制解调器资料???(300分)

  • 主题发起人 主题发起人 honestman
  • 开始时间 开始时间
H

honestman

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在程序中得到“控制面板”->“电话和调制解调器选项”->“调制解调器”中的“本机安装了下面的调制解调器”的资料?
除了要得到调制解调器名字外,还要得到其连接的端口,和是否已经连接的资料。
我的系统是2000,应该是与操作系统无关的吧?
 
用控件TurboPower Async Prof 4.05 试试
http://www.51delphi.com/delphi/soft?type=通信
 
参考一下这个吧
http://www.vclxx.org/DELPHI/D32FREE/D_RAS.ZIP
 
因为我是想在VB中实现,是否可以不用控件啊?
 
我给你的那个例子上不是调用控件的,是调用动态库的,VB也一样可以调用动态库的吧???
 
To app2001:
  你给我的是RAS的例子,不适合啊!
  我需要的是列举当前已经安装的MODEM和那MODEM是否已经连接到COM口,而不是是否已经连接上网啊!
 
哦,这个资料你参考一下吧
http://www.delphibbs.com/keylife/iblog_show.asp?xid=1110
 
谢谢app2001这么热情帮助,不过,那文章不适合我。
 
好吧,我这还有一个获得MODEM状态的资料
procedure TForm1.Button1Click(Sender: TObject);
var
CommPort : string;
hCommFile : THandle;
ModemStat : DWord;
begin
CommPort := 'COM2';

{Open the comm port}
hCommFile := CreateFile(PChar(CommPort),
GENERIC_READ,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
if hCommFile = INVALID_HANDLE_VALUE then
begin
ShowMessage('Unable to open '+ CommPort);
exit;
end;

{Get the Modem Status}
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 <> 0then
ShowMessage('The ring indicator is on.');
if ModemStat and MS_RLSD_ON <> 0 then
ShowMessage('The RLSD (receive-line-signal-detect) is
on.');
end;

{Close the comm port}
CloseHandle(hCommFile);
end;
/////////////////////////////////////////////////
FHandle := CreateFile(PChar(DeviceName), GENERIC_READ or GENERIC_WRITE, 0,
nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED, 0);
if FHandle = INVALID_HANDLE_VALUE then
begin
Showmessage("ERROR_FILE_NOT_FOUND" );
end
else
GetCommState(FHandle,lpDCB) where lpDcb
points to the DCB(Device-control block) structure in which the control settings information is returned.
After that U can check the various properties of DCB like :

typedef struct _DCB { // dcb
DWORD DCBlength; // sizeof(DCB)
DWORD BaudRate; // current baud rate
DWORD fBinary: 1; // binary mode, no EOF check
DWORD fParity: 1; // enable parity checking
DWORD fOutxCtsFlow:1; // CTS output flow control
DWORD fOutxDsrFlow:1; // DSR output flow control
DWORD fDtrControl:2; // DTR flow control type
DWORD fDsrSensitivity:1; // DSR sensitivity

DWORD fTXContinueOnXoff:1; // XOFF continues Tx
DWORD fOutX: 1; // XON/XOFF out flow control
DWORD fInX: 1; // XON/XOFF in flow control
DWORD fErrorChar: 1; // enable error replacement
DWORD fNull: 1; // enable null stripping
DWORD fRtsControl:2; // RTS flow control
DWORD fAbortOnError:1; // abort reads/writes on error
DWORD fDummy2:17; // reserved
WORD wReserved; // not currently used

WORD XonLim; // transmit XON threshold
WORD XoffLim; // transmit XOFF threshold
BYTE ByteSize; // number of bits/byte, 4-8
BYTE Parity; // 0-4=no,odd,even,mark,space
BYTE StopBits; // 0,1,2 = 1, 1.5, 2
char XonChar; // Tx and Rx XON character
char XoffChar; // Tx and Rx XOFF character
char ErrorChar; // error replacement character

char EofChar; // end of input character
char EvtChar; // received event character
WORD wReserved1; // reserved; do not use
} DCB;

The device name Should be the name of the device like
COM1,COM2 etc

 
老大,是否可以提供从注册表得到这些数据的方法啊?
一个端口一个端口的搜索好象不是很适合我这工程。
 
多人接受答案了。
 
后退
顶部