adb助手 - 为adb提供简单的上下文提示

本文介绍了一个adb助手的开发,旨在为不常用adb或初学者提供命令提示和执行功能。该工具支持上下文提示、多命令执行、多设备操作及手机屏幕显示。设计中尽量减少依赖,仅使用可执行文件,且不依赖第三方库或数据库。重点讲述了上下文提示的实现、上下文管理、adb命令执行和显示手机屏幕的技术细节。

偶尔用一下adb,因不常用, 经常遇到命令记不清的情况, 网上找了几个adb助手,都偏向于界面化,做的很好,但对学习adb本身帮助不大.所以搞个工具方便我这样一年用不了几次,或初学adb的人.

预期功能:

  1. 输入adb命令时能显示上下文提示
  2. 上下文内容可扩充
  3. 一次能执行多个命令
  4. 能同时对多个设备操作.
  5. 能显示手机屏幕,并可在电脑上进行简单的操作

其他考虑:

  1. 尽可能少的依赖环境,最好只一个可执行文件.
  2. 尽可能不依赖第三方库和数据库等

效果图:

adb Helper

关键点

  • 一.显示上下文提示框

思路: 当输入"空格" 后,取光标最近的一个单词为关键字, 以此关键字筛选相关内容,并在当前光标下方弹出窗口显示. 此步骤需解决的主要问题:

a). 取关键字(因不想使用第三方控件, 所以使用TextBox作为输入框, 试过RichTextBox,刷新太慢,放弃了)

    //注: box 为TextBox控件

    int curLineIdx = box.GetLineIndexFromCharacterIndex(box.CaretIndex); //取当前行标
    int lineBegin = box.GetCharacterIndexFromLineIndex(curLineIdx); 
    string lineText = box.GetLineText(curLineIdx); //取当前行的全部文本
    if (box.CaretIndex < lineBegin) return;

    int linePos = box.CaretIndex - lineBegin; //取光标位置
    if (lineText.Length < linePos) return;

    lineText = lineText.Substring(0, linePos); //截取从本行开始到当前光标的文本

    string[] spor = { " ", "\t" };
    string[] buf = lineText.Split(spor, StringSplitOptions.None);
    
    string curToken = buf.Last(); //正在输入的字符(即: 当前行,距离光标最近的空格之后 的输入内容)

b). 取弹出窗口的位置

   POINT pt;
   NativeMethods.GetCaretPos(out pt); //调用 windows API , 取当前光标位置
   IntPtr wnd = NativeMethods.GetHandle(this);
   NativeMethods.ClientToScreen(wnd, ref pt);
   pt.Y += this._inputboxLineHeight; // TextBox的行高
   this._pop.Left = pt.X; //_pop为 window,即弹出的提示窗口
   this._pop.Top = pt.Y;
   this._pop.Show();

c). 取TextBox的行高. (因字体原因,例如电脑上没有默认的字体,可能导致行高不同, 所以不能设为固定值)

//注: tb为TextBox控件
Typefac
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值