Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Определение активного ока Добавлено: 04.08.03 23:48  

Автор вопроса:  HACKER
Люди, подскажите пожайлуста. Как узнать заголовок активного окна в НЕ моей программы?

Ответить

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

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



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

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #1
Добавлено: 05.08.03 06:14

Попробуй GetActiveWindow и GetWindowText

Ответить

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



Вопросов: 15
Ответов: 115
 Web-сайт: www.fea.nxt.ru
 Профиль | | #2
Добавлено: 05.08.03 18:38

Вот, может, будет полезно:

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
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 GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Const GW_HWNDFIRST = 0
Const GW_HWNDNEXT = 2
Const WM_CLOSE = &H10
Const WM_QUIT = &H12
Dim CurrWnd As String
Dim ListItem As String
Dim Length As String
Dim hW As Long
Sub GetTaskList()
'Получаем hWnd, который будет первым в списке
'через него, мы сможем отыскать другие задачи
CurrWnd = GetWindow(Me.hwnd, GW_HWNDFIRST)

'Пока возвращаемый hWnd имеет смысл, выполняем цикл
Do While CurrWnd <> 0
    'Получаем длину имени задания по CurrWnd
    Length = GetWindowTextLength(CurrWnd)

    'Получить имя задачи из списка
    ListItem = Space(Length + 1)
    Length = GetWindowText(CurrWnd, ListItem, Length + 1)

    'Если получили имя задачи, значит добавляем ее в список найденных
    If Length <> 0 Then
        lstList.AddItem ListItem
    End If

    'Переходим к следующей задаче из списка
    CurrWnd = GetWindow(CurrWnd, GW_HWNDNEXT)
    DoEvents
Loop
End Sub
Private Sub cmdClose_Click()
    hW = FindWindow(vbNullString, lstList.Text & Chr(0))
    PostMessage hW, WM_QUIT, 0, 0
End Sub

Private Sub cmdExit_Click()
    'Закрывает Windows manipulations
    End
End Sub

Private Sub cmdrefresh_Click()
    'Очищает список задач
    lstList.Clear
        'Обновляет список задач
    GetTaskList
End Sub

Private Sub Form_Load()
    'Запускает процедуру вывода списка задач
    GetTaskList
End Sub

По морде не бить - писал не я.

Ответить

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



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #3
Добавлено: 06.08.03 10:23

GetForegroundWindow, GetWindowText

dim h as long

h=getforegroundwindow

а потом получаешь текст с помощью GetWindowText. Точно не помню как, пример есть могу прислать

Ответить

Номер ответа: 4
Автор ответа:
 HACKER


 

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

Вопросов: 236
Ответов: 8362
 Профиль | | #4 Добавлено: 06.08.03 22:22

Кто может намылить примерчик?

Ответить

Номер ответа: 5
Автор ответа:
 NovichoK



Вопросов: 72
Ответов: 147
 Профиль | | #5 Добавлено: 06.08.03 23:12

Я как раз занимаюсь єтим вопросом( определение компьютерного почерка)!

Это уже обработаный мной текст! Я долго разбирался во всем и переделал. Значит эта прога считывает все caption'ы в массив.

Код, который находиться ниже помести в модуль, а потом из формы вызови функцию FillTaskListbox, и все у тебя в массиве а потом что хочешь делай с информацией...

Че не ясно обращайся, помогу...

Option Explicit

Const max = 100
Public Progs(1 To max) As String
Public ProgsIndex As Long
'
'
Private Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Private Declare Function IsWindowVisible Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

'
'
'
Private Const GWL_HWNDPARENT = (-8)
'
'
'

'
'
'


Function FillTaskListBox(frm As Form)
ProgsIndex = 1
Call EnumWindows(AddressOf EnumWindowsProc, frm.hWnd)
End Function

Private Function EnumWindowsProc(ByVal hWnd As Long, ByVal lParam As Long) As Long
   Static WindowText As String
   Static nRet As Long
   '
   '
   '
   If IsWindowVisible(hWnd) Then
      '
      'Видно ли нам окно
      '
      If GetParent(hWnd) = 0 Then
         '
         'Есть ли дочерные окна
         '
         If GetWindowLong(hWnd, GWL_HWNDPARENT) = 0 Then
            '
            'Есть ли хозяин
            '
            WindowText = Space$(256)
            nRet = GetWindowText(hWnd, WindowText, Len(WindowText))
            'переменная nRet получает длинну WindowText
            '
            If nRet Then
               'Если caption существует вообще то продолжаем
               WindowText = Left$(WindowText, nRet)
               Progs(ProgsIndex) = WindowText
               ProgsIndex = ProgsIndex + 1
            End If
         End If
      End If
   End If
   '
   '
   '
   EnumWindowsProc = True
End Function

Ответить

Страница: 1 |

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



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