Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/40: Рейтинг темы: голосов - 40, средняя оценка - 4.93
 Аватар для Likos
0 / 0 / 0
Регистрация: 14.04.2007
Сообщений: 27

Управление чужим окном и компонентами

24.03.2008, 10:41. Показов 8387. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот моя задача:
1. В программе указываем необходимое N количество копий запускаемой программы. Жмем "Пуск"
Действия программы:
2. Сканирует каталог на наличие подкаталогов и все имена подкаталогов сохраняет в массив.
3. Начинает перебор этих подкаталогов по N за один цикл, и запускает хранящуюся в них стороннюю программу. (программа одна и таже, все одинаково, отличаются только заполненные данные в ней. Caption формы тоже одинаковый)
4. После запуска N программ получаем хэндлы каждого окна.
5. По полученым хэндлам окон находим хэндлы в каждом из окон кнопки с Caption='Start'.
6. Имитируем нажатие на эту кнопку.
7. Ждем определенное время.
8. Уничтожаем все N программ.
9. Переходим к следующей партии из N программ.

Код я написал, все вроде хорошо, но что то с хэндлами не так...
Вот кусок кода (здесь пример где N=1 всегда):
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
var i, k, count: Word;
    Catalogs: array of string;
    d: TSearchRec;
    MWnd, BHndl: HWND;
begin
 SetLength(Catalogs, 0);
 
 // Поиск каталогов
 if FindFirst('*', faAnyFile, d) = 0 then
 repeat
  if ((d.Attr and faDirectory) = faDirectory) and
     (d.Name <> '.') and (d.Name <> '..') then begin
   SetLength(Catalogs, Length(Catalogs) + 1);  
   Catalogs[Length(Catalogs) - 1] := d.Name;
  end;
  Application.ProcessMessages;
  Label3.Caption := 'Найдено каталогов: ' + IntToStr(Length(Catalogs)) + '. Поиск...';
 until (FindNext(d) <> 0);
 
 FindClose(d);
 Label3.Caption := 'Найдено каталогов: ' + IntToStr(Length(Catalogs)) + '.';
 count := 0;
 
 // Запуск программ и управление ими
 for i := 0 to Length(Catalogs) - 1 do begin
  ShellExecute(MainForm.Handle, nil, PChar(Catalogs[i] + '/AutoClicker.exe'), nil, nil, SW_SHOWNORMAL);
  Application.ProcessMessages;
  sleep(5000);  // Ждем 5 секунд
  Application.ProcessMessages;
  MWnd := FindWindow('wbMainWnd', nil); // Ищем окно
  BHndl := FindWindowEx(MWnd, null, 'Button', 'Start');
  if IsWindow(BHndl) then begin
   PostMessage(BHndl, BM_CLICK, 0, 0);  // Нажимаем кнопку
   inc(count);
   // Включаем ожидание
   k := SpinEdit1.Value * 60; // В секундах
   while k > 0 do begin
    Sleep(1000);
    Application.ProcessMessages;
    Label3.Caption := 'Ожидание... ' + IntToStr(k) + ' сек';
    Label4.Caption := 'Выполнено аккаунтов: ' + IntToStr(count - 1);
   end;
   DestroyWindow(MWnd);
  end; 
 end;
При запуске программы она отлично сканирует каталоги, и начинает запуск программ.
Ошибка происходит на команде BHndl := FindWindowEx(MWnd, null, 'Button', 'Start') пишет Invalid variant type conversion
Подскажите что не так?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.03.2008, 10:41
Ответы с готовыми решениями:

Работа с чужим окном
Помогите с кодом для dll, вызовом функции из которой можно создать Memo на чужом окне, хэндл которого известен. Наподобие такой ...

Управление чужим окном (отличие регестрационного имени)
Программа (в папке Ex_10) почему-то управляет окном, созданным в Delphi-7 (папка Delp), но не управляет окном, созданным в Lazarus-е (папка...

Управление чужим приложением на Qt5
Пытаюсь получить HWnd объектов в вайбере и вообще не как не получается, если смотреть по классам то они все имеют один и тот же класс...

2
 Аватар для dioxidin
132 / 99 / 11
Регистрация: 21.11.2007
Сообщений: 544
10.06.2008, 15:09
Там, кажется, указан неверный класс. Вместо TButton - Button
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
10.06.2008, 20:31
Да, и еще там NULL вместо NIL.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.06.2008, 20:31
Помогаю со студенческими работами здесь

Управление сторонним окном
Знаю, вопрос заезженный, но так и не смог выполнить нажатие на кнопкy. x:=339; y:=241; SearchHandle := 0; SearchHandle :=...

Управление чужим окном
Прошу помочь... Мне нужно взять текст из ЧужоеОкно-&gt;Memo задать текст я могу HWND hWnd; hWnd = FindWindow(&quot;TForm1&quot;,...

Управление чужим окном и админские права
Писал прогу по управлению чужим окном. Получилось, что на некоторых компах не работают функции SetWindowText и SendMessage. У меня на...

работа с чужим консольным окном C#
Возникла такая заморочка: на шарпе написана небольшая софтинка, которая через Process запускает другую программу, выдает ей входные...

Взаимодействие с чужим окном (клик)
Здравствуйте. подскажите пожалуйста, каким образом я могу из своего приложения послать чужому окну (программа запущена) клик по строке в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru