ウィンドウが最小化されているかどうかを判断          <TOP>


ウインドウが最小化されているかどうかの判断と、テンポラリパスを取得します。

GetUserName ユーザー名を取得

GetTempPath 一時フォルダ(テンポラリフォルダ)を取得

IsIconic ウィンドウが最小化されているかどうかを判断

 

タイマーを貼り付けます。起動するとユーザ名およびテンポラリパスが表示されます。

 

【OK】をクリックすると、フォームが最小化されていないのでメニューバーに【最小化:False】と表示されます。アイコン化ボタンをクリックするとタスクバー上で【最小化:True】と表示されます。

 

 

'================================================================
'= ウィンドウが最小化されているかどうかを判断
'=    (IsIconic.bas)
'================================================================
#include "Windows.bi"

' ユーザー名を取得
Declare Function Api_GetUserName& Lib "advapi32" Alias "GetUserNameA" (ByVal lpBuffer$, nSize&)

' 一時フォルダ(テンポラリフォルダ)を取得
Declare Function Api_GetTempPath& Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength&, ByVal lpBuffer$)

' ウィンドウが最小化されているかどうかを判断する関数
Declare Function Api_IsIconic& Lib "user32" Alias "IsIconic" (ByVal hWnd&)

Var Shared Timer1 As Object
Timer1.Attach GetDlgItem("Timer1")

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Var Temp As String
    Var UserName As String
    Var Ret As Long

    'バッファ初期化
    Temp = String$(100, Chr$(0))

    'テンポラリパス取得
    Ret = Api_GetTempPath(100, Temp)

    'Null除去
    Temp = Left$(Temp, InStr(Temp, Chr$(0)) - 1)

    'バッファ初期化
    UserName = String$(100, Chr$(0))

    'ユーザ名取得
    Ret = Api_GetUserName(UserName, 100)

    'Null除去
    UserName = Left$(UserName, InStr(UserName, Chr$(0)) - 1)

    'TempPathとユーザー名表示
    A% = MessageBox(GetWindowText, "ユーザー名:" & UserName & Chr$(13) & "TempPath:" & Temp, 0, 2)

    Timer1.SetInterval 10
    Timer1.Enable -1
End Sub

'================================================================
'=
'================================================================
Declare Sub Timer1_Timer edecl ()
Sub Timer1_Timer()
    Var State As String
    Var Ret As Long
    
    '最小化されているかをチェック
    Ret = Api_IsIconic(GethWnd)

    If Ret = 1 Then State = "True" Else State = "False"

    'フォームキャプション更新
    SetWindowText "最小化:" & State
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End