[Top Page][Edit][Discussion][Edit History][All Pages][Recent Changes][->Japanese]

特定のアプリケーションのウィンドウを中央に

特定のアプリケーションのウィンドウを中央に


    ; 特定のアプリケーションのウィンドウを中央に
    ; thanks 
    ;       http://www.kumei.ne.jp/c_lang/sdk/sdk_16.htm
    ;       http://yokohama.cool.ne.jp/chokuto/urawaza/struct/RECT.html
    ; modify 2005/06/27
    ;               一部をβ10以降の関数形式に修正
    ;               (β9以前との互換用はコメントアウト=本当は#ifdefで切り替えた方が
    ;               いいと思いますが)
    ;               HSPバージョンは#define置換に変更
    ;               一部のコメント修正
    ;               HSPウィンドウハンドルを取得は直接システム変数取得も併記
    
    #uselib "user32.dll"
    #cfunc FindWindow       "FindWindowA"       sptr, sptr       ; β10以降用
    ; #func FindWindow       "FindWindowA"       sptr, sptr       ; β9以前互換
    #cfunc GetDesktopWindow "GetDesktopWindow"       ; β10以降用
    ; #func GetDesktopWindow "GetDesktopWindow"       ; β9以前互換
    #func GetWindowRect    "GetWindowRect"    int,  int
    #func SetWindowPos     "SetWindowPos"     int,  int, int, int, int, int, int
    
    ; #define _HSPVER         "ver.3.0b10"        ; HSPのバージョン(HSPのウィンドウハンドルをFindWindowで検索する際にコメントを外す)
    
            dim deskrc, 4
            dim rc,     4
            ; ↓ウィンドウハンドルを検索する場合
            ; β10以降用
            hw = FindWindow("onipad", 0)                                                    ; HSP スクリプトエディタのhwndを検索
    ;       hw = FindWindow("notepad", 0)                                                   ; メモ帳のhwndを検索
    ;       hw = FindWindow(0, "Hot Soup Processor " + _HSPVER)     ; HSP(hsp3.exe)のhwndを検索
    /*
            ; β9以前互換
            FindWindow "onipad", 0                                                  ; HSP スクリプトエディタのhwndを検索
    ;       FindWindow "notepad", 0                                                 ; メモ帳のhwndを検索
    ;       FindWindow 0, "Hot Soup Processor " + _HSPVER   ; HSP(hsp3.exe)のhwndを検索
            hw = stat
    */
            ; ↓現在のHSPウィンドウハンドルを指定する場合
    ;       hw = hwnd               ; この場合は http://quasiquote.org/hspwiki/HSP%a4%ce%a5%a6%a5%a3%a5%f3%a5%c9%a5%a6%a4%f2%c3%e6%b1%fb%a4%cb を使用した方が簡単
            ; β10以降用
            hDeskWnd = GetDesktopWindow()
    /*
            ; β9以前互換
            GetDesktopWindow
            hDeskWnd = stat
    */
            GetWindowRect hDeskWnd, varptr(deskrc)
            GetWindowRect hw, varptr(rc)
            x = (deskrc(2) - (rc(2) - rc(0))) / 2
            y = (deskrc(3) - (rc(3) - rc(1))) / 2
            SetWindowPos hw, 0, x, y, rc(2) - rc(0), rc(3) - rc(1), 1
            stop