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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2017, 18:17   #1
brownb
Форумчанин
 
Регистрация: 16.10.2016
Сообщений: 157
По умолчанию Работа с чужим окном

Подскажите куда копать,нужно сделать не большую программу для работы с чужим окном которая будет делать всего три действия 1 втавить текст в едит 2 выбрать из листбокс нужный нужную строку 3 нажать на кнопку.Так вот я так понимаю нужно както отследить все эти действия?Если да то чем?
brownb вне форума Ответить с цитированием
Старый 08.05.2017, 19:02   #2
brownb
Форумчанин
 
Регистрация: 16.10.2016
Сообщений: 157
По умолчанию

нашел пример
Код:
var
UnPro : HWND;
PassText: HWND;
OKbutton: HWND;

begin
UnPro:= FindWindow(nil, 'Form1'); //Где меню с вводом пароля
PassText := FindWindowEx(UnPro, 0, 'TEdit', nil); // Где само поле на этом меню

//Тут будет цикл и он будет зависеть от количества паролей
SendMessage(PassText, WM_SETTEXT, 0, lParam(LPCTSTR('НАШ ПАРОЛЬ'))); //Пихаем пароль
OKbutton :=FindWindowEx(UnPro, 0, 'TButton', nil); //Ищем сокровенную OK
SendMessage(OKbutton, BM_CLICK, 0, 0); //Жмёт ОК принять пароль (кстати если пароль подойдёт то значение этой функции и будет обрабатываться как выход из цикла)
end;
Он работает,только с программа созданными на делфи.а как быть в моем случае?как узнать на чем написана программа?
brownb вне форума Ответить с цитированием
Старый 08.05.2017, 19:52   #3
brownb
Форумчанин
 
Регистрация: 16.10.2016
Сообщений: 157
По умолчанию

Разобрался нашел классы компонентов
Пробую делать так
Код:
procedure TForm1.Button2Click(Sender: TObject);
var Wnd,EdWnd: HWND;
      j: integer;
begin
  Wnd:=FindWindow(nil, 'JL studio');
  if Wnd=0 then
     begin
ShowMessage('Не найдено окно ='); exit;
     end;
       EdWnd:=0;
  for j:=1 to 8 do
      begin
  EdWnd:=FindWindowEx(Wnd,EdWnd,'TcxComboBox',nil);
  if EdWnd=0 then break;
  SendMessage(EdWnd, WM_SETTEXT, 0, Integer(PChar('erere')));
      end;
end;
Так как там несколько одинаковых компонентов как указать нужный мне?
brownb вне форума Ответить с цитированием
Старый 08.05.2017, 20:59   #4
brownb
Форумчанин
 
Регистрация: 16.10.2016
Сообщений: 157
По умолчанию

Код:
var panel,Wnd,EdWnd,com: HWND;
      j: integer;
begin
  Wnd:=FindWindow(nil, 'test');

  if Wnd=0 then
     begin
ShowMessage('Не найдено окно ='); exit;
     end;
       EdWnd:=0;
  for j:=1 to 8 do
      begin
  panel := FindWindowEx(Wnd, 0, 'TPanel', nil);
  Memo1.Lines.Add(IntToStr(panel) + ' - панель');
   com := FindWindowEx(Wnd,panel, 'TcxComboBox', nil);
  Memo1.Lines.Add(IntToStr(panel) + ' - комбо');
  EdWnd:=FindWindowEx(Wnd,EdWnd,'TcxComboBox',nil);
  if EdWnd=0 then break;
  SendMessage(EdWnd, WM_SETTEXT, 0, Integer(PChar('erere')));
      end;
end;
Возвращает
132546 - панель
132546 - комбо

В чем проблема?
brownb вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с чужим окном progzero Общие вопросы Delphi 8 17.02.2015 20:34
Работа с чужим окном W0LF Общие вопросы Delphi 14 13.05.2014 11:18
работа с чужим консольным окном C# Zer0 Помощь студентам 0 01.09.2011 03:48
Работа с чужим окном определенного заголовка Marsel737 Общие вопросы Delphi 12 08.12.2009 23:11
работа с чужим окном RammFan Win Api 1 18.01.2007 20:21