Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10

Информация об окнах

06.09.2016, 08:47. Показов 1542. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Простенькая утилита, которая выдает информацию по окну, которое находится под курсором.
Может пригодится кому

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
Option Explicit
 
Private Type POINTAPI
    X As Long
    Y As Long
End Type
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
 
Private Declare Function WindowFromPoint Lib "User32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function GetCursorPos Lib "User32" (lpPoint As POINTAPI) As Long
Private Declare Function GetClassName Lib "User32" Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount 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 GetParent Lib "User32" (ByVal hWnd As Long) As Long
'************************************************************************************
' Сделать окно всегда сверху ( не имеет отношения к сбору информации об окнах, но для удобства ради)
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40
Private Declare Sub SetWindowPos Lib "User32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
 
Private Sub Form_Activate()
        SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End Sub
'Конец Сделать окно всегда сверху
'***********************************************************************************************
 
 
' Процедура сбора информации об окнах
Private Sub WindowInfo()
 
Dim hWnd As Long, Parent As Long, Ret As Long
Dim MainClass$, ParentClass$, MainTxt$, ParentTXT$
MainClass$ = Space(256): ParentClass$ = Space(256)
MainTxt$ = Space(256): ParentTXT$ = Space(256)
Dim Pt As POINTAPI
' Узнать кординаты курсора
GetCursorPos Pt
' Сбор информации об окне под курсором
hWnd = WindowFromPoint(Pt.X, Pt.Y) 'уникальный идентификатор окна под курсором
Ret = GetClassName(hWnd, MainClass$, 256) ' Класс окна
Ret = GetWindowText(hWnd, MainTxt$, 256) ' Текст окна
' Сбор информации об родительском окне, если таковое имеется
Parent = GetParent(hWnd) 'уникальный идентификатор родительского окна
Ret = GetClassName(Parent, ParentClass$, 256) ' его класс
Ret = GetWindowText(Parent, ParentTXT$, 256) ' его текст
'Вывод информации в текстовые окна
Text1.Text = Hex(hWnd)
Text2.Text = Str(hWnd)
Text3.Text = Hex(Parent)
Text4.Text = Str(Parent)
Text5.Text = MainClass$
Text6.Text = ParentClass$
Text7.Text = MainTxt$
Text8.Text = ParentTXT$
End Sub
' вызываем процедуру сбора информации об окнах каждые 100 mc
Private Sub Timer1_Timer()
WindowInfo
End Sub
Проект тут
Вложения
Тип файла: zip Инфо об окнах.zip (6.5 Кб, 40 просмотров)
7
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.09.2016, 08:47
Ответы с готовыми решениями:

Пропала информация о скорости в окнах "Копирование" и "Перемещение" Проводника
Здравствуйте. Возможно здесь смогут мне помочь. Пропала инфа о скорости в окне копирования\перемещения проводника. Поиск в инете ничего не...

Написать программу- вводная информация в файле in.txt, выходная информация в out.txt
Написать программу- вводная информация в файле in.txt, выходная информация в out.txt. Срочнооо..

Об окнах в java
На эту тему в учебниках почти ни слова, в javadoc тоже непонятно. Там все заточено под создание апплетов, но мне нужны обыкновенные ява...

3
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
07.09.2016, 23:07
Я тоже когдато делал программу с похожей функциональностью
правда не собирался ее показывать, использовал чисто для своих надобностей.

ну раз-уж пошла такая тема то, тоже выложу мож пригодиться кому
Миниатюры
Информация об окнах  
Вложения
Тип файла: rar FindW.rar (792.1 Кб, 33 просмотров)
5
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
10.09.2016, 04:57
Забыл отметить что использованный компонент "VBCCR12.OCX" в программе прописан в SхS - манифесте
(Отдельное спасибо Dragokas - за проведенную работу с этим компонентом)
тестировал запуск с абсолютной защитой Win-7 и вроде всё работает. важно чтобы сам компонент находился в той-же папке
Еще одна версия с добавленной кнопкой "копировать в буфер" тоесть копируется вся линия списка а пункты разделяются служебным символом vbTab (обычная табличная табуляция) Кроме того ! Во избежания крокозябер при копировании русских знаков
(не во всех Windows правильно настроен русскоязычный буфер обмена) добавленна функция принудительной смены расскладки на русский язык в активном окне:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Sub CommandButtonW1_Click(Index As Integer)
    Dim s$
    Select Case Index
    Case 0
        LV_AddLines GetParent(GetParent(SelHWnd))
    Case 1
        LV_AddLines SelHWnd
    Case 2, 3
        CommandButtonW1(0).Enabled = (Index = 3)
        CommandButtonW1(2).Enabled = (Index = 3)
        ListView1.Enabled = (Index = 3)
        CommandButtonW1(3).Enabled = (Index = 2)
        TmrMouse.Interval = 100 * Abs((Index = 2))
        
    Case 4
        LoadKeyboardLayout "00000419", &H1 'русская расскладка
        With ListView1.SelectedItem
            s = .Text & vbTab & .SubItems(1) & vbTab & .SubItems(2)
            If Len(s) > 2 Then
                Clipboard.Clear
                Clipboard.SetText s
            End If
        End With
    End Select
End Sub
Миниатюры
Информация об окнах  
Вложения
Тип файла: rar FindW.rar (793.1 Кб, 36 просмотров)
2
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
10.09.2016, 14:22
Когда-то делал перехватчик текста оконных контролов.
Может, кому-то будет интересен.

С практической целью, использовал его для перехвата текста контрола перед падением окна чужого приложения.
Планировал, еще сделать опцию перехвата через внедрение, чтобы быстрее отлавливать, так пока и не сделал.

WindowText Interceptor



Из интересного в исходнике м.б. разве что код, позволяющий временно заменить системный курсор (если это делать неправильно, то можете остаться без курсора до перезагрузки ОС ):

Кликните здесь для просмотра всего текста

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
Option Explicit
 
Private Declare Function GetCursor Lib "user32.dll" () As Long
Private Declare Function LoadCursor Lib "user32.dll" Alias "LoadCursorW" (ByVal hInstance As Long, ByVal lpCursorName As Long) As Long
Private Declare Function CopyCursor Lib "user32" Alias "CopyIcon" (ByVal hCur As Long) As Long
Private Declare Function SetSystemCursor Lib "user32.dll" (ByVal hCur As Long, ByVal id As Long) As Long
Private Declare Function GetModuleHandle Lib "kernel32.dll" Alias "GetModuleHandleW" (ByVal lpModuleName As Long) As Long
 
Private Const IDC_CROSS         As Long = 32515&
 
Private Const OCR_APPSTARTING = 32650
Private Const OCR_NORMAL = 32512&
Private Const OCR_CROSS = 32515
Private Const OCR_HAND = 32649
Private Const OCR_HELP = 32651
Private Const OCR_IBEAM = 32513
Private Const OCR_NO = 32648
Private Const OCR_SIZEALL = 32646
Private Const OCR_SIZENESW = 32643
Private Const OCR_SIZENS = 32645
Private Const OCR_SIZENWSE = 32642
Private Const OCR_SIZEWE = 32644
Private Const OCR_UP = 32516
Private Const OCR_WAIT = 32514
 
 
Dim hOldCursor(13) As Long
Dim IDCursor(13) As Long
 
 
Public Sub SetNewCursor()
    Dim hInstance As Long
    Dim hCur As Long
    Dim hCurCopy As Long
    Dim i As Long
    
    Static isInit As Boolean
    
    If Not isInit Then
        isInit = True
        IDCursor(0) = OCR_APPSTARTING
        IDCursor(1) = OCR_NORMAL
        IDCursor(2) = OCR_CROSS
        IDCursor(3) = OCR_HAND
        IDCursor(4) = OCR_HELP
        IDCursor(5) = OCR_IBEAM
        IDCursor(6) = OCR_NO
        IDCursor(7) = OCR_SIZEALL
        IDCursor(8) = OCR_SIZENESW
        IDCursor(9) = OCR_SIZENS
        IDCursor(10) = OCR_SIZENWSE
        IDCursor(11) = OCR_SIZEWE
        IDCursor(12) = OCR_UP
        IDCursor(13) = OCR_WAIT
    End If
    
    'We don't really sure if current cursor is IDC_NORMAL
    'hOldCursor = CopyCursor(GetCursor())
 
    'hInstance = GetModuleHandle(0&)
    
    'Save Old cursors
    For i = 0 To UBound(IDCursor)
        hCur = LoadCursor(0&, IDCursor(i))
        If 0 <> hCur Then
            hOldCursor(i) = CopyCursor(hCur)
        End If
    Next
    
    hCur = LoadCursor(0&, IDC_CROSS)
    
    If 0 <> hCur Then
        For i = 0 To UBound(IDCursor)
        
            'duplicate handle
            hCurCopy = CopyCursor(hCur)
            If 0 <> hCurCopy Then
                'Warning: this function destroys cursor directed by hCur. Be aware. Must copy handle of cursor first.
                'Replacing all system cursors which is available for saving
            
                SetSystemCursor hCurCopy, IDCursor(i)
                hCurCopy = 0
            End If
        Next
    End If
End Sub
 
Public Sub SetOldCursor()
    Dim i As Long
    For i = 0 To UBound(IDCursor)
        If hOldCursor(i) <> 0 Then
            SetSystemCursor hOldCursor(i), IDCursor(i)
            hOldCursor(i) = 0
        End If
    Next
End Sub
Вложения
Тип файла: zip WindowText Interceptor.zip (21.3 Кб, 32 просмотров)
4
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.09.2016, 14:22
Помогаю со студенческими работами здесь

Об окнах в windows
Добрый день! И сразу к делу. Я меня есть код: #include &lt;iostream&gt; #include &quot;Windows.h&quot; using namespace std; int...

Порнобаннер в окнах браузеров 3
Всем привет. посмотрел тему &quot;2&quot; у меня точно такая же ситуация. выполнил проверку через hijackthis он мне вывел подозрительную...

Черные элементы в окнах
Всем привет.Проблема тока что во многих элементах все черное.Уже почти все перепробовал(

Кодировка в диалоговых окнах
Здравствуйте! У меня возникла проблема. В title окна (на скрине) другая кодировка (должна быть по-русски) Почему так, ведь у меня уже...

Фон в окнах win7
как убрать этот фон с окон? перебрал все темы,всё ровно так и остается


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru