babalae/better-genshin-impact · error · InvalidOperationException

桌面分身尚未完全连接,无法发送 {displayName}。

Error message

桌面分身尚未完全连接,无法发送 {displayName}。

What it means

Error "桌面分身尚未完全连接,无法发送 {displayName}。" thrown in babalae/better-genshin-impact.

Source

Thrown at BetterGenshinImpact/View/Controls/ChildSession/RdpActiveXHost.cs:289

    protected override void DetachSink()
    {
        try
        {
            _eventCookie?.Disconnect();
            _eventCookie = null;
            _eventSink = null;
        }
        finally
        {
            base.DetachSink();
        }
    }

    private void SendShortcut(KeyStroke[] strokes, string displayName)
    {
        if (ConnectedState != 1)
        {
            throw new InvalidOperationException(
                $"桌面分身尚未完全连接,无法发送 {displayName}。");
        }

        if (!ChildSessionNativeMethods.TryFocusRdpInputWindow(Handle))
        {
            throw new InvalidOperationException("无法将键盘焦点切换到桌面分身。");
        }

        RunComStep($"向 Child Session 发送 {displayName}", () => SendKeyStrokes(strokes));
    }

    private void SendKeyStrokes(KeyStroke[] strokes)
    {
        var keyUpStates = new short[strokes.Length];
        var keyData = new int[strokes.Length];

        for (var index = 0; index < strokes.Length; index++)
        {

View on GitHub (pinned to a7cb36712d)

Solutions

  1. 等待桌面分身完成连接后再执行输入操作
  2. 检查桌面分身会话是否掉线,必要时重新连接
  3. 减少向分身发送输入的频率

Example fix

等桌面分身显示已连接再操作;若连接失败先排查分身连接问题再发送按键。

When it happens

Trigger: SendShortcut 时 ConnectedState 还不是1(已连接),即桌面分身 RDP 会话尚未建立完成就尝试发送快捷键。

Common situations: 桌面分身还在连接中用户就触发快捷键发送,或连接中断后仍调用发送。


AI-assisted analysis of babalae/better-genshin-impact@a7cb36712d (2026-08-13). Data as JSON: /api/errors/ca4fd7037193e050. Report an issue: GitHub.