ソシャゲのウィンドウがでかすぎる! しかも枠をドラッグでサイズ変更できない!
こんな時はなでしこ(v1)でサイズ変更をしてみましょう
※ 外部ツール使用にあたるため動作対象外だったりBAN対象だったりの可能性はあります
「窓ハンドルサイズ設定」を使う
なでしこv1で指定したウィンドウのサイズを変更する方法を書いてみます。
使う命令はこれ。窓ハンドルサイズ設定。
名前 窓ハンドルサイズ設定 ( まどはんどるさいずせってい )
引数 {=?}HANDLEにSIZEを
説明 HANDLEのウィンドウにSIZE「X1,Y1,X2,Y2」を設定する
引数のHANDLEは窓ハンドル検索などで取得します。
名前 窓ハンドル検索 ( まどはんどるけんさく )
引数 {=?}Aを|Aの
説明 タイトルAを持つウィンドウのハンドルを調べる。(ワイルドカードで指定可能)
窓ハンドルサイズ設定のかんたんなサンプル
//ごくごく簡単なサンプル
HANDLE=「*なでしこエディタ」を窓ハンドル検索
HANDLEに「100,0,900,300」を窓ハンドルサイズ設定
ウィンドウタイトル「なでしこエディタ」を持つウィンドウのハンドルを取得します。(*はワイルドカード)
窓ハンドルサイズ設定でサイズを指定して出来上がり。
成功すればなでしこエディタのサイズが変わるはずです。
HANDLEについて
引数のHANDLEは変数です。 数値が入っています。
今回のHANDLEは1902140でした。
この数値はwindows(OS)がその部品(ウィンドウなど)を作る時に割り当てた番号で、一般的に「ウィンドウハンドル」と呼ばれています。
窓ハンドルサイズ設定は、OSに対して「この番号(HANDLE)のウィンドウのサイズを変更してください」と頼む命令となります。
HANDLEを使ってできること
HANDLEを引数にした命令は以下のものがあります(他にもあります)
・窓ハンドルテキスト取得 - テキスト(ウィンドウの場合はタイトル)を取得する
・窓ハンドル位置移動 - ウィンドウの位置を移動する
・窓ハンドルキー送信 - キーボードのキーを押したことにする
・窓ハンドルキャプチャ - ウィンドウを画像としてイメージ部品に描画する
・窓ハンドルサイズ設定 - ウィンドウのサイズ「X1,Y1,X2,Y2」を設定する
・窓ハンドルサイズ取得 - ウィンドウのサイズ「X1,Y1,X2,Y2」を得る
・窓ハンドル内サイズ取得 - ウィンドウのクライアントサイズ「X1,Y1,X2,Y2」を得る
ハンドルの取得方法いろいろ
ウィンドウタイトルがわかっている場合は「窓ハンドル検索
」、
ウィンドウタイトルがわからない場合は「窓ハンドル座標検索
」や「窓アクティブハンドル取得
」でハンドルを取得します。
名前 窓ハンドル座標検索 (まどはんどるざひょうけんさく)
引数 {=?}X,Yの
説明 X,Yのウィンドウを得る
ヘルプにウィンドウを得るって書いてあるけどハンドルが返るはず
名前 窓アクティブハンドル取得 ( まどあくてぃぶはんどるしゅとく )
引数
説明 現在アクティブなウィンドウのハンドルを取得して返す。
「窓ハンドル検索」の例
//ウィンドウタイトルからHANDLEを取得する例
HANDLE=「*なでしこエディタ」を窓ハンドル検索
もしHANDLEが0ならば
「見つからなかった」と表示
違えば
HANDLEの窓ハンドルテキスト取得
それを表示
ハンドルが0だった場合、「見つからなかった」ということですので、エラー処理を入れておきます。
同じタイトルを持つウィンドウが複数あると誤爆する可能性があります。
タイトルだけでウィンドウを特定できるならこれで十分でしょう。
「窓ハンドル座標検索」の例
「窓ハンドル座標検索
」ではマウスカーソルの座標にあるウィンドウのハンドルを取得するのに便利です。
「母艦のキー押した時
」や「ホットキー登録
」のイベントに組み込むとよさそう。
母艦のキー押した時は~イベント
●イベント
x=机上マウスX
y=机上マウスY
HANDLE=x,yの窓ハンドル座標検索
HANDLEの窓ハンドルテキスト取得
それを表示
窓ハンドルサイズ設定の注意点
ハンドルが取れたらサイズを指定するだけです。
ただし「窓ハンドルサイズ設定」命令の引数SIZEは「X1,Y1,X2,Y2」です。
X,Y,W,Hではないことに注意します。
割合のサイズにする
「ゲームのウィンドウでかいなー80%くらいにならないかなー」という時はまず元のサイズを取得するわけですが・・・
この時、「窓ハンドルサイズ取得」で得たサイズに0.8を掛けると縦横比が歪みます。
この場合「窓ハンドル内サイズ取得」で得たサイズを使いましょう。
差はタイトルバーや左右と下のふちの部分です。
//CAPS LOCKを押すとアクティブな窓のサイズが80%になるプログラム
「CAPS LOCK」に「変更適用」をホットキー登録
●変更適用
HANDLE=窓アクティブハンドル取得
HANDLEの窓ハンドル内サイズ取得 //「0,0,640,400」などが返る
それを「,」で区切る
それを「,,内W,内H」へ変数分配 //x,yは要らない
HANDLEの窓ハンドルサイズ取得 //外枠を含むサイズ
元SIZEはそれ
それを「,」で区切る
それを「外X1,外Y1,外X2,外Y2」へ変数分配
//クライアント部分を0.8倍にする
新内W = 整数部分(内W * 0.8)
新内H = 整数部分(内H * 0.8)
新外X2 = 外X2 -内W +新内W
新外Y2 = 外Y2 -内H +新内H
新SIZE=「{外X1},{外Y1},{新外X2},{新外Y2}」
HANDLEに新SIZEを窓ハンドルサイズ設定