ドライブの空き容量変化をシステムに通知 <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