|
本帖最后由 mshuking 于 2015-9-16 11:32 编辑
已自行解决
【求助】如何获取ListView列表的值?
如题
计算机|信息|时间|IP地址 各个值
计算机=“”
信息=“”
时间=“”
IP地址=“”
现在下面代码只能获取最后一项[IP地址]右三位数 放计算机 在后面也是 后三位数
高手 如何获取前面的值呢? 做个语音呼叫器 只能做到识别机器号 不能识别类型{比如 呼叫网管 呼叫服务员 …………}
例子Local $Str = "19:24:49|信息|计算机|IP地址"
Local $Test = StringRegExpReplace($str, '如何写获取【信息值】', '$1')
MsgBox(0, '结果', "信息的值为:"&$Test )
服务端#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
#Include <Date.au3>
$Form1 = GUICreate("语音服务端", 460, 444)
$ListView1 = GUICtrlCreateListView("计算机|信息|时间|IP地址", 0, 0, 458, 414)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 100);调整宽度
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 100);调整宽度
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 100);调整宽度
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 100);调整宽度
GUICtrlSendMsg($ListView1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES);设置表格边框
GUICtrlSetCursor(-1, 0);鼠标指针
$List = GUICtrlCreateContextMenu($ListView1)
$Cls = GUICtrlCreateMenuItem("清空数据", $List)
GUICtrlCreateMenuItem("", $List)
$Quit = GUICtrlCreateMenuItem("退出", $List)
GUISetState(@SW_SHOW)
TCPStartup(); 开始 TCP 服务
$ip = IniRead(@ScriptDir & '\configs.ini', 'Config', 'ServerIP', '192.168.0.7');从配置文件中读取IP
$port = IniRead(@ScriptDir & '\configs.ini', 'Config', 'ServerPort', '21991');从配置文件中读取端口
$tcpMainListen = TCPListen($ip, $port, 100);创建监听,用于接收数据
If $tcpMainListen = -1 Then
MsgBox(4096, '错误', '创建监听失败!')
Exit
EndIf
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE,$Quit
Exit
Case $Cls
GUICtrlSendMsg($ListView1, $LVM_DELETEALLITEMS, 0, 0)
EndSwitch
$tcpSocket = TCPAccept($tcpMainListen);接收客户端连接
If $tcpSocket <> -1 Then;客户端连接成功
While 1
$TcpRecvData = TCPRecv($tcpSocket, 2048, 1);接收客户端发送的数据
If @error Then ExitLoop ;如果接收信息出现错误,则退出循环.
If $TcpRecvData <> '' Then
;===你需要的代码如下=========================================================================
$TcpRecv = BinaryToString($TcpRecvData, 4)
$strepl=StringRegExpReplace($TcpRecv, "[^\d]", 0)
$Jihao = StringRight($strepl,3)
;====代码结束=============================================================================
$TcpRecvData = GUICtrlCreateListViewItem(BinaryToString($TcpRecvData, 4), $ListView1);将信息写入到$listview1控件
;===需要播放的代码如下=========================================================================
_PLAYJH($Jihao)
;====代码结束==============================================================================
ExitLoop
EndIf
WEnd
EndIf
WEnd
;语音叫号
Func _PLAYJH($Jihao)
$hao = StringRight($Jihao,3)
MsgBox(64,0,"获取最后一项后三位数号码为:"&$hao)
EndFunc
客户端#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Form2 = GUICreate("语音呼叫", 273, 249)
$Button1 = GUICtrlCreateButton("呼叫网管", 16, 24, 243, 41)
$Button2 = GUICtrlCreateButton("呼叫技术员", 16, 88, 241, 41)
$Button3 = GUICtrlCreateButton("呼叫服务员", 16, 152, 243, 41)
GUISetState(@SW_SHOW)
TCPStartup(); 开始 TCP 服务; 开始 TCP 服务
$ip = IniRead(@ScriptDir & '\configs.ini', 'Config', 'ServerIP', @IPAddress1);从配置文件中读取IP
$port = IniRead(@ScriptDir & '\configs.ini', 'Config', 'ServerPort', '21991');从配置文件中读取端口
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1;呼叫网管
_Callinfo('001')
Case $Button2;呼叫技术员
_Callinfo('002')
Case $Button3;呼叫服务员
_Callinfo('003')
EndSwitch
WEnd
;呼叫信息
Func _Callinfo($CallInfo)
$tcpMainSocket = TCPConnect($ip, $port);连接服务端
If $tcpMainSocket = -1 Then
MsgBox(64, '错误', '连接到服务端失败!',2)
Else
TCPSend($tcpMainSocket, StringToBinary(@ComputerName & '|' & $CallInfo & '|' & @HOUR & ":" & @MIN & ":" & @SEC & "|" & @IPAddress1, 4))
EndIf
EndFunc ;==>_Callinfo
配置文件;configs.ini
[Config]
ServerIP=192.168.0.184
ServerPort=21991
|
|