今天跟大家伙儿唠唠我跟 * 这玩意儿打交道的那些事儿。一开始我也是个小白,啥也不懂,就是照猫画虎,慢慢摸索出来的。
事情是这样的,之前我想搞个小工具,能自动连接家里的 Wi-Fi,省得每次都要手动点,烦都烦死。在网上搜半天,才知道 Windows 底层有个 * 这么个东西,说是可以控制无线网络的。
第一步,肯定是先找到这个 DLL 文件。 我就在我的电脑里搜搜,果然在 `C:\Windows\System32` 目录下找到它。 这就跟寻宝似的,找到宝贝!
就是怎么用它。 我又开始在网上疯狂搜索,找各种资料,看别人怎么调用的。发现这玩意儿是 C 语言写的,得用 C/C++ 或者其他能调用 DLL 的语言来搞。正好我之前学过一点 C#,就想着试试 C# 行不行。
- 导入 DLL:在 C# 里调用 DLL,得先导入它。我用 `DllImport` 这个东西,把 * 里的函数都给声明一遍。
- 声明函数:这可把我累坏,对着网上的资料,一个个地把函数原型抄下来,什么 `WlanOpenHandle`、`WlanEnumInterfaces`、`WlanGetAvailableNetworkList`... 简直是天书!
- 调用函数:函数声明好,就可以调用。我先是打开一个 WLAN handle,然后枚举无线网卡接口,再获取可用的 Wi-Fi 列表。
这里面有个坑,就是字符编码的问题。 * 返回的字符串是 Unicode 的,C# 默认是 UTF-16 的,要是不转换一下,就会出现乱码。我当时就卡在这儿,搞好久才发现是编码的问题。
解决编码问题,总算是能正确显示 Wi-Fi 列表。然后我又实现连接 Wi-Fi 的功能,用的是 `WlanConnect` 这个函数。得构造一个连接参数,包括 SSID、密码等等。这里又遇到一个坑,就是密码要加密,不然会连接失败。
折腾好几天,总算是把这个小工具给搞出来。虽然界面丑点,功能也简单点,但是能自动连接 Wi-Fi ,还是很开心的!
总结一下这回实践的经验:
- 调用 DLL 要小心字符编码的问题。
- 要仔细看文档,搞清楚每个函数的参数和返回值。
- 多在网上搜资料,看看别人是怎么做的。
这回跟 * 打交道的经历,让我学到很多东西。虽然过程很艰辛,但是结果还是挺令人满意的。 以后有机会,我还想再搞点更有意思的东西!
这回就先分享到这里,希望能对大家有所帮助!
免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。