表示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...
採用標準的文檔註釋,持續更新,歡迎拿去隨便用。
函數庫代碼結構:
鼠標控制源代碼示例:
窗口控制註釋效果:
鍵盤控制註釋效果: