简介
这是我在大一时期就开始制作的软件
当时需求只是能控制电脑打开远程控制类软件
为了安全考虑
所以远程控制软件的自启动是被我禁用了的(包括服务)
我就想着写一个软件远程启动sunshine或者UU远程
因为使用校园网(大范围局域网)
所以sunshine的可用性非常高
在教室用平板连接电脑写代码简直不要太爽
我也是这样度过了大一下和大二时期
遇到的问题
1.多exe问题
在最开始的时候就想着
主程序和GUI写在同一个软件里
但没有开发经验
写了半天发现
关闭窗口主程序大概率也会跟着出问题
不是退出就是卡死
后面也解决了
但看着那内存占用
还是决定分开
每个程序都能单独运行
主程序可单独使用
不需要GUI
只不过需要自己写配置文件
内存占用大幅减低
2.开机自启问题
Windows不知道为啥
不管快速启动是否开启
重启都有概率出现
重启后程序没有在后台启动
好了才知道
一般在开机后会启动桌面环境
但有时候又不会启动
就会导致开机自启的软件失效
需要输入开机密码才能启动
最后解决办法就是
用计划任务实现开机自启
但有个问题就是开机时启动的程序
是SYSTEM用户身份运行的
但桌面通知需要登录用户身份运行
因为SYSTEM和登录用户
的桌面激活不一样
是两个单独的桌面环境
通知也就不互通
最后就的方法是将托盘单独出来
主程序还是系统启动时运行
托盘在登录时运行
托盘启动时强制重启主程序
让主程序运行在新的桌面环境
3.程序间通信问题
就是不同exe间的通讯问题
因为托盘要程序主程序的权限状态
找了很多方法
还是用的本地文件实现
优点很明显
不占端口
而且和log放一起
也不会太占空间
主程序启动时将管理员权限状态
写入文件
托盘查询时咨询读取文件内容即可
不需要额外代码
而且添加主程序在运行作为前置添加
避免出现主程序已经退出了
托盘还提示主程序有管理员权限的问题
至于GUI就根本没和其他程序通讯
GUI就只负责生成和测试配置文件
连log都不输出到文件
只要托盘和主程序有日志
4.性能问题
因为Python的原因
打包出来的exe特别大
就只负责生成配置文件的GUI
都达到了20多MB
托盘也是差不多
而且运行起来总感觉比较慢
就尝试换成C语言来写
目前也就托盘写完了
打包出来也才100kb左右
而且运行速度很明显快了很多
但也有些不痛不痒的小问题
比如说主程序目前
还没想好用哪个mqtt模块
但转C语言的计划不会终止
相信转C语言后
总空间占用能在2MB左右
Python只占用高达60多MB
5.安装问题
都写GUI了
怎么能少了安装包
原本想着都上github了
应该会用免安装的程序吧
但我还是不放心
所以研究了半天安装包程序
成功实现了安装时就可以设置开机自启
虽然安装包程序是英文的
但能用中文的地方我还是用了中文
在弄安装包前配置文件存放在用户目录
已经是appdata里
但有个问题就是开机自启的主程序
如果没有登录用户就没法读取配置文件
所以改回了相对目录的方式
配置文件保存在程序所在目录
没权限时也会提示权限不足