none
Both local and remote Microsoft pinyin IME show candidate words list in my own remoteapp client? RRS feed

  • Question

  • I am using the Remote Desktop ActiveX control interface provided by Microsoft to develop an RDP client for remoteapp scenarios with C#. When using it to open a remoteapp, and switch to Microsoft Pinyin input method locally, the remote desktop will automatically switch to the same input method. When I enter Chinese language, both local and remote input methods will respond to keyboard events. And they all show the candidate word toolbar. If I use Chinese input methods other than Microsoft Pinyin locally, this will not happen. Later, I tried to use the mstsc command of Windows to open the same remoteapp. The Microsoft Pinyin input method does not appear to respond locally and remotely. Are there any special properties in Remote Desktop ActiveX that need to be set?

    System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AxContainer));
            this.rdp = new AxMSTSCLib.AxMsRdpClient9NotSafeForScripting();
            ((System.ComponentModel.ISupportInitialize)(this.rdp)).BeginInit();
            this.SuspendLayout();
            // 
            // rdp
            // 
            this.rdp.Dock = System.Windows.Forms.DockStyle.Fill;
            this.rdp.Enabled = true;
            this.rdp.Location = new System.Drawing.Point(0, 0);
            this.rdp.Name = "rdp";
            this.rdp.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("rdp.OcxState")));
            this.rdp.Size = new System.Drawing.Size(800, 450);
            this.rdp.TabIndex = 0;
            // 
            // AxContainer
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(800, 450);
            this.Controls.Add(this.rdp);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.Name = "AxContainer";
            this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "remoteappclient";
            this.TopMost = true;
            this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.AxContainer_FormClosing);
            this.Load += new System.EventHandler(this.AxContainer_Load);
            ((System.ComponentModel.ISupportInitialize)(this.rdp)).EndInit();
            this.ResumeLayout(false);
    When connect to remote desknbsp;           rdp.AdvancedSettings9.EnableAutoReconnect = true;
                rdp.RemoteProgram2.RemoteProgramMode = true;
                rdp.MsRdpClientShell.PublicMode = true;
                rdp.FullScreen = true;
    
                //rdp.TransportSettings4.GatewayDomain = _msg.Credential.Domain;
                rdp.TransportSettings4.GatewayUsername = msg.Credential.Domain + "\\" + _msg.Credential.Username;
                rdp.TransportSettings4.GatewayPassword = _msg.Credential.ClearPassword;
                //rdp.TransportSettings4.GatewayHostname = _rdpFile.GatewayHostname.Split(':')[0];
                rdp.TransportSettings4.GatewayHostname = _rdpFile.GatewayHostname;
    
                rdp.TransportSettings4.GatewayUsageMethod = _rdpFile.GatewayUsageMethod;
                rdp.TransportSettings4.GatewayProfileUsageMethod = _rdpFile.GatewayProfileUsageMethod;
                rdp.TransportSettings4.GatewayCredsSource = _rdpFile.GatewayCredentialsSource;
                rdp.Server = _rdpFile.FullAddress.Split(':')[0];
                rdp.AdvancedSettings9.RDPPort = _rdpFile.ServerPort;
                rdp.Domain = _msg.Credential.Domain;
                rdp.UserName = _msg.Credential.Username;
                rdp.AdvancedSettings9.ClearTextPassword = _msg.Credential.ClearPassword;
                rdp.DesktopWidth = SystemInformation.VirtualScreen.Width;
                rdp.DesktopHeight = SystemInformation.VirtualScreen.Height;
                rdp.AdvancedSettings9.HotKeyCtrlAltDel = 0;
                rdp.AdvancedSettings9.HotKeyAltEsc = 0;
                rdp.AdvancedSettings9.HotKeyAltShiftTab = 0;
                rdp.AdvancedSettings9.HotKeyAltSpace = 0;
                rdp.AdvancedSettings9.HotKeyAltTab = 0;
                rdp.AdvancedSettings9.HotKeyFocusReleaseLeft = 0;
                rdp.AdvancedSettings9.HotKeyFocusReleaseRight = 0;
                rdp.AdvancedSettings9.HotKeyFullScreen = 0;
    
    
                rdp.AdvancedSettings9.SmartSizing = true;
                //0: If Server authentication(RDSH certificate) fails, connect without warning
                rdp.AdvancedSettings9.AuthenticationLevel = 0;
                rdp.AdvancedSettings9.EnableCredSspSupport = true;
                rdp.AdvancedSettings9.keepAliveInterval = 10000;
                rdp.AdvancedSettings9.minInputSendInterval = 50;
                //rdp.AdvancedSettings9.MinutesToIdleTimeout = 
                rdp.AdvancedSettings9.PerformanceFlags = TS_PERF_DISABLE_WALLPAPER|TS_PERF_DISABLE_THEMING|TS_PERF_DISABLE_MENUANIMATIONS|TS_PERF_DISABLE_CURSOR_SHADOW;
    
                rdp.AdvancedSettings9.RedirectSmartCards = true;
                rdp.AdvancedSettings9.RedirectDevices = false;
                rdp.AdvancedSettings9.RedirectDirectX = false;
                rdp.AdvancedSettings9.RedirectDrives = false;
    
                rdp.Connect();

    Monday, March 23, 2020 1:09 PM

Answers

All replies