ひとりゴト

2007年07月16日
XML
カテゴリ: プログラミング
低解像度(800*640)には非対応のソフトにたまーに遭遇する。
小さいPC大好き人間にとっては大問題。
動くけれども画面の外にウィンドウがはみ出てしまう場合があって、
OKボタンなんかが画面の下にあってマウスでは押せない状態になるわけだ。
ALT+SPACEでウィンドウ移動のできないソフトがあっても、
そのソフトの使い方を知っていればキーボード操作で何とかなるんだけれど。。。

UWSCで何とかできないかと書いてみた。
マウスが画面端に行った時に、アクティブウィンドウがはみ出ていれば移動する処理。


id = getid(GET_THISUWSC_WIN)
st = status(id, st_title); sc = status(id, st_class)
id = getid(st, sc)
ifb id > 0 then
    ctrlwin(id,close)
    exit
endif
//多重起動防止*/

while true;sleep(1)
    id = getid(get_active_win)
    if id < 1 then continue//不要かもしれないけど何となく
    if status(id, st_icon) then continue//アイコンなら
    if !status(id, st_visible) then continue//不可視なら
    //ウィンドウのXY座標、幅と高さ、マウス座標とかを代入。
    w = status(id, st_width); h = status(id, st_height)

    //解像度に収まるウィンドウならば
//    if g_screen_w > w and g_screen_h > h then continue
//ここはコメントアウトしておいて、とりあえず動作確認。

    x = status(id, st_x); y = status(id, st_y)
    mX = g_mouse_x; mY = g_mouse_y

    ifb mX = 0 then//左にマウスがあれば
        if x < 0 then x = 0
        acw(id, x, y)//座標変更
    endif

    ifb mX + 5 > g_screen_w then//右に
        if x + w + 1 > g_screen_w then x = g_screen_w - w
        acw(id, x, y)
    endif

    ifb mY = 0 then//上
        if y < 0 then y = 0
        acw(id, x, y)
    endif

    ifb mY + 5 > g_screen_h Then//下
        if y + h + 1 > g_screen_h then y = g_screen_h - h
        acw(id, x, y)
    endif

wend


----追記----

対処方法として思いつくのは、解像度内にウィンドウサイズが収まれば
処理対象外とする条件を途中に入れる。。。メンドクセ('A`)



常駐させてるスクリプトでは、特定タイトルの時だけ実行させるようにしとこ。





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2007年07月29日 01時07分34秒
コメント(0) | コメントを書く
[プログラミング] カテゴリの最新記事


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Design a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: