Активное окно! :(

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
hackman
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 28.09.2007 (Пт) 10:24

Активное окно! :(

Сообщение hackman » 12.11.2007 (Пн) 19:22

Прогеры...помогите найти активное окно с которым работаем пользователь и запись это окна в блокнот(тоесть его имени)... Очень надо... Заранее спасибо всем...! Админ не бань...если такая тема есть то я ее в поиске не нашел!

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 12.11.2007 (Пн) 19:30

GetForegroundWindow, GetWindowText(или SendMessage с WM_GETTEXT)
Изображение

hackman
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 28.09.2007 (Пт) 10:24

Сообщение hackman » 12.11.2007 (Пн) 20:06

Я вот получил какие то цифры а как получить имя:
Вот пример:


Код: Выделить всё
Option Explicit
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Sub Form_Load()
MsgBox GetActiveWindow
End Sub

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 12.11.2007 (Пн) 21:01

Я вот получил какие то цифры


Мы получили хендл (hwnd) какого-то окна.

Пошлем же в это окно сообщение WM_GETTEXT
(подготовив строковый буфер для приема данных):
Код: Выделить всё


Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Sub Form_Load()
    Dim hw As Long
    Dim msgval As Long
    msgval = &HD 'WM_GETTEXT
    Dim stbuf As String * 1024 ' назовем это буфер
    hw = GetActiveWindow()
    Call SendMessage(hw, msgval, 1024, ByVal stbuf)
    Debug.Print stbuf
End Sub

Насчет записи в блокнот - не помню, но наверное можно..

hackman
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 28.09.2007 (Пт) 10:24

Сообщение hackman » 12.11.2007 (Пн) 22:23

Большое спасибо создателям форума и отвечающим! Форум рулит! :D

hackman
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 28.09.2007 (Пт) 10:24

Сообщение hackman » 12.11.2007 (Пн) 22:42

Тема еще не закрыта...

Этот код опряделяет имя только своего окна...а нужна посторонних...если даже быть точным то wow.exe

Код: Выделить всё
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetActiveWindow Lib "user32" () As Long


Private Sub Timer1_Timer()
Dim hw As Long
    Dim msgval As Long
    msgval = &HD 'WM_GETTEXT
    Dim stbuf As String * 1024 ' назовем это буфер
    hw = GetActiveWindow()
    Call SendMessage(hw, msgval, 1024, ByVal stbuf)
    MsgBox stbuf
    Open "c:\1.txt" For Append As #1
    Print #1, stbuf
    Close #1
End Sub


C этим кодом он опредялет имя только своей проги...а остольных нет...
ПОМОГИТЕ...

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 12.11.2007 (Пн) 22:54

Тебе же сразу сказали: юзай GetForegroundWindow и GetWindowText. В чем проблема?
Код: Выделить всё

Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetForegroundWindow Lib "user32" () As Long

Private Sub Timer1_Timer()
Dim hw As Long, rv As Long
Dim strCapt As String * 1024
    hw = GetForegroundWindow()
    rv = GetWindowText(hw, strCapt, 1024)
    MsgBox strCapt
End Sub
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

hackman
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 28.09.2007 (Пт) 10:24

Сообщение hackman » 13.11.2007 (Вт) 5:20

Спасибо! Сам я точно еще не скоро бы разобрася.. :oops:


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 71

    TopList