<i id="nph9l"><b id="nph9l"><del id="nph9l"></del></b></i>

            專注Java教育13年 全國咨詢/投訴熱線:400-8080-105
            動力節點LOGO圖
            始于2009,一家只教授Java的培訓機構
            首頁 hot資訊 Java獲取當前窗口句柄的方法

            Java獲取當前窗口句柄的方法

            更新時間:2022-09-08 10:57:31 來源:動力節點 瀏覽413次

            Java獲取當前窗口句柄的方法有哪些?動力節點小編來告訴大家。

            1.使用FindWindow函數獲取窗口句柄

            示例:使用FindWindow函數獲取窗口句柄,然后獲得窗口大小和標題,并且移動窗口到指定位置。

            #include
            #include
            #include
            #include
            int main(int argc, char* argv[])
            {
            //根據窗口名獲取QQ游戲登錄窗口句柄
            HWND hq=FindWindow(NULL,"QQ2012");
            //得到QQ窗口大小
            RECT rect;
            GetWindowRect(hq,&rect);
            int w=rect.right-rect.left,h=rect.bottom-rect.top;
            cout<
            //移動QQ窗口位置
            MoveWindow(hq,100,100,w,h,false);
            //得到桌面窗口
            HWND hd=GetDesktopWindow();
            GetWindowRect(hd,&rect);
            w=rect.right-rect.left;
            h=rect.bottom-rect.top;
            cout<
            return 0;
            }

            2.使用EnumWindows和EnumChildWindows函數以及相對的回調函數EnumWindowsProc和EnumChildWindowsProc獲取所有頂層窗口以及它們的子窗口(有些窗口做了特殊處理,比如QQ是不能通過這個方法獲得的)

            示例:

            #include "stdafx.h"
            #include
            #include
            #include
            #include
            #include
            //EnumChildWindows回調函數,hwnd為指定的父窗口
            BOOL CALLBACK EnumChildWindowsProc(HWND hWnd,LPARAM lParam)
            {
            char WindowTitle[100]={0};
            ::GetWindowText(hWnd,WindowTitle,100);
            printf("%s\n",WindowTitle);
            return true;
            }
            //EnumWindows回調函數,hwnd為發現的頂層窗口
            BOOL CALLBACK EnumWindowsProc(HWND hWnd,LPARAM lParam)
            {
            if (GetParent(hWnd)==NULL && IsWindowVisible(hWnd) ) //判斷是否頂層窗口并且可見
            {
            char WindowTitle[100]={0};
            ::GetWindowText(hWnd,WindowTitle,100);
            printf("%s\n",WindowTitle);
            EnumChildWindows(hWnd,EnumChildWindowsProc,NULL); //獲取父窗口的所有子窗口
            }
            return true;
            }
            int main(int argc, _TCHAR* argv[])
            {
            //獲取屏幕上所有的頂層窗口,每發現一個窗口就調用回調函數一次
            EnumWindows(EnumWindowsProc ,NULL );
            return 0;
            }

            3.使用GetDesktopWindow和GetNextWindow函數得到所有的子窗口

            示例:

            #include "stdafx.h"
            #include
            #include
            #include
            #include
            #include
            int main(int argc, _TCHAR* argv[])
            {
            //得到桌面窗口
            HWND hd=GetDesktopWindow();
            //得到屏幕上第一個子窗口
            hd=GetWindow(hd,GW_CHILD);
            char s[200]={0};
            //循環得到所有的子窗口
            while(hd!=NULL)
            {
            memset(s,0,200);
            GetWindowText(hd,s,200);
            /*if (strstr(s,"QQ2012"))
            {
            cout<
            SetWindowText(hd,"My Windows");
            }*/
            cout<
            hd=GetNextWindow(hd,GW_HWNDNEXT);
            }
            return 0;
            }

             

            提交申請后,顧問老師會電話與您溝通安排學習

            免費課程推薦 >>
            技術文檔推薦 >>
            返回頂部
            欧美系列A片

                <i id="nph9l"><b id="nph9l"><del id="nph9l"></del></b></i>