powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / Обратная связь сервер клиент.
3 сообщений из 3, страница 1 из 1
Обратная связь сервер клиент.
    #39409389
Wizard_e
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Вопрос не только связан с администрированием, но возможно кто-нить сможет помочь. Есть MS SQL Server, есть клиентское приложение, написанное на PowerBuilder. При добавлении записи приложением стороннего производителя в БД на SQL Server, необходимо сообщить клиентскому сообщению на определённом компе в реальном времени. Постоянно select-тить таблицу по таймингу - не вариант и не наш метод. Поэтому, воспользовался утилитой wmic. Логикой на SQL Server после добавлении записи без проблем вычисляется пользователь и хост. Дальше запускаю, написанную на C# програмку

Код: sql
1.
2.
3.
4.
5.
6.
declare @EXEC varchar(1024)

--Формируем строку, которая используя WNI запускает exe-шник.
--user - под кем будет запущен процесс, password - его пароль.
SET @EXEC = 'exec master.dbo.xp_cmdshell "wmic /node:' + '''comp_n'' + ' /user:' + '''user_m''' + ' /password:' + '''qwerty'' + ' process call create ' + '''proga.exe''' + '"'
exec (@EXEC) as USER = 'dbo';



Что бы было привычнее админам, это полный эквивалент следующей командной строки: wmic /node:'comp_n' /user:'user_m' /password:'qwerty' process call create 'proga.exe'

user_m, это именно тот товарищ, который работает на компе comp_n. Всё это на SQL-сервере есть.

proga.exe должна послать окну приложения PowerBuilder сообщение, а приложение получив его обратится к SQL Server и получить нужную информацию.

Скрипт proga.exe, самое основное
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
       
        static void Main()
        {
            const uint WM_USER = 1024;//Константа, с которой начинаются пользовательские сообщения
            int ret; 

            IntPtr ptr = FindWindow(null, "Приложение на PowerBuilder");/*Ищу ссылку на окно по названию названия как в taskmgr.
            Первый параметр null означает, что окно не вложенное, т. е. оно есть на панели задач, грубо говоря, родительским 
            является рабочий стол.*/
            if (ptr.ToInt32() > 0)//Если окно нашлось, то шлю сообщение
            {
                ret = PostMessage(ptr, WM_USER + 1, 9, 9); /*Шлю сообщение ptr - ссылка на окно, 
                WM_USER + 1 - номер пользовательского события, две следующих цифры - параметры, здесь они вообще не важны.*/
            }
            return;
        



Команда на T-SQL проходит без нареканий, процесс proga.exe появляется в taskmgr удалённого компа и исчезает. При запуске proga.exe на компе руками, приложение на PowerBuilder сообщение получает. Но вот вот всё вместе не работает. Я вычитал, что wmic, хоть и запускает приложение от нужного пользователя, но типа в другой сессии, поэтому окно с нужным названием и не находится. Вроде так и есть - по taskmgr вижу, что пользователь нужный, а вот код сеанса другой. Может подскажет кто какой параметр wmic или другую какую утилиту, которая удалённо запускает exe-шник, подсоединяясь к сессии пользователя.
...
Рейтинг: 0 / 0
Обратная связь сервер клиент.
    #39410582
Алымов Анатолий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая версия SQL Server? Возможно подойдет решение, используя события https://msdn.microsoft.com/library/ms175110.aspx

Или ещё что подобное у MS есть. У Oracle, например, есть несколько механизмов оповещения клиентов стандартными способами.
...
Рейтинг: 0 / 0
Обратная связь сервер клиент.
    #39411100
Wizard_e
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алымов Анатолий, версия MS SQL 2008, т. е. позволяет пользоваться уведомлениями. Попробую покопать в этом направлении. Спасибо.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Windows [игнор отключен] [закрыт для гостей] / Обратная связь сервер клиент.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]