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:

  1. System.Diagnostics.Process p = new System.Diagnostics.Process();
  2. p.StartInfo.UseShellExecute = false;
  3. p.StartInfo.CreateNoWindow = true;
  4. p.StartInfo.FileName = "cmd.exe";
  5. p.StartInfo.Arguments = "/c adb shell cat /proc/gesture_state";
  6. p.StartInfo.RedirectStandardError = true;
  7. p.StartInfo.RedirectStandardInput = true;
  8. p.StartInfo.RedirectStandardOutput = true;
  9. p.Start();
  10. string outtr = p.StandardOutput.ReadToEnd();
  11. MessageBox.Show(outtr);
  12. p.Close();

微信小程序挑一挑辅助的更多相关文章

  1. 微信小程序 ui框架(辅助)

    WeUi: https://weui.io/ https://github.com/weui/weui-wxss/ Wa-Ui: https://github.com/liujians/Wa-UI/w ...

  2. 用python一步一步教你玩微信小程序【跳一跳】

    12月28日,微信上线了小游戏「跳一跳」,瞬间成了全民游戏,如何牢牢占据排行榜的第一位呢?用Python帮助你,Python真的无所不能. 作为技术出身的我们,是不是想用技术改变排名呢? 注意:本文适 ...

  3. 微信小程序开发03-这是一个组件

    编写组件 基本结构 接上文:微信小程序开发02-小程序基本介绍 我们今天先来实现这个弹出层: 之前这个组件是一个容器类组件,弹出层可设置载入的html结构,然后再设置各种事件即可,这种组件有一个特点: ...

  4. 微信小程序写tab切换

    微信小程序之tab切换效果,如图: 最近在学习微信小程序并把之前的公司app搬到小程序上,挑一些实现效果记录一下(主要是官方文档里没说的,毕竟官方文档只是介绍功能) .wxml代码: <view ...

  5. 商业版微信小程序开发流程

    一.产品阶段 ①功能规划思维导图——产品经理了解清楚整个项目需求,产出清晰明确的功能需求说明. ②需求报价预算——产品经理确定好功能需求后,输出整个项目开发的报价方案. ③组建技术开发团队——初步确认 ...

  6. Spring+微信小程序 卡券打通

    近期公司项目需要使用到微信卡券模块,主要做的是在小程序打通微信卡券,实现小程序领取卡券的功能效果. 简单说下涉及的东西: Springboot—使用springboot做后端接口,非常便捷 并且根本是 ...

  7. 微信小程序模板消息群发解决思路

    基于微信的通知渠道,微信为开发者提供了可以高效触达用户的模板消息能力,以便实现服务的闭环并提供更佳的体验.(微信6.5.2及以上版本支持模板功能.低于该版本将无法收到模板消息.) 模板推送位置:服务通 ...

  8. 「小程序JAVA实战」微信小程序简介(一)

    转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-01/ 一直想学习小程序,苦于比较忙,加班比较多没时间,其实这都是理由,很多时候习惯了搬砖,习惯了固 ...

  9. 小程序语音红包开发中 汉字转拼音的问题 微信小程序红包开发遇到的坑

    公司最近在开发微信小程序的红包功能,语音红包需要用到文字转拼音的功能. 之前介绍过怎么将中文的汉字转为拼音的,具体看下面这篇文章. 微信语音红包小程序开发如何提高精准度 红包小程序语音识别精准度 微信 ...

  10. BeautyWe.js 一套专注于微信小程序的开发范式

    摘要: 小程序框架... 作者:JerryC 原文:BeautyWe.js 一套专注于微信小程序的开发范式 Fundebug经授权转载,版权归原作者所有. 官网:beautywejs.com Repo ...

随机推荐

  1. [CODE FESTIVAL 2016]Distance Pairs

    题意:有一个未知的边权为$1$的图,给定所有点到$1$的最短路$a_i$和到$2$的最短路$b_i$,问是否存在这样的图,如果存在,问图中最少有多少条边 先考虑$a_i$,有$a_1=0,a_i\ne ...

  2. 【折半枚举】Ural Championship April 30, 2017 Problem G. Glasses with solutions

    题意:有n杯盐溶液,给定每杯里面盐的质量以及盐溶液的质量.问你有多少种方案选择一个子集,使得集合里面的盐溶液倒到一个被子里面以后,浓度为A/B. 折半枚举,暴力搜索分界线一侧的答案数,跨越分界线的答案 ...

  3. [转]Java中this的意义

    1. this 指的不是成员变量还是方法里的参数值指得是这个类自身 class a{int i = 0;public void aa(){System.out.print(i);}public voi ...

  4. OpenVPN记住账号密码自动连接

    说明:在增加了证书+账号密码之后,安全性确实提高了,但是面临的问题也有,每次重启时必须输入账号密码才能连接,这也造成了无人值守的问题. 解决: 1.在Client的client.ovpn末尾添加一行a ...

  5. ArcGIS中影像与影像,影像与点云之间的配准

    地图配准可分为影像配准和空间配准.影像配准的对象是raster图,譬如TIFF图.配准后的图可以保存为ESRI GRID, TIFF,或ERDAS IMAGINE格式.空间配准(Spatial Adj ...

  6. Log4j 日志级别

    转自:http://michales003.iteye.com/blog/1160605 日志记录器(Logger)是日志处理的核心组件.log4j具有5种正常级别(Level).: 1.static ...

  7. 关于如何避免Android中Bitmap引起的OutOfMemoryError

    在Android中处理大图片不是一件很随意的事情,因为通常我们使用的是内置的BitmapFactory解码图片的,而BitmapFactory往往会因为图片过大而遇到OutOfMemoryError的 ...

  8. 轻松编写 C++ 单元测试

    单元测试概述 测试并不只是测试工程师的责任,对于开发工程师,为了保证发布给测试环节的代码具有足够好的质量( Quality ),为所编写的功能代码编写适量的单元测试是十分必要的. 单元测试( Unit ...

  9. unity reflection probe --- forward deferred transparent opaque

    deferred 和forward reflection probe 的差别 deferred ref是逐像素的 forward是逐 obj 但我还遇到一个问题就是box projection ref ...

  10. unity linear space时 photoshop blend的正确设置

    gamma correction的dcc设置 ps在线性空间下工作 blend的时候颜色设置 勾选用灰度系数混合rgb 1.0 这样就是在线性空间下工作了 这样素材在数学上是正确的 r8g8b8a8格 ...