虚拟机QQ消息提醒解决方案

最近使用Ubuntu作为开发机的系统,但是一堆windows下的软件都不支持。网上的方案大多是使用wine,而且各种问题,所以还是用虚拟机吧。

在虚拟机装好一堆软件后经常切到虚拟机看看有没有QQ消息,简直反人类啊!!!(不要跟我说开提示音,不要跟我说用无缝模式)。果断上网找到了解决方法:这位老哥的解决方法非常好用,利用了监视QQ提示音文件的读取实现了消息的推送,但是他没有注明以下的一些坑:

1.虚拟机声卡一定要打开(我都是手贱,每次都关掉。。。)

2.关闭windows屏保、休眠

3.关闭QQ的自动状态切换

4.坑了我最久的:不知道从什么时候起,qq手机版登录后,pc如果一段时间不进行操作就没有提示音!知道问题就好解决了:写一个小脚本模拟键盘操作,每隔几秒按一下就OK。下面是我写的ahk脚本,每5秒按一次scroll lock键,这个键用的很少(excel等软件可能会用到)基本不会影响日常操作。

1
2
3
4
5
6
7
8
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
Main:
Send {ScrollLock}
Sleep 5000
Goto Main

 

终于可以完美提示QQ消息了。

 

最后,还有一些其他的软件:微信(用微信办公的都是坏人!!!)、RTX。。。。。。都可以基于这个方法的思路,只是监视消息的方式变了:

1.监听聊天记录文件:qq使用这个方法会有延时,而且你发消息时也会导致文件改变。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.

CoordMode, Pixel, Screen
LastMsgTIme =
QQMsgDbFIle = C:\Program Files\Tencent\QQLite\Users\QQ号码\Msg3.0.db
FileGetTime, LastMsgTIme, %QQMsgDbFIle%

Main:
global LastMsgTIme, QQMsgDbFIle
FileGetTime, lastestTIme, %QQMsgDbFIle%
if (lastestTIme != LastMsgTIme){
SendNotify()
LastMsgTIme = %lastestTIme%
}
Sleep 1000
Goto, Main

SendNotify(){
FileRead, OutputVar, E:\flag.txt
return
}

2.监听窗口:这位老哥用java的jna库写了个窗口监听(用ahk也可以),然后打开qq的“会话消息提醒”就可以正常监听了,但是对于已经打开的聊天窗口就不行了。