2012-07-20 65 views
3

我已經買了一個中興MF190 USB調制解調器,並開始利用它。如何枚舉使用Windows API的所有安裝的USB調制解調器

到目前爲止,我已成功地編程具有發送到使用免費AsyncPro的TurboPowers組件的另一臺移動設備公司的短信。

我不知道有沒有辦法檢索所有已安裝的調制解調器的列表及其連接的串行COM端口(希望具有其他有價值的功能)。

在此先感謝。

回答

5

要列出已安裝的調制解調器可以使用Win32_POTSModem WMI類

入住此示例代碼。

{$APPTYPE CONSOLE} 

uses 
    SysUtils, 
    ActiveX, 
    ComObj, 
    Variants; 


procedure GetWin32_POTSModemInfo; 
const 
    WbemUser   =''; 
    WbemPassword  =''; 
    WbemComputer  ='localhost'; 
    wbemFlagForwardOnly = $00000020; 
var 
    FSWbemLocator : OLEVariant; 
    FWMIService : OLEVariant; 
    FWbemObjectSet: OLEVariant; 
    FWbemObject : OLEVariant; 
    oEnum   : IEnumvariant; 
    iValue  : LongWord; 
begin; 
    FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator'); 
    FWMIService := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword); 
    FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_POTSModem','WQL',wbemFlagForwardOnly); 
    oEnum   := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant; 
    while oEnum.Next(1, FWbemObject, iValue) = 0 do 
    begin 
    Writeln(Format('AttachedTo  %s',[String(FWbemObject.AttachedTo)]));// String 
    Writeln(Format('DeviceID  %s',[String(FWbemObject.DeviceID)]));// String 
    Writeln(Format('Model   %s',[String(FWbemObject.Model)]));// String 
    Writeln(Format('Name   %s',[String(FWbemObject.Name)]));// String 
    Writeln(Format('PortSubClass %s',[String(FWbemObject.PortSubClass)]));// String 
    FWbemObject:=Unassigned; 
    end; 
end; 


begin 
try 
    CoInitialize(nil); 
    try 
     GetWin32_POTSModemInfo; 
    finally 
     CoUninitialize; 
    end; 
except 
    on E:EOleException do 
     Writeln(Format('EOleException %s %x', [E.Message,E.ErrorCode])); 
    on E:Exception do 
     Writeln(E.Classname, ':', E.Message); 
end; 
Writeln('Press Enter to exit'); 
Readln;  
end. 
+0

+1:謝謝你的回答。還有沒有WMI做到這一點的方法? – menjaraz 2012-07-20 04:33:38

+0

是的,您可以使用[RasEnumDevices](http://msdn.microsoft.com/zh-cn/library/windows/desktop/aa377289%28v=vs.85%29.aspx)函數或讀取'HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Class \ {4D36E96D-E325-11CE-BFC1-08002BE10318}'Windows註冊表項。 – RRUZ 2012-07-20 04:51:20

+0

謝謝你的幫助。 – menjaraz 2012-07-20 05:04:04

相關問題