anhkgg / SuperWeChatPC

超级微信电脑客户端,支持多开、防消息撤销、语音消息备份...开放WeChatSDK
4.21k stars 1.01k forks source link

C# 调用WXSendTextMsg 接口 #30

Closed nmilu closed 5 years ago

nmilu commented 5 years ago

调用WXSendTextMsg 触发RPC异常 返回50

vD1S commented 5 years ago

或许你用的是非官方版本的微信?

WeChatWin.dll 修改过?

nmilu commented 5 years ago

emmmm,并没有对客户端做修改。我系统是win10,64的。有影响么?

nmilu commented 5 years ago

更新了最新的WeChat PC客户端。WXSendTextMsg只要被调用,客户端就会崩溃。 控制台输出异常RPC Exception 1726

vD1S commented 5 years ago

把微信版本和代码发出来看看。 我用C#都一切正常(win10 64)。

之前遇到过返回50,是因为自己本机的WeChatWin.dll修改过,后来重装官方微信就好了。

nmilu commented 5 years ago
    [HttpPost]
    public SendMsgOutput SendMsg(SendMsgInput input)
    {
        var result = new SendMsgOutput() { Success = false, Msg = "发送失败" };
        if (input != null)
        {
            if (!string.IsNullOrEmpty(input.Wxid) && !string.IsNullOrEmpty(input.Msg))
            {
                int resultNum = WXSendTextMsg(pid, input.Wxid, input.Msg);
                if(resultNum == 0)
                {
                    result = new SendMsgOutput() { Success = true, Msg = "发送成功" };
                }
            }
            else
            {
                result = new SendMsgOutput() { Success = false, Msg = "预发送消息的接收人或消息不能为空" };
            }
        }
        else
        {
            result = new SendMsgOutput() { Success = false, Msg = "请求参数不存在!" };
        }

        return result;
    }

WeChat版本:2.6.7.40

nmilu commented 5 years ago

初始化方法沿用作者的,暂时未做修改。只是改成WebAPI 托管了。

234144272 commented 5 years ago

我也有个问题,微信版本2.6.7.40. 跑的SDK里的Test.没有任何效果.所有方法全部直接跑过去了,,没有进入while哪怕微信没有登录

nmilu commented 5 years ago

我也有个问题,微信版本2.6.7.40. 跑的SDK里的Test.没有任何效果.所有方法全部直接跑过去了,,没有进入while哪怕微信没有登录

咱俩应该不是一个情况

234144272 commented 5 years ago

我换了一台机器也这样.win10 64位

nmilu commented 5 years ago

我换了一台机器也这样.win10 64位

检查是否WeChatSDK.dll,WeChatSDKCore.dll这两个都放在bin文件夹了。 我本机初始化启动,是没有任何问题的。

234144272 commented 5 years ago

都放了.我又换了两台机器测试.都是直接跑过去完全没有进while.

234144272 commented 5 years ago

好吧.我以为只有我不能用.问了问群里的都不能用.我就放心了

vD1S commented 5 years ago

刚才试了下 这里的https://github.com/anhkgg/SuperWeChatPC/releases/tag/v1.3.0 sdk就会有问题。 而直接Clone回来的sdk目录下的WeChatSDK.dll 和 WeChatSDKCore.dll 就使用正常

nmilu commented 5 years ago

刚才试了下 这里的https://github.com/anhkgg/SuperWeChatPC/releases/tag/v1.3.0 sdk就会有问题。 而直接Clone回来的sdk目录下的WeChatSDK.dll 和 WeChatSDKCore.dll 就使用正常

谢谢提醒,我确实下载的是上述链接的包。我换成您提醒的操作一下,试试

vD1S commented 5 years ago

正确的应该是:

文件: WeChatSDK.dll 大小: 128512 字节 文件版本: 1.3.0.0 修改时间: 2019年3月9日, 18:45:32 MD5: 3CAA9714FA177FC746E2075486944338 SHA1: D6E4ACA9DDA3025DCC74B4B92D84A25138345975 CRC32: 0E88C28E

文件: WeChatSDKCore.dll 大小: 379904 字节 文件版本: 1.3.0.0 修改时间: 2019年3月9日, 18:45:32 MD5: ED5B3F4C943912F14AE762C23F60A48A SHA1: 1F8840ACB54D43EACCE3BAD715E0C1023B4E4413 CRC32: 01516415

nmilu commented 5 years ago

正确的应该是:

文件: WeChatSDK.dll 大小: 128512 字节 文件版本: 1.3.0.0 修改时间: 2019年3月9日, 18:45:32 MD5: 3CAA9714FA177FC746E2075486944338 SHA1: D6E4ACA9DDA3025DCC74B4B92D84A25138345975 CRC32: 0E88C28E

文件: WeChatSDKCore.dll 大小: 379904 字节 文件版本: 1.3.0.0 修改时间: 2019年3月9日, 18:45:32 MD5: ED5B3F4C943912F14AE762C23F60A48A SHA1: 1F8840ACB54D43EACCE3BAD715E0C1023B4E4413 CRC32: 01516415

状况依然存在。断点在通过WXSendTextMsg方法后,WeChat客户端异常崩溃,控制台输出RPC Exception 1726

nmilu commented 5 years ago

如果使用低版本客户端不会导致客户端崩溃,但是WXSendTextMsg会返回50

vD1S commented 5 years ago

[DllImport("WeChatSDK.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] public static extern int WXSendTextMsg(int pid, string wxid, string msg);

微信版本:https://dldir1.qq.com/weixin/Windows/WeChat_C1012.exe 还不行的话,就真不知道了。 我刚才再次测试了下,收发消息都正常。

nmilu commented 5 years ago

[DllImport("WeChatSDK.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] public static extern int WXSendTextMsg(int pid, string wxid, string msg);

微信版本:https://dldir1.qq.com/weixin/Windows/WeChat_C1012.exe 还不行的话,就真不知道了。 我刚才再次测试了下,收发消息都正常。

我给filehelper 发送消息是可以的。给测试账号就会导致客户端崩溃。您在测试的时候wxid是传递的原始ID么?

vD1S commented 5 years ago

[DllImport("WeChatSDK.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] public static extern int WXSendTextMsg(int pid, string wxid, string msg); 微信版本:https://dldir1.qq.com/weixin/Windows/WeChat_C1012.exe 还不行的话,就真不知道了。 我刚才再次测试了下,收发消息都正常。

我给filehelper 发送消息是可以的。给测试账号就会导致客户端崩溃。您在测试的时候wxid是传递的原始ID么?

不是原始ID 是修改过的微信号

meimz commented 5 years ago

咱俩一个情况 微信版本:https://dldir1.qq.com/weixin/Windows/WeChat_C1012.exe 发送 微信崩溃 RPC Exception 1726 给 filehelper 是可以的 登录接收语音啥的正常

nmilu commented 5 years ago

咱俩一个情况 微信版本:https://dldir1.qq.com/weixin/Windows/WeChat_C1012.exe 发送 微信崩溃 RPC Exception 1726 给 filehelper 是可以的 登录接收语音啥的正常

这个问题,我已经解决。 导致崩溃的原因是,指定发送消息的Wxid不是最原始的id。 先设置好回调方法,然后通过对方微信发送一条消息,控制台就可看到对方原始wxid。

meimz commented 5 years ago

咱俩一个情况 微信版本:https://dldir1.qq.com/weixin/Windows/WeChat_C1012.exe 发送 微信崩溃 RPC Exception 1726 给 filehelper 是可以的 登录接收语音啥的正常

这个问题,我已经解决。 导致崩溃的原因是,指定发送消息的Wxid不是最原始的id。 先设置好回调方法,然后通过对方微信发送一条消息,控制台就可看到对方原始wxid。

多谢提醒 我的好像也能发送了,但是之前我有试过 原始wxid 不行 不知道是不是 对方发送以后才行。我在观察一下