Страница: 1 |
Страница: 1 |
Вопрос: GetWindowText бяка
Добавлено: 25.08.07 14:20
Автор вопроса: VβÐUηìt | Web-сайт:
Function GetActiveCaption() As String
Dim l As Long, s As String
l = GetActiveWindow()
Call GetWindowText(l, s, 5)
GetActiveCaption = s
Если я не ошибаюсь, этот код должен выдать первые пять букв заголовка активного окна. Но получаю простую пустую строчку, причем как угодно, даже если узнавать длинну заголовка - всегда получаю пустую строчку! Как это может быть?
Заранее, благодарен.
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
SyavX
Вопросов: 25
Ответов: 149
Профиль | | #1
Добавлено: 25.08.07 17:00
Попробуй заполнить строковую переменную, перед передачей:
Call GetWindowText(l, s, 5)
Номер ответа: 2
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #2
Добавлено: 25.08.07 19:50
Не, не помогло. Работает только когда активное окно принадлежит моей проге, а так - пустую строку выдает...
Номер ответа: 3
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #3
Добавлено: 26.08.07 05:45
msdn
Номер ответа: 4
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #4
Добавлено: 26.08.07 06:55
Вместо GetActiveWindow лучше использовать GetForegroundWindow т.к. активного окна может и не быть. Во всяком случае заголовок окна GetWindowText возвращает исправно.
Private Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetForegroundWindow Lib "user32.dll" () As Long
Private Sub Command1_Click()
Dim hWin As Long
Dim lCap As Byte
Dim sCap As String
sCap = Space(255)
hWin = GetForegroundWindow()
lCap = GetWindowText(hWin, sCap, 255)
Me.Caption = Left(sCap, lCap)
End Sub
Private Sub Timer1_Timer()
Command1_Click
End Sub
Номер ответа: 5
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #5
Добавлено: 27.08.07 20:37
Большое спасибо, работает!