隨筆 - 4, 文章 - 1, 評(píng)論 - 22, 引用 - 0
          數(shù)據(jù)加載中……

          獲取Java程序的窗口句柄

              我們知道C++的每個(gè)窗體都對(duì)應(yīng)著一個(gè)句柄HWND,通過(guò)這個(gè)句柄我們可以對(duì)這個(gè)窗口以及它的資源進(jìn)行各種操作,比如讓它前端顯示等。那么操作系統(tǒng)給Java編寫的窗體(Frame或者JFrame的對(duì)象或者子類對(duì)象)有沒有分配這個(gè)唯一的HWND呢?
              用spy++查看一下,F(xiàn)rame或者JFrame的對(duì)象或者子類對(duì)象確實(shí)都是存在這個(gè)窗口句柄的,那么我們?cè)趺磥?lái)得到它呢?
              下面就是通過(guò)JNI取得這個(gè)句柄的代碼。
           1HWND GetHwndOfJavaWindow(JNIEnv *env, jobject window)
           2{
           3    cout << "GetHwndOfJavaWindow" << endl;
           4
           5    HWND hwnd = NULL;
           6
           7    JAWT_DrawingSurface *ds;
           8    JAWT_DrawingSurfaceInfo *dsi;
           9    JAWT_Win32DrawingSurfaceInfo *win;
          10
          11    JAWT awt;
          12    awt.version = JAWT_VERSION_1_3;
          13    jboolean result = JAWT_GetAWT(env, &awt);
          14    if(result == JNI_TRUE)
          15    {
          16        ds = awt.GetDrawingSurface(env, window);
          17        jint lock = ds -> Lock(ds);
          18        if(lock != JAWT_LOCK_ERROR)
          19        {
          20            dsi = ds -> GetDrawingSurfaceInfo(ds);
          21            win = (JAWT_Win32DrawingSurfaceInfo *) dsi -> platformInfo;
          22            
          23            hwnd = win -> hwnd;
          24
          25            ds -> FreeDrawingSurfaceInfo(dsi);
          26            ds -> Unlock(ds);
          27            awt.FreeDrawingSurface(ds);
          28        }

          29    }

          30
          31    return hwnd;
          32}

          有了這個(gè)窗口句柄后,我們就可以讓Java窗體也具有很多本地化的功能了,比如閃爍標(biāo)題欄,禁止最大化最小化以及關(guān)閉按鈕等。

          posted on 2010-02-10 11:15 凱子 閱讀(5937) 評(píng)論(2)  編輯  收藏 所屬分類: JNI

          評(píng)論

          # re: 獲取Java程序的窗口句柄[未登錄]  回復(fù)  更多評(píng)論   

          那么如何獲得里面的控件呢?能給出一個(gè)解決方案嗎
          2010-03-30 14:13 | tony

          # re: 獲取Java程序的窗口句柄  回復(fù)  更多評(píng)論   

          標(biāo)記
          2015-03-06 16:01 | jycggyh

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 屏山县| 东城区| 塔城市| 定安县| 焦作市| 岫岩| 涡阳县| 新龙县| 南宁市| 绵阳市| 仲巴县| 云林县| 保亭| 子洲县| 彰化市| 达孜县| 扎鲁特旗| 外汇| 怀安县| 枞阳县| 井陉县| 永胜县| 浦城县| 藁城市| 湛江市| 万荣县| 随州市| 维西| 庆安县| 剑阁县| 温州市| 乌鲁木齐县| 连南| 达拉特旗| 绵阳市| 扶绥县| 松潘县| 亚东县| 开远市| 泸定县| 天全县|