java window - 隠れたwindowを表にだす方法として使えるか? その2
2007/08/01
java
swt
windows
同僚からのいただきものの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だったら入っているかもしれないですが、よくわからないです。
: