欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:C#實現(xiàn)微信消息自動發(fā)送

柚子快報激活碼778899分享:C#實現(xiàn)微信消息自動發(fā)送

http://yzkb.51969.com/

群發(fā)消息

C#實現(xiàn)微信消息自動發(fā)送

微信UI自動化測試的意義主要體現(xiàn)在以下幾個方面: 1.降低人為錯誤:由于自動化測試是由代碼驅(qū)動的,因此可以避免人為錯誤,如遺漏、誤操作等。 2.節(jié)省人力資源:通過自動化消息發(fā)送,特別是在夜間或非工作時間進行測試時,自動化發(fā)送消息可以替代部分人力。 總的來說,微信UI自動化測試能夠大大提升效率和準確性,作為 Microsoft 支持的庫,F(xiàn)laUIAutomation 與 Windows 和其他 Microsoft 技術(shù)緊密集成,提供了更好的穩(wěn)定性和支持。我通過近幾周的研究,最終選擇了FlaUI.UIA3來開發(fā)。

使用FlaUI

FlaUI.UIA3 是一個用于自動化測試 Windows 應(yīng)用程序的庫,基于微軟的本地 UI 自動化庫。以下是 FlaUI.UIA3 的主要特性:

廣泛的適用性 :FlaUI.UIA3 支持多種 Windows 應(yīng)用程序,包括 Win32、WinForms、WPF 和 Windows 商店應(yīng)用。;基于微軟的本地 UI 自動化庫: FlaUI.UIA3 是基于微軟的本地 UI 自動化庫構(gòu)建的,因此它提供了一種圍繞這些庫的包裝;最新的版本: UIA3 是 UI 自動化庫的最新版本,專門適用于 WPF 和 Windows 商店應(yīng)用程序; 4.可擴展性:雖然 FlaUI.UIA3 提供了大量的自動化功能,但在遇到特殊需求時,它還提供了本機對象來滿足更復雜的需求;提供干凈的代碼庫:FlaUI.UIA3 從頭開始重寫,旨在提供一個干凈的代碼庫,以便于協(xié)作和進一步的開發(fā);易于使用:開發(fā)者可以在 FlaUI 和 UIA3 之間進行選擇,以適應(yīng)他們的測試需求;增加了 焦點寫作模式、預覽模式、簡潔寫作模式、左右區(qū)域同步滾輪設(shè)置 等功能,功能按鈕位于編輯區(qū)域與預覽區(qū)域中間。

先看截圖

系統(tǒng)邏輯

首先,其中包含了對Windows API函數(shù)的聲明和導入。Windows API是一組用于與Windows操作系統(tǒng)交互的函數(shù)和數(shù)據(jù)結(jié)構(gòu)。這些API函數(shù)在"user32.dll"等動態(tài)鏈接庫中定義。

下面是每個導入函數(shù)的簡單解釋:

SwitchToThisWindow : 這個函數(shù)用于將一個窗口帶到前臺。第一個參數(shù)hWnd是要帶到前臺的窗口的句柄,第二個參數(shù)fAltTab決定是否通過按Alt+Tab鍵來切換到這個窗口。 OpenClipboard : 這個函數(shù)用于打開剪貼板并獲取所有權(quán)。 CloseClipboard : 這個函數(shù)用于關(guān)閉剪貼板并釋放其所有權(quán)。 EmptyClipboard : 這個函數(shù)用于清空剪貼板的內(nèi)容。 IsClipboardFormatAvailabl : 這個函數(shù)用于檢查指定的剪貼板格式是否可用。 GetClipboardData : 這個函數(shù)用于檢索指定格式的剪貼板數(shù)據(jù)。 SetClipboardData : 這個函數(shù)用于在剪貼板上設(shè)置指定格式的數(shù)據(jù)。 這些函數(shù)通常用于與剪貼板進行交互,例如讀取和寫入數(shù)據(jù),以及處理窗口的焦點等。

[DllImport("user32.dll", CharSet = CharSet.Auto)]

public static extern bool SwitchToThisWindow(IntPtr hWnd, bool fAltTab);

[DllImport("User32")]

public static extern bool OpenClipboard(IntPtr hWndNewOwner);

[DllImport("User32")]

public static extern bool CloseClipboard();

[DllImport("User32")]

public static extern bool EmptyClipboard();

[DllImport("User32")]

public static extern bool IsClipboardFormatAvailable(int format);

[DllImport("User32")]

public static extern IntPtr GetClipboardData(int uFormat);

[DllImport("User32", CharSet = CharSet.Unicode)]

public static extern IntPtr SetClipboardData(int uFormat, IntPtr hMem);

使用 Application.Attach 方法將程序附加到微信進程。這里假設(shè) processes 是一個包含微信進程信息的列表,F(xiàn)irst() 方法獲取該列表中的第一個元素(即微信進程),Id 屬性獲取該進程的ID。

private static Process[] processes = Process.GetProcessesByName("WeChat");

public static Window WeChatWindow;

static FlaUIAutomation()

{

using (var app = Application.Attach(processes.First().Id))

{

using (var automation = new UIA3Automation())

{

WeChatWindow = app.GetMainWindow(automation);

}

}

}

public void method(string name,string xiaoxi)

{

//微信主界面窗口從左向右分3分窗口,可以使用inspect.exe 程序來看實際窗口,控件排列

string target = name;

string sendMsg = xiaoxi;

Process[] processes = Process.GetProcessesByName("WeChat");

if (processes.Count() != 1)

{

Console.WriteLine("微信未啟動或啟動多個微信");

}

else

{

//1.附加到微信進程

using (var app = Application.Attach(processes.First().Id))

{

using (var automation = new UIA3Automation())

{

//2.獲取主界面

var mainWindow = app.GetMainWindow(automation);

//窗口置頂顯示 避免其它窗口遮擋影響后續(xù)操作

IntPtr handle = processes.First().MainWindowHandle;

SwitchToThisWindow(handle, true); // 激活,顯示在最

Console.WriteLine("獲取主界面");

//3.切換到通訊錄

var childWind = mainWindow.FindChildAt(1).FindChildAt(0);

childWind.DrawHighlight(System.Drawing.Color.Red);

//導航窗口

var navWind = childWind.FindChildAt(0); //窗口第一部分

navWind.DrawHighlight(System.Drawing.Color.Red);

var addressBook = navWind.FindFirstDescendant(cf => cf.ByName("通訊錄"));

addressBook.DrawHighlight(System.Drawing.Color.Red);

Console.WriteLine("點擊通訊錄");

addressBook.Click();

//4.搜索

var secondChild = childWind.FindChildAt(1); //窗口第二部分

secondChild.DrawHighlight(System.Drawing.Color.Red);

var searchTextBox = secondChild.FindFirstDescendant(cf => cf.ByName("搜索")).AsTextBox();

searchTextBox.DrawHighlight(System.Drawing.Color.Red);

searchTextBox.Click();

Keyboard.Type(target);

Keyboard.Type(VirtualKeyShort.RETURN);

Console.WriteLine($"搜索目標對象:{target}");

//5.找到搜索到的聯(lián)系人,切換到對話框

Thread.Sleep(10);

var tempList = secondChild.FindChildAt(1).FindAllDescendants(cf => cf.ByControlType(ControlType.List));

tempList[1].DrawHighlight(System.Drawing.Color.Red);

var searchItem = tempList[1].FindAllDescendants(cf => cf.ByControlType(ControlType.ListItem)).FirstOrDefault(cf => cf.Name == target);

if (searchItem == null)

{

Console.WriteLine($"未找到聯(lián)系人:{target}");

Console.WriteLine("發(fā)送消息失敗");

}

else

{

searchItem.DrawHighlight(System.Drawing.Color.Red);

searchItem.Click();

Thread.Sleep(10);

//6.輸入文本

var lastChild = childWind.FindChildAt(2); //窗口第三部分

lastChild.DrawHighlight(System.Drawing.Color.Red);

var msgInput = lastChild.FindAllDescendants(cf => cf.ByControlType(ControlType.Edit)).First();

msgInput.DrawHighlight(System.Drawing.Color.Red);

msgInput?.Click();

SetText(sendMsg);

Keyboard.TypeSimultaneously(new[] { VirtualKeyShort.CONTROL, VirtualKeyShort.KEY_V });

var sendBtn = lastChild.FindFirstDescendant(cf => cf.ByName("發(fā)送(S)"));

sendBtn?.DrawHighlight(System.Drawing.Color.Red);

sendBtn?.Click();

Console.WriteLine("發(fā)送完成");

}

}

}

}

}

注意:群聊需要保存到通訊錄,才能被獲取。 簡單錄制了個屏幕:QQ群發(fā) 微信:微信群發(fā)

柚子快報激活碼778899分享:C#實現(xiàn)微信消息自動發(fā)送

http://yzkb.51969.com/

推薦文章

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19254523.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機訪問

文章目錄