AttachThreadInput в таймере

Discussion in 'WASM.BEGINNERS' started by Sun07, May 21, 2009.

  1. Sun07

    Sun07 New Member

    Blog Posts:
    0
    1. Код на VB, думаю, понятен :) Этот код в таймере частотой 100мс приводит к невозможности зайти в папку проводника по даблклик. Почему?
    Code (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, т.е. как будут работать варианты:
    а)
    Code (Text):
    1. AttachThreadInput(StrangerID, MyID, True)
    б)
    Code (Text):
    1. AttachThreadInput(MyID, StrangerID, True)
     
  2. irrona

    irrona Member

    Blog Posts:
    0
    Ну наверное потому, что в выделенном вызове ты отключаешься от потока.

    Code (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

    Blog Posts:
    0
    Жаль нет возможности редактировать. Вот в этом месте.
    Code (Text):
    1. lRet = AttachThreadInput(StrangerID, MyID, False)
     
  4. Sun07

    Sun07 New Member

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

    Sun07 New Member

    Blog Posts:
    0
    что-то этот AttachThreadInput вообще странно работает, окно вообще не получает сообщений :dntknw: