Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];

Вниз

Возвращаясь к вопросу об уникальности окон   Найти похожие ветки 

 
Akvilon   (2003-04-24 18:34) [0]

И все же, Господа, неужели нету способа отличить друг от друга два запущенных калькулятора. Без хендла, конечно.


 
DVM   (2003-04-24 18:44) [1]

А ID процесса не сгодится?


 
Akvilon   (2003-04-24 19:07) [2]

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


 
DVM   (2003-04-24 19:19) [3]

Вообще то странно Вы рассуждаете. Разница между двумя запущенными калькуляторами имеет смысл только когда они работают. Записать какую либо инфу о них можно, но лишено смысла, т.к. при следующем запуске это будут ДРУГИЕ ОКНА, ДРУГИЕ ПРОЦЕССЫ, ДРУГИЕ КАЛЬКУЛЯТОРЫ. ТАКИХ ЖЕ ТОЧНО СКОРЕЕ ВСЕГО БОЛЬШЕ НЕ БУДЕТ! А пока они запущены их ОДНОЗНАЧНО идентифицирует хэндл окна. И с чего Вы взяли, что хэндл - это временное. Пока окно существует - очень даже постоянная весч.


 
Scorp   (2003-04-24 19:28) [4]

Очень интересный вопрос, а можно спросить, для чего это?
Мне кажется, что я уловил как это говорится "корень", и думаю, что можно придумать лучшее решение!
Так очень часто бывает - задают вопросы как бы не по теме, а потом оказывается, что это только из-за того, что все знания оканчиваются на хендлах окон (извините, если это вас не косается). Так что - проблемма интересная, задавайте вопрос, от которого ноги ростут, и подумаем вместе ...


 
Akvilon   (2003-04-24 19:58) [5]

>Scorp
Действительно в корень попали. А надо вот что. Беру прогу и делаю показ как с ней работать. Т.е. беру мышь, двигаю к кнопке через SetCursorPos, нажимаю (mouse_event), появляется чего-нибудь для ввода данных, имитирую нажатие клавиш (Keybd_event). Очень наглядно. Вся проблема в координатах. Куда мышь двигать, где имитировать клики? А надо, по-моему, знать об окне чего-нибудь такое, по чему его сразу найти можно.
Подкинте идейку, Господа, может я иду куда ни туда?
В общем то у меня уже работает все, использую WindowText и ClassName, запоминаю, а потом нахожу, но бывает как с калькуляторами: нет Windowtext, а Classname одинаковые.
Я сам запускаю "калькулятор" и на нем показываю.


 
Style   (2003-04-24 20:05) [6]

А убить другие калькуляторы нельзя??? Ну хоть свернуть их,чтобы Юзеров не пугали.


 
Scorp   (2003-04-24 20:06) [7]

Озадачили, понимаешь :))
Сейчас будеи думать .......


 
Scorp   (2003-04-24 20:08) [8]

>Style © (24.04.03 20:05)
>А убить другие калькуляторы нельзя??? Ну хоть свернуть их,чтобы >Юзеров не пугали.

Єто - и есть что как говорится программерский ИЗВРАТ. Вот такого пожалуйста не советуйте, єто - через за***цу!


 
Scorp   (2003-04-24 20:49) [9]

Насколько я понял - ваша программа имитирует работу с каким-либо окном за каким-то заданым скриптом. Вот тут есть подвох - у вас нету никаких гарантий, что ведется работа с нужным окном. Нету защиты от его "подмены", или вобще ищезновения (тоесть завершения процесса), как я понимаю. Я не знаю всех подробностей, но мне кажется, что идея с самого начала обречена на провал, она не пересекается с особеностями построения Windows-приложений и самой Windows. Есть уже готовые проги, которые демонстрируют работу с программами, записывая скрипт для клавиатуры и мыши, а потом запуская нужний процесс как дочерний, отображают это все на нем.
К сожалению, у меня пока нет каких-либо умных идей. Будут - напишу.


 
Akvilon   (2003-04-24 21:19) [10]

>Scorp
Программу я запускаю сам и имитирую работу только с ней. Используя WindoText и ClassName я вобщем-то неплохо справлялся, если не хватает этого использовал информацию о родителе, в предположении, что дети к нему привязаны (нельзя переместить) и ориентировался по координатам родителя, в принципе можно добраться и до главного окна, оно у меня уж точно уникально. Проблема только в дочерних окнах, которые можно перемещать. И вот как их найти, если ClassName и Windowtext одинаковы. Может есть еще что-нибудь, типа ClassName, а то всё хендлы одни? Или хендел как-нито упорядоченно выделяется между детьми?
А где такие проги?


 
Akvilon   (2003-04-24 21:52) [11]

>Scorp
Программу я запускаю сам и имитирую работу только с ней. Используя WindoText и ClassName я вобщем-то неплохо справлялся, если не хватает этого использовал информацию о родителе, в предположении, что дети к нему привязаны (нельзя переместить) и ориентировался по координатам родителя, в принципе можно добраться и до главного окна, оно у меня уж точно уникально. Проблема только в дочерних окнах, которые можно перемещать. И вот как их найти, если ClassName и Windowtext одинаковы. Может есть еще что-нибудь, типа ClassName, а то всё хендлы одни? Или хендел как-нито упорядоченно выделяется между детьми?
А где такие проги?


 
Style   (2003-04-24 22:15) [12]

Ну это же демонстрационная программа.. Когда она работает
нужно вообще все блокировать. Т.е.

1. Перед ее запуском свернуть все окна
2. Заблокировать нажатие клавы и мышь (кроме Кнопки ESC к примеру)
3. Показать демонстрацию.
4. Востановить окна.



 
Scorp   (2003-04-24 22:44) [13]

Style прав. Если вы делаете программу-демо, то нужно как-то отключить клаву и мышь в этом процессе. Далее - как быть с другими программами, их то тоже надо "отключить", авось какой-то месседж-бокс выскочит!
Что-то вы тут не додумали. Не такое оно простое дело. Есть программы (даже использовал одну, только забыл, как называется), которые генерят авишки с GUI и всего в нем происходящего. Вот тут - не придерешся, все работает. Но это уже совсем другая история.


 
panov   (2003-04-24 22:54) [14]

Странно, что такая проблема возникла, если ты сам запускаешь калькулятор.

Запускай внешнюю программу CreateProcess, получай Handle и спокойно используй его.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.032 c
8-84450
AM
2003-03-11 14:06
2003.06.26
Многоугольник по координатам в OpenGL


7-84807
Alkinoy
2003-04-15 16:56
2003.06.26
Научите, пожалуйста, обрабатывать прерывания.


3-84043
Z_man7777
2003-06-02 06:25
2003.06.26
Вопрос по полю типа Float в InterBase6.x


14-84670
Cranium
2003-06-04 17:25
2003.06.26
Как в клиенте получить права пользователя на таблицу


1-84421
next2
2003-06-09 17:24
2003.06.26
при создании новой компоненты ошибка...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский