2014-06-23 4 views
1

J'ai tenté d'utiliser la fonction d'assistance à distance par offre non sollicitée intégrée dans les fenêtres de mon application depuis des mois sans succès. Pour être clair, c'est exactement la même fonctionnalité que msra/offerRA computername. où un expert peut offrir une assistance à distance au novice sans que le novice doive créer manuellement une chaîne de tickets. Pour autant que je sache, ceci est accompli en utilisant DCOM pour communiquer des informations en utilisant RAserver et ensuite MSRA prend le relais pour la connexion réelle. J'ai confirmé que je peux utiliser MSRA/OfferRA ComputerName pour que la fonctionnalité soit présente.Assistance à distance Dot Net Offer

J'ai essayé beaucoup API/DLL et je ne peux toujours pas comprendre comment offrir assistence à distance dans OFFERRA

Je TRIE les modules suivants. AxRDPCOMAPILib RDPCOMAPILib RAServerLib RendezvousSessionLib

i ont essayé tant de variations différentes de code son pas possible de les poster tous ici. J'ai besoin d'aide pour savoir comment utiliser la fonctionnalité OfferRA à l'aide de Windows Remote Assistance. Je ne veux pas créer une application peer to peer. Je voudrais que mon application se connecte à l'assistance à distance sur l'ordinateur client en utilisant le MSRA qui est installé sur leur ordinateur à partir de Microsoft.

Toute aide serait appréciée.

Tentative Code1:

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

Résultats:

Une première chance exception de type 'System.ArgumentException' a eu lieu dans AxRDPCOMAPILib.dll

Le programme « [4936] Enterprise.vshost. exe: Program Trace 'a quitté avec le code 0 (0x0).

Le programme '[4936] Enterprise.vshost.exe' s'est terminé avec le code -1073741819 (0xc0000005) 'Violation d'accès'.

Update 2:

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

Le 0x1c60 de fil est sorti avec le code 259 (0x103).

Le programme '[7520] Enterprise.vshost.exe: Program Trace' a quitté le code 0 (0x0).

Le programme '[7520] Enterprise.vshost.exe' s'est terminé avec le code -1073741819 (0xc0000005) 'Violation d'accès'.

+1

Quel est le problème? –

+0

Je n'arrive pas à utiliser OfferRA en utilisant les bibliothèques. RAserverLib a une interface IIMOfferRA mais je ne peux pas l'utiliser. Rien ne se passe. aucun journal des événements et notant dans la fenêtre de sortie. Le programme '[6388] Enterprise.exe: Program Trace' est sorti avec le code 0 (0x0). Le programme '[6388] Enterprise.exe' s'est terminé avec le code 0 (0x0). –

Répondre

1

Assistance à distance à l'aide du MSRA Exe et de ses arguments.

Ici, j'ai conçu une classe et une forme, et il vous donne les fonctionnalités suivantes,

  1. offre assistance à distance à une machine
  2. Demandez de l'aide à distance.(Inviter quelqu'un pour vous aider)

Design Un formulaire avec les commandes suivantes,

  1. Textbox pour prendre l'adresse IP ou nom de l'ordinateur pour se connecter
  2. Bouton 1. Pour vous connecter à la machine à distance pour offrir à distance Assistance
  3. Bouton 2. Demander ou inviter quelqu'un à vous aider.

code derrière le formulaire:

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; 
     }    
    } 
} 

Nous avons deux boutons ici et ils envoient la variable booléenne à la fonction de classe pour différencier entre l'offre d'aide et de demander de l'aide.

code sous le fichier de classe: 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

Au lieu de simplement coller du code, votre réponse pourrait être plus utile si vous avez expliqué comment il résout le problème. – crafter

+0

Il s'agit d'une solution simple, qui utilise les arguments MSRA pour fournir une assistance à distance et demander de l'aide à distance en un clic. Le code derrière les boutons de commande appelle MSRA et transmet deux arguments différents pour les fonctionnalités d'assistance à distance et de demande d'assistance. –

+0

Merci. Je vois qu'ils ont été mis à jour aussi. BTW, Ce n'était pas moi qui a voté en bas. Il est triste que beaucoup le fassent sans laisser de commentaire pourquoi. Il serait utile de savoir pourquoi et d'apprendre de cela. – crafter