Foxtable(狐表)用户栏目专家坐堂 → [求助]怎样关闭openQQ内置窗口就全部退出程序


  共有2570人关注过本帖树形打印复制链接

主题:[求助]怎样关闭openQQ内置窗口就全部退出程序

帅哥哟,离线,有人找我吗?
jyh7081
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:969 积分:8609 威望:0 精华:0 注册:2012/10/3 13:25:00
[求助]怎样关闭openQQ内置窗口就全部退出程序  发帖心情 Post By:2017/9/5 21:57:00 [只看该作者]

单独发布了一个openQQ客户端,进入客户端后直接显示内置窗口,其他全部隐藏。

现在遇到几个问题,请版主指教:
1、打开客户端,桌面只显示内置窗口,但鼠标移至windows窗口的状态栏,可以看到运行程序后产生了两个缩列窗口(见下图);
2、关闭内置窗口时,整个程序并没有全部退出,状态栏仍存在一个程序缩列图,怎样关闭内置窗口,程序全部退出
3、发布的openQQ客户端有31M,怎样精简一下。


图片点击可在新窗口打开查看此主题相关图片如下:image 3.jpg
图片点击可在新窗口打开查看

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:11.rar



[此贴子已经被作者于2017/9/5 22:05:08编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:112390 积分:572218 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/9/5 22:13:00 [只看该作者]

1、参考:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=98523&skin=0

2、自定义菜单,通过菜单写代码关闭窗口:http://www.foxtable.com/webhelp/scr/3076.htm

3、程序没有办法精简

 回到顶部
帅哥哟,离线,有人找我吗?
jyh7081
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:969 积分:8609 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2017/9/7 13:01:00 [只看该作者]

因为做了个独立的openqq客户端,想点击窗口“X”关闭QQ后,执行保存退出代码:Syscmd.Project.Exit(True)

在自定义QQ菜单是可以设置,但是要点一下才能看到菜单,再点击才能完全退出QQ。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/7 14:35:00 [只看该作者]

 写一个计划任务监测窗口,如果不存在某某窗口,就执行关闭代码

 

For Each frm As System.Windows.Forms.Form In Application.OpenForms
    output.show(frm.name & "|" & frm.text)
Next


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/7 14:40:00 [只看该作者]

 或者,直接给openQQ窗口绑定closed事件也可以

 

https://msdn.microsoft.com/zh-cn/library/system.windows.forms.form.closed.aspx

 

 

qqclient.OpenChatWindow
dim frm as windows.forms.form = windows.forms.form.activeform
addhandler frm.closed, addressof 函数名

[此贴子已经被作者于2017/9/7 20:15:17编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
jyh7081
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:969 积分:8609 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2017/9/7 20:04:00 [只看该作者]

output.show(frm.name & "|" & frm.text),得出QQ客户端的窗口名:frmMain

计划代码,10000毫秒执行,代码如下:
If ShowAppWindow("frmMain",1) = False Then
    Syscmd.Project.Exit()
End If
但结果是启动QQ客户端后,就关闭了;

图片点击可在新窗口打开查看此主题相关图片如下:image 2.jpg
图片点击可在新窗口打开查看

第二种方法,网址打不开



 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/7 20:11:00 [只看该作者]

方法一:

 

Dim contain = False
For Each frm As System.Windows.Forms.Form In Application.OpenForms
    If frm.name = "frmTalker" Then
        contain = True
    End If
Next
If contain = False Then
    msgbox("关闭")
End If


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/7 20:18:00 [只看该作者]

方法二:

 

全局代码

 

Public Sub Form_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs)
msgbox("窗口关闭了")
End Sub

 

调用代码

 

QQClient.OpenChatWindow
Dim frm As windows.forms.form = Application.OpenForms("frmTalker")
If frm IsNot Nothing Then
    addhandler frm.closed, addressof Form_Click
End If

[此贴子已经被作者于2017/9/7 20:18:27编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
jyh7081
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:969 积分:8609 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2017/9/8 16:54:00 [只看该作者]

甜版主好!

我用第一种方法,退出时,会出现个询问窗口,如下图: 

 


图片点击可在新窗口打开查看此主题相关图片如下:gif.gif
图片点击可在新窗口打开查看

 

计划任务代码是:

Dim contain = False   '退出项目
For Each frm As System.Windows.Forms.Form In Application.OpenForms
    If frm.name = "frmTalker" Then
        contain = True
    End If
Next
If contain = False Then
    Syscmd.Project.Exit(True)
End If

 

第二种方法的调用代码,也放到计划任务里,退出没问题,但是会闪几次屏。能否改善一下,谢谢!


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/8 17:35:00 [只看该作者]

方法一:

 

Syscmd.Project.Exit(True)

 

改成

 

Syscmd.Project.Exit(False)

 

或者

 

DataTables.Save

Syscmd.Project.Exit(False)

 

方法二:

 

第二种方法,没必要放在计划管理那里。在打开openqq的时候绑定事件即可。


 回到顶部