導航:首頁 > 編程語言 > java獲取窗口句柄

java獲取窗口句柄

發布時間:2022-10-09 04:25:51

1. 如何獲取控制台窗口句柄

1.調用 GetConsoleTitle() 來保存當前的控制台窗口標題。
2.調用 SetConsoleTitle() 來將控制台標題更改為一個唯一的標題。
3.調用 Sleep(40),以確保已更新窗口標題。
4.調用 FindWindow(NULL, uniquetitle),以獲取 HWND,此調用將返回 HWND, 如果操作失敗,將返回 NULL。
5.從步驟 1 中,若要恢復原始窗口標題檢索調用 SetConsoleTitle() 的值。
應該測試結果的 HWND。例如可以測試是否返回的 HWND 對應於當前進程在 HWND 上調用 GetWindowText() 並將結果與 GetConsoleTitle() 進行比較。
示例代碼
下面的函數中檢索當前控制台應用程序窗口句柄 (HWND)。如果此函數成功,則返回值是控制台窗口的句柄。如果此函數失敗,則返回值為 NULL。省略一些錯誤檢查,為簡潔起見。
HWND GetConsoleHwnd(void)
{
#define MY_BUFSIZE 1024 // Buffer size for console window titles.
HWND hwndFound; // This is what is returned to the caller.
char pszNewWindowTitle[MY_BUFSIZE]; // Contains fabricated
// WindowTitle.
char pszOldWindowTitle[MY_BUFSIZE]; // Contains original
// WindowTitle.

// Fetch current window title.

GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE);

// Format a "unique" NewWindowTitle.

wsprintf(pszNewWindowTitle,"%d/%d",
GetTickCount(),
GetCurrentProcessId());

// Change current window title.

SetConsoleTitle(pszNewWindowTitle);

// Ensure window title has been updated.

Sleep(40);

// Look for NewWindowTitle.

hwndFound=FindWindow(NULL, pszNewWindowTitle);

// Restore original window title.

SetConsoleTitle(pszOldWindowTitle);

return(hwndFound);
}

2. java能獲得窗口句柄嗎

JFrame jf = new JFrame("窗口句柄");
這個 jf 對象就是 你所說的窗口句柄,因為java把指針屏蔽了,所以沒有什麼值地址的東西,如果你 要像C裡面哪裡傳地址的話
java就這樣
JFrame jf1 = new JFrame("窗口句柄");
JFrame jf2 = jf1;
這個jf2 就是 jf1的引用,你改變jf2就改變了jf1
同樣的 函數裡面返回時,只要你不再new一個,
比如
JFrame jf1 = new JFrame("窗口句柄");
public JFrame getJFrameHander(){
return jf1;
}

你在另外的代碼里調用這個函數
比如
{
JFrame jf2 = getJFrameHander();
}
這個jf2就擁有了 jf1的引用,應該就是你所說的句柄
不知道我說的是不是你想知道的那樣

3. java通過pid獲取句柄

樓主,是想得到窗口的句柄嗎,可以使用JNA

參考 WIN32 API

typedef struct
{
HWND hWnd;
DWORD dwPid;
}WNDINFO;

BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)
{
WNDINFO* pInfo = (WNDINFO*)lParam;
DWORD dwProcessId = 0;
GetWindowThreadProcessId(hWnd, &dwProcessId);

if(dwProcessId == pInfo->dwPid)
{
pInfo->hWnd = hWnd;
return FALSE;
}
return TRUE;
}

HWND GetHwndByProcessId(DWORD dwProcessId)
{
WNDINFO info = {0};
info.hWnd = NULL;
info.dwPid = dwProcessId;
EnumWindows(EnumWindowsProc, (LPARAM)&info);
return info.hWnd;
}

4. 請問在java中怎麼使用jna 獲取說有的窗口句柄

import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.WinDef.HWND;
public class Demo1 {

public static void main(String[] args) {
name();
}
//窗體句柄的截獲
public static void name() {
// HWND hwnd = User32.INSTANCE.FindWindow(null, "列印");
String zh="列印";
HWND hwndDialog = User32.INSTANCE.FindWindow(null,zh);
if(hwndDialog==null) {
System.err.println("沒有找到窗體");
}else {
System.err.println("找到窗體"+hwndDialog);
//HWND root, String className, long timeout, TimeUnit unit,String caption
// List<HWND> hwndButton= Win32Util.findHandleByClassNameJKSD(hwndDialog,"Button", 10, TimeUnit.SECONDS,"列印");
// for (HWND hwnd : hwndButton) {
// System.err.println(hwnd);
// }

5. java 調用window API 獲取窗口句柄 並發消息 有人會嗎 謝謝

使用JNI調用WIN32 API ,先得到窗口句柄,再得到窗口的RECT 先WindowFromPoint(point); 再GetWindowRect(hwnd, &rect); 返回的rect,就是窗口的left/top/width/height 這個不麻煩、也不復雜,很簡單的JNI。

6. Java如何獲取窗口的句柄,得到句柄後如何操作這個句柄的窗口(比如透明窗口、設置窗口大小等)

使用 JNA, 或JNI技術 + WIN32 API,可以做到,過程有些復雜

~

7. JAVAFX怎麼獲取窗口句柄

1 內部匿名類和Lambda表達式
在之前的例子上對
button.setOnAction(this);

進行更改

button.setOnAction(new EventHandler<ActionEvent>(){
@Override
public void handle(ActionEvent event){
System.out.println("I am an annonymous inner class");
}
});

此時點擊按鈕調用的時間就是我們後來修改的,不用去檢驗每個按鈕的名字,直接在生成對象之後對象的方法上調用內部類,使得事件發生。"Click me"。
但是後來會出現一個問題。按照上一次的想法我們有很多個按鈕的時候會寫出if條件結構,然後還要去對應代碼中的對象,但是都使用內部匿名類也不方便。
甲骨文公司在Java 8中開始加入了Lambda表達式,此時將這個語句改成如下:
button.setOnAction(e-> System.out.println("heyyyyy, I am Lambda"));

此時控制台對我們點擊了按鈕進行回應:heyyyyy, I am Lambda,Java自動幫我們處理這個事件。同時也可以改成
button.setOnAction(e->{
System.out.println("heyyyyy, I am Lambda1");

8. 請教JAVA中用JNA獲得窗口句柄後,如何捕獲該窗口是否彈出了窗口(類似MessageBox)

樓主,是想得到窗口的句柄嗎,可以使用JNA

參考 WIN32 API

typedef struct
{
HWND hWnd;
DWORD dwPid;
}WNDINFO;

BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)
{
WNDINFO* pInfo = (WNDINFO*)lParam;
DWORD dwProcessId = 0;
GetWindowThreadProcessId(hWnd, &dwProcessId);

if(dwProcessId == pInfo->dwPid)
{
pInfo->hWnd = hWnd;
return FALSE;
}
return TRUE;
}

HWND GetHwndByProcessId(DWORD dwProcessId)
{
WNDINFO info = {0};
info.hWnd = NULL;
info.dwPid = dwProcessId;
EnumWindows(EnumWindowsProc, (LPARAM)&info);
return info.hWnd;
}

閱讀全文

與java獲取窗口句柄相關的資料

熱點內容
安卓手機如何錄制視頻長時間 瀏覽:283
安全問題app哪個好 瀏覽:445
壓縮水會變冰嗎 瀏覽:526
小說配音app哪個靠譜 瀏覽:820
編譯iso 瀏覽:944
照片生成pdf格式 瀏覽:194
病歷轉pdf 瀏覽:835
雲伺服器配硬體 瀏覽:978
伺服器10k什麼意思 瀏覽:21
pdfeditor漢化 瀏覽:884
新科學pdf 瀏覽:746
現在還有c語言編譯嗎 瀏覽:675
哪裡買到單片機 瀏覽:480
linux文件打開數量 瀏覽:510
編譯原理中什麼是l屬性文法 瀏覽:372
硬碟加密時出現的問題 瀏覽:61
如何退域命令 瀏覽:108
看書的app哪裡看 瀏覽:291
伺服器怎麼調大 瀏覽:3
android天氣apijson 瀏覽:984