예제 #1
0
 public static void PostMessage(IntPtr hWnd, Standard.WM Msg, IntPtr wParam, IntPtr lParam)
 {
     if (!_PostMessage(hWnd, Msg, wParam, lParam))
     {
         throw new Win32Exception();
     }
 }
예제 #2
0
        private static IntPtr _WndProc(IntPtr hwnd, Standard.WM msg, IntPtr wParam, IntPtr lParam)
        {
            IntPtr zero = IntPtr.Zero;

            Standard.MessageWindow target = null;
            if (msg == Standard.WM.CREATE)
            {
                Standard.CREATESTRUCT createstruct = (Standard.CREATESTRUCT)Marshal.PtrToStructure(lParam, typeof(Standard.CREATESTRUCT));
                target = (Standard.MessageWindow)GCHandle.FromIntPtr(createstruct.lpCreateParams).Target;
                s_windowLookup.Add(hwnd, target);
            }
            else if (!s_windowLookup.TryGetValue(hwnd, out target))
            {
                return(Standard.NativeMethods.DefWindowProc(hwnd, msg, wParam, lParam));
            }
            Standard.WndProc proc = target._wndProcCallback;
            if (proc != null)
            {
                zero = proc(hwnd, msg, wParam, lParam);
            }
            else
            {
                zero = Standard.NativeMethods.DefWindowProc(hwnd, msg, wParam, lParam);
            }
            if (msg == Standard.WM.NCDESTROY)
            {
                target._Dispose(true, true);
                GC.SuppressFinalize(target);
            }
            return(zero);
        }
예제 #3
0
 public static Standard.HRESULT ChangeWindowMessageFilterEx(IntPtr hwnd, Standard.WM message, Standard.MSGFLT action, out Standard.MSGFLTINFO filterInfo)
 {
     filterInfo = Standard.MSGFLTINFO.NONE;
     if (!Standard.Utility.IsOSVistaOrNewer)
     {
         return(Standard.HRESULT.S_FALSE);
     }
     if (!Standard.Utility.IsOSWindows7OrNewer)
     {
         if (!_ChangeWindowMessageFilter(message, action))
         {
             return((Standard.HRESULT)Standard.Win32Error.GetLastError());
         }
         return(Standard.HRESULT.S_OK);
     }
     Standard.CHANGEFILTERSTRUCT pChangeFilterStruct = new Standard.CHANGEFILTERSTRUCT {
         cbSize = (uint)Marshal.SizeOf(typeof(Standard.CHANGEFILTERSTRUCT))
     };
     if (!_ChangeWindowMessageFilterEx(hwnd, message, action, ref pChangeFilterStruct))
     {
         return((Standard.HRESULT)Standard.Win32Error.GetLastError());
     }
     filterInfo = pChangeFilterStruct.ExtStatus;
     return(Standard.HRESULT.S_OK);
 }
예제 #4
0
 private static extern bool _PostMessage(IntPtr hWnd, Standard.WM Msg, IntPtr wParam, IntPtr lParam);
예제 #5
0
 public static extern IntPtr SendMessage(IntPtr hWnd, Standard.WM Msg, IntPtr wParam, IntPtr lParam);
예제 #6
0
 public static extern bool DwmDefWindowProc(IntPtr hwnd, Standard.WM msg, IntPtr wParam, IntPtr lParam, out IntPtr plResult);
예제 #7
0
 public static extern IntPtr DefWindowProc(IntPtr hWnd, Standard.WM Msg, IntPtr wParam, IntPtr lParam);
예제 #8
0
 private static extern bool _ChangeWindowMessageFilterEx(IntPtr hwnd, Standard.WM message, Standard.MSGFLT action, [In, Out, Optional] ref Standard.CHANGEFILTERSTRUCT pChangeFilterStruct);
예제 #9
0
 private static extern bool _ChangeWindowMessageFilter(Standard.WM message, Standard.MSGFLT dwFlag);