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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 24.11.2009, 19:49   #1
rekrow
Пользователь
 
Регистрация: 08.10.2009
Сообщений: 16
По умолчанию работа с SendMessage

Уважаемые программисты,помогите разрешить один вопросик,пожалуйста.
Возможно ли выполнять один код для двух-трех разных приложений одновременно,но так чтобы можно было свободно пользоваться мышью?Почему я про мышь упомянул,просто код использует мышь(вернее клик мыши по заданным координатам).Я что-то слышал про оператор SendMessage,но что-то не могу найти полной инфы по пользованию ею.Возможна ли реализация такой мысли???
Спасибо всем,кто подможет
rekrow вне форума
Старый 24.11.2009, 20:13   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

вся инфа внизу, еще есть поиск...
да возможно
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума
Старый 24.11.2009, 20:30   #3
rekrow
Пользователь
 
Регистрация: 08.10.2009
Сообщений: 16
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
вся инфа внизу, еще есть поиск...
да возможно
Понимаю,что выносит мозг,когда люди не пользуются поиском но я задал конкретный вопрос,что возможна ли такая реализация,просто если нет,то я не буду тратить время на этот способ и буду искать другие,и надеялся,что кто-нибудь встречался с таким вопросом,вот.
Тогда еще раз задам вопрос,можно ли сделать чтобы мышь была свободна,а код выполнялся для разных окон?
Спасибо за терпение
rekrow вне форума
Старый 24.11.2009, 21:03   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

rekrow
будьте любезны прокрутить движок вашего браузера в самый низ страницы, там в табличке будут три нижние ссылки с вариантами применения Sendmessage(), если сложно, то вот две сразу 1 2

Цитата:
но я задал конкретный вопрос,что возможна ли такая реализация
отвечаю вполне конкретно, да возможно.

что касается вашего
Цитата:
Почему я про мышь упомянул,просто код использует мышь(вернее клик мыши по заданным координатам)
о каком коде вы упомянули так и осталось загадкой.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 24.11.2009 в 21:08.
raxp вне форума
Старый 24.11.2009, 21:18   #5
rekrow
Пользователь
 
Регистрация: 08.10.2009
Сообщений: 16
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
rekrow

что касается вашего
о каком коде вы упомянули так и осталось загадкой.
Код наипростейший,выполняется серия кликов по конкретным(заданным) координатам в области окна(объектами кликов не являются ни кнопки,ни текстовые окна и т.д.).
Он прекрасно выполняет свою функцию на одном окне,но нужно чтобы выполнялись эти же действия на нескольких окнах одновременно(по функциональности окна одинаковые,но от разных приложений),к тому же мой код полностью парализует работу мыши,т.е. выполняя заданный код,она полностью блокирует работу на компе,а нужно чтобы мышь оставалась свободной.

Последний раз редактировалось rekrow; 24.11.2009 в 21:23.
rekrow вне форума
Старый 24.11.2009, 23:32   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Итак, так как большинство наверняка с этим не сталкивались поясню подробней... сам код на api:
Код:
 
 postmessage(findwindow('TForm1',nil),WM_LBUTTONDOWN,0,(200 shl 16)+ 200); // X= 200, Y= 200
 postmessage(findwindow('TForm1',nil),WM_LBUTTONUP,0, (200 shl 16)+ 200)
пошлет нажатие и отжатие левой кнопки мыши в определенный хэндл с заданными координатами, т.е. в данном случае мы работаем с функой:
Код:
 postmessage(hwnd, WM_LBUTTONDOWN, wparam, lparam)
где hwnd - хэндл нужного нам окна, WM_LBUTTONDOWN - сообщение что нажимаем кнопку мыши, wparam - параметры зап. в nil, lparam - координаты мыши X,Y. Причем: X - СТАРШИЙ БАЙТ LPARAM, Y - МЛАДШИЙ (отсюда смещение, см. выше)

Теперь почему postmessage, а не sendmessage... по-большому счету разницы никакой, НО... если вы используете sendmessage, то функа ждет пока окну которому вы посылаете отработает команду, а postmessage не ждет, отсюда получается что последняя работает быстрее...

зы: думаю как найти хэндлы вы знаете, еще можете использовать enumwindows
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 24.11.2009 в 23:34.
raxp вне форума
Старый 25.11.2009, 08:56   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
то функа ждет пока окну которому вы посылаете отработает команду,
Вообще-то SendMessage не просто ждет, а ждет когда окно на посланное сообщение вернет результат его исполнения.
Так что разница большая. Я выхватывл окна которые на WM_CHAR при SendMessage реагировать не хотели, а только на postMessage работали правльно.
I'm learning to live...
Stilet вне форума
Старый 25.11.2009, 09:20   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Вообще-то SendMessage не просто ждет, а ждет когда окно на посланное сообщение вернет результат его исполнения.
сие и имелось ввиду.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума
Старый 25.11.2009, 13:42   #9
rekrow
Пользователь
 
Регистрация: 08.10.2009
Сообщений: 16
По умолчанию

Спасибо,буду эксперементировать

А еще вопрос:
делаю:

bmp:=TBitmap.Create;
bmp.Height:=500;
bmp.Width:=500;
DC:=GetDC(findwindow('Notepad','fai l.info - Блокнот'));
bitblt(bmp.Canvas.Handle, 0, 0, bmp.Width, bmp.Height,DC, 0, 0, SRCCOPY);

если окно развернуто,то захват изображения делает корректно,а если нет,то просто белое изображение.Как сделать чтобы изображение захватывалось по указанному хэндлу,даже если окно свернуто?
rekrow вне форума
Старый 25.11.2009, 13:48   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

придерживайтесь правила: 1 вопрос - 1 тема
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Параметры SendMessage Jenya Win Api 4 11.12.2010 19:15
SendMessage что и как bebecap Win Api 6 03.10.2009 19:22
Проблемы с SendMessage Ronder Помощь студентам 6 27.08.2009 22:06
Не работает SendMessage MaTBeu Win Api 6 01.10.2008 19:00