Windows Phone 8 - 模拟触摸屏事件

时间:2012-12-07 14:11:28

标签: windows-phone-8

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

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

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

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

2 个答案:

答案 0 :(得分:5)

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

该库包含以下功能:

  • ApiInjectInitialize
  • ApiInjectTouchEvent
  • ApiInjectButtonEvent
  • ApiInjectEnableExclusive
  • ApiInjectUninitialize

InputInjection.dll in Dependency Walker

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

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

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

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

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

答案 1 :(得分:0)

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