private int _HookProc(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= 0 && (HookEvent != null || gbTrace)) { User.Struct.MSG msg = (User.Struct.MSG)Marshal.PtrToStructure(lParam, typeof(User.Struct.MSG)); User.WM wm = Messages.GetWindowMessage((int)msg.message); if (gbTrace) { string sMessage = wm.ToString(); if (wm == User.WM.WM_UNKNOW) { sMessage += " (" + msg.message.ToString("x") + ")"; } string sCode; if (nCode == User.Const.HC_ACTION) { sCode = "HC_ACTION"; } else { sCode = nCode.ToString(); } pb.Trace.WriteLine("GetMessageWindowHook : {0,-20} {1,-11} wParam {2,-8:x} wParam {3,-8:x} lParam {4,-8:x} hwnd {5:x}", sMessage, sCode, (int)wParam, (int)msg.wParam, (int)msg.lParam, (int)msg.hwnd); } if (HookEvent != null) { GetMessageWindowHookMessage msg2 = new GetMessageWindowHookMessage() { nCode = nCode, wParam = wParam, lParam = lParam, msg = msg, wm = wm }; HookEvent(msg2); if (msg2.RemoveMessage) { return(0); } } } return(User.CallNextHookEx(gHookHandle, nCode, wParam, lParam)); }
private void GetMessageWindowHookProc(GetMessageWindowHookMessage msg) { if (msg.nCode != User.Const.HC_ACTION) return; User.WA wa = User.WA.WA_UNKNOW; User.SC sc = User.SC.SC_UNKNOW; string swParam = null; if (msg.wm == User.WM.WM_ACTIVATE) { short low = msg.msg.wParam.zGetLowValue(); wa = Messages.GetWA(low); swParam = wa.ToString(); } else if (msg.wm == User.WM.WM_SYSCOMMAND) { sc = Messages.GetSC((int)msg.msg.wParam); if (sc != User.SC.SC_MINIMIZE && sc != User.SC.SC_RESTORE) return; swParam = sc.ToString(); } else if (msg.wm != User.WM.WM_CLOSE) return; WindowData window = null; window = FindWindow(msg.msg.hwnd); string sWindow; if (window == null) { sWindow = "error window not found"; if (gbTrace) pb.Trace.WriteLine("GetMessage Hook error : {0,-20} {1,-20} window {2,-25} hWnd {3}", msg.wm, swParam, sWindow, (int)msg.msg.hwnd); return; } sWindow = window.Form.Text; if (window == gParentWindow) { if (gbTrace) pb.Trace.WriteLine("GetMessage Hook ParentWindow : {0,-20} {1,-20} window {2,-25} hWnd {3}", msg.wm, swParam, sWindow, (int)msg.msg.hwnd); //switch (msg.msg) //{ // // Parent Window WA_ACTIVE WA_CLICKACTIVE : Active la 1ère fenêtre fille si la fenêtre mère est activée // case User.WM.WM_ACTIVATE: // if ((wa == User.WA.WA_ACTIVE || wa == User.WA.WA_CLICKACTIVE) && window.Form.WindowState != FormWindowState.Minimized) // { // Form firstWindow = gOrderedWindows[0]; // if (firstWindow != null) firstWindow.Activate(); // } // break; // // Parent Window SC_RESTORE : Désactive le changement de la 1ère fenêtre (gbDisableSetFirstWindow) // case User.WM.WM_SYSCOMMAND: // if (sc == User.SC.SC_RESTORE) // gbDisableSetFirstWindow = false; // break; //} } else { if (gbTrace) pb.Trace.WriteLine("GetMessage Hook Window : {0,-20} {1,-20} window {2,-25} hWnd {3}", msg.wm, swParam, sWindow, (int)msg.msg.hwnd); //switch (msg.msg) //{ // // Child Window WM_CLOSE : Supprime la fenêtre fille et active la 1ère fenêtre fille // case User.WM.WM_CLOSE: // RemoveWindow(window.Form); // ActivateFirstWindow(); // break; // // Child Window WA_ACTIVE WA_CLICKACTIVE : Met la fenêtre fille en 1ère position // case User.WM.WM_ACTIVATE: // if (wa == User.WA.WA_CLICKACTIVE || wa == User.WA.WA_ACTIVE) // SetFirstWindow(window.Form); // break; // // Child Window SC_MINIMIZE : Désactive SetFirstWindow et envoie SC_MINIMIZE à la fenêtre parent // case User.WM.WM_SYSCOMMAND: // Form parentWindow = window.Form.Owner; // if (parentWindow == null) // { // if (gbTrace) _tr.WriteLine("PreWindowHookProc Window error : error this window dont have parent"); // break; // } // if (sc == User.SC.SC_MINIMIZE) // { // //gbDisableSetFirstWindow = true; // //Point pt = Cursor.Position; // //User.SendMessage(parentWindow.Handle, (uint)User.WM.WM_SYSCOMMAND, (IntPtr)User.SC.SC_MINIMIZE, new IntPtr(cu.MakeValue(pt.X, pt.Y))); // //msg.RemoveMessage = true; // } // break; //} } }
private int _HookProc(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= 0 && (HookEvent != null || gbTrace)) { User.Struct.MSG msg = (User.Struct.MSG)Marshal.PtrToStructure(lParam, typeof(User.Struct.MSG)); User.WM wm = Messages.GetWindowMessage((int)msg.message); if (gbTrace) { string sMessage = wm.ToString(); if (wm == User.WM.WM_UNKNOW) sMessage += " (" + msg.message.ToString("x") + ")"; string sCode; if (nCode == User.Const.HC_ACTION) sCode = "HC_ACTION"; else sCode = nCode.ToString(); pb.Trace.CurrentTrace.WriteLine("GetMessageWindowHook : {0,-20} {1,-11} wParam {2,-8:x} wParam {3,-8:x} lParam {4,-8:x} hwnd {5:x}", sMessage, sCode, (int)wParam, (int)msg.wParam, (int)msg.lParam, (int)msg.hwnd); } if (HookEvent != null) { GetMessageWindowHookMessage msg2 = new GetMessageWindowHookMessage() { nCode = nCode, wParam = wParam, lParam = lParam, msg = msg, wm = wm }; HookEvent(msg2); if (msg2.RemoveMessage) return 0; } } return User.CallNextHookEx(gHookHandle, nCode, wParam, lParam); }