Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2015, 22:49   #21
DpolenST
Форумчанин
 
Регистрация: 28.09.2013
Сообщений: 115
По умолчанию

Цитата:
Сообщение от adkomissarov Посмотреть сообщение
Помогите на примере этого окна найти дочернее окно с кнопкой через Spy++?
запускаешь spy++ жмешь Alt+F3, хватаешь и переносишь указатель из spy++ на свое приложение, жмешь ОК
Что бы еще такого сделать, чтобы ничего не делать?

Последний раз редактировалось DpolenST; 21.01.2015 в 22:51.
DpolenST вне форума Ответить с цитированием
Старый 21.01.2015, 22:53   #22
NIKOLAYY2
Форумчанин
 
Регистрация: 23.12.2014
Сообщений: 220
По умолчанию

adkomissarov

Ты не тот скрин дал, я хотел само дерево окон твоего инсталятора посмотреть.
Вот как на скрине я сделал, чтобы все ветки нужного дерева были раскрыты.
Изображения
Тип файла: jpg 3333.jpg (68.5 Кб, 135 просмотров)
NIKOLAYY2 вне форума Ответить с цитированием
Старый 22.01.2015, 07:15   #23
adkomissarov
Пользователь
 
Регистрация: 21.01.2015
Сообщений: 37
По умолчанию

Цитата:
Сообщение от NIKOLAYY2 Посмотреть сообщение
adkomissarov
Ты не тот скрин дал, я хотел само дерево окон твоего инсталятора посмотреть.
Вот как на скрине я сделал, чтобы все ветки нужного дерева были раскрыты.
Пришлю чуть позже, как буду дома на обеде. А что за программа это у тебя? Я поставил Spy++, но интерфейс твоей софтинки будет попривлекательнее.

kropotkina-alice
Спасибо, я посмотрю обязательно.

Цитата:
Сообщение от NIKOLAYY2 Посмотреть сообщение
adkomissarov
.... я хотел само дерево окон твоего инсталятора посмотреть.
Вот как на скрине я сделал, чтобы все ветки нужного дерева были раскрыты.
Вот, с программы Spy++
Screenshot_1.jpg

Последний раз редактировалось Stilet; 22.01.2015 в 11:32.
adkomissarov вне форума Ответить с цитированием
Старый 23.01.2015, 18:02   #24
adkomissarov
Пользователь
 
Регистрация: 21.01.2015
Сообщений: 37
По умолчанию

Нет никаких соображений?
adkomissarov вне форума Ответить с цитированием
Старый 23.01.2015, 18:46   #25
DpolenST
Форумчанин
 
Регистрация: 28.09.2013
Сообщений: 115
По умолчанию

Цитата:
Сообщение от adkomissarov Посмотреть сообщение
Нет никаких соображений?
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
h1:HWND;
h2:HWND;
h3:HWND;
begin
WinExec('c:\777.exe', SW_SHOW);
h1 := FindWindow ('#32770', 'Установка программы "CheсkXML"');
if  h1<> 0  then h2 := FindWindowEx(h1, 0,'#32770', 0);
if  h2<> 0  then h3 := FindWindowEx(h2, 0,'Button', '&Далее >');
SendMessage(h3,BM_CLICK,0,0);
end;
как-то так... не проверял, просто отредактировал ваш код
Что бы еще такого сделать, чтобы ничего не делать?
DpolenST вне форума Ответить с цитированием
Старый 24.01.2015, 03:45   #26
NIKOLAYY2
Форумчанин
 
Регистрация: 23.12.2014
Сообщений: 220
По умолчанию

adkomissarov
У меня программа "InqSoft Window Scanner".
Она тоже что и Spy++, но она чуть чуть больше может.
С помощью нее можно указать какому окну и какое сообщение ты послать хочеш.
То есть с помощью InqSoft Window Scanner программы ты и сможеш нажать кнопку,
а если тебе не удасться, то и на делфи собирать код уже и небудет иметь смысла.

Узнай через SendMessage видит ли твоя программа хотя бы второе дочернее окно.
Пробуй тот код что тебе дали, поробуй в этом месте '&Далее >' пробел убрать и снова запустить.

Последний раз редактировалось NIKOLAYY2; 24.01.2015 в 03:48.
NIKOLAYY2 вне форума Ответить с цитированием
Старый 24.01.2015, 15:14   #27
adkomissarov
Пользователь
 
Регистрация: 21.01.2015
Сообщений: 37
По умолчанию

DpolenST
получилось, только вот я не смог заставить включиться со строчкой
Код:
 h1 := FindWindow ('#32770', 'Установка программы "CheсkXML"');
У меня в названии окна вместо ковычек стоят апострофы и delphi ругалась на двойные апострофы, заменил на строчку
Код:
h1 := FindWindow ('#32770', nil);
и все стало нормально. Спасибо большое.

Цитата:
Сообщение от DpolenST Посмотреть сообщение
как-то так... не проверял, просто отредактировал ваш код
все работало нормально, просто в один прекрасный момент отказало и все, теперь кнопка не жмется, создавал проект по новой, не помогает, ерундень какая-то

Последний раз редактировалось Stilet; 25.01.2015 в 17:03.
adkomissarov вне форума Ответить с цитированием
Старый 25.01.2015, 00:37   #28
DpolenST
Форумчанин
 
Регистрация: 28.09.2013
Сообщений: 115
По умолчанию

Цитата:
все работало нормально, просто в один прекрасный момент отказало и все, теперь кнопка не жмется, создавал проект по новой, не помогает, ерундень какая-то
Цитата:
Сообщение от adkomissarov Посмотреть сообщение
DpolenST
получилось, только вот я не смог заставить включиться со строчкой
Код:
 h1 := FindWindow ('#32770', 'Установка программы "CheсkXML"');
У меня в названии окна вместо ковычек стоят апострофы и delphi ругалась на двойные апострофы, заменил на строчку
Код:
h1 := FindWindow ('#32770', nil);
и все стало нормально. Спасибо большое.
у вас может быть несколько таких окон, какие-то из них могут быть скрыты, так что не известно к какому окну в итоге вы можете обратиться

попробуйте так
Код:
h1 := FindWindow ('#32770', 'Установка программы \"CheсkXML\"');
Хотя, в принципе и в этом случае могут остаться скрытые не закрытые копии этого окна.
Что бы еще такого сделать, чтобы ничего не делать?
DpolenST вне форума Ответить с цитированием
Старый 25.01.2015, 09:41   #29
adkomissarov
Пользователь
 
Регистрация: 21.01.2015
Сообщений: 37
По умолчанию

Цитата:
Сообщение от DpolenST Посмотреть сообщение
попробуйте так
Не срабатывает, у меня название окна "Установка программы 'CheckXML'", возможно ли как-нибудь заставить искать по первым словам названия окна? Например по "Установка программы"?
adkomissarov вне форума Ответить с цитированием
Старый 25.01.2015, 12:53   #30
DpolenST
Форумчанин
 
Регистрация: 28.09.2013
Сообщений: 115
По умолчанию

Цитата:
Сообщение от adkomissarov Посмотреть сообщение
Не срабатывает, у меня название окна "Установка программы 'CheckXML'"
я спутал с с++, для экранирования одинарной ковычки внутри строки используй еще одну ковычку перед каждой:
Код:
h1 := FindWindow ('#32770', 'Установка программы ''CheсkXML''');

Цитата:
Сообщение от adkomissarov Посмотреть сообщение
возможно ли как-нибудь заставить искать по первым словам названия окна? Например по "Установка программы"?
можно, но придется пройтись по всем окнам (с помощью EnumWindows) и проверить заголовок каждого, хотя плюсом при этом может стать то, что можно будет у каждого найденного окна проверить его видимость (с помощью IsWindowVisible), размеры (GetWindowRect) и др.
Что бы еще такого сделать, чтобы ничего не делать?
DpolenST вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не открывает PHP! В чем причина??? Sergey88 PHP 1 10.07.2012 11:11
в чем причина Arassir PHP 2 04.11.2011 12:56
в чем причина ошибки? obsession Паскаль, Turbo Pascal, PascalABC.NET 2 27.10.2011 19:57
В чем причина ошибки? Operator not... Effort Помощь студентам 0 20.06.2011 03:35
2 ошибки в макросе, в чем причина? robbe Microsoft Office Excel 4 15.02.2010 14:03