相关疑难解决方法(0)

WPF UIAutomation让孩子控制用户控制

我是NordVPN的用户并且没有任何问题地使用它.现在,对于某些要求,我需要设置一些属性,如协议(复选框)和单击其他应用程序中的按钮.

但该应用程序的该区域看起来像一个自定义控件,UIAutomation无法向下钻取.

该自定义控件中的元素没有任何自动化ID.

因此,我需要知道如何使用UIAutomation和White Framework遍历wpf应用程序中的用户控件,例如应用程序窗口的其他部分.

到目前为止我尝试过的是

  1. 使用TreeWalker(无法读取所有元素)

  2. 并尝试从其位置AutomationElement.FromPoint()获取元素,但它再次提供了我无法遍历的整个自定义控件(从其边界确定).

关于如何从UIAutomation钻取自定义控件的任何建议.

在此输入图像描述

对于记录,snoop可以读取元素,但VisualUIAVerify.exe不是.

c# wpf ui-automation

9
推荐指数
1
解决办法
762
查看次数

如何挂钩应用程序?

我正试图在我的C#应用​​程序中挂钩创建一个窗口.

static IntPtr hhook = IntPtr.Zero;
static NativeMethods.HookProc hhookProc;

static void Main(string[] args)
{
    // Dummy.exe is a form with a button that opens a MessageBox when clicking on it.
    Process dummy = Process.Start(@"Dummy.exe");

    try
    {
        hhookProc = new NativeMethods.HookProc(Hook);
        IntPtr hwndMod = NativeMethods.GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName);
        hhook = NativeMethods.SetWindowsHookEx(HookType.WH_CBT, hhookProc, hwndMod, (uint)AppDomain.GetCurrentThreadId());

        Console.WriteLine("hhook valid? {0}", hhook != IntPtr.Zero);

        while (!dummy.HasExited)
            dummy.WaitForExit(500);                
    }
    finally
    {
        if(hhook != IntPtr.Zero)
            NativeMethods.UnhookWindowsHookEx(hhook);
    }
}

static int Hook(int nCode, IntPtr wParam, IntPtr lParam)
{
    Console.WriteLine("Hook()");
    return NativeMethods.CallNextHookEx(hhook, …
Run Code Online (Sandbox Code Playgroud)

c# winapi setwindowshookex

1
推荐指数
1
解决办法
2万
查看次数

标签 统计

c# ×2

setwindowshookex ×1

ui-automation ×1

winapi ×1

wpf ×1