SetThreadExecutionState for another thread

SetThreadExecutionState for another thread

本文关键字:thread another for SetThreadExecutionState      更新时间:2023-10-16

我可以使用 SetThreadExecutionState() 来更改我调用此函数的线程的执行状态。有没有办法调用这个(类似的)函数来更改另一个线程的执行状态,而不是我调用它的线程。

实际上,问题是我使用的一个dll文件(来自VLC库)正在调用此函数以防止显示关闭。我想禁止它这样做。我想为进程中的所有线程调用 SetThreadExecutionState(),并从其状态中排除DISPLAY_REQUIRED标志。

如果无法为另一个线程调用此函数或类似函数,那么有谁知道实现此目的的另一种方法?

谢谢。

有没有办法调用这个(类似的)函数来更改另一个线程的执行状态

不是直接的,不是。它只在调用它的线程中工作。您必须在每个线程中单独调用它。如果您无权访问给定线程(例如,DLL 在内部创建的线程),则必须以某种方式注入在该线程上下文中运行的代码。 有多种注射技术可用。

我使用的一个 dll 文件(来自 VLC 库)正在调用此函数以防止显示关闭。我想禁止它这样做。我想为进程中的所有线程调用 SetThreadExecutionState(),并从其状态中排除DISPLAY_REQUIRED标志。

只需钩住函数本身(有很多示例,甚至是用于挂钩 API 函数的库),这样您就可以在将输入参数转发到原始函数之前更改输入参数。