以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]OPENQQ接收和发送消息的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=180864) |
-- 作者:chnfo -- 发布时间:2022/10/18 17:58:00 -- [求助]OPENQQ接收和发送消息的问题 使用了openQQ,发现有个问题。 1、qqclient接收离线消息的问题。如果服务器离线消息的时间是12:00,但是用户登录的时间是13:00,此时在消息表中看到发送消息是13:00,而不是12:00,这个似乎有点问题。如果希望显示服务器发出消息的时间,而不是转发的时间,该如何处理? 2、在qqclient中定义了一个全局变量CUser,用来获取登录成功时用户的账号。然后在客户端的ReceivedMessage事件中这样写 Dim dr As
DataRow =
DataTables("信息").AddNew dr("接收者") = CUser dr("时间") = Date.Now() dr("信息") = e.Message 如果是在线,接收者列会显示CUser 但是如果系统先发离线消息,然后客户端再登录,登录成功以后,接收者列会显示空白。 意思是:登录成功的时候,还没有给Cusr赋值,消息就已经接收了?如果希望能给接收者列赋值,该怎么处理呢?
[此贴子已经被作者于2022/10/18 17:59:50编辑过]
|
-- 作者:有点蓝 -- 发布时间:2022/10/18 20:19:00 -- 1、我测试没有问题 |
-- 作者:chnfo -- 发布时间:2022/10/19 8:38:00 -- 可能意思没有表述完整。 1、在登录界面的登录时,给全局变量CUser(当前登录账号)赋值 QQClient.ServerIP = "127.0.0.1" \'指定服务器IP地址 QQClient.ServerPort = 52177 \'指定服务器登录端口 QQClient.UserName = "李桂兰" QQClient.Password = "888" CUser = "" \'CUser是预设的全局变量,给登录成功时的账号赋值 If QQClient.Start() = True \'如果登录成功 CUser = QQClient.UserName Else \'如果登录失败,显示服务器返回错误信息 PopMessage("QQClient登录失败,原因:" & vbcrlf & QQClient.ServerMessage,"提示",PopiconEnum.Error,5) End If 2、不是用内置聊天窗口给用户发信息,而是在QQServer中给用户发信息 QQServer.Send("李桂兰","测试信息",true) 比如李桂兰离线时,12:00时在QQServer的命令窗口发送此消息,此时服务器的临时数据库中确实是12:00发送消息 而李桂兰在13:00登录系统,此时服务器转发消息 但接收消息的时间显示为李桂兰登录的时间,而且接收用户列是空值。 如果此时再在QQServer的命令窗口发消息,QQServer.Send("李桂兰","测试信息新",true),此时发送消息的时间就是当前时间,这个也不算错误,因为赋值就是date.now。但这个没有什么意义,我是希望得到系统发消息的时间。 我的问题是: 1、为什么登录成功之后,接收的消息,显示的离线消息中,接收用户列是空值。 2、如何获取服务器真正的发出消息的时间?而不是date.now。因为那样,员工有理由说,我没有登录系统,我不知道要我做什么事。系统是刚才发消息给我的,不能算我延误工作。如果显示的是系统发消息的时间,那在工作时间内不登录那就是员工的事了 [此贴子已经被作者于2022/10/19 8:53:31编辑过]
|
-- 作者:有点蓝 -- 发布时间:2022/10/19 8:52:00 -- 1、换种方式 …… QQClient.UserName = "李桂兰" QQClient.Password = "888" CUser = "李桂兰" \'CUser是预设的全局变量,给登录成功时的账号赋值 If QQClient.Start() = True \'如果登录成功 Else \'如果登录失败,显示服务器返回错误信息 CUser = "" PopMessage("QQClient登录失败,原因:" & vbcrlf & QQClient.ServerMessage,"提示",PopiconEnum.Error,5) End If 2、代码使用的【dr("时间") = Date.Now()】赋值,当然就是当前电脑时间了,ReceivedMessage事件并没有发送时间的参数,我反馈一下,看能不能加上
|