SetThreadExecutionState for another thread
SetThreadExecutionState for another thread
我可以使用 SetThreadExecutionState() 来更改我调用此函数的线程的执行状态。有没有办法调用这个(类似的)函数来更改另一个线程的执行状态,而不是我调用它的线程。
实际上,问题是我使用的一个dll文件(来自VLC库)正在调用此函数以防止显示关闭。我想禁止它这样做。我想为进程中的所有线程调用 SetThreadExecutionState(),并从其状态中排除DISPLAY_REQUIRED标志。
如果无法为另一个线程调用此函数或类似函数,那么有谁知道实现此目的的另一种方法?
谢谢。
有没有办法调用这个(类似的)函数来更改另一个线程的执行状态
不是直接的,不是。它只在调用它的线程中工作。您必须在每个线程中单独调用它。如果您无权访问给定线程(例如,DLL 在内部创建的线程),则必须以某种方式注入在该线程上下文中运行的代码。 有多种注射技术可用。
我使用的一个 dll 文件(来自 VLC 库)正在调用此函数以防止显示关闭。我想禁止它这样做。我想为进程中的所有线程调用 SetThreadExecutionState(),并从其状态中排除DISPLAY_REQUIRED标志。
只需钩住函数本身(有很多示例,甚至是用于挂钩 API 函数的库),这样您就可以在将输入参数转发到原始函数之前更改输入参数。
相关文章:
- 在std::thread中,joinable()然后join()线程安全吗
- <Windows>为什么 std::thread::native_handle 返回类型为"long long unsigned int"的值,而不是 void*(又名 HANDLE)?
- 分离一个静态常量 std::thread?
- 尝试使用 std::vector<std::thread时出现静态断言失败错误>
- 使用 thread 类在 C++ 中构造线程的动态数组时出错
- 当指向对象的指针作为参数传递给 std::thread 时,内存可见性
- 如何从 std::thread 返回值
- 在C++中使用并行化的预期速度是多少(不是 OpenMp,而是 <thread>)
- 将 std::thread by 值推送到列表中
- 转发变量参数列表以模拟 std::thread
- 嵌入式设备 -> std::thread -> FreeRTOS?
- 对 'std::thread::_M_start_thread CMake 的未定义引用进行基准测试
- std::thread 增加 DLL 引用计数,从而防止卸载 DLL
- 如何防止 std::thread 在 QT 中冻结 GUI?
- 对带有唯一指针的 std::thread 使用类成员函数时出现编译错误
- C++ - Thread Pool
- 为什么参数在构造 std::thread 时移动两次
- std::thread::_Invoker 使用线程编程时出错
- SetThreadExecutionState for another thread
- "QObject::startTimer: timers cannot be started from another thread"没有计时器和 CPU 消耗