2017年4月

在Github上看到有人写了Linux上从休眠唤醒后自动启动神舟hotkey耳机孔的驱动,还给出了具体dll和函数的作用,于是手撸了一个c++程序调用之。加上vbs脚本计划任务,成功无缝切换。果然还是Github能人多啊……具体链接还是留一个在这里吧。

把一年前搞的东西用python重写了一遍,当作简单的练习。

# -*- coding: utf-8 -*-
import os
import time
import logging
import sys
from urllib import request
#from datetime import datetime,timedelta

logging.basicConfig(level = logging.INFO)
logger = logging.getLogger(__name__)
handler = logging.FileHandler('getNsort.log')
handler.setLevel(logging.INFO)
fomatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
handler.setFormatter(fomatter)
logger.addHandler(handler)

if len(sys.argv) > 2:
    path = sys.argv[1]
    uri = sys.argv[2]
elif len(sys.argv) == 2:
    path = sys.argv[1]
    uri = 'http://area.sinaapp.com/bingImg/'
else:
    print('Usage: %s savepath uri' % sys.argv[0].split('\\')[-1])
    logger.error('Arguement error.')
    os._exit(0)

try:
    r = request.urlopen(uri)
    fname = r.geturl().split('/')[-1]
    fpath = os.path.join(path,fname)
    if not os.path.exists(fpath):
        with open(fpath,'wb') as f:
            f.write(r.read())
            logger.info('New picture saved to '+ fpath)
except BaseException as e:
    logger.error('Error: ' + e)

#etime = (datetime.now() - timedelta(days = 30)).timestamp()
etime = time.time() - 30 * 24 * 60 * 60
it = os.scandir(path)
for entry in it:
    mtime = os.path.getmtime(entry.path)
    if  mtime < etime:
        year = time.gmtime(mtime)[0]
        month = time.gmtime(mtime)[1]
        fpath = os.path.join(path, str(year)+ '-' + '{:0>2}'.format(str(month)))
        if not os.path.exists(fpath):
            os.mkdir(fpath)
        os.rename(entry.path,os.path.join(fpath,entry.name))
        logger.info('Archived picture: ' + entry.name)

挺有意思的,就是花了好些时间。

神船z8有时会出现耳机无声的奇怪问题,在经过一番搜索实验后发现与蓝天hotkey驱动有关。这个问题具体的表现如下:

若PowerBiosServer服务未启动,HkeyTray.exe和它的小伙伴们没有在后台运行,则PC从睡眠中唤醒后耳机会无声,尽管在系统中它仍然可以更改音量。我使用的Z8有三个3.5mm接口,分别是耳机、麦克风和红色LED的音频输入。失效的只有耳机那个插孔,其他两个仍然是正常的。

在经过若干次试验之后,我找到了如下几个解决的方法:

  1. 保证hotkey驱动的自启动。代价是让这几个程序无谓地在后台运行,进行资源浪费。
  2. 将电源设置里所有的睡眠选项更改成休眠或者不做任何事。代价就是不能睡眠,从待机态恢复的时间变长。
  3. 从待机态恢复后手动启动PowerBiosServer服务,打开蓝天ControlCenter,调节耳机音效,使耳机恢复正常工作。代价是麻烦。

这几个方案都不是很好,要么耗资源要么耗精力。本着锻炼动手能力的原则,我个人采用了第三种方法——不过是采用了计划任务触发脚本来自动帮我打开ControlCenter的“半自动”方法。不得不感叹一下,鱼和熊掌不可兼得的事情真是处处都有啊。