Форум: "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