1.判斷當前系統活動視窗是否是指定的視窗
//找到系統當前活動的視窗的控制代碼
[dllimport("user32.dll")]
private static extern intptr getforegroundwindow();
//根據工作列應用程式顯示的名稱找相應視窗的控制代碼
[dllimport("user32.dll", entrypoint = "findwindow")]
private static extern intptr findwindow(string lpclassname, string lpwindowname);
//獲取指定控制代碼視窗的標題
[dllimport("user32.dll")]
static extern int getwindowtext(intptr handle, stringbuilder text, int maxlen);
intptr findptr = findwindow(null, "aion client");//aion client為遊戲在工作列的名稱
stringbuilder text1 = new stringbuilder(50);//按要求找到的程序的標題
stringbuilder text2 = new stringbuilder(50);//當前活動程序的標題
getwindowtext(getforegroundwindow(), text1, 50);
getwindowtext(findptr, text2, 50);
if(text1.equals(text2))
messagebox.show("當前活動視窗是指定視窗");
else
messagebox.show("當前活動視窗不是指定視窗");
2.設定指定視窗選中(啟用)
private const int sw_restore = 9;
[dllimport("user32.dll ")]
private static extern bool setforegroundwindow(intptr hwnd);
[dllimport("user32.dll")]
private static extern bool showwindow(intptr hwnd, int ncmdshow);
intptr findptr = findwindow(null, "aion client");//aion client為遊戲在工作列的名稱
if (findptr.toint32() != 0)
"); //模擬鍵盤輸入tab
sendkeys.send(gamepwd); //模擬鍵盤輸入遊戲密碼
sendkeys.send(""); //模擬鍵盤輸入enter
4.列舉指定視窗中的所有控制項,有的遊戲不能列舉,像魔獸等等,因為介面是畫出來的,沒有控制代碼概念
public delegate bool enumchildwindowsproc(intptr hwnd, uint lparam);
[dllimport("user32.dll", entrypoint = "enumchildwindows")]
public static extern bool enumchildwindows(intptr hwndparent, enumchildwindowsproc lpenumfunc, int lparam);
[dllimport("user32.dll", entrypoint = "getclassname")]
public static extern int getclassname(intptr hwnd, stringbuilder lpclassname, int nmaxcount);
private void btnok_click(object sender, eventargs e)
catch (exception ex)
lblmsg.text = count.tostring();//顯示指定視窗上有多少子控制項
public static int count;
public static bool eumwinchipro(intptr hwnd,uint lparam)
5. 獲取指定視窗控制代碼相對螢幕中的位置
[dllimport("user32.dll", entrypoint = "findwindow")]
private static extern intptr findwindow(string lpclassname, string lpwindowname);
[dllimport("user32.dll")]
private static extern bool clienttoscreen(intptr hwnd, ref point lppoint);
intptr findptr = findwindow(null, "qq遊戲");
point p = new point (0);
clienttoscreen(findptr, ref p);
messagebox.show(p.x+","+p.y);
6.判斷指定視窗是否是最大化
[dllimport("user32.dll", entrypoint = "findwindow")]
private static extern intptr findwindow(string lpclassname, string lpwindowname);
[dllimport("user32.dll")]
private static extern bool iszoomed(intptr hwnd);
intptr findptr = findwindow(null, "qq遊戲");
if (iszoomed(findptr))
{messagebox.show("最大化");
else
messagebox.show("最小化");
C VS2005用API學習小例子
1.判斷當前系統活動視窗是否是指定的視窗 找到系統當前活動的視窗的控制代碼 dllimport user32.dll private static extern intptr getforegroundwindow 根據工作列應用程式顯示的名稱找相應視窗的控制代碼 dllimport user32....
CVS 我們用的有點晚
cvs,以前聽說過,但是就是沒有去嘗試過用到專案,這次是被逼的無奈了,實在萬不得已了,不然的話,每次我們每個人做的 都要看著慢慢的貼上,然後還要核對是否錯誤。從昨天晚上到現在,終於把我們的版本給統一了,這樣,組員需要 直接check out就行了。然後想查詢伺服器有什麼改變,直接update就行了。...
用API閘道器把API管起來
最開始只是想找個api閘道器防止api被惡意請求,找了一圈發現基於nginx的openresty lua語言 擴充套件模組orange挺好 也找了kong,但是感覺複雜了點沒用 還偷懶用vagrant結合docker來快速搭建環境,基於別人的dockerfile把整個實驗跑通了,覺得還不錯。想著好像...