ドライブの空き容量変化をシステムに通知          <TOP>


SHChangeNotify イベントをシステムに通知
SHCNE_FREESPACE(&H40000) ドライブに空きスペースが変化した
SHCNF_PATH(&H1) パス名SHCNF_PATHA
SHCNF_PATH(&H5) パス名SHCNF_PATHW(UNICODE)
 

例では、ファイルを作成し、ドライブの容量変化を通知した状態を示しています。

 

'================================================================
'= ドライブの空き容量変化をシステムに通知
'=    (SHChangeNotify.bas)
'================================================================
#include "Windows.bi"
#include "File.bi"

#define SHCNE_FREESPACE &H40000         'ドライブに空きスペースが変化した
#define SHCNF_PATH &H1                  'パス名SHCNF_PATHA
'#define SHCNF_PATH &H5                 'パス名(UNICODE)SHCNF_PATHW

' イベントをシステムに通知
Declare Sub Api_SHChangeNotify Lib "shell32" Alias "SHChangeNotify" (ByVal wEventId&, ByVal uFlags&, dwItem1 As Any, dwItem2 As Any)

Var Shared Text1 As Object
Var Shared Text2 As Object
Var Shared Button1 As Object

Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14
Text2.Attach GetDlgItem("Text2") : Text2.SetFontSize 14
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var FF As Long
    Var Drv As String

    '使用可能なファイル番号を取得
    FF = FreeFile

    'ファイルを作成
    Open GetWindowText & ".txt" For Output As FF

    'ファイルを閉じる
    Close FF

    'ドライブ文字を切り出し
    Drv = Left$(CrDir(""), 1)

    'イベントをシステムに通知
    Api_SHChangeNotify SHCNE_FREESPACE, SHCNF_PATH, Drv, ByVal CLng(0)

    '結果を表示
    Text2.SetWindowText "通知しました。"

    'ファイル作成・削除確認のため
    A% = MessageBox("ファイル作成・削除確認", "通知しました。", 0, 2)

    'ファイルを削除
    Kill GetWindowText & ".txt"
End Sub

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