Win Api

3 отговора 152 прегледа
#1

Win Api

Имам един проблем. Как мога да взема hWnd-то на 2 текстови полета в един прозорец? Правих различни опити, но получавам hWnd-то само на едното текстово поле, и то винаги на едно и също.

Отговор
в отговор на koop #2

Re: Win Api

Разясни малко повече,как се опитваш да вземеш Hwnd ,в друга програма или
в твоята собствена.
Ако става въпрос за твоята собствена програма е лесно.
Ако е за друго приложение е трудничко но не невъзможно.

Отговор
в отговор на Ptr #3

Re: Win Api

Става въпрос за друга програма, а не за моя.

Отговор
в отговор на koop #4

Re: Win Api

'По този начин се закачаш към нишката на чуждото приложение.
'Използвай GetForegroundWindow ако си сигурен,че приложението е активно
'в момента в системата,другия вариант е да ползваш
'FindWindow или EnumWindows

Dim dwTargetOwner as long ' указател към чуждата нишка
Dim dwThreadID As long ' указател към твоята нишка

dwTargetOwner = GetWindowThreadProcessId(GetForegroundWindow,0)

dwThreadID = GetCurrentThreadId() 'указател към текущия процес

'за да сме сигурни че не се закачаме към нашата нишка
if dwTargetOwner <> dwThreadID then

'закачаме се към чуждата нишка
call AttachThreadInput(dwThreadID, dwTargetOwner, 1)

'сега има няколко варианта единия е ако си сигурен че TextBox е в фокус
'е да ползваш GetFocus,която ще ти върне Hwnd

end if

'откачаме се от чуждата нишка
call AttachThreadInput(dwThreadID, dwTargetOwner, 0)

Отговор