【问题标题】:Show Networks Flyout (the "connect-to-network" thingie) without explorer.exe running在没有运行 explorer.exe 的情况下显示 Networks Flyout(“连接到网络”的东西)
【发布时间】:2015-02-26 20:44:45
【问题描述】:

要求:

  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 而不会在我们的应用程序上方弹出 Metro 或任务栏?

【问题讨论】:

  • 我怀疑你的两个选项中的任何一个都是可能的。

标签: windows-8 wifi windows-shell windows-explorer kiosk-mode


【解决方案1】:

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

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

  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 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多