偶尔用一下adb,因不常用, 经常遇到命令记不清的情况, 网上找了几个adb助手,都偏向于界面化,做的很好,但对学习adb本身帮助不大.所以搞个工具方便我这样一年用不了几次,或初学adb的人.
预期功能:
- 输入adb命令时能显示上下文提示
- 上下文内容可扩充
- 一次能执行多个命令
- 能同时对多个设备操作.
- 能显示手机屏幕,并可在电脑上进行简单的操作
其他考虑:
- 尽可能少的依赖环境,最好只一个可执行文件.
- 尽可能不依赖第三方库和数据库等
效果图:

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

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

被折叠的 条评论
为什么被折叠?



