關於窗口句柄的用法,網上可以搜到很多相關的文章,本文以windows API接口函數為例,簡單介紹一下基本使用,主要包括找到此窗體,在找到的窗體寫入數據,對窗體進行關閉,最大化,最小化的操作;
1.利用窗口句柄找到窗體:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include "apdefap.h"
HWND wnd;//定義一個窗口句柄變量,用以存儲找到的窗口句柄
//網上文章解釋; 函數FINDWindow: HWND WINAPI FindWindow(LPCSTR lpClassName,LPCSTR lpWindowName);
//第一個參數填窗口的類名,第二個填窗口的標題名,其實是不需要同時填兩個參數的,也就是說,你只要知道窗口的類名或窗口的標題就可以了,沒有的那個就用NULL代替。
wnd=FindWindow(NULL,"1.txt - 記事本");//獲得窗口名為"無標題.txt - 記事本"的窗口句柄,名稱可通過任務管理器中的應用程序名找到
printf("the wnd value is %d",wnd);
//wnd為0代表未發現此句柄,值>0說明有此句柄
if (wnd==0 )
MessageBox(wnd,"此窗體未打開!","提示",MB_OK);
else
MessageBox(wnd,"已找到此窗體!","提示",MB_OK);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2.發送消息或者改變窗體狀態
SendMessage(wnd,WM_CLOSE,0,0);//調用SendMessage函數,發送一個WM_CLOSE(關閉)消息給wnd窗口句柄。
函數定義:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);
第一個參數是窗口句柄,第二參數個是消息類型,下面的消息表列舉了所有消息,第三,四個參數是消息附帶信息,解釋依賴於消息類型,比如一個字符消息(WM_CHAR),那么第三個參數就儲存有一個字符的ASCII碼。
ShowWindow(wnd,SW_HIDE);
函數定義BOOL ShowWinow(HWND hWnd,int nCmdShow);
SW_HIDE:隱藏窗口並激活其他窗口。第一個參數hWnd指明了窗口句柄,第二個參數指明了窗口的狀態,現在給出第二個參數常用取值范圍:
SW_MAXIMIZE:最大化指定的窗口。
SW_MINIMIZE:最小化指定的窗口並且激活在Z序中的下一個頂層窗口。
SW_RESTORE:激活並顯示窗口。如果窗口最小化或最大化,則系統將窗口恢復到原來的尺寸和位置。在恢復最小化窗口時,應用程序應該指定;
窗口句柄的操作方式和操作類型非常多,本文只是簡易描述了最簡單的找到句柄方法及簡單改變窗口的形式供大家了解!