2014-06-23 2 views
1

Я пытаюсь использовать функцию незапрошенных предложений Remote Assistance, встроенную в окна в моем приложении уже несколько месяцев, без каких-либо успехов.Dot Net Offer Удаленный помощник

, чтобы быть ясным, это точно такая же функциональность, как msra/offerRA имя_компьютера. , где эксперт может предлагать удаленную помощь новичкам без новичков, которые должны вручную создать маршрутную строку. Насколько я знаю, это достигается с помощью DCOM для передачи информации с использованием RAserver, а затем MSRA берет на себя фактическое соединение. Я подтвердил, что могу использовать MSRA/OfferRA ComputerName, так что функция доступна.

Я пробовал много API/DLL, и я до сих пор не могу понять, как предложить удаленное Содействие в OFFERRA

У меня есть TRIE следующих модулей. AxRDPCOMAPILib RDPCOMAPILib RAServerLib RendezvousSessionLib

я попытался так много различных вариантов кода его не представляется возможным разместить их все здесь. Мне нужна помощь, чтобы знать, как использовать функциональность OfferRA с помощью Windows Remote Assistance. Я НЕ хочу привязывать одноранговое приложение. я хотел бы, чтобы мое приложение подключилось к удаленной помощи на клиентском компьютере, используя MSRA, установленную на их компьютере от Microsoft.

Любая помощь будет оценена по достоинству.

Покушение Код1:

 AxRDPViewer Viewer = new AxRDPViewer(); 
     Viewer.BeginInit(); 
     Viewer.SuspendLayout(); 
     RemoteAssistanceWindow.Child = Viewer; 
     Viewer.ResumeLayout(); 
     Viewer.EndInit(); 
     ((AxRDPViewer)RemoteAssistanceWindow.Child).Connect("DZ0006", "MySecretUsername", "MySecretPassword"); 

Результаты:

Первый шанс, исключение типа 'System.ArgumentException' произошло в AxRDPCOMAPILib.dll

Программа «[4936] Enterprise.vshost. exe: Program Trace 'вышел с кодом 0 (0x0).

Программа '[4936] Enterprise.vshost.exe' вышла с кодом -1073741819 (0xc0000005) «Нарушение прав доступа».

Обновление 2:

 RDPViewer Viewer = new RDPViewer(); 
     IMRequestRA Request = new IMRequestRA(); 
     Request.SetRendezvousSession(Viewer); 

Нить 0x1c60 завершился с кодом 259 (0x103).

Программа '[7520] Enterprise.vshost.exe: Program Trace' вышла с кодом 0 (0x0).

Программа '[7520] Enterprise.vshost.exe' вышла с кодом -1073741819 (0xc0000005) «Нарушение прав доступа».

+1

В чем проблема? –

+0

Я не могу использовать OfferRA, используя библиотеки. RAserverLib имеет интерфейс IIMOfferRA, но я не могу его использовать. Ничего не произошло. нет журналов событий и записи в окне вывода. только это Программа «[6388] Enterprise.exe: Program Trace» вышла с кодом 0 (0x0). Программа '[6388] Enterprise.exe' вышла с кодом 0 (0x0). –

ответ

1

Удаленный помощник с использованием MSRA Exe и его аргументов.

Здесь я разработал класс и форму, и это дает вам следующие функциональные возможности,

  1. предложение удаленного помощника к машине
  2. Спроси Remote Help.(Пригласить кого-нибудь помочь вам)

Проектировать формы со следующими контролей,

  1. Textbox для приема IP или имя компьютера для подключения
  2. кнопку 1. Для подключения к удаленному компьютеру для предоставления дистанционного Помощь
  3. Кнопка 2. Спросить или пригласить кого-нибудь, чтобы помочь.

Код Позади в Форме:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Drawing; 
using System.Text; 
using System.Windows.Forms; 

namespace RemoteAssist 
{ 
    public partial class FrmConnect : Form 
    { 
     public FrmConnect() 
     { 
      InitializeComponent(); 
     } 

    private void btnConnect_Click(object sender, EventArgs e) 
     { 
      RemoteConnect remoteConnect = new RemoteConnect(); 
      Boolean status = remoteConnect.StartRemoteAssistance(txtComputerName.Text.ToString(), true,false); 
      if (status == false) 
      { 
System.Windows.Forms.MessageBox.Show("Unable to Connect to the Remote Machine.Please try Again later."); 
      } 
     } 

     private void BtnInvite_Click(object sender, EventArgs e) 
     { 
      RemoteConnect remoteConnect = new RemoteConnect(); 
      Boolean status; 
      status = remoteConnect.StartRemoteAssistance(txtComputerName.Text.ToString(), false, true); 

      if (status == false) 
      { 
       System.Windows.Forms.MessageBox.Show("Unable to Establish Connection, Please try Again later."); 
      } 
     } 

     private void FrmConnect_Load(object sender, EventArgs e) 
     { 
     } 

     private void txtComputerName_TextChanged(object sender, EventArgs e) 
     { 
      txtComputerName.CharacterCasing = CharacterCasing.Upper; 
     }    
    } 
} 

У нас есть две кнопки здесь и они посылают булеву переменную в функцию класса для различения предложить помощь и просить помощь.

Код по классу Файл: RemoteConnect

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace RemoteAssist 
{ 
    class RemoteConnect 
    { 
     public Boolean StartRemoteAssistance(String strMachinename, Boolean offerHelp, Boolean askForHelp) 
     {    
      System.Diagnostics.Process process = new System.Diagnostics.Process();       

      System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); 
      startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Maximized;    
      startInfo.FileName = "msra.exe"; 

      // Offer Remote Assitance 
      if (offerHelp == true) 
      { 
       startInfo.Arguments = "/offerRA " + strMachinename; 
      } 

      //ASK for Remote Assistance 
      if (askForHelp == true) 
      { 
       startInfo.Arguments = "novice"; 
      } 

      try 
      { 
       process.StartInfo = startInfo; 
       process.Start(); 
       return true; 
      } 
      catch (Exception ex) 
      { 
       //System.Windows.Forms.MessageBox.Show("Error Occured while trying to Connect" + ex.Message); 
       return false; 
      }   
     } 
    } 
} 
+1

Вместо того, чтобы просто вставлять код, ваш ответ может быть более полезным, если вы объясните, как он решает проблему. – crafter

+0

Это прямое решение, в котором используются аргументы MSRA для предоставления удаленной помощи и запроса удаленной справки одним щелчком мыши. Код, расположенный за кнопками Command, вызывает MSRA и передает два разных аргумента для функций Remote Assistance и Ask for Assistance. –

+0

Спасибо. Я вижу, что они также были обновлены. Кстати, я не проголосовал. Печально, что многие делают это, не оставляя комментариев почему. Было бы полезно знать, почему и учиться на этом. – crafter