找回密码
 加入
搜索
查看: 3985|回复: 3

[系统综合] 【已解决】如何获取ListView列表的值?

[复制链接]
发表于 2015-9-15 18:51:33 | 显示全部楼层 |阅读模式
本帖最后由 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
发表于 2015-9-15 21:18:18 | 显示全部楼层
记得好久前,论坛发布过这样的软件。
发表于 2015-9-15 22:41:24 | 显示全部楼层
这样写获取最后一项值,\|(.+?)$
 楼主| 发表于 2015-9-26 18:27:38 | 显示全部楼层
功能已经学习到了,答案也在里面
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-29 01:23 , Processed in 0.073529 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表