轉 C 中傳送訊息給指定的視窗,以及接收訊息

2021-09-22 06:15:39 字數 3724 閱讀 7204

原文c#中傳送訊息給指定的視窗,以及接收訊息

12

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

publicclassnote

longresult = sendmessage(window_handler, custom_message,newintptr(14), intptr.zero).toint64();

}

}

在協同標繪視窗裡攔截訊息的函式:

12

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

protectedoverridevoidwndproc(refsystem.windows.forms.message msg)

}

break;

default:

base.wndproc(refmsg);//呼叫基類函式處理非自定義訊息。

break;

}

}

privatevoidbutton1_click(objectsender, eventargs e)

findwindow()函式的用法。要在c#裡使用該api,寫出findwindow()函式的宣告: 

[dllimport("coredll.dll", entrypoint = "findwindow")]

private extern static intptr findwindow(string lpclassname, string lpwindowname);

這個函式有兩個引數,第乙個是要找的視窗的類,第二個是要找的視窗的標題,是窗體的text名字,不是name。在搜尋的時候不一定兩者都知道,但至少要知道其中的乙個。有的視窗的標題是比較容易得到的,如"計算器",所以搜尋時應使用標題進行搜尋。但有的軟體的標題不是固定的,如"記事本",如果開啟的檔案不同,視窗標題也不同,這時使用視窗類搜尋就比較方便。如果找到了滿足條件的視窗,這個函式返回該視窗的控制代碼,否則返回0。 看例子

1

2

3

4

5

6

7

8

9

intptr parenthwnd =newintptr(0);

parenthwnd = findwindow(null,"word mobile");

//判斷這個窗體是否有效

if(parenthwnd != intptr.zero)

else

messagebox.show("沒有找到視窗");

從上面的討論中可以看出,如果要搜尋的外部程式的視窗標題比較容易得到,問題是比較簡單的。可如果視窗的標題不固定或者根本就沒有標題,怎麼得到視窗的類呢?如果你安裝了visual c++,你可以使用其中的spy,在spy++中有乙個findwindow工具,它允許你使用滑鼠選擇視窗,然後spy++會顯示這個視窗的類。 

在win32 api中還有乙個findwindowex,它非常適合尋找子視窗。

沒有整理與歸納的知識,一文不值!高度概括與梳理的知識,才是自己真正的知識與技能。 永遠不要讓自己的自由、好奇、充滿創造力的想法被現實的框架所束縛,讓創造力自由成長吧! 多花時間,關心他(她)人,正如別人所關心你的。理想的騰飛與實現,沒有別人的支援與幫助,是萬萬不能的。

c 中傳送excel到指定的郵箱

前兩天剛接觸到乙個傳送excel到客戶郵箱的任務 這是我寫的第一篇部落格寫的不合理的地方請多多指教 首先新增命名空間using system.net.mail mailmessage mail new mailmessage mail.from new mailaddress 設定電子郵件的傳送人位...

c 不同的程式間傳送訊息給對方按鈕

1 新建乙個對話方塊工程,在對話方塊上面放置乙個button,設定id為test idc button1,雙擊新增訊息處理 void ctestdlg onbnclickedbutton1 2 再新建乙個對話方塊工程,在對話方塊上面放置幾個按鈕,一下通過幾種方式發訊息給上乙個對話方塊工程裡的butt...

C 傳送訊息格式為JSON的http請求

json是類似於xml的一種用於資訊互動的輕量級資訊定義格式,可擴充套件性也很好。如何用c 寫的 來傳送http請求,訊息格式採用json呢?下面我一步一步介紹。所有步驟都經實際驗證,測試平台為linux系統。1.傳送http請求需要安裝curl庫。這個庫一般linux系統是自帶的。自己可以在系統目...