imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 24.09.2007, 16:45     # 1
nudlles
Newbie
 
Регистрация: 12.01.2005
Сообщения: 39

nudlles Нуль без палочки
delphi, управление чужим приложением

delphi, управление чужим приложением. Нужна информация, желательно подробная.
nudlles вне форума  
Старый 02.10.2007, 13:45     # 2
sflash
Junior Member
 
Аватар для sflash
 
Регистрация: 25.09.2003
Сообщения: 53

sflash Косячил раньше, старается исправиться
Что конкретно имеется ввиду?
sflash вне форума  
Старый 02.10.2007, 16:26     # 3
fockewulf
Newbie
 
Аватар для fockewulf
 
Регистрация: 12.09.2007
Сообщения: 11

fockewulf Косячил раньше, старается исправиться
технология называется COM (Componrnt Object Model) попробуй поискать с таким запросом
fockewulf вне форума  
Старый 03.10.2007, 10:48     # 4
sflash
Junior Member
 
Аватар для sflash
 
Регистрация: 25.09.2003
Сообщения: 53

sflash Косячил раньше, старается исправиться
Через COM можно управлять только если само то приложение поддерживает COM.
sflash вне форума  
Старый 03.10.2007, 14:37     # 5
nudlles
Newbie
 
Регистрация: 12.01.2005
Сообщения: 39

nudlles Нуль без палочки
смысл заключается в том, чтобы передавать определенные команды, как будто они происходят от имени пользователя, но проблема состоит в том, что при использовании функций findwindow(ex) не находится окно и кнопки.
TApplication-TForm1-TPanel Вот что показывает Winsight. Так вот в этой цепочке TApplication я нахожу, а вот TForm1 нет. Кроме того еще winsight не показывает кнопки после TPanel.
nudlles вне форума  
Старый 03.10.2007, 14:48     # 6
nudlles
Newbie
 
Регистрация: 12.01.2005
Сообщения: 39

nudlles Нуль без палочки
Вот что выдает WinSight

Прикрепил картинку...
Изображения
Тип файла: jpg ws.JPG (16.7 Кбайт, 36 просмотров - Кто скачивал? )
nudlles вне форума  
Старый 08.10.2007, 20:23     # 7
yan_kos
Junior Member
 
Аватар для yan_kos
 
Регистрация: 16.07.2005
Адрес: Украина, г. Ровно
Пол: Male
Сообщения: 140

yan_kos Известность не заставит себя ждать
2 nudlles
0. найди утилитку Spy++ идет в поставке с VS6.0 оч полезная вещь, фактически позволяет определить тип, ид, имя любого окна в Винде.
1. Потом посмотри еще такие ф-и GetNextWindow, GetWindow, GetDesktopWindow... как точно ими пользоваться щас не скажу, смотри MSDN...
__________________
Та программа не глючит, которая не написана
yan_kos вне форума  
Старый 26.10.2007, 14:59     # 8
sflash
Junior Member
 
Аватар для sflash
 
Регистрация: 25.09.2003
Сообщения: 53

sflash Косячил раньше, старается исправиться
Цитата:
смысл заключается в том, чтобы передавать определенные команды, как будто они происходят от имени пользователя
Мне кажеться тут надо копаться в сторону сообщений, ведь каждое действие пользователя, будь то нажатие кнопки, перемещение мышки вызывает сообщение windows (Windows Message) в активное окно, а оно уже обрабатывает его типа так:
Перемещение мышки вниз - сообщение WM_MOUSE_DOWN
Перемещение мышки вправо - сообщение WM_MOUSE_RIGHT
Нажатие левой кнопки на мышке - сообщение WM_MOUSE_KEYCLICK_1
Нажатие кнопки - сообщение WM_KEY_DOWN
Отжатие кнопки - сообщение WM_KEY_Up
клик по кнопке - сообщение WM_KEY_PRESS и т.д.
код кнопки смотриться отдельной функцией , к тому же там очередь
Короче подробней поищи данную инфу.
Вот если научишься передавать данные сообщение приложению то тогда поимеешь контроль над ним.
sflash вне форума  
Старый 30.10.2007, 13:56     # 9
alexey_ma
Member
 
Регистрация: 10.03.2002
Адрес: Israel
Сообщения: 245

alexey_ma Нимб уже пробиваетсяalexey_ma Нимб уже пробивается
Для полной эмуляции мыши и клавиатуры вместо посылки сообщений лучше использовать функции :
mouse_event
keybd_event
или заменяющую обе эти функции - SendInput

Однако хочу сказать что задача нетривильная. Даже коммерческие программы которые делают автоматизацию GUI не работают в некоторых случаях.

PS : Могу подогнать примеры поиска окон и эмуляции действий юзера, но не дельфи а на C++
__________________
Best Regards

Последний раз редактировалось alexey_ma; 30.10.2007 в 13:59.
alexey_ma вне форума  
Старый 26.11.2007, 09:23     # 10
sflash
Junior Member
 
Аватар для sflash
 
Регистрация: 25.09.2003
Сообщения: 53

sflash Косячил раньше, старается исправиться
Цитата:
Однако хочу сказать что задача нетривильная. Даже коммерческие программы которые делают автоматизацию GUI не работают в некоторых случаях.
Мне кажется что это из за реализации этих программ, они могут работать не по стандартным событиям Windows, а по своим. Это не сложно сделать, просто дополнительный код. Вот тогда да, не зная этих событий ессно их и не передашь.
sflash вне форума  
Старый 29.12.2007, 01:04     # 11
LAndrew2
Full Member
 
Аватар для LAndrew2
 
Регистрация: 15.11.2002
Адрес: Moscow
Сообщения: 834

LAndrew2 Луч света в тёмном царствеLAndrew2 Луч света в тёмном царствеLAndrew2 Луч света в тёмном царствеLAndrew2 Луч света в тёмном царствеLAndrew2 Луч света в тёмном царстве
господа, есть след. задача: при старте своей программы запустить стороннюю программу и сделать её "частью" своей. А именно: скрыть заголовок, поместить окно чужой программы "на форму" своей программы, сделать так, чтоб при изменении положения своей программы сохранялось положение чужой программы относительно формы, чтоб при сворачивании моей формы — чужое тож сворачивалось, при восстановлении — восстанавливалось и т.п.
есть готовое решение?

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

спасибо всем заранее.
LAndrew2 вне форума  
Старый 06.03.2008, 12:20     # 12
sflash
Junior Member
 
Аватар для sflash
 
Регистрация: 25.09.2003
Сообщения: 53

sflash Косячил раньше, старается исправиться
Опять же делается через события.
CreateProcess
RunProcess - потом получаешь хендл (Handle) процесса
Затем этому процеccу по его хендлу передаешь события Minimize и Maximize соответсвенно при сворачивании и разворачивании своей программы.

Про скрытие заголовка. Когда у тебя будет хендл окна, сделаешь с ним что хочешь. Хочть зеленым цветом закрась все
sflash вне форума  
Старый 07.03.2008, 19:51     # 13
Nerey_ser
Junior Member
 
Аватар для Nerey_ser
 
Регистрация: 30.03.2006
Адрес: Беларусь
Сообщения: 79

Nerey_ser Путь к славе только начался
Код:
Public Sub StickWindow(ParentWindow As Long, ChildWindow As Long, Optional ByVal NoActivate As Boolean = True, Optional ByVal NoShow As Boolean = False)
  Dim Style As Long
  
  Style = GetWindowLong(ChildWindow, GWL_STYLE)
  Style = Style Or WS_CHILD
  SetWindowLong ChildWindow, GWL_STYLE, Style
  
  SetParent ChildWindow, ParentWindow
  SetWindowLong ChildWindow, GWL_HWNDPARENT, ParentWindow
  
  Style = SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE
  
  If NoActivate Then Style = Style Or SWP_NOACTIVATE
  If Not NoShow Then Style = Style Or SWP_SHOWWINDOW
  SetWindowPos ChildWindow, _
    HWND_TOP, 0&, 0&, 100, 100, _
    Style
End Sub
Вот это код на VB. Что он делает: делает чужое окно дочерним к нужному, т.е. "цепляет" его и делает частью.
Объявления функции тоже могу выковырять, но, опять же, на VB.

А вообще, лучше оращаться на форумы, посвященные программированию
sflash, не обижайся, но WM_MOUSE_DOWN - опускание кнопки мыши, а WM_MOUSE_RIGHT вообще такого не знаю.
__________________
Дай человеку рыбу - он будет сыт один день. Научи человека рыбачить - он будет сыт всю жизнь.
Nerey_ser вне форума  
Старый 07.03.2008, 23:28     # 14
helldomain
Administrator
 
Аватар для helldomain
 
Регистрация: 13.05.2002
Сообщения: 11 227

helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
Poprobuite podumat o reshenijah w duhe Automation ili o freimworkah.
__________________
Осколки прошлого, как снег, закрутит ураган времён,
В ушедший день для нас навек, обрушив мост,
Оставив в наших душах след, тьма уплывёт за горизонт,
И в чистом небе вспыхнет свет, свет новых звёзд.
helldomain вне форума  
Старый 11.03.2008, 09:12     # 15
sflash
Junior Member
 
Аватар для sflash
 
Регистрация: 25.09.2003
Сообщения: 53

sflash Косячил раньше, старается исправиться
Цитата:
sflash, не обижайся, но WM_MOUSE_DOWN - опускание кнопки мыши, а WM_MOUSE_RIGHT вообще такого не знаю.
Писал по памяти, может что то и перепутал Так что не смотри на эту информацию как на 100% верную, я только так сказать указал путь, где копать.
sflash вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 15:10.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.