如何检测是否已安装modem

falconchen 2004-11-24 10:28:26
请教各位,如何做到在windows95/98/me/2000/xp下检测是否已安装好modem,并获取相应硬件信息。
...全文
170 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
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吧

2,644

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧