Страница: 1 | 2 |
Помогите считать заголовок активного окна в переменную. Общая задача такая: Надо получить путь активной папки, тогда я в ней смогу (У меня VB-6)
Предложенным способом, определяется имя только активной формы. Я ставил в таймер этот код, и если эта форма была активна, то возвращалось ее имя, если было активно чтото другое, возваращалась пусатая строка. Можете предложить что-нибудь еще? хм... у калькулятора нету заголовка? http://fasco.nm.ru/files/proekt.rar - vbp http://fasco.nm.ru/files/exe.rar - exe ps. операционка - WinXP Private Declare Function GetFocus Lib "user32" () As Long Private Sub cmd1_Click() 'получает hwnd и имена всех работающих программ(работает на 100 'включает таймер Private Sub tmr1_Timer() End Sub lngHandle() - hwnd всех окон strCaptions() - их именна соотественно Ну собственно нифига не происходит. Не пишет он имени активного окна.
Вопрос: Cчитать заголовок активного окна в переменную
Добавлено: 08.06.04 13:25
Автор вопроса: dromer | ICQ: 293-943-186
Пробовал использовать API GetWindowText, - неполучилось. Видно неправильно использовал.
Т.е окна проекта она считивает, а вот в Виндосе возвращает 0. Но ведь нужна именно она? Не так ли.
создать новую папку одной горячей клавишеи. Нужно для жизни. Так посмотреть даже несправедливо: файл удаляется одной кнопкой за секунду, а вот создание... да если еще на компе идет много программ, мышь просто обьективно глючит и тормозит.
Ответы
Всего ответов: 17
Номер ответа: 1
Автор ответа:
Fallout
Вопросов: 10
Ответов: 387
Web-сайт:
Профиль | | #1
Добавлено: 08.06.04 13:33
GetActiveWindow() - хендл активного окна получаешь
а далее... свою... GetWindowText
Номер ответа: 2
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #2
Добавлено: 08.06.04 14:01
Угу, только строку необходимо первоначально "расширить", например: str = Space(&H100)
Номер ответа: 3
Автор ответа:
Fallout
Вопросов: 10
Ответов: 387
Web-сайт:
Профиль | | #3
Добавлено: 08.06.04 14:24
УГу создать буфер ... и размер соотсвенно указать ... тоже &H100
Вот так короче
dim str as string
str = Space(&H100)
GetWindowText(GetActiveWindow(), str, &H100)
Номер ответа: 4
Автор ответа:
dromer
ICQ: 293-943-186
Вопросов: 16
Ответов: 28
Профиль | | #4
Добавлено: 08.06.04 18:05
Спасибо всем, пока на учебе, вечером проверю. Выглядит вроде красиво
Номер ответа: 5
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #5
Добавлено: 08.06.04 19:42
Чуток помусорю
За место Space$ можно использовать String$, в этом случае можно обнулить строку...
Объявить можно строку вот так:
Dim str as string * &H100
тогда не прийдется пользоваться той самой функцией... но и ни меньше ни больше строка не станет, как ее не мучай ))
Номер ответа: 6
Автор ответа:
Sanchez
ICQ: 330837479
Вопросов: 1
Ответов: 13
Web-сайт:
Профиль | | #6
Добавлено: 09.06.04 06:49
Номер ответа: 7
Автор ответа:
Fallout
Вопросов: 10
Ответов: 387
Web-сайт:
Профиль | | #7
Добавлено: 09.06.04 09:16
Что просили то и получили +).. а если у окна нету... нету... заголовка то чего конкретно ты хочешь получить?
Номер ответа: 8
Автор ответа:
Sanchez
ICQ: 330837479
Вопросов: 1
Ответов: 13
Web-сайт:
Профиль | | #8
Добавлено: 09.06.04 10:47
Номер ответа: 9
Автор ответа:
Fallout
Вопросов: 10
Ответов: 387
Web-сайт:
Профиль | | #9
Добавлено: 09.06.04 15:38
Так бы сразу и написал что хочешь получать заголовок н етолько активного окна тогда тебе
EnumWindows
Номер ответа: 10
Автор ответа:
Sanchez
ICQ: 330837479
Вопросов: 1
Ответов: 13
Web-сайт:
Профиль | | #10
Добавлено: 10.06.04 08:39
Значит так. Я знаю все хендлы всех работающих окон, все их имена. Теперь как узнать в какой программе работает пользователь(на какой программе стоит фокус в данный момент). Вот и все что мне надо.
Номер ответа: 11
Автор ответа:
Fallout
Вопросов: 10
Ответов: 387
Web-сайт:
Профиль | | #11
Добавлено: 10.06.04 09:07
Хм.. а что актив виндов не возвратит то окно что счас активно?... ммм.... ну вот ещё GetFocus .. возвратит хендл того окна.. на чём стоит фокус... так как всё в виндовс это окна +).. то может быть и не только окно в понятии окно...
Номер ответа: 12
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #12
Добавлено: 10.06.04 11:08
угу... а потом перебором, перебором...
Номер ответа: 13
Автор ответа:
Sanchez
ICQ: 330837479
Вопросов: 1
Ответов: 13
Web-сайт:
Профиль | | #13
Добавлено: 10.06.04 15:59
GetHWND
tmr1.Enabled = True
End Sub
Dim hwndActiveWindow As Long
hwndActiveWindow = GetFocus
For x = 0 To UBound(lngHandle())
If hwndActiveWindow = lngHandle(x) Then
txt1.Text = txt1.Text & " " & strCaptions(x)
End If
Next x
Номер ответа: 14
Автор ответа:
Sanchez
ICQ: 330837479
Вопросов: 1
Ответов: 13
Web-сайт:
Профиль | | #14
Добавлено: 10.06.04 16:01
да, GetHWND это у меня в модуля такая большая функция есть которая получает хэндлы всех программ и их имена. Работает на 100%.
Номер ответа: 15
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #15
Добавлено: 11.06.04 01:23
Вопрос про GetForegroundWindow или я не так понял?