フォルダ作成をシステムに通知          <TOP>


SHChangeNotify イベントをシステムに通知
SHCNE_MKDIR(&H8) フォルダが作成された
SHCNE_RMDIR(&H10) フォルダが削除された
SHCNF_PATH(&H1) パス名SHCNF_PATHA
SHCNF_PATH(&H5) パス名SHCNF_PATHW(UNICODE)
 

例では、フォルダが作成されたことをシステムに通知し、その後削除した状態を示しています。

 

'================================================================
'= フォルダ作成をシステムに通知
'=    (SHChangeNotify2.bas)
'================================================================
#include "Windows.bi"
#include "File.bi"

#define SHCNE_MKDIR &H8                 'フォルダが作成された
#define SHCNE_RMDIR &H10                'フォルダが削除された
#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 FolderName As String

    'フォルダを作成
    FolderName = "Test"
    MkDir FolderName

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

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

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

    'フォルダを削除
    RmDir FolderName
End Sub

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