表示SegmentFault貌似都是些先后端的人在玩,额,果断来写点不同的东西好了。
GitHub引用地址:https://github.com/MoonLord-L...
100%原创整理,求Star,求相似函数库或代码分享,求BUG……git
在Visual Studio中显示行号:工具,选项,文本编辑器,全部语言,显示行号github
VB.NET中,数组与ArrayList互相转换:(New ArrayList(New String() {})).ToArray(String.Empty.GetType())后端
VB.NET中,数组元素个数的声明与其它语言不一样,Dim Array(2) As String : MsgBox(Array.Length),输出3数组
VB.NET中,双引号使用两个双引号来转义替代,如""""表示1个双引号的字符串,字符串用&符号来链接框架
VB.NET中,想要在“调试”状态下,程序也能正常捕获UI异常,须要:项目,属性,应用程序,取消“启用应用程序框架”,将“启动对象”设置为自定义的Main函数(参考本函数库中的Program.vb文件)编辑器
从 .NET Framework 2.0 版开始,将没法经过 try-catch 块捕获 StackOverflowException 对象,而且默认状况下将当即终止相应的进程,而 OutOfMemoryException 则能够捕获并处理ide
System.Drawing.Imaging.ImageFormat的图片保存质量及文件大小降序排列,实测结果:函数
Bmp(最大)> Tiff > Exif/ Icon /MemoryBmp > Png/ Emf /Wmf(默认) > Gif > Jpeg(最小)
VB.NET中,SendKeys函数不能模拟发送PrintScreen键(全屏截图),必须使用底层的keybd_event函数实现才能够:工具
My.Computer.Keyboard.SendKeys(Keys.PrintScreen) '内置函数,无效 System.Windows.Forms.SendKeys.Send(Keys.PrintScreen) '内置函数,无效 My.Keyboard.Click(Keys.PrintScreen) '本函数库,有效
在Windows中,底层的keybd_event函数,也不能发送某些(跳转到当前用户的界面以外的)特殊组合键:this
My.Keyboard.Click(Keys.LWin, Keys.D) 'Win+D 显示桌面,有效 My.Keyboard.Click(Keys.LWin, Keys.L) 'Win+L 锁定电脑,无效 My.Keyboard.Click(Keys.ControlKey, Keys.ShiftKey, Keys.Escape) 'Ctrl+Shift+Esc 打开任务管理器,有效 My.Keyboard.Click(Keys.ControlKey, Keys.Menu, Keys.Delete) 'Ctrl+Alt+Delete 跳转系统界面,无效
没法模拟“Win+L”的问题,本函数库提供了一个替代方案,调用“user32.dll”中的“LockWorkStation”:
My.Power.Lock() '锁定电脑,有效
VB.NET中,须要将函数指针做为参数传递时,能够用“Delegate Function”定义一个函数类型,而后用“AddressOf”得到函数的指针
VB.NET中,调用.dll文件时,Alias后的函数名才是.dll中真正起做用的函数的名称,Alias不存在时,才会寻找同名函数
VB.NET中,频繁修改窗体内容(如修改背景图片),会致使内存泄露和卡顿闪烁的问题,解决方案:
If Not BackgroundImage Is Nothing Then BackgroundImage.Dispose() '在修改背景图片以前,销毁旧的背景图片 System.GC.Collect() '在适当的时机和代码位置,强制进行即时垃圾回收(会增长 CPU 负荷) SetStyle(ControlStyles.OptimizedDoubleBuffer, True) '先在缓冲区中绘制,而后再绘制到屏幕上,以减小闪烁 SetStyle(ControlStyles.AllPaintingInWmPaint, True) '忽略擦除背景的窗口消息,不擦除以前的背景,以减小闪烁
VB.NET中,使用“SyncLock Me”和“End SyncLock”代码块,来实现相似其它语言中的“synchronized(this)”同步锁
VB.NET中,使用“Nothing”、“New IntPtr(0)”,来实现相似其它语言中的“null”空指针
VB.NET中,使用“&HFFFFFFFFUI”的形式,尾缀UI,来表示16进制的无符号整数,即UInt32.MaxValue
VB.NET中,使用“AndAlso”、“OrElse”,来实现相似其它语言中的“&&”、“||”逻辑判断短路
'建立快捷方式
My.IO.WriteLinkFile("MyVisualBasic.exe", "快捷方式名称.lnk", "参数", "描述")
'将字符串转换为相似01010101的二进制形式的字符串,并写入到txt文件中
My.IO.WriteString(My.Security.Binary_Encode("字符串"), "binary.txt")
'获取当前目录下全部的文件列表,并保存到txt文件中
My.IO.WriteStringArray(My.IO.ListFile(), "list.txt")
'获取网页源码,并分离出其中全部的href属性值,返回字符串数组
My.StringProcessing.FindAll(My.Http.GetString("http://www.baidu.com"), "href=""", """")
'打开和关闭记事本程序,在cmd窗口同步阻塞
My.Task.RunAsync("notepad") : My.Task.Run("cmd") : My.Task.KillAsync("notepad")
'将完整的屏幕截图保存为png文件,并将60%比例的屏幕缩略图保存为jpg文件
My.Screen.Image().Save("10.png") : My.Screen.ImageThumbnail(0.6).Save("6.jpg", Imaging.ImageFormat.Jpeg)
'模拟键盘敲击,发送组合键:切换输入法Ctrl+Shift,关闭当前窗口Alt+F4,QQ屏幕截图Ctrl+Alt+A
My.Keyboard.Click(Keys.ControlKey, Keys.ShiftKey) My.Keyboard.Click(Keys.Menu, Keys.F4) My.Keyboard.Click(Keys.ControlKey, Keys.Menu, Keys.A)
'模拟键盘敲击,输入一段字符串,输入每一个字符的时间间隔为50毫秒
My.Keyboard.Input("1!2@3#4$5%6^7&8*9(0)-_=+Aa", 50)
'模拟连续复制粘贴字符,输入一段字符串,输入每一个字符的时间间隔为100毫秒
My.Keyboard.PasteDelay("这是一段中文字符。", 100)
'模拟用户操做,打开“画图”程序,粘贴屏幕截图,并将文件保存到桌面,关闭“画图”程序
Dim Screenshot As Bitmap = My.Screen.Image() Dim SavePath As String = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) My.Task.RunAsync("mspaint.exe") My.Time.Wait(500) My.Keyboard.Paste(Screenshot) My.Keyboard.Click(Keys.ControlKey, Keys.S) My.Time.Wait(500) My.Keyboard.Paste(SavePath & "\截图" & My.Time.Stamp() & ".png") My.Keyboard.Click(Keys.Enter) My.Time.Wait(500) My.Task.KillAsync("mspaint.exe")
'模拟用户操做,移动鼠标到桌面右下角(显示桌面),单击2下,并将鼠标移回初始位置
Dim Position As Point = My.Mouse.Position() My.Mouse.MoveToPercent(1, 1) My.Mouse.LeftClick() My.Time.Wait(1000) My.Mouse.LeftClick() My.Mouse.MoveToPosition(Position)
'模拟用户操做,打开“计算器”程序,在窗体无焦点的状况下,输入“1+2/3-4*5=”,保存结果截图
Dim SavePath As String = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) My.Task.RunAsync("calc.exe") My.Time.Wait(1000) My.Window.SetFocus(Me.Handle) Dim Calc As IntPtr = My.Window.FindByTitle("计算器") My.Window.SendKey(Calc, Keys.D1) My.Time.Wait(100) My.Window.SendKey(Calc, Keys.Add) My.Time.Wait(100) My.Window.SendKey(Calc, Keys.D2) My.Time.Wait(100) My.Window.SendKey(Calc, Keys.Divide) My.Time.Wait(100) My.Window.SendKey(Calc, Keys.D3) My.Time.Wait(100) My.Window.SendKey(Calc, Keys.Subtract) My.Time.Wait(100) My.Window.SendKey(Calc, Keys.D4) My.Time.Wait(100) My.Window.SendKey(Calc, Keys.Multiply) My.Time.Wait(100) My.Window.SendKey(Calc, Keys.D5) My.Time.Wait(100) My.Window.SendKey(Calc, Keys.Oemplus) My.Time.Wait(100) My.Window.Image(Calc).Save(SavePath & "\计算结果" & My.Time.Stamp() & ".png") My.Task.KillAsync("calc.exe")
GitHub地址:https://github.com/MoonLord-L...
采用标准的文档注释,持续更新,欢迎拿去随便用。
函数库代码结构:
鼠标控制源代码示例:
窗口控制注释效果:
键盘控制注释效果: