Пользовательская функция MySQL для отправки сообщения Windows - PullRequest
1 голос
/ 21 октября 2010

G'Day,

Я хочу использовать вызов Windows API Postmessage () из MySQL UDF в MySQL 5.1.51 (XP SP3). Я знаю, что UDF (написанный в Delphi 2006) работает, устанавливая фиктивный результат для UDF.

Синтаксис UDF принимает два целочисленных параметра, один для дескриптора окна, а другой для номера сообщения. Однако вызов PostMessage () из моего UDF вызывает исключение в mysqld, и служба останавливается.

Есть идеи или указатели? В качестве альтернативы, если кто-то может сказать мне, как я могу смоделировать IB Events для MySQL через AnyDAC и Delphi ИЛИ альтернативный подход к получению уведомления об изменении записи в базе данных, тогда, пожалуйста, покажите мне свет.

- Донован

Ответы [ 3 ]

2 голосов
/ 21 октября 2010

Вы столкнетесь с проблемами при таком подходе, главным образом из-за того, что обмен сообщениями будет работать только с одним и тем же уровнем доступа и в рамках одного сеанса на одном компьютере. Вы бы лучше обслуживались с помощью других методов, таких как сокеты TCPIP, MailSlots, файлы с отображением в памяти и т. Д.

Чтобы лучше всего имитировать сообщение, я бы использовал TCPIP UDP . Хорошая легкая библиотека, которую я использовал в прошлом: Synapse . Библиотека синапсов из SVN довольно хорошо работает с последними версиями Delphi. Класс, который вы хотите использовать для этого, - TUDPBlockSocket.

1 голос
/ 21 октября 2010

В качестве альтернативы сообщениям Windows или TCP / IP вы можете рассмотреть named pipes ответ на этот вопрос об отправке информации между двумя программами Delphi и на этот вопрос о том, какие именованные каналы есть .

- Йерун

0 голосов
/ 23 октября 2010

Несмотря на то, что у меня был успех по маршруту UDF / Windows Pipe, у меня была еще одна идея, заключающаяся в том, что я мог использовать инфраструктуру информационных сообщений (?) В MySQL. Смотри https://stackoverflow.com/q/3992779/223742

...