Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > C++ Builder
Перезагрузить страницу Отправка сообщения приложению написанному на Visual FoxPro
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
SMoleTT SMoleTT вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.01.2006
По умолчанию Отправка сообщения приложению написанному на Visual FoxPro - 26.01.2006, 21:52

Уважаемые гуру, нужна помощь.
Проблема следующая:
программа написанная на С++ Builder 5 (пишу я) должна отправить сообщение программе написанной на Visual FoxPro(пишет другой человек). Вроде проблем быть не должно , а нет. Я отправляю сообщение WM_CHAR(WM_KEYDOWN) через PostMessage конкретно для его окна, а он должен "поймать" его через событие KeyPress. Однако этого не происходит. блин. Не ловит его прога это событие. Хотя к примеру стандартный Калькулятор ловит его без проблем. еще раз блин. Пробовал закинуть код символа в буфер клавиатуры через 05h int 16h. неполучается. Builder ругается на команду int 16h. Как быть?
С благодарностью приму все мысли по этому поводу.
Ответить с цитированием
  (#2 (permalink)) Старый
Jonano Jonano вне форума
Специалист
 
Аватар для Jonano
 
Сообщений: 3,541
Сказал(а) спасибо: 2
Поблагодарили 14 раз(а) в 14 сообщениях
Регистрация: 19.04.2005
По умолчанию Re: Отправка сообщения приложению написанному на Visual FoxP - 26.01.2006, 21:56

Цитата:
Originally posted by SMoleTT
[b]Пробовал закинуть код символа в буфер клавиатуры через 05h int 16h. неполучается. Builder ругается на команду int 16h.
А в Виндах нельзя юзать прерывания DOS. Тем более работа с клавой там основана не на буфере. А чтоб не ругалось, надо писать
Код:
_asm
{
...
   int 16h;    //всё равно работать не будет, но скомпилится
...
}
А хэндл окна, которому ты посылаешь сообщение, ты как узнаёшь?
Ответить с цитированием
  (#3 (permalink)) Старый
SMoleTT SMoleTT вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.01.2006
По умолчанию 26.01.2006, 22:04

хендл определяю
hwnd=::FindWindow(NULL,....
Ответить с цитированием
  (#4 (permalink)) Старый
Jonano Jonano вне форума
Специалист
 
Аватар для Jonano
 
Сообщений: 3,541
Сказал(а) спасибо: 2
Поблагодарили 14 раз(а) в 14 сообщениях
Регистрация: 19.04.2005
По умолчанию 26.01.2006, 22:09

А так то окно сообщения от клавы принимает?
Ответить с цитированием
  (#5 (permalink)) Старый
SMoleTT SMoleTT вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.01.2006
По умолчанию 26.01.2006, 22:18

>>А так то окно сообщения от клавы принимает?

В смысле если руками нажимать? Отлично обрабатывает.
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Jonano Jonano вне форума
Специалист
 
Аватар для Jonano
 
Сообщений: 3,541
Сказал(а) спасибо: 2
Поблагодарили 14 раз(а) в 14 сообщениях
Регистрация: 19.04.2005
По умолчанию 27.01.2006, 13:42

А может надо не через KeyPress. Какие там ещё есть события, связанные с клавой?
Ответить с цитированием
  (#7 (permalink)) Старый
SMoleTT SMoleTT вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.01.2006
По умолчанию 27.01.2006, 21:23

Цитата:
Originally posted by Jonano
[b]Какие там ещё есть события, связанные с клавой?
В том то и дело что больше никаких стандартнах обработчиков нет. А написать нестандартный не получается.
Однко определенный результат есть. Его приложение откликается на
WM_SYSCHAR. Вот только какой код ему не посылаешь, обработчик выдает -"код - 0". Блин.
Ответить с цитированием
  (#8 (permalink)) Старый
Jonano Jonano вне форума
Специалист
 
Аватар для Jonano
 
Сообщений: 3,541
Сказал(а) спасибо: 2
Поблагодарили 14 раз(а) в 14 сообщениях
Регистрация: 19.04.2005
По умолчанию 28.01.2006, 14:09

Цитата:
Originally posted by SMoleTT
[b]Вот только какой код ему не посылаешь, обработчик выдает -"код - 0". Блин.
Код = 0 потому, что системные клавиши не имеют ASCII-кода. У них только scan-код.
С сообщением WM_KEYDOWN (WM_SYSCHAR походу тоже) приходит scan-код. C WM_CHAR - ASCII-код.
Почему этот KeyPress так себя ведёт, честно говоря не знаю, с FoxPro не работал. А на другом языке написать прогу никак?
Ответить с цитированием
  (#9 (permalink)) Старый
SMoleTT SMoleTT вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.01.2006
По умолчанию 28.01.2006, 17:23

[/quote] А на другом языке написать прогу никак?[/quote]
Исключено. Проект очень большой, и пишенся уже несколько лет. А я написал модуль для работы со сканером штрих-кода. И когда сканер срабатывает, мне надо отправить сообщение главному приложению. По этому сигналу он вызывает функцию которая возвращает прочитанный код.
Ответить с цитированием
  (#10 (permalink)) Старый
Jonano Jonano вне форума
Специалист
 
Аватар для Jonano
 
Сообщений: 3,541
Сказал(а) спасибо: 2
Поблагодарили 14 раз(а) в 14 сообщениях
Регистрация: 19.04.2005
По умолчанию 28.01.2006, 17:46

А зачем тогда использовать WM_CHAR. Другими сообщениями нельзя?
Тем более есть ещё несколько способов передачи данных между приложениями. Не знаю, можно ли их применять в FoxPro.
Ответить с цитированием
  (#11 (permalink)) Старый
SMoleTT SMoleTT вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.01.2006
По умолчанию 28.01.2006, 23:33

В том то и дело что и я незнаю какие еще сообщения можно отправить (вернее я могу отправить любое сообщение, в том числе и сообщение пользователя типа WM_User+...). Проблема обработать это сообщение в Фоксе. Взяли самое простое KeyPress, а оно, блин, оказалось не самое простое... блин. Тем более что не я диктую условия... Мне сказали KeyPress, code 35, значит надо отправить KeyPress code 35 и баста! Блин!!! Пока получилось KeyPress code 0. Буду тра***ся дальше. Спасибо за поддержку.
Ответить с цитированием
  (#12 (permalink)) Старый
Gedeon Gedeon вне форума
Member
 
Сообщений: 631
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.06.2003
По умолчанию 30.01.2006, 16:33

Я так понимаю Вам надо кнопку нажать, ну поставьте фокус на окно фоксовской проги и заюзайте keybrd_event
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
SMoleTT SMoleTT вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.01.2006
По умолчанию 30.01.2006, 18:55

Дело в том что никакой кнопки нет. Есть форма, вернее приложение, которое должно определенным способом отреагировать на сообщение.
Или если еще проще - необходимо программным способом вызвать обработчик события KeyPress фоксовского приложения.
Ответить с цитированием
  (#14 (permalink)) Старый
Gedeon Gedeon вне форума
Member
 
Сообщений: 631
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.06.2003
По умолчанию 31.01.2006, 09:47

Ну так а я о чем?
Поставьте фокус на фоксовское приложение, заюзайте апи-функцию
Код:
VOID keybd_event(          
    BYTE bVk,
    BYTE bScan,
    DWORD dwFlags,
    PTR dwExtraInfo
);
Которая сэмулирует нажатие нужной клавиши. А фокс соотв. отловит его на кейпресе.
Код 35 если не ошибаюсь цифра 5.
Ответить с цитированием
  (#15 (permalink)) Старый
SMoleTT SMoleTT вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.01.2006
По умолчанию 05.02.2006, 21:13

Цитата:
Поставьте фокус на фоксовское приложение...
Пробую:
Код:
::SetFocus(::FindWindow (NULL,"Test"));
возвращает NULL.

Читаем:

"Если.... окно не связано с очередью сообщений вызывающего потока, величина возвращаемого значения - ПУСТО (NULL)."

Отсюда вопрос:
Как связать окно с очередью сообщений вызывающего потока?
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SSL. Отправка сообщения. Konstatine .NET 0 13.02.2012 13:28
Пишу на Visual FoxPro и на VBA Access Frolov Oleg Задания за деньги 0 17.09.2008 21:11
Отправка сообщения по локальной сети Goose .NET 4 19.09.2007 13:32
Доступ к dbf (Visual FoxPro) через ODBC redex Другие СУБД 0 26.06.2006 10:41
Отправка сообщения g++ and email vilru C++ на Unix 2 27.03.2006 12:14
Экспорт таблиц из базы в формат Visual Foxpro Blackpiglet MSSQL Server 0 14.10.2005 06:29
Где найти учебник по Visual FoxPro tusha Другие СУБД 1 12.07.2005 14:30
Visual FoxPro 8.0(SP1) как исправить ошибку Vid Другие СУБД 3 27.09.2004 19:21
Пароль к базе данных в Microsoft Visual FoxPro Мускатный Орешек C++ Builder 7 20.07.2004 02:07
Отправка сообщения на свой же E-mail anzor C++ Builder 11 30.06.2004 02:09
Отправка сообщения пользователю hgh Java 1 12.01.2004 06:20
Создание таблице в Visual FoxPro Anonymous Другие СУБД 1 07.10.2003 16:39



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов