AttachThreadInput в таймере

Тема в разделе "WASM.BEGINNERS", создана пользователем Sun07, 21 май 2009.

  1. Sun07

    Sun07 New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2009
    Сообщения:
    52
    1. Код на VB, думаю, понятен :) Этот код в таймере частотой 100мс приводит к невозможности зайти в папку проводника по даблклик. Почему?
    Код (Text):
    1.       lRet = GetForegroundWindow
    2.       StrangerID = GetWindowThreadProcessId(lRet, 0)
    3.       MyID = GetCurrentThreadId
    4.       lRet = AttachThreadInput(StrangerID, MyID, True)
    5.       If lRet Then
    6. 'успешно
    7.        lRet = GetFocus 'хендл текущего окна(поля)
    8.        If lRet Then
    9.         lRet = GetWindowThreadProcessId(lRet, 0))
    10.        End If
    11.        lRet = AttachThreadInput(StrangerID, MyID, False)
    12.       End If
    2. Может, можно как-то получить ID активного потока активного окна без AttachThreadInput?
    3. Какое значение имеет положение StrangerID, MyID в AttachThreadInput, т.е. как будут работать варианты:
    а)
    Код (Text):
    1. AttachThreadInput(StrangerID, MyID, True)
    б)
    Код (Text):
    1. AttachThreadInput(MyID, StrangerID, True)
     
  2. irrona

    irrona Member

    Публикаций:
    0
    Регистрация:
    26 май 2004
    Сообщения:
    178
    Адрес:
    Тирасполь
    Ну наверное потому, что в выделенном вызове ты отключаешься от потока.

    Код (Text):
    1.       lRet = GetForegroundWindow
    2.       StrangerID = GetWindowThreadProcessId(lRet, 0)
    3.       MyID = GetCurrentThreadId
    4.       lRet = AttachThreadInput(StrangerID, MyID, True)
    5.       If lRet Then
    6. 'успешно
    7.        lRet = GetFocus 'хендл текущего окна(поля)
    8.        If lRet Then
    9.         lRet = GetWindowThreadProcessId(lRet, 0))
    10.        End If
    11.        [b]lRet = AttachThreadInput(StrangerID, MyID, False)[/b]
    12.       End If
     
  3. irrona

    irrona Member

    Публикаций:
    0
    Регистрация:
    26 май 2004
    Сообщения:
    178
    Адрес:
    Тирасполь
    Жаль нет возможности редактировать. Вот в этом месте.
    Код (Text):
    1. lRet = AttachThreadInput(StrangerID, MyID, False)
     
  4. Sun07

    Sun07 New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2009
    Сообщения:
    52
    в таймере 1сек нормально работает. Что значит, в выделенном вызове? А где я должен отключаться? Мне объединение уже не нужно и я отключаюсь. Может, можно как-то получить ID потока, имеющего окно с фокусом ввода, активного чужого окна без AttachThreadInput?
     
  5. Sun07

    Sun07 New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2009
    Сообщения:
    52
    что-то этот AttachThreadInput вообще странно работает, окно вообще не получает сообщений :dntknw: