相关疑难解决方法(0)

全局鼠标事件处理程序

我有以下代码,我从某处捕获鼠标事件.我修改了它并创建了一个事件处理程序,以便我可以订阅它.正确捕获鼠标事件.但它永远不会触发事件处理程序.任何人都可以弄清楚代码有什么问题吗?

public static class MouseHook

{
    public static event EventHandler MouseAction = delegate { };

    public static void Start()
    {
        _hookID = SetHook(_proc);


    }
    public static void stop()
    {
        UnhookWindowsHookEx(_hookID);
    }

    private static LowLevelMouseProc _proc = HookCallback;
    private static IntPtr _hookID = IntPtr.Zero;

    private static IntPtr SetHook(LowLevelMouseProc proc)
    {
        using (Process curProcess = Process.GetCurrentProcess())
        using (ProcessModule curModule = curProcess.MainModule)
        {
            return SetWindowsHookEx(WH_MOUSE_LL, proc,
              GetModuleHandle(curModule.ModuleName), 0);
        }
    }

    private delegate IntPtr LowLevelMouseProc(int nCode, IntPtr wParam, IntPtr lParam);

    private static IntPtr HookCallback( …
Run Code Online (Sandbox Code Playgroud)

c# event-handling mouseevent

32
推荐指数
3
解决办法
5万
查看次数

Snoop使用什么技术来检查WPF应用程序

间谍实用程序Snoop使用一些强大的技术(可能是某种反射)来检查正在运行的WPF应用程序.最有趣的是,Snnop能够读出整个对象结构.

几天前,我下载了Snoop源代码,并花了一些时间研究内部行为.不幸的是,我还没知道Snoop是如何做这些事情的,所以我希望任何人都可以帮助我.

在工作中我正在编写一个Coded UI Testing-Framework,如果我可以访问应用程序的对象结构,那将是非常棒的,因为这样我不仅可以断言UI状态.

更新:

这是所需的代码:

string filePath = "WpfApp.exe";
AppDomain appDomain = AppDomain.CurrentDomain;
byte[] bytes = System.IO.File.ReadAllBytes(filePath);
Assembly ass = appDomain.Load(bytes);
ass.EntryPoint.Invoke(null, new object[] { });
IntPtr handle = Process.GetCurrentProcess().MainWindowHandle;
Window w = System.Windows.Interop.HwndSource.FromHwnd(handle).RootVisual as Window;
Run Code Online (Sandbox Code Playgroud)

这对我来说已经是一个很大的帮助,但是了解Snoop如何将自己注入另一个进程也很有趣.

reflection wpf snoop

10
推荐指数
1
解决办法
2374
查看次数

标签 统计

c# ×1

event-handling ×1

mouseevent ×1

reflection ×1

snoop ×1

wpf ×1