protected override void WndProc(ref Message m) {
if (m.Msg == WM_SHNOTIFY) {
SHNOTIFYSTRUCT notify = (SHNOTIFYSTRUCT)
Marshal.PtrToStructure(m.WParam,
typeof(SHNOTIFYSTRUCT));
switch ((SHCNE)m.LParam) {
case SHCNE.CREATE:
if (m_Parent.ItemCreated != null) {
ShellItem item = new ShellItem(notify.dwItem1);
m_Parent.ItemCreated(m_Parent, new ShellItemEventArgs(new ShellItem(notify.dwItem1)));
}
break;
case SHCNE.DELETE:
if (m_Parent.ItemDeleted != null)
m_Parent.ItemDeleted(m_Parent, new ShellItemEventArgs(new ShellItem(notify.dwItem1)));
break;
case SHCNE.DRIVEADD:
if (m_Parent.DriveAdded != null)
m_Parent.DriveAdded(m_Parent, new ShellItemEventArgs(new ShellItem(notify.dwItem1)));
break;
case SHCNE.DRIVEREMOVED:
if (m_Parent.DriveRemoved != null)
m_Parent.DriveRemoved(m_Parent, new ShellItemEventArgs(new ShellItem(notify.dwItem1)));
break;
case SHCNE.MKDIR:
if (m_Parent.FolderCreated != null)
m_Parent.FolderCreated(m_Parent, new ShellItemEventArgs(new ShellItem(notify.dwItem1)));
break;
case SHCNE.RMDIR:
if (m_Parent.FolderDeleted != null)
m_Parent.FolderDeleted(m_Parent, new ShellItemEventArgs(new ShellItem(notify.dwItem1)));
break;
case SHCNE.UPDATEDIR:
if (m_Parent.FolderUpdated != null)
m_Parent.FolderUpdated(m_Parent, new ShellItemEventArgs(new ShellItem(notify.dwItem1)));
break;
case SHCNE.UPDATEITEM:
if (m_Parent.ItemUpdated != null)
m_Parent.ItemUpdated(m_Parent, new ShellItemEventArgs(new ShellItem(notify.dwItem1)));
break;
case SHCNE.RENAMEFOLDER:
if (m_Parent.FolderRenamed != null)
m_Parent.FolderRenamed(m_Parent, new ShellItemChangeEventArgs(new ShellItem(notify.dwItem1), new ShellItem(notify.dwItem2)));
break;
case SHCNE.RENAMEITEM:
if (m_Parent.ItemRenamed != null)
m_Parent.ItemRenamed(m_Parent, new ShellItemChangeEventArgs(new ShellItem(notify.dwItem1), new ShellItem(notify.dwItem2)));
break;
case SHCNE.NETSHARE:
case SHCNE.NETUNSHARE:
if (m_Parent.SharingChanged != null)
m_Parent.SharingChanged(m_Parent, new ShellItemEventArgs(new ShellItem(notify.dwItem1)));
break;
}
}
else {
base.WndProc(ref m);
}
}