java window - 隠れたwindowを表にだす方法として使えるか? その2 2007/08/01

同僚からのいただきもののwindowsのコードです。


SetWindowToTop()
{
HWND hWindow;

hWindow = FindWindow(NULL, "Window Title");
if(hWindow == NULL)
{
// error can not find window
}

WINDOWPLACEMENT wp;

// WINDOWPLACEMENT 構造体をゼロクリア
memset(&wp, 0, sizeof(wp));

// GetWindowPlacement 関数を呼ぶための前準備
// 呼び出すときは構造体サイズをあらかじめ設定する必要がある
wp.length = sizeof(wp);

// 対象ウインドウの現在の表示サイズ他、WINDOWPLACEMENT 構造体で取得
// できるだけの情報を取得
GetWindowPlacement(hWindow, &wp);

// 事前に、前面表示指示を出しておく
SetWindowPos(hWindow, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);

// 表示用コマンドをチョイス
// ・通常表示
// ・アクティブ化
// ・最小化されていた場合には元に戻すコマンドも送信
wp.showCmd = SW_SHOWNORMAL;

// WindowPlacement で設定したウインドウ状態を適用
SetWindowPlacement(hWindow, &wp);
}


これをswtを使用してjavaにもっていきます。


public static void SetWindowToTop(String windowTitle) {
// HWND hWindow;

final int hWindow = OS.FindWindow(null, new TCHAR(OS.CP_INSTALLED,
windowTitle, true));

if (hWindow == 0) {
System.out.println("failed find window:[" + hWindow + "]");
return;
}

WINDOWPLACEMENT wp = new WINDOWPLACEMENT();

// GetWindowPlacement 関数を呼ぶための前準備
// 呼び出すときは構造体サイズをあらかじめ設定する必要がある
// wp.length = sizeof(wp);

wp.length = OS.WINDOWPLACEMENT_sizeof();

// 対象ウインドウの現在の表示サイズ他、WINDOWPLACEMENT 構造体で取得
// できるだけの情報を取得
OS.GetWindowPlacement(hWindow, wp);

// 事前に、前面表示指示を出しておく
// SetWindowPos(hWindow, HWND_TOPMOST, 0, 0, 0, 0, OS.SWP_NOACTIVATE |
// OS.SWP_NOMOVE | OS.SWP_NOSIZE | OS.SWP_SHOWWINDOW);

OS.SetWindowPos(hWindow, OS.HWND_TOPMOST, 0, 0, 0, 0, OS.SWP_NOACTIVATE
| OS.SWP_NOMOVE | OS.SWP_NOSIZE);
// 表示用コマンドをチョイス
// ・通常表示
// ・アクティブ化
// ・最小化されていた場合には元に戻すコマンドも送信
// wp.showCmd = OS.SW_SHOWNORMAL;

// WindowPlacement で設定したウインドウ状態を適用
OS.SetWindowPlacement(hWindow, wp);
}


一応動きました。現時点で
OS.SWP_SHOWWINDOW
OS.SW_SHOWNORMAL
というのがなかったです。

最新のswtだったら入っているかもしれないですが、よくわからないです。

: