WIFISharer 项目学习经验

CodeingBoy 9月 26, 2015

Github 地址:https://github.com/CodeingBoy/WIFISharer

下面说说项目开发过程中的一些问题和解决办法:

MessageBox 乱码

先写了一个 MessageBox,后来显示的时候发现乱码。
QQ截图20150919180251
 

原因:MessageBox 被 define 成了 MessageBoxW,所以,实际上 MessageBox 函数调用的是 MessageBoxW。
 

解决办法:字符串使用 _T() 处理,例如 _T("字符串")。

执行 Cmd 命令的最佳办法(?)

要在 Win32 程序中运行 CMD 命令,可以使用 System() 或者 ShellExecute() 。

使用 System() 虽然简便,但是会有黑框弹出,对用户体验造成干扰,所以还是选择使用 ShellExecute() 实现。
 

欲执行的命令开头应该加一个 /c 参数,见 cmd.exe /?:
/C      执行字符串指定的命令然后终止

若不加 /c,字符串中的命令将不被执行。

  • 程序要求提权操作

使用 netsh 命令共享 WIFI 时,需要新建一个虚拟无线网卡,这时需要调用管理员权限。

在 Visual Studio 2015 中,要让程序提权,可以直接在项目属性中设置。
QQ截图20150926222837

随后在运行项目时,VS 会要求提权重新启动。允许后,程序运行时就拥有管理员权限了。
QQ截图20150926222410

并且生成的程序文件也具有提权标识,运行即要求提权。
QQ截图20150926223032

参考:http://www.cplusplus.me/1597.html

显示密码功能的实现

由于用户可能会忘记 WIFI 密码,所以设置一个显示密码的功能非常有意义。

使用 SetPasswordChar() 可以实现该功能:
 

不过我还没探索出如何在隐藏密码时让密码显示回圆点的办法……

清理无用文件

由于要上传 Github,所以减少一些无用文件能够节省上传时间。工程目录下的 .sdf 文件就很大,有 80 多 M。所以要干掉它。

在 VS 的设置中选择文本编辑器→C/C++→高级,然后启用“始终使用回退位置”和“回退位置已在使用时,不警告”,然后在回退位置制定一个有效的路径,即可将这些文件从工程目录中请出。QQ截图20150926223916

参考:https://leonax.net/p/2428/what-is-ipch-folder-and-sdf-file-for/

上传 Github 速度慢

使用 Github for Windows 时上传十分缓慢,最初以为是科学上网的原因,后来调整后发现依旧。最后使用 Github Shell 解决。

本文采用 CC BY-NC-SA 3.0 协议进行许可,在您遵循此协议的情况下,可以自由共享与演绎本文章。
本文链接:https://blog.codeingboy.me/wifisharer-project-experience/

发表评论

电子邮件地址不会被公开。 必填项已用*标注