现需要在我的程序中,检测到串口是否被其他程序打开,并要强制的关闭所有打开的串口.不知怎么做????望高手指教!!!

解决方案 »

  1.   

    APIHOOK,凡是调用CreatFile,并且第一个参数是"COM1"的,在你的HOOK中都保存CreatFile返回的句柄,这样就可以把你的代码注入他的程序,关闭串口和文件操作一样CloseHandle就行
      

  2.   

    if (!CloseHandle( m_hIDComDev))
    {
    //释放临界断
    LeaveCriticalSection( &m_csCommunicationSync );
    return FALSE;
    }
      

  3.   

    to:AthlonxpX86(一滴水)
    能不能说得再详细一点???或者给点资料???谢谢!!!
      

  4.   

    没有, 用AthlonxpX86(一滴水) 的方法,
    你得有一个程序在Windows启动时就把你的程序启动起来!偷偷摸摸把其它程序的串口关了,总是不好!我觉得像你遇到这种问题,可以直接提示用问串口被用,要用户自己去把其它的程序关了!
    这样写程序多简单!
      

  5.   

    要得到你打开的串口句柄,就是你用CreatFile返回的句柄,然后用CloseHandle(m_hCom)挨个关闭就可以了
      

  6.   

    HANDLE hcom;
    DWORD dwError;hcom = creatFile("com1",......);
    if(hcom == INVALID_HANDLE_VALUE)
    {
       dwError = GetLastError();//根据返回值可以查出来错误类型
       CloseHandle(hcom);
       MessageBox("没有找到串口或者串口在使用");
    }
    //你可以多打开几个串口,一般情况下计算机两个,扩展8个就不少了