外部アプリケーションの位置・サイズを変更 <TOP>
FindWindow
クラス名またはキャプションを与えてウィンドウのハンドルを取得
MoveWindow
指定されたウィンドウの位置およびサイズを変更
ShellExecute 拡張子に関連付けられたプログラムを実行
SendMessage ウィンドウにメッセージを送信
メモ帳を起動し、その位置およびサイズを指定します。
'================================================================ '= 外部アプリケーションの位置・サイズを変更 '= (MoveWindow.bas) '================================================================ #include "Windows.bi" ' クラス名またはキャプションを与えてウィンドウのハンドルを取得 Declare Function Api_FindWindow& Lib "user32" Alias "FindWindowA" (ByVal lpClassName$, ByVal lpWindowName$) ' 指定されたウィンドウの位置およびサイズを変更 Declare Function Api_MoveWindow& Lib "user32" Alias "MoveWindow" (ByVal hWnd&, ByVal X&, ByVal Y&, ByVal nWidth&, ByVal nHeight&, ByVal bRepaint&) ' 拡張子に関連付けられたプログラムを実行 Declare Function Api_ShellExecute& Lib "shell32" Alias "ShellExecuteA" (ByVal hWnd&, ByVal lpOperation$, ByVal lpFile$, ByVal lpParameters$, ByVal lpDirectory$, ByVal nShowCmd&) ' ウィンドウにメッセージを送信。この関数は、指定したウィンドウのウィンドウプロシージャが処理を終了するまで制御を返さない Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, ByVal lParam&) #define SW_SHOWNORMAL 1 '起動時に通常のウィンドウとして表示 #define WM_CLOSE &H10 'ウィンドウ或いはアプリケーションをクローズされた Var Shared Edit(3) As Object Var Shared Text(1) As Object Var Shared Button(1) As Object For i = 0 To 3 If i < 2 Then Text(i).Attach GetDlgItem("Text" & Trim$(Str$(i + 1))) : Text(i).SetFontSize 14 Button(i).Attach GetDlgItem("Button" & Trim$(Str$(i + 1))) : Button(i).SetFontSize 14 End If Edit(i).Attach GetDlgItem("Edit" & Trim$(Str$(i + 1))) : Edit(i).SetFontSize 14 Next i Var Shared hWnd As Long '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() ShowWindow -1 Cls End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var Ret As Long 'コマンドボタンを無効に設定 Button(0).EnableWindow 0 'メモ帳を起動 Ret = Api_ShellExecute(GethWnd, ByVal 0, "notepad.exe", ByVal 0, ByVal 0, SW_SHOWNORMAL) End Sub '================================================================ '= '================================================================ Declare Sub Button2_on edecl () Sub Button2_on() Var ClassName As String Var mem(3) As Long Var Ret As Long 'クラス名でウィンドウハンドルを取得 ClassName = "Notepad" hWnd = Api_FindWindow(ClassName, ByVal 0) For i = 0 To 3 mem(i) = Val(Edit(i).GetWindowText) Next 'ウィンドウハンドルを取得できたとき If hWnd <> 0 Then 'ウィンドウの位置と寸法を設定 Ret = Api_MoveWindow(hWnd, mem(0), mem(1), mem(2), mem(3), True) End If End Sub '================================================================ '= '================================================================ Declare Sub MainForm_QueryClose edecl (Cancel%, ByVal Mode%) Sub MainForm_QueryClose(Cancel%, ByVal Mode%) Var Ret As Long If Cancel% = 0 Then Ret = Api_SendMessage(hWnd, WM_CLOSE, 0, 0) End End If End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End