【问题标题】:Windows Phone 8 - Simulate touchscreen eventsWindows Phone 8 - 模拟触摸屏事件
【发布时间】:2012-12-07 14:11:28
【问题描述】:

模拟用户点击 Windows Phone 8 设备的触摸屏的最佳方法是什么?

我可以想象的一种方法是使用本机代码来调用控制鼠标事件的 Win32 API 函数。这将假设触摸屏事件或多或少与鼠标事件相同,并且这些 API 函数是可访问的。有谁知道 WP8 是不是这样?

另一种方法是为 Windows Phone 提供类似 Android ADB 的东西。在 Android 上,可以使用 ADB 从 PC 控制设备并模拟触摸屏事件(例如通过 Monkeyrunner)。如果有像 ADB for Windows Phone 8 这样的工具,我还没有找到任何信息。

为此寻找解决方案的目的是将 Windows Phone 8 设备集成到自动化测试过程中。

【问题讨论】:

  • 这些策略是否适用于 Windows Phone 开发?我试过了......对于第一个链接,没有出现“调试器选择”。对于第二个链接,我在 Visual Studio Express 2012 for WP8 中找不到“查看->其他 Windows->命令窗口”(也许它仅在完整的 Visual Studio 中可用,但它对 Windows Phone 开发有帮助吗?)
  • 我假设两个版本的 Visual Studio 都有这些选项。对不起。
  • 在做一些研究时,我发现WinAPI的“winuser.h”中定义的“SendInput”函数(以及“SetCursorPos”)可以用来执行鼠标事件。此外,此函数的定义包含在 Windows Phone 8 SDK 头文件 (C:\Program Files (x86)\Windows Phone Kits\8.0\Include\winuser.h) 中。我试图在一个 WP8 C++ 项目中测试它并包含头文件。但是,出现了一个构建错误,告诉我 SendInput 没有定义。这里有什么想法吗?
  • 使用 Windows SDK 的 InputInjection API 有帮助吗?

标签: windows-phone-8


【解决方案1】:

我发现Windows Phone 8的System32文件夹中有一个名为InputInjection.dll的DLL文件(至少在我挂载的模拟器镜像中)。

这个库包含以下函数:

  • ApiInjectInitialize
  • ApiInjectTouchEvent
  • ApiInjectButtonEvent
  • ApiInjectEnableExclusive
  • ApiInjectUninitialize

做了一些研究,我发现有官方方法可以模拟Windows 8开发的触摸输入:

但是,用于 Windows 8 开发的函数在 Windows Phone 8 上不可用。但函数的命名类似于我在 InputInjection.dll 中找到的函数:

  • InitializeTouchInjection 类似于 ApiInjectInitialize
  • InjectTouchInput 类似于 ApiInjectTouchEvent
  • (...)

我找不到任何有关 InputInjection.dll 及其功能的文档。这些函数也不会出现在 SDK 的头文件中。也许微软在 Windows Phone 开发期间使用这些函数在内部进行自己的测试。

问题是:是否可以访问这个库并以某种方式调用这些函数?我猜这类似于在 iOS 上使用“私有 API”。我尝试了几种方法来通过使用本机 C++ 代码的 Windows Phone 8 应用程序来实现这一点,但到目前为止我没有运气(基本原因是这些应用程序在 Windows Phone 上运行沙盒)。有什么方法可以让二进制文件在 Windows Phone 上运行(可能通过调试桥或其他方式)?

【讨论】:

    【解决方案2】:

    您可以从 Win32 服务/内核驱动程序访问所有这些 API。将头文件包含到您的源代码和注入方法库中,它将起作用

    【讨论】:

    • 您是否构建了一个可以成功执行此操作的应用程序?如果是,您使用的是 C# 代码还是本机应用程序?
    • 我已经完成了本机代码。如果您想使用 C# 使用 WinPRT 组件并从 C# 调用本机代码
    • 如何调用 InputInjection.dll 的函数(哪些参数)?你能发布一个示例代码吗?
    • 您认为Windows 8 桌面还是Windows Phone 8?我知道它可以在 Windows 8 桌面上正式使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多