Я создаю прикладную программу на C ++, которая использует хуки Windows для управления сторонними программами. Программа, которую я делаю, является учебной программой, показывающей, как использовать эти сторонние программы. Я могу найти идентификатор процесса сторонней программы, к которой я хочу подключиться, и затем могу запросить этот идентификатор процесса, чтобы найти список идентификаторов потоков, которые будут использоваться в качестве параметра для функции Windows API SetWindowsHookEx. Однако я обеспокоен тем, что из списка идентификаторов потоков из запущенного процесса я подключусь к потоку, который потенциально может закончиться в любой момент. В идеале я хотел бы подключиться к потоку, выполняющему основной графический интерфейс, который, скорее всего, будет одним из самых длинных живых потоков (и даже если это не самый длинный живой поток, учебная программа предназначена для работы с графическим интерфейсом, это все еще идеально). Если в стороннем приложении имеется более одного графического интерфейса, я хотел бы найти идентификатор потока для основного графического интерфейса.
Таким образом, мой вопрос из списка идентификаторов потоков, который я получаю, запрашивая идентификатор процесса, есть ли способ найти основной идентификатор GUI или другой подходящий поток, который будет активен до завершения работы программы? Очевидно, что у выбранного идентификатора потока должна быть очередь событий, чтобы я мог подключиться к ней.