internal ChangeNotifyLock(Message message) { IntPtr pidl; IntPtr lockId = ShellNativeMethods.SHChangeNotification_Lock( message.WParam, (int)message.LParam, out pidl, out _event); try { Trace.TraceInformation("Message: {0}", (ShellObjectChangeTypes)_event); var notifyStruct = pidl.MarshalAs<ShellNativeMethods.ShellNotifyStruct>(); Guid guid = new Guid(ShellIIDGuid.IShellItem2); if (notifyStruct.item1 != IntPtr.Zero && (((ShellObjectChangeTypes)_event) & ShellObjectChangeTypes.SystemImageUpdate) == ShellObjectChangeTypes.None) { IShellItem2 nativeShellItem; if (CoreErrorHelper.Succeeded(ShellNativeMethods.SHCreateItemFromIDList( notifyStruct.item1, ref guid, out nativeShellItem))) { string name; nativeShellItem.GetDisplayName(ShellNativeMethods.ShellItemDesignNameOptions.FileSystemPath, out name); ItemName = name; Trace.TraceInformation("Item1: {0}", ItemName); } } else { ImageIndex = notifyStruct.item1.ToInt32(); } if (notifyStruct.item2 != IntPtr.Zero) { IShellItem2 nativeShellItem; if (CoreErrorHelper.Succeeded(ShellNativeMethods.SHCreateItemFromIDList( notifyStruct.item2, ref guid, out nativeShellItem))) { string name; nativeShellItem.GetDisplayName(ShellNativeMethods.ShellItemDesignNameOptions.FileSystemPath, out name); ItemName2 = name; Trace.TraceInformation("Item2: {0}", ItemName2); } } } finally { if (lockId != IntPtr.Zero) { ShellNativeMethods.SHChangeNotification_Unlock(lockId); } } }
HResult IPreviewHandler.TranslateAccelerator(ref Message pmsg) { return _frame != null ? _frame.TranslateAccelerator(ref pmsg) : HResult.False; }
internal WindowMessageEventArgs(Message msg) { Message = msg; }
private static int WndProc(IntPtr hwnd, uint msg, IntPtr wparam, IntPtr lparam) { switch (msg) { case CreateWindowMessage: lock (_crossThreadWindowLock) { _tempHandle = CreateWindow(); Monitor.Pulse(_crossThreadWindowLock); } break; case (uint)WindowMessage.Destroy: break; default: MessageListener listener; if (_listeners.TryGetValue(hwnd, out listener)) { Message message = new Message(hwnd, msg, wparam, lparam, 0, new NativePoint()); listener.MessageReceived.SafeRaise(listener, new WindowMessageEventArgs(message)); } break; } return ShellObjectWatcherNativeMethods.DefWindowProc(hwnd, msg, wparam, lparam); }
public WindowMessageEventArgs(Message msg) { Message = msg; }