Есть ли способ выполнить мое приложение wpf с помощью триггера msmq? - PullRequest
0 голосов
/ 10 апреля 2019

Мой исполняемый файл (C # WPF Solution) не работает должным образом при вызове MSMQ Trigger.

Я отправляю сообщение с уведомлением в очередь (с именем sometestname): у меня есть класс с именем MyNotification, который включаетэтот статический метод:

   public class MyNotification {
    public static void SendNotification(String destination,String msg){
    string s = @".\Private$\sometestname" + "-" + destination;
    if(!MessageQueue.Exists(s))
    MessageQueue.Create(s,false);
    MessageQueue q = new MessageQueue(s);
    Message msg = new Message();
    msg.Body = msg;
    q.Send(message);}
    }

Решение WPF, использующее этот класс:

void ButtonBase_OnClick(object sender,RoutedEventArgs s){ MyNotification.SendNotification("user1","testing message");}

.exe, который будет запущен из триггера (при получении сообщения):

  Public MainWindow(){
     String queueName = @".\Private\sometestname-user1";
    MessageQueue msgq = new MessageQueue(queueName,false);
    try{
    msgq.Purge();
    }
    catch(MessageQueueException e){
    string filename = @"C:\Users\user1\Desktop\error.txt";
    File.Create(filename);
    }
}

Обратите внимание: сообщение поступает в очередь, и исполняемый файл показывается работающим в фоновом режиме, но он ловит ошибку.Когда исполняемый файл выполняется вручную, он выполняется нормально без каких-либо ошибок (т.е. файл не создается).Но когда он запускается из триггера MSMQ (включает правило, запускающее автономный исполняемый файл invoke при получении сообщения), он ловит исключение (т. Е. Файл создается).

1 Ответ

1 голос
/ 10 апреля 2019

Я думаю, вы могли бы создать службу Windows, которая запускает ваш exe.Вместо триггера MSMQ служба будет прослушивать msmq, чтобы появилось сообщение.

Служба Windows все еще не может просто запустить приложение для настольного компьютера.По крайней мере, не прямым путем.

Он может использовать подход, описанный здесь:

https://www.codeproject.com/Articles/35773/Subverting-Vista-UAC-in-Both-and-bit-Archite

В этой теме есть комментарий от кого-то, что он получилподход к работе на Win10.

Как запустить программу EXE из службы Windows, используя C #?

Сказав это.

Вы будетенеобходимо написать, установить и запустить эту службу Windows.

Возможно, более простым подходом было бы минимизировать запуск приложения wpf и скрыть значок панели задач при входе пользователя в систему.Затем он прослушивает сообщение msmq.Когда он получает один, он показывает окно.

...