在没有运行explorer.exe的情况下显示网络弹出窗口(“连接到网络”的东西)

问题描述 投票:0回答:1

要求:

  1. 我们的应用程序取代了通常的Windows shell(explorer.exe)。这是我们提供的封闭系统的产品要求。
  2. 我们应该让用户选择一个Wi-Fi网络并连接到它。

问题:wi-fi网络对话框仅在explorer.exe运行时显示

我们尝试了什么:

  1. 编写我们自己的使用wlan API的wi-fi管理器。它列出了可连接的网络,允许用户连接/断开连接。问题:需要测试的网络类型/配置太多,特别是当轮子已经被发明并重新发明时。
  2. 尝试并检查网络对话框是如何实现的。它似乎是没有文档的COM接口(IUIRAdioManager)。问题:它没有文档,所以没有API
  3. 使用现有的网络管理器,例如驱动程序附带的网络管理器。问题:它很难看,不符合产品的味道;它为用户打开了太多选项,比如创建和加载配置文件,浏览文件系统上的文件 - 这些都是不可接受的。
  4. 运行explorer.exe只是为了显示网络对话框,然后将其删除。问题:一旦我们运行explorer.exe - 它会弹出metro视图并隐藏我们的全屏应用程序或显示任务栏。

后者似乎是首选解决方案:无需重新发明轮子,它可以满足需要。只是让explorer.exe不会弹出,在后台保持安静。

所以,我们有两种选择:

  1. 如何在没有explorer.exe的情况下显示网络弹出对话框?
  2. 如何运行explorer.exe没有它弹出我们的应用程序上方的地铁或任务栏?
windows-8 wifi windows-shell windows-explorer kiosk-mode
1个回答
0
投票

您的第一个解决方案难以实施。我几乎可以肯定网络窗口依赖于资源管理器。

但是,你的第二个是完全可能的。

  1. 要隐藏任务栏,您需要找到一个窗口(使用FindWindowEx)来查找任务栏(名称为Shell_traywnd)。这将隐藏任务栏和开始按钮。编辑:除非您正在实现自己的任务栏,否则您可能希望将任务栏设置为自动隐藏。
  2. 接下来,您需要隐藏所有的地铁计划。以与上面类似的方式,找到名为EdgeUiInputWndClass的类并关闭它。您应该能够获取它的进程名称,然后终止该进程。
  3. Windows键。这有点困难。您可能需要使用program并删除键或键盘挂钩(低级键盘挂钩),然后忽略使用与Windows键相同的扫描码的按键。左窗口是0x5b,右边是0x5c(source)。请注意,这不会阻止Ctrl + Alt + Del。
  4. 最后,为了展示Flyout,你可以运行%windir%\explorer.exe shell:::{38A98528-6CBF-4CA9-8DC0-B1E1D10F7B1B} source)。 EDIT2:
  5. 您还应该能够通过this隐藏Toast通知当然,我不明白为什么您不能只使用Windows 8 / 8.1并将应用程序放在kiosk mode中。
© www.soinside.com 2019 - 2024. All rights reserved.