И локальный, и удаленный Microsoft пиньинь IME показывают список слов кандидатов в моем клиенте remoteapp - PullRequest
0 голосов
/ 22 марта 2020

Я использую Удаленный рабочий стол ActiveX control , предоставленный Microsoft, для разработки RDP-клиента для сценария удаленного приложения ios с C#. При использовании его для открытия удаленного приложения и локального переключения на метод ввода Microsoft Pinyin, удаленный рабочий стол автоматически переключается на тот же метод ввода. Когда я ввожу китайский язык, локальные и удаленные методы ввода будут реагировать на события клавиатуры. И все они показывают кандидатскую панель инструментов слова. Если я использую китайские методы ввода, отличные от Microsoft Pinyin, локально, этого не произойдет. Позже я попытался использовать команду msts c Windows, чтобы открыть то же самое удаленное приложение. Метод ввода Microsoft Pinyin не отвечает локально и удаленно. Существуют ли какие-либо специальные свойства в ActiveX для удаленного рабочего стола, которые необходимо установить?

Форма моего контейнера:

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

При подключении к удаленному рабочему столу:

            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();
...