C# 如何将单击事件附加到.exe文件控件?

C# 如何将单击事件附加到.exe文件控件?,c#,events,process,C#,Events,Process,我有一个.exe windows桌面应用程序(WinForm),但我无权访问该.exe文件的代码。我想处理已在应用程序中呈现的.exe控件的双击事件 由于我没有这方面的代码,所以我开始采用以下方法来实现这一点 我有一个C#程序,它在后台运行并捕获所有双击事件(使用钩子概念) 当桌面上生成任何双击事件时,我会检查my.exe是否正在运行 Process.GetProcesByName(“我的exe名称”) 因此,如果我的.exe正在运行,那么我将执行我的业务逻辑 问题:-当我的.exe正在运行但不

我有一个.exe windows桌面应用程序(WinForm),但我无权访问该.exe文件的代码。我想处理已在应用程序中呈现的.exe控件的双击事件

由于我没有这方面的代码,所以我开始采用以下方法来实现这一点

  • 我有一个C#程序,它在后台运行并捕获所有双击事件(使用钩子概念)
  • 当桌面上生成任何双击事件时,我会检查my.exe是否正在运行

    Process.GetProcesByName(“我的exe名称”)

  • 因此,如果我的.exe正在运行,那么我将执行我的业务逻辑

    问题:-当我的.exe正在运行但不在前台时,我不想调用业务逻辑。它应该在前台,只有我需要调用我的业务逻辑

    所以在这里,我需要一个检查,它通过我的C代码告诉我我的.exe是否在前台


    如果方法本身不正确,请向我建议其他方法。

    是的,最后这是按预期工作的代码

    [DllImport("user32.dll")]
            static extern IntPtr GetForegroundWindow();
    
            [DllImport("user32.dll")]
            static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);
    
    private string GetActiveWindowTitle()
            {
                const int nChars = 256;
                StringBuilder Buff = new StringBuilder(nChars);
                IntPtr handle = GetForegroundWindow();
    
                if (GetWindowText(handle, Buff, nChars) > 0)
                {
                    return Buff.ToString();
                }
                return null;
            }
    
    然后在我的全球钩事件中

    private void HookManager_MouseDoubleClick(object sender, MouseEventArgs e)
        {            
            string activeWindow = this.GetActiveWindowTitle();
    
            if (activeWindow.ToLower().Contains("my .exe name") && e.X >= 64 && e.X <= 86 && e.Y >= 32 && e.Y <= 54)
                CallChildProcess();                       
        }
    
    private void HookManager\u MouseDoubleClick(对象发送方,MouseEventArgs e)
    {            
    字符串activeWindow=this.GetActiveWindowTitle();
    
    如果(activeWindow.ToLower().Contains(“my.exe name”)&&e.X>=64&&e.X=32&&e.Y可能存在不重复的重复,因为直到全局挂接为止,其工作正常。检查my.exe是否在前台时出现问题。