Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 | 2 |

 

  Вопрос: Cчитать заголовок активного окна в переменную Добавлено: 08.06.04 13:25  

Автор вопроса:  dromer | ICQ: 293-943-186 

Помогите считать заголовок активного окна в переменную.
Пробовал использовать API GetWindowText, - неполучилось. Видно неправильно использовал.
Т.е окна проекта она считивает, а вот в Виндосе возвращает 0. Но ведь нужна именно она? Не так ли.

Общая задача такая: Надо получить путь активной папки, тогда я в ней смогу
создать новую папку одной горячей клавишеи. Нужно для жизни. Так посмотреть даже несправедливо: файл удаляется одной кнопкой за секунду, а вот создание... да если еще на компе идет много программ, мышь просто обьективно глючит и тормозит.

(У меня  VB-6)

Ответить

  Ответы Всего ответов: 17  

Номер ответа: 1
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #1
Добавлено: 08.06.04 13:33

GetActiveWindow() - хендл активного окна получаешь
а далее... свою... GetWindowText

Ответить

Номер ответа: 2
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #2
Добавлено: 08.06.04 14:01
Угу, только строку необходимо первоначально "расширить", например: str = Space(&H100)

Ответить

Номер ответа: 3
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #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-сайт: hw.t-k.ru
 Профиль | | #5
Добавлено: 08.06.04 19:42
Чуток помусорю :)

За место Space$ можно использовать String$, в этом случае можно обнулить строку...

Объявить можно строку вот так:
Dim str as string * &H100

тогда не прийдется пользоваться той самой функцией... но и ни меньше ни больше строка не станет, как ее не мучай :)))

Ответить

Номер ответа: 6
Автор ответа:
 Sanchez



ICQ: 330837479 

Вопросов: 1
Ответов: 13
 Web-сайт: fasco.nm.ru
 Профиль | | #6
Добавлено: 09.06.04 06:49

Предложенным способом, определяется имя только активной формы. Я ставил в таймер этот код, и если эта форма была активна, то возвращалось ее имя, если было активно чтото другое, возваращалась пусатая строка. Можете предложить что-нибудь еще?

Ответить

Номер ответа: 7
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #7
Добавлено: 09.06.04 09:16
Что просили то и получили +).. а если у окна нету... нету... заголовка то чего конкретно ты хочешь получить?

Ответить

Номер ответа: 8
Автор ответа:
 Sanchez



ICQ: 330837479 

Вопросов: 1
Ответов: 13
 Web-сайт: fasco.nm.ru
 Профиль | | #8
Добавлено: 09.06.04 10:47

хм... у калькулятора нету заголовка?

http://fasco.nm.ru/files/proekt.rar - vbp

http://fasco.nm.ru/files/exe.rar - exe

ps. операционка - WinXP

Ответить

Номер ответа: 9
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #9
Добавлено: 09.06.04 15:38
Так бы сразу и написал что хочешь получать заголовок н етолько активного окна тогда тебе

EnumWindows

Ответить

Номер ответа: 10
Автор ответа:
 Sanchez



ICQ: 330837479 

Вопросов: 1
Ответов: 13
 Web-сайт: fasco.nm.ru
 Профиль | | #10
Добавлено: 10.06.04 08:39
Значит так. Я знаю все хендлы всех работающих окон, все их имена. Теперь как узнать в какой программе работает пользователь(на какой программе стоит фокус в данный момент). Вот и все что мне надо.

Ответить

Номер ответа: 11
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #11
Добавлено: 10.06.04 09:07
Хм.. а что актив виндов не возвратит то окно что счас активно?... ммм.... ну вот ещё GetFocus .. возвратит хендл того окна.. на чём стоит фокус... так как всё в виндовс это окна +).. то может быть и не только окно в понятии окно...

Ответить

Номер ответа: 12
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #12
Добавлено: 10.06.04 11:08
угу... а потом перебором, перебором...

Ответить

Номер ответа: 13
Автор ответа:
 Sanchez



ICQ: 330837479 

Вопросов: 1
Ответов: 13
 Web-сайт: fasco.nm.ru
 Профиль | | #13
Добавлено: 10.06.04 15:59

Private Declare Function GetFocus Lib "user32" () As Long

Private Sub cmd1_Click()

'получает hwnd и имена всех работающих программ(работает на 100%)
GetHWND

'включает таймер
tmr1.Enabled = True
End Sub

Private Sub tmr1_Timer()
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

End Sub

lngHandle() - hwnd всех окон

strCaptions() - их именна соотественно

Ну собственно нифига не происходит. Не пишет он имени активного окна.

 

Ответить

Номер ответа: 14
Автор ответа:
 Sanchez



ICQ: 330837479 

Вопросов: 1
Ответов: 13
 Web-сайт: fasco.nm.ru
 Профиль | | #14
Добавлено: 10.06.04 16:01
да, GetHWND это у меня в модуля такая большая функция есть которая получает хэндлы всех программ и их имена. Работает на 100%.

Ответить

Номер ответа: 15
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #15
Добавлено: 11.06.04 01:23
Вопрос про GetForegroundWindow или я не так понял?

Ответить

Страница: 1 | 2 |

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



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