我用VB6.0写了一个串口通讯的程序,在XP上能正常运行,但到了WIN7上就不行了。问题出在对串口的查询上,在WIN7操作系统的资源管理器里只显示有COM1口,但是我写的查询程序查到有COM1和COM3(在XP系统没有这种情况),而且在用COM3口进行通讯时,COM3口自动的返回COM3口发送出去的数据。不知这是为什么?请各位指教。
解决方案 »
- VB的问题sendmessage 字符串的问题 救命啊 我受不了啊
- Inet控件中下载的路径、文件名中出现变量的解决办法
- 关于VB关键字的问题?????????????????????
- 救救我!拖动问题
- 怎么判断剪贴板中的数据是否为字符串而不是图片或别的信息?
- 请教高手:在程序中改写注册表后怎么样实现注册表立即生效??
- 500分求几个控件.类似于sstab,mschart但是要求功能多,具备xp风格.
- 有谁做过将rm和media视频播放集成的软件
- VB 的一道挑战高手的题,不想试试吗?
- 怎样使picturebox的底色编程透明的
- 关于objIE,怎么判断ie超时
- VB text导入excel的问题
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, ByVal lpData As String, lpcbData As Long) As Long
'Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Const HKEY_LOCAL_MACHINE = &H80000002
Const REG_SZ = 1
Dim i&, ComStr$(), S
Private Sub Command1_Click()
MsgBox GetAllPort
End SubPublic Function GetAllPort() As String
On Error Resume Next
S = GetSerialPort(HKEY_LOCAL_MACHINE, "HARDWARE\DEVICEMAP\SERIALCOMM")
If ComStr(0) = "" Then Exit Function
GetAllPort = ""
For i = 0 To UBound(S)
GetAllPort = GetAllPort & S(i) & ","
Next i
End FunctionPublic Function GetSerialPort(RegAddr&, Items$) As String()
On Error Resume Next
Dim hKey&, S1$, S2$, L&, L1&, J&
RegOpenKey RegAddr, Items, hKey
ReDim Preserve ComStr$(0)
ComStr(0) = "": i = 0: J = 0: Rtn = 0
Do
L = 1000: L1 = 1000
S1 = Space(L): S2 = Space(L)
Rtn = RegEnumValue(hKey, i, S1, L, 0, REG_SZ, S2, L1)
If Rtn = 0 Then
If InStr(S1, Chr(0)) > 0 And InStr(S2, Chr(0)) > 0 Then
S1 = UCase(Left(S1, InStr(S1, Chr(0)) - 1))
S2 = UCase(Left(S2, InStr(S2, Chr(0)) - 1))
If InStr(S2, "COM") > 0 Then
ReDim Preserve ComStr$(J)
ComStr(J) = S2
J = J + 1
End If
End If
End If
i = i + 1
Loop Until Rtn <> 0
GetSerialPort = ComStr()
End Function
Private Sub Command1_Click()
Call Shell("cmd /c mode >c:\tt.txt", vbHide)
t = Timer
Do: DoEvents: Loop Until Timer > t + 1
Open "c:\tt.txt" For Input As #1
While Not EOF(1)
Line Input #1, aa
If InStr(aa, "COM") > 0 Then Print aa
Wend
Close #1
'Kill "c:\tt.txt"
End Sub
楼主是什么样的程序?直接屏了COM3的搜索结果不行吗.