Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
8 / 7 / 4
Регистрация: 03.12.2020
Сообщений: 342

Как вызывающая программа может влиять на результат функции WindowFromPoint

11.11.2024, 09:48. Показов 1827. Ответов 33

Студворк — интернет-сервис помощи студентам
Формулировка общей задачи: программа должна понимать, есть ли под курсором мыши окно Excel или нет (активное/ не активное - оба варианта). Соответствие окна хотел проверять по классу.
Взял код для теста с фиксированными координатами и запускал из Load:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
Imports System.Text ' для StringBuilder
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Integer, ByVal yPoint As Integer) As Integer ' отпределение окна под курсором мыши
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As IntPtr, ByVal lpClassName As String, ByVal nMaxCount As Integer) As Integer ' получение класса окна
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
                Const nChars As Integer = 256
                Dim hWnd As IntPtr = 0
                Dim Buff As String = StrDup(256, " ")
                'hWnd = WindowFromPoint(Cursor.Position.X, Cursor.Position.Y) 
                hWnd = WindowFromPoint(1500, 900) ' + -получает хэндл окна под курсором мыши 
                GetClassName(hWnd, Buff, 256)
                Debug.Print("hWnd  " & hWnd.ToString)
                Debug.Print("GetClassName  " & Buff.ToString & vbNewLine)
.
Создал новый проект(для откатки), вставил код - все работает как задумывалось!
Вставил код в свою программу (тот же, туда же...) и уже совсем другой хэндл( и класс - соответственно)!
Что может оказывать такое влияние на работу функции WindowFromPoint? Моя программа запускается поверх всех окон, в ней присутствует KeyboardHook и MouseHook... Не понимаю, что еще может оказывать такое воздействие...? Такое впечатление, что плоско запроса по координатам, отличается от плоскости окна Excel.
Причем, что интересно, моя программа определяет окна программ Opera и P-CAD, а Excel - нет! на нем получаю класс: NetUIHWND

Добавлено через 9 минут
Пробовал к полученному хєндлу применить функцию GetNextWindow, но из этого ничего не получилось...
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.11.2024, 09:48
Ответы с готовыми решениями:

Может ли третий проверка возвращаемого функцией значения влиять на результат линковки?
Не торопитесь с ответом. Я тоже так думал. Кропаем dll: //dllka.cpp #include <unknwn.h> void f(){ //Размер взят от...

Может ли 64-битный windows как-то влиять на работу программы?
Народ подскажите может ли 64 битный windows как-то влият на работу программы.(которая выводит биты числа на экран два чила в двоичной...

Может ли MessageBox::Show() как-то влиять на данные программы?
Может ли MessageBox::Show() както влиять на данные программы??? Я програмирую игру Шашки.Для етого создал некоторые воспомагательные...

33
8 / 7 / 4
Регистрация: 03.12.2020
Сообщений: 342
11.11.2024, 15:08  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Rius Посмотреть сообщение
Значит, проекты отличаются чем-то.
В том-то и дело, что - всем! Но я не могу понять, что именно оказывает влияние на такое поведение WindowFromPoint!?
0
Эксперт .NET
 Аватар для Rius
13823 / 7866 / 1703
Регистрация: 25.05.2015
Сообщений: 23,885
Записей в блоге: 14
11.11.2024, 16:26
NetUIHWND получить не удалось.
Excel находится под курсором.

Явное отличие - пришлось иначе передавать координаты в WindowFromPoint.
Вложения
Тип файла: 7z ExcelApp.7z (6.6 Кб, 7 просмотров)
0
8 / 7 / 4
Регистрация: 03.12.2020
Сообщений: 342
11.11.2024, 16:44  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
В .Net за годы произошли неочевидные изменения. Проект по умолчанию в одной версии может быть 32 битным, а в другой - 64 битным.
Еще раз проверил - х64. Результат действия кода: класс - NetUIHWND
0
Эксперт .NET
 Аватар для Rius
13823 / 7866 / 1703
Регистрация: 25.05.2015
Сообщений: 23,885
Записей в блоге: 14
11.11.2024, 16:53
Моей программой проверьте.

Цитата Сообщение от filat18 Посмотреть сообщение
Еще раз проверил - х64.
Там не очевидное есть - сочетание флага "Preferred 32-bit" и версии .Net. Что тянет за собой разные каталоги поиска.
0
8 / 7 / 4
Регистрация: 03.12.2020
Сообщений: 342
11.11.2024, 17:35  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
сочетание флага "Preferred 32-bit" и версии .Net
Не нахожу ничего подобного - можете уточнить в каком файле смотреть?
0
Эксперт .NET
 Аватар для Rius
13823 / 7866 / 1703
Регистрация: 25.05.2015
Сообщений: 23,885
Записей в блоге: 14
11.11.2024, 17:44
В настройках проекта.
Может и не быть такой опции. Или заблокирована.

Попробуйте мою программу.
Миниатюры
Как вызывающая программа может влиять на результат функции WindowFromPoint  
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
12.11.2024, 07:14
Лучший ответ Сообщение было отмечено filat18 как решение

Решение

Цитата Сообщение от filat18 Посмотреть сообщение
Что может оказывать такое влияние на работу функции WindowFromPoint?
Неправильно объявлена. Должно быть так:
VB.NET
1
2
3
4
5
Structure POINTAPI
        Public X As Int32
        Public Y As Int32
End Structure
Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As POINTAPI) As IntPtr
1
8 / 7 / 4
Регистрация: 03.12.2020
Сообщений: 342
12.11.2024, 07:53  [ТС]
Спасибо!
Я вот только не понимаю - почему прежний вариант кода нормально работал в новом чистом проекте!?
0
Эксперт .NET
 Аватар для Rius
13823 / 7866 / 1703
Регистрация: 25.05.2015
Сообщений: 23,885
Записей в блоге: 14
12.11.2024, 08:07
То есть всё ранее написанное вы не читали...
Цитата Сообщение от Rius Посмотреть сообщение
пришлось иначе передавать координаты в WindowFromPoint
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
12.11.2024, 08:07
Потому что Target CPU: x86, x64 или Any CPU?
0
8 / 7 / 4
Регистрация: 03.12.2020
Сообщений: 342
12.11.2024, 11:33  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
В настройках проекта.
Может и не быть такой опции. Или заблокирована.
VS2010/2012 - похожего не увидел.
Вы подразумеваете, что код из первого поста может быть работоспособен? Тогда, пожалуйста, конкретизируйте условия адаптации среды под код.
0
Эксперт .NET
 Аватар для Rius
13823 / 7866 / 1703
Регистрация: 25.05.2015
Сообщений: 23,885
Записей в блоге: 14
12.11.2024, 12:37
Я подразумеваю, что в архиве приведён рабочий пример с передачей структуры координат в функцию, вместо отдельных значений. Потому что отдельные глючат у меня даже в новой студии и на последнем фреймворке - по указанным координатам всегда возвращается левое окно. И возможно как раз из-за разрядности, о чём я уже тоже говорил.

Проверить, что у вас там, можно было бы при наличии минимального демонстрационного проекта с глюком. Но врядли вы будете урезать рабочий проект до минимума ради этого.
0
8 / 7 / 4
Регистрация: 03.12.2020
Сообщений: 342
12.11.2024, 13:00  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
при наличии минимального демонстрационного проекта с глюком. Но врядли вы будете урезать рабочий проект до минимума ради этого.
Да мне и целый выложить не жалко... -не понимаю что урезать!? вот только будет ли кто-то вести раскопки в этих тысячах строк...
P.S. ссылка не дает возможности что-либо скачать...
0
Эксперт .NET
 Аватар для Rius
13823 / 7866 / 1703
Регистрация: 25.05.2015
Сообщений: 23,885
Записей в блоге: 14
12.11.2024, 13:06
Ага, вот поэтому и делают минимально воспроизводимый...
P.S. 3 человека уже скачали.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.11.2024, 13:06

Как ключевое слово base может влиять на базовый класс?
Здравствуйте! Читаю 11 главу книги Шилдта, немного не понимаю предложение, уже полчаса стараюсь понять, Надеюсь, вы объясните. Сказано,...

Как может влиять не исправный провод, либо USB устройства на поведение курсора мыши и нажатии определенной клавиши
Я понимаю, что название странное, а вопрос возник из этой темы Снова попаду туда не раньше понедельника, там уже покопаюсь. За последние...

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

Как через тело функции влиять на объекты формы?
Создал отдельный Header File для создания функции. При попытке функции считать информацию или изменить её в объектах формы - выдает ошибку....

Как может корректно выполняющийся оператор >> (чтение из текстового файла) негативно влиять на открытие другого файла?
Друзья! Создадим два текстовых файла, f_0.txt и f_1.txt и что-нибудь в них запизаем, например в первый запихаем 1234 а во второй 5678 и...


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru