以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]怎样关闭openQQ内置窗口就全部退出程序  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=106276)

--  作者:jyh7081
--  发布时间:2017/9/5 21:57:00
--  [求助]怎样关闭openQQ内置窗口就全部退出程序
单独发布了一个openQQ客户端,进入客户端后直接显示内置窗口,其他全部隐藏。

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


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

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



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

--  作者:有点蓝
--  发布时间: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
--  发布时间:2017/9/7 13:01:00
--  

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

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


--  作者:有点甜
--  发布时间:2017/9/7 14:35:00
--  

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

 

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


--  作者:有点甜
--  发布时间: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
--  发布时间: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
图片点击可在新窗口打开查看

第二种方法,网址打不开



--  作者:有点甜
--  发布时间: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


--  作者:有点甜
--  发布时间: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
--  发布时间: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

 

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


--  作者:有点甜
--  发布时间:2017/9/8 17:35:00
--  

方法一:

 

Syscmd.Project.Exit(True)

 

改成

 

Syscmd.Project.Exit(False)

 

或者

 

DataTables.Save

Syscmd.Project.Exit(False)

 

方法二:

 

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