AllaKore_Remote icon indicating copy to clipboard operation
AllaKore_Remote copied to clipboard

看不到远程桌面

Open zjg076000 opened this issue 3 years ago • 7 comments

我测试了这个源代码,最后一切正常,但我看不到远程屏幕,为什么?谢谢

zjg076000 avatar Sep 10 '21 01:09 zjg076000

您好,能否提供更多详细信息,例如操作系统版本,测试是在内网还是外网进行的?

maickonn avatar Sep 10 '21 01:09 maickonn

内网 外网都测试过,window 2019 server 还有win10都测试过 看得gIf 图片是 什么操作系统的 是可以看到远程桌面,我做过2次试验,环境1: win10 +win10 内网 ,一种win10 +win2019 外网

zjg076000 avatar Sep 10 '21 07:09 zjg076000

这个和我情况一样,不过我找出了原因,把与压缩相关代码功能屏蔽,就正常了,说明是压缩模块有问题。

FoxPIM avatar Sep 10 '21 11:09 FoxPIM

你好 ,我也调试跟踪过 ,应该也是那个zip 模块的问题 ,我想问下 你用的DElphi 那个版本 我用的delphi 10.4.2 可能是不是版本问题 ,作者是10.1 版本 可能和这个有关系。

zjg076000 avatar Sep 11 '21 05:09 zjg076000

我屏蔽 // CompressStreamWithZLib(PackStream);

       //     CompressStreamWithZLib(PackStream);
  
    //  DeCompressStreamWithZLib(UnPackStream);

我注释三条有关的压缩的代码 ,还是显示白屏..

zjg076000 avatar Sep 11 '21 15:09 zjg076000

以下方法处理,可以使用,缺点就是有点费流量: 1、将原程序中的: function MemoryStreamToString(M: TMemoryStream): AnsiString; begin SetString(Result, PAnsiChar(M.Memory), M.Size); end; 改造为: Function MemoryStreamToString(M: TMemoryStream): AnsiString; Var S: TStringStream; Begin S := TStringStream.Create('', TEnCoding.UTF8); Try TNetEncoding.Base64.Encode(M, S); Result := S.DataString; Finally S.Free; End; End;

同时,添加以下过程: Procedure StringToMemoryStream(S: AnsiString; OutM: TMemoryStream); Var InM: TStringStream; Begin InM := TStringStream.Create(S, TEnCoding.UTF8); Try TNetEncoding.Base64.Decode(InM, OutM); Finally InM.Free; End; End;

2、将原程序1508行: MyTempStream.Write(AnsiString(TempBuffer)[1], Length(TempBuffer)); 替换为: StringToMemoryStream(TempBuffer, MyTempStream);

重新编译后即可正常。

原理:原程序代码中MemoryStreamToString是直接将内存流转换为字符串,这个过程中有可能生成不可见或未预料到的字符串,接收端没有正确处理导致黑屏, 修改后的程序使用Base64代替这个过程,因此在接收端需要执行相反操作,故添加StringToMemoryStream过程。

FoxPIM avatar Sep 13 '21 02:09 FoxPIM

非常感谢 。可以看到桌面 了

zjg076000 avatar Sep 14 '21 14:09 zjg076000

Hello, I apologize for the delayed response. I'd like to inform you that this project has been discontinued and is currently in the process of being archived. However, there are some highly promising forks that are quite advanced and feature-rich. I recommend checking out Aegys, which is actively developed by the Open Source Community Brazil.

maickonn avatar May 13 '24 19:05 maickonn