最近自動測試案子遇到廠商沒有sample code可用, 只得用最原始的暗黑技術來做:
1. 執行廠商可用的執行程式
2. 利用C#呼叫API模擬類似"按鍵精靈"的作法去點擊廠商的程式
以上做法可以解決沒有sample code可以包進自己的測試程式裡.
下面介紹所利用到的windows API
先將廠商程式開啟
hyper = new Process();
hyper.StartInfo.FileName = "c:\\ISP Programmer_V1.5.10\\ISPProgrammer.exe";
hyper.Start();
if (hyper != null){
hyper.WaitForExit(2000);
HyperWindow = FindWindow(null, "ISP Programmer_V1.5.10");
if (HyperWindow != IntPtr.Zero) {
EnumChildWindows(HyperWindow, new CallBack(delegate (IntPtr hwnd, int lParam) {
listWnd.Add(hwnd);
GetWindowText(hwnd, title, title.Capacity);
GetClassName(hwnd, className, className.Capacity);
return true;
}), 0);
SendMessage(listWnd1[8], BM_CLICK, 0, 0); //發送點擊按鈕的消息
}
}
在利用FindWinsow找到開啟的程式
[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
在用EnumChildWindows去找程式上component的handle依據各個handle用Sendmessage去做觸發或讀取的功能
[DllImport("user32.dll", EntryPoint = "SendMessage")]
public static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
public const int BM_CLICK = 0xF5;
沒有留言:
張貼留言