C VS2005用API學習小例子

2022-03-29 10:22:27 字數 3012 閱讀 3514

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把整個實驗跑通了,覺得還不錯。想著好像...