C# 如何在每次打开应用程序窗口(其他进程)时执行一些代码?
我正在尝试从当前运行的所有进程跟踪可见窗口。我的程序与这些窗口交互,它检测它们的速度越快越好。我的目标是将可见窗口移动到屏幕上的某个位置,如果可能的话,甚至在默认位置绘制之前。如果没有,我希望在创建它们后尽快移动它们 现在,我在循环中使用EnumWindows(从user32.dll调用的p/invoked)在Visible窗口中枚举,迭代之间的延迟尽可能小 我正在寻找一种方法来连接“某物”,它允许我等待“窗口打开”事件触发,而不是不断地轮询C# 如何在每次打开应用程序窗口(其他进程)时执行一些代码?,c#,windows,winapi,hook,C#,Windows,Winapi,Hook,我正在尝试从当前运行的所有进程跟踪可见窗口。我的程序与这些窗口交互,它检测它们的速度越快越好。我的目标是将可见窗口移动到屏幕上的某个位置,如果可能的话,甚至在默认位置绘制之前。如果没有,我希望在创建它们后尽快移动它们 现在,我在循环中使用EnumWindows(从user32.dll调用的p/invoked)在Visible窗口中枚举,迭代之间的延迟尽可能小 我正在寻找一种方法来连接“某物”,它允许我等待“窗口打开”事件触发,而不是不断地轮询 有什么方法可以实现这一点吗?您需要setWindow
有什么方法可以实现这一点吗?您需要setWindowshookx()API函数,设置一个WH_SHELL钩子。当创建一个新的顶级窗口时,回调会收到一个HSHELL_WINDOWCREATED通知 这是一个全局钩子,不能用C#编写此钩子的代码。它需要一个可以注入进程的DLL,CLR无法正确初始化以支持托管代码。你需要一个非托管DLL来完成这项工作