有没有办法检查是否存在某个com口
比如想知道本机有没有com2口,如何实现?另外有没有办法删除现有的com口,然后刷新硬件列表?
谢谢各位老师!
本帖最后由 msold5 于 2024-8-17 10:25 编辑
既然COM口也是文件,那么应该可以用文件方法来判断,类似于批处理中的if existcom1echo ok
删除好像要用到系统里自带的dism或者另一个啥程序,你自己再查查呢
论坛搜索一下com,应该会有结果,com就当文件来处理。 #include <Array.au3>
#include <CommMG.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
Opt("GUICloseOnESC", 0) ;1 = 點擊 Esc 鍵關閉, 0 = 點擊 Esc 鍵不關閉
Opt("TrayIconHide", 0) ;0 = 顯示托盤圖標, 1 = 隱藏托盤圖標
Opt('MustDeclareVars', 1);1 = 變量不需預先聲明, 1 = 變量必需預先聲明
Local $hGUI = GUICreate("com_port-check", 200, 200)
GUISetState(@SW_SHOW)
CommLoad()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE ;離開
_CommCloseport()
EXIT
EndSwitch
WEnd
Func CommLoad() ;commPort_Load
Local $portnum = "" , $portnum_temp = "" , $portlist1 = "", $ComPort_Total
Local $portlist = _CommListPorts(0)
_ArrayDisplay($portlist)
If $portlist >= 1 Then
For $pl = 1 To $portlist
$portlist1 = _ComGetPortNames($portlist[$pl])
$portnum_temp = StringReplace($portlist[$pl], "COM", '')
$ComPort_Total &= $portnum_temp & "|"
Next
_CommSetTimeouts(5,5,5,5,5)
Local $sz2 = StringSplit($ComPort_Total,'|',3)
_ArraySort($sz2 ) ;埠位排序
$ComPort_Total = ""
For $pl = 1 To (UBound($sz2,1)- 1)
$ComPort_Total &=$sz2[$pl]& "|"
Next
MsgBox(0,"",$ComPort_Total)
Else
MsgBox(0,"串列Port錯誤","無串列Port,程式關閉。")
Exit
EndIf
EndFunc
:---- 給你參考看看 yohoboy 发表于 2024-8-19 01:16
#include
#include
#include
谢谢老师,这个用到CommMG.au3,编译成执行文件之后,是不是也还需要那个dll文件才能正常运行? bluecap 发表于 2024-8-20 08:32
谢谢老师,这个用到CommMG.au3,编译成执行文件之后,是不是也还需要那个dll文件才能正常运行? ...
正確,那個是for 32位元的dll檔,但在64位元的系統還是可以運作。
页:
[1]