1. Код на VB, думаю, понятен Этот код в таймере частотой 100мс приводит к невозможности зайти в папку проводника по даблклик. Почему? Код (Text): lRet = GetForegroundWindow StrangerID = GetWindowThreadProcessId(lRet, 0) MyID = GetCurrentThreadId lRet = AttachThreadInput(StrangerID, MyID, True) If lRet Then 'успешно lRet = GetFocus 'хендл текущего окна(поля) If lRet Then lRet = GetWindowThreadProcessId(lRet, 0)) End If lRet = AttachThreadInput(StrangerID, MyID, False) End If 2. Может, можно как-то получить ID активного потока активного окна без AttachThreadInput? 3. Какое значение имеет положение StrangerID, MyID в AttachThreadInput, т.е. как будут работать варианты: а) Код (Text): AttachThreadInput(StrangerID, MyID, True) б) Код (Text): AttachThreadInput(MyID, StrangerID, True)
Ну наверное потому, что в выделенном вызове ты отключаешься от потока. Код (Text): lRet = GetForegroundWindow StrangerID = GetWindowThreadProcessId(lRet, 0) MyID = GetCurrentThreadId lRet = AttachThreadInput(StrangerID, MyID, True) If lRet Then 'успешно lRet = GetFocus 'хендл текущего окна(поля) If lRet Then lRet = GetWindowThreadProcessId(lRet, 0)) End If [b]lRet = AttachThreadInput(StrangerID, MyID, False)[/b] End If
Жаль нет возможности редактировать. Вот в этом месте. Код (Text): lRet = AttachThreadInput(StrangerID, MyID, False)
в таймере 1сек нормально работает. Что значит, в выделенном вызове? А где я должен отключаться? Мне объединение уже не нужно и я отключаюсь. Может, можно как-то получить ID потока, имеющего окно с фокусом ввода, активного чужого окна без AttachThreadInput?