如何强行关闭别的程序启用的串口?(60分)

  • 主题发起人 主题发起人 wei0916
  • 开始时间 开始时间
W

wei0916

Unregistered / Unconfirmed
GUEST, unregistred user!
想用到一个串口,但已被其他程序占用,现在想调用,如何做到?
前提是不能关闭调用这个串口的程序
如果能做到在COM1被其他程序占用的前提下,获取从COM1接收到的数据也可以.
 
如果占用串口的程序你可以控制的话
可以考滤使用串口服务器模型
 
谢谢参与,请大家发表一下看法.解决问题可以开贴再加分200.........
那个调用串口的程序不是我做的,我可以控制程序(打开程序,关闭程序等一些简单操作);
我现在要做的是当那个程序发完数据之后,我再次打开那个程序调用的串口,发一些数据给设备,但是那个程序占用串口不关闭,急呀.............
 
你把他那个程序关了.
 
第一帖就说了不能关那个程序呀.
还有一种方式,就是有没有办法在COM1被别的程序打开的情况下也能获取到设备发上来的数据?这样如果可行的话,也可以实现我的目的;
 
用 API 钩子
 
能实现以下功能的朋友能否留下QQ或者EMAIL;
1:强行关闭被别的程序打开的串口;
2:不用强行半闭也可以,但是可以获取已被打开COM口的数据;
 
串口有数据到来时会产生事件,你可以建一个全局钩子,然后对数据进行截取
从低层上看,到来数据会产生相关的中断,如果你对汇编够精通,也可以通过汇编
同时,在win98下面你可以直接操作硬件,所以你可以直接通过汇编程序操作串口,在win2000以上的不能直接操作硬件,但是微软提供了相关的动态链接库,winio.dll,可能是这个,你可以到网上找找,通过这个接口也可以实现,还有的办法是,一般个高级应用程序打开串口都是通过APIcreatefile来映射串口,从而操作串口,你可以通过其他API获取createfile建立起来的句柄,然后结束他,这个我是猜测的做法,行不行的通,需要你自己去试验
 
有一个疑问
我们怎么来判断,这个句柄是串口还是别的什么文件或者控件窗体之类的东西呢?
 
强行关闭串口:
第一步应该是如何找到被占用的COM的线程吧.
找到了是不是就可以用CLOSEHANDLE直接关闭呢.
获取被占用的COM口的数据:
这个问题我想比较复杂吧,用HOOK如何实现呢.
 
关注,我也好像知道。平时也碰到类似的问题,不知道如何解决。
 
后退
顶部