Win Api
3 отговора
152 прегледа
Win Api
Имам един проблем. Как мога да взема hWnd-то на 2 текстови полета в един прозорец? Правих различни опити, но получавам hWnd-то само на едното текстово поле, и то винаги на едно и също.
Re: Win Api
Разясни малко повече,как се опитваш да вземеш Hwnd ,в друга програма или
в твоята собствена.
Ако става въпрос за твоята собствена програма е лесно.
Ако е за друго приложение е трудничко но не невъзможно.
в твоята собствена.
Ако става въпрос за твоята собствена програма е лесно.
Ако е за друго приложение е трудничко но не невъзможно.
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)
'Използвай 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)