atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • このページの操作履歴
    • このウィキのページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
ページ検索 メニュー
創造と開発ノート
  • 広告なしオファー
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
広告非表示(β版)
ページ一覧
創造と開発ノート
  • 広告なしオファー
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
創造と開発ノート
広告非表示 広告非表示(β)版 ページ検索 ページ検索 メニュー メニュー
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • このページの操作履歴
    • このウィキのページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • 創造と開発ノート
  • WindowControl

創造と開発ノート

WindowControl

最終更新:2006年06月15日 01:06

Bot(ページ名リンク)

- view
管理者のみ編集可

Win32専用Window制御クラス-WindowControl


JavaからWindows(Win32)のネイティブアプリのウィンドウを制御するための便利なクラス。

GPLで公開します。
SWTの裏ワザらしきものを使っているのでいつまで動くかは保証できません。
SWTをダウンロードしてから使用してください。

主な機能としては、ウィンドウハンドラの取得(クラス名、ウィンドウ名)、サイズ変更、最大化、最小化などなど。メソッド名から判断してください。
サンプルを末尾に載せておきます。Firefoxとメモ帳を制御する例です。

ウィンドウクラス名などは「窓ちぇき!」などを使用してください。


ダウンロード:
WindowControl.java,WindowControlTest.java
を下部の添付ファイルからダウンロードしてください。

WindowControl.java


/**
* Created on 2006/02/28
* Copyright(c) 2006 @auther akichika
* 
* Purpose:Window Control for WIN32 with SWT
*
* Function:Window Control
*
* History: 2006/02/28 ver.1.0
* 
* Lisence: GPL
*/
package jp.worg;
import java.awt.Rectangle;
import org.eclipse.swt.internal.win32.OS;
import org.eclipse.swt.internal.win32.RECT;
import org.eclipse.swt.internal.win32.TCHAR;
import org.eclipse.swt.internal.win32.WINDOWPLACEMENT;
public class WindowControl {
public enum NameType {
	CLASSNAME, WINDOWNAME
};// ウィンドウ名かウィンドウクラス名かを判別するフラグ
private NameType nameType;
private String name;
private int handler;
public WindowControl(String name, NameType nameType) {
	this.name = name;
	this.nameType = nameType;
	handler = getHandler();
}
public int getHandler() {
	int handler;
	switch (nameType) {
	case CLASSNAME:
		handler = OS.FindWindow(new TCHAR(0, name, true), null);// ウィンドウクラス名からウィンドウハンドラを作成
		break;
	case WINDOWNAME:
		handler = OS.FindWindow(null,
				new TCHAR(OS.CP_INSTALLED, name, true));// ウィンドウ名からウィンドウハンドラを作成
		break;
	default:
		handler = 0;
		break;
	}
	if (handler == 0) {			System.err.println("[WindowControl]Getting Window Handler Failed.");
	}
	/*
	 * else { System.out.println("[WindowControl]handler:" + handler + "
	 * Name:" + name + " NameType:" + nameType); }
	 */
	return handler;
}
public void printStatus() {
	if (isWindowHung()) {			System.err.println("[WindowControl]Window " + name + " " + handler
				+ " is hung!");
	}
	if (isWindowMinimized()) {			System.err.println("[WindowControl]Window " + name + " " + handler
				+ " is minimized!");
	}
	if (isWindowMaximized()) {			System.err.println("[WindowControl]Window " + name + " " + handler
				+ " is maximized!");
	}
	if (!isWindowEnabled()) {
          System.err.println("[WindowControl]Window " + name + " " + handler
				+ " is disabled!");
	}
	if (!isWindowVisible()) {		System.err.println("[WindowControl]Window " + name + " " + handler
				+ " is invisible!");
	}
}
public Rectangle getRectangle() {
	printStatus();
	RECT rect = new RECT();
	OS.GetWindowRect(handler, rect);// ネイティブのウィンドウサイズを取得
	return new Rectangle(rect.left, rect.top, rect.right - rect.left,
			rect.right - rect.left);
}
public Rectangle getWindowPlacement() {
	printStatus();
	WINDOWPLACEMENT wndpl = new WINDOWPLACEMENT();
	OS.GetWindowPlacement(handler, wndpl);// ネイティブのウィンドウサイズを取得
	return new Rectangle(wndpl.left, wndpl.top, wndpl.right - wndpl.left,
			wndpl.bottom - wndpl.top);
}
public void setWindowPlacement(Rectangle rect) {
	printStatus();
	if (isWindowMaximized())
		setWindowMaximized(false);
	if (isWindowMinimized())
		setWindowMinimized(false);
	WINDOWPLACEMENT wndpl = new WINDOWPLACEMENT();
	OS.GetWindowPlacement(handler, wndpl);// ネイティブのウィンドウサイズを取得
	wndpl.left = rect.x;
	wndpl.top = rect.y;
	wndpl.right = rect.x + rect.width;
	wndpl.bottom = rect.y + rect.height;
	OS.SetWindowPlacement(handler, wndpl);// ネイティブのウィンドウサイズに反映
}
public boolean isWindowMaximized() {
	return OS.IsZoomed(handler);
}
public boolean isWindowMinimized() {
	return OS.IsIconic(handler);
}
public boolean isWindowHung() {
	return OS.IsHungAppWindow(handler);
}
public boolean isWindowVisible() {
	return OS.IsWindowVisible(handler);
}
public boolean isWindowEnabled() {
	return OS.IsWindowEnabled(handler);
}
public void setWindowMaximized(boolean maximized) {
	int swFlags = maximized ? OS.SW_SHOWMAXIMIZED : OS.SW_RESTORE;
	if (!isWindowVisible())
		return;
	if (maximized == isWindowMaximized())
		return;
	setShowWindow(swFlags);
	setUpdateWindow();
}
public void setWindowMinimized(boolean minimized) {
	int swFlags = minimized ? OS.SW_SHOWMINNOACTIVE : OS.SW_RESTORE;
	if (!isWindowVisible())
		return;
	if (minimized == isWindowMinimized())
		return;
	setShowWindow(swFlags);
	setUpdateWindow();
}
public void setShowWindow(int flag) {
	OS.ShowWindow(handler, flag);
}
public void setFocus() {
	OS.SetFocus(handler);
}
public void setWindowToTop() {
	OS.BringWindowToTop(handler);
}
public void setForegroundWindow() {
	OS.SetForegroundWindow(handler);
}
public void setUpdateWindow() {
	OS.UpdateWindow(handler);
}
public void setActiveWindow() {
	OS.SetActiveWindow(handler);
}
public void setEnableWindow(boolean enable) {
	OS.EnableWindow(handler, enable);
}
public String getName() {
	return name;
}
public NameType getNameType() {
	return nameType;
}
}


WindowControlTest.java


/**
* Created on 2006/02/28
* Copyright(c) 2006 @auther akichika
* 
* Purpose:
*
* Function:
*
* History:
* 
* Lisence: GPL
*/
package jp.worg;
import java.awt.Rectangle;
public class WindowControlTest {
/**
 * @param args
 */
public static void main(String[] args) {
	// Function:
	String name = "MozillaUIWindowClass";// Class Name
	WindowControl wc = new WindowControl(name,WindowControl.NameType.CLASSNAME);
	wc.setWindowPlacement(new Rectangle(100, 100, 640, 480));// x,y,width,height;
	String name2 = "無題 - メモ帳";// Window Name
	WindowControl wc2 = new WindowControl(name2,WindowControl.NameType.WINDOWNAME);
	wc2.setWindowPlacement(new Rectangle(0, 0, 1024, 768));// x,y,width,height;
}
}
「WindowControl」をウィキ内検索
LINE
シェア
Tweet
添付ファイル
  • WindowControl.java
  • WindowControlTest.java
創造と開発ノート
記事メニュー
メニュー
  • トップページ
  • 今日のノート

▼ソフトウェア関係
▽Java
  • JavaTips
  • JavaLibrary
    • JavaCommAPI
    • WindowControl

▽Eclipse
▽QuartzComposer
▽Objective-C

▼ハードウェア
  • マイコン?
  • ロボット?
  • 電子楽器?

▼その他
  • 雑記?
  • 気になったもの?
  • 参考図書?
  • お役立ちサイト
  • リンク?

記事メニュー2

サイト内検索

検索 :

更新履歴

取得中です。
最近更新されたページ
  • 7086日前

    今日のノート/カテゴリ/ロボット
  • 7086日前

    今日のノート/2006年06月15日/i-unit mini
  • 7086日前

    QuartzComposer
  • 7086日前

    今日のノート/2006年06月15日
  • 7086日前

    今日のノート/カテゴリ/QuartzComposer
  • 7086日前

    今日のノート/2006年06月15日/MIAF-LA6日本語版公開
  • 7087日前

    トップページ
  • 7087日前

    Objective-C
  • 7087日前

    メニュー
  • 7087日前

    メニュー2
もっと見る
最近更新されたページ
  • 7086日前

    今日のノート/カテゴリ/ロボット
  • 7086日前

    今日のノート/2006年06月15日/i-unit mini
  • 7086日前

    QuartzComposer
  • 7086日前

    今日のノート/2006年06月15日
  • 7086日前

    今日のノート/カテゴリ/QuartzComposer
  • 7086日前

    今日のノート/2006年06月15日/MIAF-LA6日本語版公開
  • 7087日前

    トップページ
  • 7087日前

    Objective-C
  • 7087日前

    メニュー
  • 7087日前

    メニュー2
もっと見る
ウィキ募集バナー
急上昇Wikiランキング

急上昇中のWikiランキングです。今注目を集めている話題をチェックしてみよう!

  1. 遊戯王DSNTナイトメアトラバドール攻略Wiki@わかな
  2. SDガンダム Gジェネレーションオーバーワールド 攻略Wiki
  3. 20XX @ ウィキ
  4. 役割論理専用wiki 
  5. トリコ総合データベース
  6. モンスター烈伝オレカバトル@wiki
  7. ファイアーエムブレム用語辞典
  8. NIKKEぺでぃあ
  9. 機動戦士ガンダム EXTREME VS. MAXI BOOST ON wiki
  10. ホワイトハッカー研究所
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. MADTOWNGTAまとめwiki
  3. ゲームカタログ@Wiki ~名作からクソゲーまで~
  4. 初音ミク Wiki
  5. ストグラ まとめ @ウィキ
  6. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  7. 検索してはいけない言葉 @ ウィキ
  8. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
  9. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  10. モンスター烈伝オレカバトル2@wiki
もっと見る
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. MADTOWNGTAまとめwiki
  2. MadTown GTA (Beta) まとめウィキ
  3. フォートナイト攻略Wiki
  4. 首都圏駅メロwiki
  5. Last Z: Survival Shooter @ ウィキ
  6. まどドラ攻略wiki
  7. 駅のスピーカーwiki
  8. ちいぽけ攻略
  9. ソニックレーシング クロスワールド 攻略@ ウィキ
  10. 魔法少女ノ魔女裁判 攻略・考察Wiki
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 【移転】Miss AV 見れない Missav.wsが見れない?!MissAV新URLはどこ?閉鎖・終了してない?missav.ai元気玉って何? - ホワイトハッカー研究所
  2. ブラック・マジシャン・ガール - 遊戯王DSNTナイトメアトラバドール攻略Wiki@わかな
  3. 真崎杏子 - 遊戯王DSNTナイトメアトラバドール攻略Wiki@わかな
  4. ブラック・マジシャン・ガール - アニヲタWiki(仮)
  5. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  6. 参加者一覧 - MADTOWNGTAまとめwiki
  7. 参加者一覧 - ストグラ まとめ @ウィキ
  8. ミッション攻略 - 地球防衛軍6 @ ウィキ
  9. 鬼レンチャン(レベル順) - 鬼レンチャンWiki
  10. リリーバイス - NIKKEぺでぃあ
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.