如何检测是否已安装modem

falconchen 2004-11-24 10:28:26
请教各位,如何做到在windows95/98/me/2000/xp下检测是否已安装好modem,并获取相应硬件信息。
...全文
128 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
aoosang 2004-12-02
定一下
回复
falconchen 2004-12-02
以上都不对,应该是先查找当前windows版本,然后读取相应的键值以获得相关安装信息,然后才是modem编程。但具体获得什么键值我忘了,不知哪位大虾能帮忙想起来还是说有什么方法可以找到相应帮助文档。
回复
iloverebecca 2004-12-02
SetUpEnum可以的
这是我写的函数。
BOOL GetModemList(GLOBALVAL * pVal)
{
DeviceInfo ModemNode;
GUID ClassGuid = {0x4D36E96D, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18};
HDEVINFO hDevInfoSetClass = NULL;
SP_DEVINFO_DATA DevInfoData;
BOOL fFoundDevice = FALSE;
WCHAR wszInstID[MAX_PATH];
DWORD dwStatus = 0;
DWORD dwProblem = 0;
BOOL fIsDisabled = FALSE;
hDevInfoSetClass = SetupDiGetClassDevs(&ClassGuid,
NULL,
NULL,
DIGCF_PRESENT |DIGCF_PROFILE
);
if (hDevInfoSetClass == NULL)
return FALSE;
for(DWORD dwIndex = 0;;++dwIndex)
{
ZeroMemory(&DevInfoData, sizeof(SP_DEVINFO_DATA));
ZeroMemory(wszInstID, MAX_PATH);
DevInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
if(!SetupDiEnumDeviceInfo(hDevInfoSetClass, dwIndex, &DevInfoData))
{
if (GetLastError() == ERROR_NO_MORE_ITEMS)
break;
else
return FALSE;
}
if (CR_SUCCESS != CM_Get_DevNode_Status(&dwStatus, &dwProblem, DevInfoData.DevInst, 0))
return FALSE;
fIsDisabled = (dwStatus&DN_HAS_PROBLEM)&&(CM_PROB_DISABLED == dwProblem);
if (fIsDisabled ==0)
ModemNode.status = DS_Normal;
else
ModemNode.status = DS_Disabled;
if(!SetupDiGetDeviceInstanceId(hDevInfoSetClass,
&DevInfoData,
ModemNode.id.wszPnpDeviceID,
MAX_PATH,
0))
{
return FALSE;
}

if(!SetupDiGetDeviceRegistryPropertyW(hDevInfoSetClass,
&DevInfoData,
SPDRP_FRIENDLYNAME,
NULL,
(PBYTE)ModemNode.id.wszFriendlyName,
MAX_PATH*sizeof(WCHAR),
NULL))
SetupDiGetDeviceRegistryPropertyW(hDevInfoSetClass,
&DevInfoData,
SPDRP_DEVICEDESC,
NULL,
(PBYTE)ModemNode.id.wszFriendlyName,
MAX_PATH*sizeof(WCHAR),
NULL);
pVal->vtModem.push_back(ModemNode);
}
return TRUE;
}
回复
Pipi0714 2004-12-02
明天,我以前做过!显示出机器上安装的所有MODEM
回复
qrlvls 2004-11-26
up
回复
bluesen 2004-11-26
最简单就是:
1.用CreateFile()打开COM口;
2.用WriteFile()向COM口发送at命令串,如发送询问厂商信息的at命令:"ati3\r"
3.根据Modem的响应,判断是否安装。
回复
zblaoshu1979 2004-11-26
应该是用setupapi吧
回复
zblaoshu1979 2004-11-26
应该是有setupapi吧
回复
相关推荐
发帖
硬件/系统
创建于2007-09-28

2594

社区成员

VC/MFC 硬件/系统
申请成为版主
帖子事件
创建了帖子
2004-11-24 10:28
社区公告
暂无公告