微信小程序挑一挑辅助
1.窗体
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 微信跳一跳辅助
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
int titleh = Height - ClientSize.Height;
int titlew = Width - ClientSize.Width;
Height = height + titleh;
Width = width + titlew;
}
int time = int.Parse(System.Configuration.ConfigurationSettings.AppSettings["Time"]);//点击后截图时间;测试发现不能设太小
string path = System.Configuration.ConfigurationSettings.AppSettings["AdbPath"];//adb.exe所在路径,徐包含adb.exe
int height = int.Parse(System.Configuration.ConfigurationSettings.AppSettings["Height"]);//图片高度,一般截取第一张图后,打开图片用截图工具拖一下看看图片高度宽度各是多少
int width =int.Parse(System.Configuration.ConfigurationSettings.AppSettings["Width"]);//图片宽度
bool canCLick = false;
Point Start;
Point End;
private void pictureBox1_Click(object sender, EventArgs e)
{
if (!canCLick)
{
Text = Application.ProductName + "(不允许点击!)";
return;
}
var me = ((System.Windows.Forms.MouseEventArgs)(e));
if (me.Button == MouseButtons.Left)//黑人位置
{
Start = ((System.Windows.Forms.MouseEventArgs)(e)).Location;
}
else if (me.Button == MouseButtons.Right)//目标位置
{
if(Start.Equals(new Point(0, 0)))
{
GetPhoneScreen();
Text = Application.ProductName + "(为你刷新手机屏幕)";
return;
}
End = ((System.Windows.Forms.MouseEventArgs)(e)).Location;
//计算两点直接的距离
//3.999022243950134这个值来自网络大神,本文思路也是按照网上别人给出的实例思路来的!
double value = Math.Sqrt(Math.Pow(Math.Abs(Start.X - End.X),2)+Math.Pow( Math.Abs(Start.Y - End.Y),2));
Text = Application.ProductName+ string.Format("(距离{0}需要时间:{1})", value, (3.999022243950134 * value).ToString("0"));
new ProcessDef(ProcessDefEnum.other)//此处引用本人自己写的,以前封装的类库,文后会贴ProcessDef源码,也可百度或者直接使用DotNet文章中的写法
{
FileName = path,
CommandText= string.Format("shell input swipe 100 100 200 200 {0}", (3.999022243950134 * value).ToString("0"))
}.RunGetResult();
canCLick = false;
Start = new Point(0, 0);
GetPhoneScreen();
}
}
void GetPhoneScreen()
{
try
{
if (File.Exists("D:tyt.png"))
{
pictureBox1.Image = null;
Thread.Sleep(time);
GC.Collect();
File.Delete("D:tyt.png");
}
new ProcessDef(ProcessDefEnum.other)
{
FileName = path,
CommandText = "shell /system/bin/screencap -p /sdcard/tyt.png"
}.RunGetResult();
Thread.Sleep(5);
new ProcessDef(ProcessDefEnum.other)
{
FileName = path,
CommandText = "pull /sdcard/tyt.png D:tyt.png"
}.RunGetResult();
pictureBox1.Image = new Bitmap("D:tyt.png");
canCLick = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void Form1_Load(object sender, EventArgs e)
{
GetPhoneScreen();
}
}
}
2.
public class ProcessDef
{
public ProcessDef(ProcessDefEnum defEnum)
{
StartType = defEnum;
switch (StartType)
{
case ProcessDefEnum.cmd:
filename = "cmd.exe";
break;
case ProcessDefEnum.PwoerShell:
filename = "PowerShell.exe";
break;
default: break;
}
}
public delegate void ResultHandler(string msg);
public event ResultHandler OnResult;
string filename = string.Empty;
public string FileName
{
get { return filename; }
set
{
switch (StartType)
{
case ProcessDefEnum.cmd:
filename = "cmd.exe";
break;
case ProcessDefEnum.PwoerShell:
filename = "PowerShell.exe";
break;
case ProcessDefEnum.other:
if (!string.IsNullOrEmpty(value))
{
filename = value;
}
break;
}
}
}
public string WorkDir { get; set; }
public string CommandText { get; set; } = "echo .....";
public bool UseShell { set { UseShell = value; } }
public bool ShowConsole { get; set; } = false;
public bool RedirectError { get; set; } = true;
public bool RedirectInput { get; set; } = true;
public bool RedirectdOutput { get; set; } = true;
ProcessDefEnum StartType;
string RuncmdOrPowerShell( bool rtn=false)
{
ProcessStartInfo psi = new ProcessStartInfo()
{
FileName = FileName,
RedirectStandardError = RedirectError,
RedirectStandardInput = RedirectInput,
RedirectStandardOutput = RedirectdOutput,
CreateNoWindow = !ShowConsole,
UseShellExecute = false,
};
if (!string.IsNullOrEmpty(WorkDir) && Directory.Exists(WorkDir))
{
psi.WorkingDirectory = WorkDir;
}
Process process = new Process()
{
StartInfo = psi
};
process.Start();
process.StandardInput.WriteLine(CommandText);
process.StandardInput.WriteLine ("exit");
process.StandardInput.AutoFlush = true;
if (rtn)
{
return process.StandardOutput.ReadToEnd();
}
else
{
while (!process.StandardOutput.EndOfStream)
{
string msg = process.StandardOutput.ReadLine();
if (!string.IsNullOrEmpty(msg))
OnResult?.Invoke(msg);
}
return "";
}
// process.WaitForExit();
}
string RunOther(bool rtn = false)
{
ProcessStartInfo psi = new ProcessStartInfo()
{
FileName = FileName,
RedirectStandardError = RedirectError,
RedirectStandardInput = RedirectInput,
RedirectStandardOutput = RedirectdOutput,
CreateNoWindow = !ShowConsole,
UseShellExecute = false,
Arguments = CommandText,
};
if (!string.IsNullOrEmpty(WorkDir) && Directory.Exists(WorkDir))
{
psi.WorkingDirectory = WorkDir;
}
Process process = new Process()
{
StartInfo = psi
};
process.Start();
if (rtn)
{
return process.StandardOutput.ReadToEnd();
}
else
{
OnResult?.Invoke(filename + " " + CommandText);
while (!process.StandardOutput.EndOfStream)
{
string msg = process.StandardOutput.ReadLine();
if (!string.IsNullOrEmpty(msg))
OnResult?.Invoke(msg);
}
return "";
}
}
public void Run()
{
switch (StartType)
{
case ProcessDefEnum.cmd:
case ProcessDefEnum.PwoerShell:
RuncmdOrPowerShell();
break;
case ProcessDefEnum.other:
RunOther();
break;
default:break;
}
}
public string RunGetResult()
{
string result = string.Empty;
switch (StartType)
{
case ProcessDefEnum.cmd:
case ProcessDefEnum.PwoerShell:
result= RuncmdOrPowerShell();
break;
case ProcessDefEnum.other:
result= RunOther();
break;
default:break;
}
return result;
}
}
public enum ProcessDefEnum
{
cmd = 1,
PwoerShell = 2,
other = 3
}
3.Program
namespace 微信跳一跳辅助
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
4.App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<appSettings>
<add key="AdbPath" value="D:\tools\Adb\adb.exe"/>
<add key="Time" value="700"/>
<add key="Height" value="620"/>
<add key ="Width" value="375"/>
</appSettings>
</configuration>
本文调用adb的程序不建议用文中贴出的类,本人用是因为有封装的Dll直接调用RunGetResult()即可:
给大家搜一个:
建议使用(以下形式)以下代码来自于http://blog.csdn.net/feifei_csdn/article/details/53455490:
- System.Diagnostics.Process p = new System.Diagnostics.Process();
- p.StartInfo.UseShellExecute = false;
- p.StartInfo.CreateNoWindow = true;
- p.StartInfo.FileName = "cmd.exe";
- p.StartInfo.Arguments = "/c adb shell cat /proc/gesture_state";
- p.StartInfo.RedirectStandardError = true;
- p.StartInfo.RedirectStandardInput = true;
- p.StartInfo.RedirectStandardOutput = true;
- p.Start();
- string outtr = p.StandardOutput.ReadToEnd();
- MessageBox.Show(outtr);
- p.Close();
微信小程序挑一挑辅助的更多相关文章
- 微信小程序 ui框架(辅助)
WeUi: https://weui.io/ https://github.com/weui/weui-wxss/ Wa-Ui: https://github.com/liujians/Wa-UI/w ...
- 用python一步一步教你玩微信小程序【跳一跳】
12月28日,微信上线了小游戏「跳一跳」,瞬间成了全民游戏,如何牢牢占据排行榜的第一位呢?用Python帮助你,Python真的无所不能. 作为技术出身的我们,是不是想用技术改变排名呢? 注意:本文适 ...
- 微信小程序开发03-这是一个组件
编写组件 基本结构 接上文:微信小程序开发02-小程序基本介绍 我们今天先来实现这个弹出层: 之前这个组件是一个容器类组件,弹出层可设置载入的html结构,然后再设置各种事件即可,这种组件有一个特点: ...
- 微信小程序写tab切换
微信小程序之tab切换效果,如图: 最近在学习微信小程序并把之前的公司app搬到小程序上,挑一些实现效果记录一下(主要是官方文档里没说的,毕竟官方文档只是介绍功能) .wxml代码: <view ...
- 商业版微信小程序开发流程
一.产品阶段 ①功能规划思维导图——产品经理了解清楚整个项目需求,产出清晰明确的功能需求说明. ②需求报价预算——产品经理确定好功能需求后,输出整个项目开发的报价方案. ③组建技术开发团队——初步确认 ...
- Spring+微信小程序 卡券打通
近期公司项目需要使用到微信卡券模块,主要做的是在小程序打通微信卡券,实现小程序领取卡券的功能效果. 简单说下涉及的东西: Springboot—使用springboot做后端接口,非常便捷 并且根本是 ...
- 微信小程序模板消息群发解决思路
基于微信的通知渠道,微信为开发者提供了可以高效触达用户的模板消息能力,以便实现服务的闭环并提供更佳的体验.(微信6.5.2及以上版本支持模板功能.低于该版本将无法收到模板消息.) 模板推送位置:服务通 ...
- 「小程序JAVA实战」微信小程序简介(一)
转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-01/ 一直想学习小程序,苦于比较忙,加班比较多没时间,其实这都是理由,很多时候习惯了搬砖,习惯了固 ...
- 小程序语音红包开发中 汉字转拼音的问题 微信小程序红包开发遇到的坑
公司最近在开发微信小程序的红包功能,语音红包需要用到文字转拼音的功能. 之前介绍过怎么将中文的汉字转为拼音的,具体看下面这篇文章. 微信语音红包小程序开发如何提高精准度 红包小程序语音识别精准度 微信 ...
- BeautyWe.js 一套专注于微信小程序的开发范式
摘要: 小程序框架... 作者:JerryC 原文:BeautyWe.js 一套专注于微信小程序的开发范式 Fundebug经授权转载,版权归原作者所有. 官网:beautywejs.com Repo ...
随机推荐
- [CODE FESTIVAL 2016]Distance Pairs
题意:有一个未知的边权为$1$的图,给定所有点到$1$的最短路$a_i$和到$2$的最短路$b_i$,问是否存在这样的图,如果存在,问图中最少有多少条边 先考虑$a_i$,有$a_1=0,a_i\ne ...
- 【折半枚举】Ural Championship April 30, 2017 Problem G. Glasses with solutions
题意:有n杯盐溶液,给定每杯里面盐的质量以及盐溶液的质量.问你有多少种方案选择一个子集,使得集合里面的盐溶液倒到一个被子里面以后,浓度为A/B. 折半枚举,暴力搜索分界线一侧的答案数,跨越分界线的答案 ...
- [转]Java中this的意义
1. this 指的不是成员变量还是方法里的参数值指得是这个类自身 class a{int i = 0;public void aa(){System.out.print(i);}public voi ...
- OpenVPN记住账号密码自动连接
说明:在增加了证书+账号密码之后,安全性确实提高了,但是面临的问题也有,每次重启时必须输入账号密码才能连接,这也造成了无人值守的问题. 解决: 1.在Client的client.ovpn末尾添加一行a ...
- ArcGIS中影像与影像,影像与点云之间的配准
地图配准可分为影像配准和空间配准.影像配准的对象是raster图,譬如TIFF图.配准后的图可以保存为ESRI GRID, TIFF,或ERDAS IMAGINE格式.空间配准(Spatial Adj ...
- Log4j 日志级别
转自:http://michales003.iteye.com/blog/1160605 日志记录器(Logger)是日志处理的核心组件.log4j具有5种正常级别(Level).: 1.static ...
- 关于如何避免Android中Bitmap引起的OutOfMemoryError
在Android中处理大图片不是一件很随意的事情,因为通常我们使用的是内置的BitmapFactory解码图片的,而BitmapFactory往往会因为图片过大而遇到OutOfMemoryError的 ...
- 轻松编写 C++ 单元测试
单元测试概述 测试并不只是测试工程师的责任,对于开发工程师,为了保证发布给测试环节的代码具有足够好的质量( Quality ),为所编写的功能代码编写适量的单元测试是十分必要的. 单元测试( Unit ...
- unity reflection probe --- forward deferred transparent opaque
deferred 和forward reflection probe 的差别 deferred ref是逐像素的 forward是逐 obj 但我还遇到一个问题就是box projection ref ...
- unity linear space时 photoshop blend的正确设置
gamma correction的dcc设置 ps在线性空间下工作 blend的时候颜色设置 勾选用灰度系数混合rgb 1.0 这样就是在线性空间下工作了 这样素材在数学上是正确的 r8g8b8a8格 ...