110,538
社区成员
发帖
与我相关
我的任务
分享
截屏信息类型
class Screenshots
{
public static List<ScreenshotsThread> Classlist = new List<ScreenshotsThread>();
public static void Init()
{
ArrayList list = new ArrayList();
list.Add("192.168.9.202:8000:31202");
list.Add("192.168.9.213:8000:31213");
foreach (string strvalue in list)
{
ScreenshotsThread screenshotsthread = null;
string[] str = strvalue.Split(':');
screenshotsthread = new ScreenshotsThread();
screenshotsthread.setAddr(str[0].ToString());
screenshotsthread.setPort(str[1].ToString());
screenshotsthread.setId(str[2].ToString());
screenshotsthread.start();
Classlist.Add(screenshotsthread);
}
}
}
//截屏处理线程
class ScreenshotsThread
{
private String IpAddress = "";
private string IPport = "";
private String tid = "";
Thread thread = null;
static object _getTerminalObj = new object();//锁定对象
byte[] buffer = new byte[1024];
Socket socket;
bool _state = true;
string _info;
//IP地址
public void setAddr(String IpAddr)
{
IpAddress = IpAddr;
}
public bool state
{
get { return _state; }
set { _state = value; }
}
public string Info
{
get { return _info; }
set { _info = value; }
}
//端口号
public void setPort(string Port)
{
IPport = Port;
}
//机器编码
public void setId(String id)
{
tid = id;
}
public void start()
{
if (thread == null)
thread = new Thread(run);
thread.IsBackground = true;
thread.Start();
}
public void run()
{
try
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(IpAddress, int.Parse(IPport));
socket.Receive(buffer);
}
catch (Exception ex)
{
throw new Exception("读取截屏据数据存在错误!");
}
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket);
}
void ReceiveMessage(IAsyncResult ar)
{
try
{
var socket = ar.AsyncState as Socket;
var length = socket.EndReceive(ar);
byte[] reallData = new byte[length];
Array.Copy(buffer, reallData, length);
string str = System.Text.Encoding.UTF8.GetString(reallData);
if (str.IndexOf("确认要退出系统吗") > -1)
{
Info = tid + ":确认要退出系统吗";
}
else if (str.Contains("请输入") && str.Contains("选择竞猜内容"))
{
Info = tid + ":请输入选择竞猜内容";
}
else if (str.Contains("请输入") && str.Contains("内数字选择日期"))
{
Info = tid + ":请输入内数字选择日期";
}
else if (str.Contains("请输入") && str.Contains("数字选择日期"))
{
Info = tid + ":请输入数字选择日期";
}
else if (str.Contains("没有第") && str.Contains("场比赛"))
{
Info = tid + ":没有第场比赛";
}
else if (str.Contains("周") && str.Contains("没有赛事"))
{
Info = tid + ":周没有赛事";
}
else if (str.Contains("倍数最小为") && str.Contains("请重新输入"))
{
Info = tid + ":倍数最小为请重新输入";
}
else if (str.Contains("当前操作尚未完成") && str.Contains("是否确定要退出"))
{
Info = tid + ":当前操作尚未完成是否确定要退出";
}
else if (str.Contains("请输入") && str.Contains("按钮上的数字进行选择"))
{
Info = tid + ":请输入按钮上的数字进行选择";
}
else if (str.IndexOf("倍投范围为") > -1)
{
Info = tid + ":倍投范围为";
}
FuncWrite("输出:"+Info);
Thread.Sleep(10);
}
catch (Exception ex)
{
// FuncWrite(ex.Message);
}
finally
{
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket);
}
}
void FuncWrite(object text)
{
try
{
String dir = Environment.CurrentDirectory + "\\..\\log\\";
if (!Directory.Exists(dir))
Directory.CreateDirectory(dir);
String FileName = dir + DateTime.Now.ToString("yyyy-MM-dd") + ".log";
String Msg = DateTime.Now.ToString("HH:mm:ss.fff") + " " + text + "\r\n";
File.AppendAllText(FileName, Msg);
System.Console.Write(Msg);
}
catch (Exception ex)
{
}
}
}
class Screenshots
{
//类列表
public static List<ScreenshotsThread> Classlist = new List<ScreenshotsThread>();
public static void Init()
{
//机器连接列表
ArrayList list = new ArrayList();
list.Add("192.168.9.202:8000:31202");
list.Add("192.168.9.213:8000:31213");
//多机器生成启线程类实列并类实例加载到类列表
foreach (string strvalue in list)
{
ScreenshotsThread screenshotsthread = null;
string[] str = strvalue.Split(':');
screenshotsthread = new ScreenshotsThread();
screenshotsthread.setAddr(str[0].ToString()); //IP地址
screenshotsthread.setPort(str[1].ToString());//端口
screenshotsthread.setId(str[2].ToString()); //机器编码
screenshotsthread.start(); //启动线程
Classlist.Add(screenshotsthread); //线程类实例加载到类列表
}
}
}
//截屏处理线程
class ScreenshotsThread
{
private String IpAddress = "";
private string IPport = "";
private String tid = "";
Thread thread = null;
byte[] buffer = new byte[1024];
Socket socket;
string _info;
//IP地址
public void setAddr(String IpAddr)
{
IpAddress = IpAddr;
}
//截屏信息
public string Info
{
get { return _info; }
set { _info = value; }
}
//端口号
public void setPort(string Port)
{
IPport = Port;
}
//机器编码
public void setId(String id)
{
tid = id;
}
//启动线程
public void start()
{
if (thread == null)
thread = new Thread(run);
thread.IsBackground = true;
thread.Start();
}
//启动线程
public void run()
{
try
{
//创建套接字发送数据到一个TCP连接。
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//尝试连接
socket.Connect(IpAddress, int.Parse(IPport));
//接收数据
socket.Receive(buffer);
}
catch (Exception ex)
{
throw new Exception("读取截屏据数据存在错误!");
}
//socket异步的方法接收数据
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket);
}
//socket异步的方法接收数据
void ReceiveMessage(IAsyncResult ar)
{
try
{
var socket = ar.AsyncState as Socket;
var length = socket.EndReceive(ar);
byte[] reallData = new byte[length];
Array.Copy(buffer, reallData, length);
string str = System.Text.Encoding.UTF8.GetString(reallData);
if (str.IndexOf("确认要退出系统吗") > -1)
{
Info = tid + ":确认要退出系统吗";
}
Thread.Sleep(10);
}
catch (Exception ex)
{
//获取异常信息并写入到日志文件
FuncWrite(ex.Message);
}
finally
{
//重新执行异步的方法接收数据
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket);
}
}
}
namespace AutoPrintTicketSystem.src
{
class Screenshots
{
public static List<ScreenshotsThread> Screenshotslist = new List<ScreenshotsThread>();
#region 初始化terminal.xml配制信息
/// <summary>
/// 初始化terminal.xml配制信息
/// </summary>
/// <returns></returns>
public static bool Init()
{
try
{
//读取终端设备配置脚本
XmlDocument xml = new XmlDocument();
xml.Load(Application.StartupPath + @"\terminal.xml");
XmlNodeList nodelist = xml.SelectNodes("config").Item(0).ChildNodes;
foreach (XmlNode xn in nodelist)
{
//如果配置中终端不可用,不会出现在终端列表中
String Enabled = xn.Attributes["enabled"].Value.ToString();
if (Enabled == "false") continue;
Hashtable ht = new Hashtable();
XmlNodeList xnlist = xn.ChildNodes;
foreach (XmlNode xn1 in xnlist)
{
String name = xn1.Attributes["name"].Value.ToString();
if (name == "IPAddrScreenshots")
{
ScreenshotsThread StatThread = null;
String value = xn1.Attributes["value"].Value.ToString();
StatThread = new ScreenshotsThread();
StatThread.setId(xn.Attributes["id"].Value.ToString());
StatThread.setAddr(value.Split(':')[0]);
StatThread.setPort(value.Split(':')[1]);
StatThread.start();
Screenshotslist.Add(StatThread);
}
}
}
return true;
}
catch (Exception ex)
{
LogMgr.WriteLog(ex.Message + ":" + ex.StackTrace);
return false;
}
}
#endregion
}
//票队列处理线程
class ScreenshotsThread : BaseThread
{
private String IpAddress = "";
private string IPport = "";
private String tid = "";
byte[] buffer = new byte[1024];
Socket socket;
static object _getTerminalObj = new object();//锁定对象
// 输出信息
string _info = "";
public string Info
{
get { return _info; }
set { _info = value; }
}
//IP地址
public void setAddr(String IpAddr)
{
IpAddress = IpAddr;
}
//端口号
public void setPort(string Port)
{
IPport = Port;
}
//机器编码
public void setId(String id)
{
tid = id;
}
public override void run()
{
try
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(IpAddress, int.Parse(IPport));
socket.Receive(buffer);
}
catch (Exception ex)
{
throw new Exception("读取截屏据数据存在错误!");
}
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket);
}
private void ReceiveMessage(IAsyncResult ar)
{
try
{
var socket = ar.AsyncState as Socket;
var length = socket.EndReceive(ar);
byte[] reallData = new byte[length];
Array.Copy(buffer, reallData, length);
string str = System.Text.Encoding.UTF8.GetString(reallData);
//首面
if (str.IndexOf("确认要退出系统吗") > -1)
{
Info = tid + ":确认要退出系统吗";
}
else if (str.Contains("请输入") && str.Contains("内数字选择日期"))
{
// Info = tid + ":请输入内数字选择日期";
//按回车Enter
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(28));
//按ESC
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(1));
}
else if (str.Contains("请输入") && str.Contains("选择竞猜内容"))
{
// Info = tid + ":请输入选择竞猜内容";
//按回车Enter
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(28));
//按ESC
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(1));
}
else if (str.Contains("请输入") && str.Contains("数字选择日期"))
{
//Info = tid + ":请输入数字选择日期";
//按回车Enter
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(28));
//按ESC
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(1));
}
else if (str.Contains("没有第") && str.Contains("场比赛"))
{
//Info = tid + ":没有第场比赛";
//按回车Enter
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(28));
//按ESC
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(1));
}
else if (str.Contains("周") && str.Contains("没有赛事"))
{
//Info = tid + ":周没有赛事";
//按回车Enter
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(28));
//按ESC
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(1));
}
else if (str.Contains("倍数最小为") && str.Contains("请重新输入"))
{
//Info = tid + ":倍数最小为请重新输入";
//按回车Enter
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(28));
//按ESC
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(1));
}
else if (str.Contains("不在存场次为周") && str.Contains("比赛"))
{
// Info = tid + ":不在存场次为周比赛";
//按回车Enter
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(28));
//按ESC
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(1));
}
else if (str.Contains("当前操作尚未完成") && str.Contains("是否确定要退出"))
{
//Info = tid + ":当前操作尚未完成是否确定要退出";
//按回车Enter
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(28));
}
else if (str.IndexOf("倍投范围为") > -1)
{
// Info = tid + ":倍投范围为";
//按ESC
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(1));
//按退格
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(14));
//按退格
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(14));
//按退格
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(14));
//按退格
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(14));
//输入1
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(2));
//按回车Enter
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(28));
//按ESC
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(1));
}
else if (str.Contains("请输入") && str.Contains("按钮上的数字进行选择"))
{
//Info = tid + ":请输入按钮上的数字进行选择";
//按回车Enter
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(28));
//按ESC
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(1));
//按ESC
DeviceControl.sendData(tid, DeviceType.Keyboard, BitConverter.GetBytes(1));
}
else if (str.Contains("兑奖成功"))
{
Info = tid + ":兑奖成功";
}
else if (str.Contains("不能兑奖"))
{
Info = tid + ":不能兑奖";
}
else if (str.Contains("不是中奖票号"))
{
Info = tid + ":不是中奖票号";
}
else if (str.Contains("序列号位数不够"))
{
Info = tid + ":序列号位数不够";
}
else if (str.Contains("密码位数不够"))
{
Info = tid + ":密码位数不够";
}
Thread.Sleep(5);
}
catch (Exception ex)
{
throw new Exception("读取截屏据数据存在错误!");
}
finally
{
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage),socket);
}
}
}
}