Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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
Попробуй заполнить строковую переменную, перед передачей:
s = Space(5)
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
GetWindowText cannot retrieve the text of a control in another application.

Ответить

Номер ответа: 4
Автор ответа:
 Mihalыch



ICQ: 373-509-101 

Вопросов: 56
Ответов: 330
 Профиль | | #4 Добавлено: 26.08.07 06:55
Вместо GetActiveWindow лучше использовать GetForegroundWindow т.к. активного окна может и не быть. Во всяком случае заголовок окна GetWindowText возвращает исправно.

Option Explicit
    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
Большое спасибо, работает!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам