1 | |
Хэндл окна формы19.09.2012, 19:56. Показов 4870. Ответов 21
Метки нет (Все метки)
0
|
19.09.2012, 19:56 | |
Ответы с готовыми решениями:
21
Как получить хэндл окна? Перевести хэндл окна в строковую переменную Узнать хэндл окна и отправить нажатие клавиш Как получить хэндл меню окна Excel'a? |
Заблокирован
|
|
20.09.2012, 00:31 | 2 |
Van111, через FindWindow
HWND hwnd- получение...
1
|
20.09.2012, 15:05 [ТС] | 3 | |||||
думаете я так не пробовал)),студия 10 блокирует
журнал компиляции
------ Построение начато: проект: mail_spam_admin, Конфигурация: Debug Win32 ------
1> mail_spam_admin.cpp 1>c:\projects\mail_spam_admin\mail_spam_admin\Form1.h(484): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> C:\Program Files\Microsoft Visual Studio 10.0\VC\include\string.h(105): см. объявление "strcpy" 1>mail_spam_admin.obj : error LNK2028: ссылка на неразрешенную лексему (0A00009D) "extern "C" struct HWND__ * __stdcall FindWindowA(char const *,char const *)" (?FindWindowA@@$$J18YGPAUHWND__@@PBD0@Z) в функции "private: void __clrcall mail_spam_admin::Form1::launch_listen_Click(class System::Object ^,class System::EventArgs ^)" (?launch_listen_Click@Form1@mail_spam_admin@@$$FA$AAMXP$AAVObject@System@@P$AAVE ventArgs@4@@Z) 1>mail_spam_admin.obj : error LNK2019: ссылка на неразрешенный внешний символ "extern "C" struct HWND__ * __stdcall FindWindowA(char const *,char const *)" (?FindWindowA@@$$J18YGPAUHWND__@@PBD0@Z) в функции "private: void __clrcall mail_spam_admin::Form1::launch_listen_Click(class System::Object ^,class System::EventArgs ^)" (?launch_listen_Click@Form1@mail_spam_admin@@$$FA$AAMXP$AAVObject@System@@P$AAVE ventArgs@4@@Z) 1>C:\Projects\mail_spam_admin\Debug\mail_spam_admin.exe : fatal error LNK1120: 2 неразрешенных внешних элементов ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ========== Добавлено через 25 секунд с win приложением или с консолью это проходит
0
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
20.09.2012, 15:44 | 4 |
Тебя забанили в MSDN ??? Используй свойство формы Handle.
0
|
20.09.2012, 20:14 [ТС] | 5 | |||||
думаеш я до этого не дадумался?
журнал
1>------ Построение начато: проект: mail_spam_admin, Конфигурация: Debug Win32 ------
1> mail_spam_admin.cpp 1>c:\projects\mail_spam_admin\mail_spam_admin\Form1.h(335): error C2275: mail_spam_admin::Form1: недопустимое использование этого типа в качестве выражения 1>c:\projects\mail_spam_admin\mail_spam_admin\Form1.h(335): error C2227: выражение слева от "->Handle" должно указывать на тип класса, структуры или объединения либо на универсальный тип ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ========== у меня вроде как CLI
0
|
Модератор
8951 / 6717 / 921
Регистрация: 14.02.2011
Сообщений: 23,712
|
|
20.09.2012, 20:20 | 6 |
и что в МСДНе кли отменили?
Добавлено через 3 минуты например вот нашел за 5 минут в MSDN ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.ru/fxref_system.windows.forms/html/86f8ba57-db54-0a05-ffcb-96ce6e1cf474.htm Добавлено через 1 минуту та же статья в интернете http://msdn.microsoft.com/ru-r... andle.aspx
0
|
Модератор
8951 / 6717 / 921
Регистрация: 14.02.2011
Сообщений: 23,712
|
|
20.09.2012, 20:30 | 8 |
это ссылка на локальный MSDN
чтобы показать cli в MSDN присутсвует ниже Он лайн еще раз http://msdn.microsoft.com/ru-r... andle.aspx
0
|
20.09.2012, 20:35 [ТС] | 9 | ||||||||||
вроде всё ок , ну почему это работает,
min\Form1.h(335): error C2275: mail_spam_admin::Form1: недопустимое использование этого типа в качестве выражения 1>c:\projects\mail_spam_admin\mail_spam_admin\Form1.h(335): error C2228: выражение слева от ".Handle" должно представлять класс, структуру или объединение
0
|
Заблокирован
|
|
20.09.2012, 20:36 | 10 |
Van111, любое окно имеет HWND и спокойно определяется либо через тайт окна (формы, диалогового окна, не важно), либо через класснэйм. В MFC скажем в dialog based конфигурации хендл главного окна находится совсем просто CDialog::m_hWnd либо вобще просто m_hWnd (конечно если эту переменную не переобределили в коде то можно и без CDialog:: ). Уверен в КЛИ есть аналог этого, но в кли я не пишу и помочь для него не в состоянии
1
|
Модератор
8951 / 6717 / 921
Регистрация: 14.02.2011
Сообщений: 23,712
|
|
20.09.2012, 20:47 | 11 |
вот из за этого
вот тебе пространство имен Form http://msdn.microsoft.com/ru-r... ex0x9.aspx как видишь ни одного метода ты должен от формы что то взять Что не знаю, ибо в КЛИ не силен побаловался месяц и понял это для красявостей, для серьезной работы с системой непригодна (к тому же фрейм ворк за собой тянет) кстати по слухам Микрософт прекратил поддержку CLI Добавлено через 4 минуты Юра это публичный член класса CWnd, так что в любом окне есть
0
|
Заблокирован
|
|
20.09.2012, 21:02 | 12 |
- ну я и писал что можно вызвать как член CDialog если скажем в коде не начудили и не прписали скажем HWND m_hWnd = FindWindow(NULL,"Search"), то далее в коде m_hWnd в общем случае не будет соответвовать CDialog::m_hWnd (либо если хотим родителя CWnd::m_hWnd) то тогда надо раскрытие видимости, можно даже и так ::m_hWnd.
За m_hWnd чтобы Ван поискал аналогичную переменную в проекте кли, вот и всё Добавлено через 40 секунд Van111, какой тайтл у твоей формы?
0
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
20.09.2012, 21:11 | 13 |
Van111, без конкретного кода можно только гадать, где у тебя ошибка. Приведи пример кода.
0
|
20.09.2012, 21:20 [ТС] | 14 | ||||||||||
1> mail_spam_admin.cpp 1>c:\projects\mail_spam_admin\mail_spam_admin\Form1.h(337): error C2275: mail_spam_admin::Form1: недопустимое использование этого типа в качестве выражения 1>c:\projects\mail_spam_admin\mail_spam_admin\Form1.h(337): error C2227: выражение слева от "->Handle" должно указывать на тип класса, структуры или объединения либо на универсальный тип ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ========== всё работает , всем спасибо вот решение
0
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
21.09.2012, 09:51 | 15 |
Вот только в CLI лучше, если твой HWNDWindowMain будет иметь тип не HWND, а UINT_PTR.
0
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
21.09.2012, 11:19 | 17 |
Кстати, я ошибся. HWNDWindowMain должен иметь тип IntPtr.
Тут существует тонкий момент, связанный с разрядностью IntPtr и HWND на различных платформах. При насильственном преобразовании запросто можно получить потерю данных. Насчет "не более чем номер окна в системе" - это неверно. Верно так: HWND - это уникальный идентификатор окна в системе. Смысл же этого идентификатора - будет ли это номер, либо индекс в какой-нибудь внутренней таблице ядра, или еще что-нибудь, - нам неведом и никто никаких гарантий не дает, этим идентификатором заведует ядро.
1
|
|
21.09.2012, 11:27
#18
|
Не по теме: CheshireCat, HWND это просто номер и никаких граблей с тем хранить его как int либо как HWND не существует (за 10 лет своей практики по крайней мере я не встретил)
0
|
CheshireCat
|
21.09.2012, 11:41
#19
|
Не по теме: Значит, все еще впереди :-) Полагаю, упомянутые 10 лет практики были на 32-разрядных системах? Тогда да, все хорошо - разрядность совпадает.
0
|
Заблокирован
|
|
21.09.2012, 12:00 | 20 |
CheshireCat, ещё раз HWND как и HANDLE тот же (void *) т.е содержит адрес на ячейку с номером окна либо номером открытого процесса и т.д. Меня немного шкалит твоя дурацкая уверенность, что мол ты знаешь всё, а мои слова так сошка. Я не хочу спорить и холиворить, повторюсь просто ещё раз HWND - это номер окна не более, и разрядность совершенно никак не сказывается на этом номере
0
|
21.09.2012, 12:00 | |
21.09.2012, 12:00 | |
Помогаю со студенческими работами здесь
20
Как зная ProcessID получить хэндл окна? Как правильно получить хэндл окна по его заголовку? Как узнать имя окна (обьекта), зная его хэндл? Как получить хэндл окна среди окон с одинаковыми классами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства
Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
|
Что такое NullReferenceException и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
|
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
|
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
|
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
|
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
|
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее:
На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
|
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript
В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
|
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
|
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален
В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
|
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
|
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели
В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
|