【问题标题】:How do you make an application start when the device starts up in Windows Mobile?当设备在 Windows Mobile 中启动时,如何启动应用程序?
【发布时间】:2010-10-01 14:52:05
【问题描述】:

正如标题所说。我希望我的应用程序在 Windows Mobile 设备打开时启动?我正在使用 C# 中的 .NET Compact Framework 3.5 开发此应用程序。谢谢!

【问题讨论】:

    标签: c# .net windows-mobile compact-framework


    【解决方案1】:

    要启动您的应用,首先我们需要定义“开启”。

    有“软重置”:这里有几个选择。到目前为止,最简单的方法是在 \Windows\Startup 文件夹中放置一个 shrtcut。

    有“从睡眠中恢复”。这有点复杂,因为您必须在此之前运行一些东西。这里最简单的机制是使用 NOTIFICATION_EVENT_WAKEUP 事件向CeRunAppAtEvent 注册您的应用程序。你必须P/Invoke it,因为它没有内置的托管方法。

    编辑:还有“硬重置后”。一些 OEM 提供了一种机制来运行应用程序或从冷启动(例如符号)执行某种形式的逻辑。您必须查看设备 OEM 的文档以了解其工作原理。

    【讨论】:

    • 有什么具体的方法可以将快捷方式放入启动文件夹吗?我分析了那里的文件,并尝试创建一个指向手机上随机应用程序的新文件,但在启动时,它给了我一个错误。
    • 通过代码有两种方式:手动创建文件,或者P/Invoking SHCreateShortcut:pinvoke.net/default.aspx/coredll/SHCreateShortcut.html
    【解决方案2】:

    虽然 Startup 文件夹确实有效,但当您的应用程序需要其他项目(应用程序、驱动程序、硬件等)首先启动并启动和运行时,您可能会遇到问题,具体取决于您的配置。我已经为带有 CF 存储卡的设备开发,其中 CF 卡在启动后需要几秒钟才能挂载并可用,因此无法在重置后立即自动启动位于该 CF 卡上的应用程序,因此启动文件夹解决方案失败. 在这种情况下,您可能需要查看注册表中的 Launchxx 条目,以便您更好地控制起始顺序:http://msdn.microsoft.com/en-us/library/aa915408.aspx

    【讨论】:

    • 不幸的是,HKLM\Init 解决方案对于 CF 应用程序通常会失败,因为它会在尚未加载 CF 本身所需的 API 之前尝试启动您的应用程序。
    • @ctacke - 知道如何等待支持 CF 所需的 API 可用吗?或者知道它们是什么?知道这一点后,可能会在退出并允许启动 CF 应用程序之前对条件进行本机 exe 轮询。啊。找到你的帖子:opennetcf.com/2009/04/15/… 谢谢!
    • 除非您特别依赖延迟加载的 API,否则这些注册表项可用于启动 CF 应用程序,就像本机应用程序一样。您可能想要等待 GWES 被加载,但实际上任何窗口应用程序,无论是否原生,都应该等待 GWES。如果您想要使用 WaitForAPIReady 的延迟加载 API,您别无选择,只能编写一个非常简单的本机应用程序来等待,然后启动您的 CF 应用程序。
    猜你喜欢
    • 2020-02-10
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    相关资源
    最近更新 更多