gpt4 book ai didi

c# - 每次打开应用程序窗口(其他进程)时如何执行一些代码?

转载 作者:可可西里 更新时间:2023-11-01 09:18:31 25 4
gpt4 key购买 nike

我正在尝试跟踪所有当前正在运行的进程的可见窗口。我的程序与这些窗口交互,它检测到它们的速度越快越好。我的目标是将可见窗口移动到屏幕上的某个位置,如果可能的话,甚至在它们绘制到默认位置之前。如果不是,我想在创建后尽快移动它们。

现在,我在循环中使用 EnumWindows(p/从 user32.dll 调用)枚举可见窗口,迭代之间的延迟尽可能小。

我正在寻找一种方法来 Hook “某物”,这将允许我等待“窗口打开”事件触发而不是不断轮询。

有什么方法可以实现吗?

最佳答案

您需要 SetWindowsHookEx() API 函数,设置 WH_SHELL Hook 。当创建新的顶层窗口时,回调会收到 HSHELL_WINDOWCREATED 通知。

这是一个全局钩子(Hook),您不能在 C# 中编写此钩子(Hook)的代码。它需要一个可以注入(inject)进程的 DLL,CLR 无法正确初始化以支持托管代码。您需要一个非托管 DLL 才能完成工作,this project提供一个。

关于c# - 每次打开应用程序窗口(其他进程)时如何执行一些代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2146774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com