2012-12-07 168 views
8

模擬用戶在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設備集成到自動化測試過程中。

+0

http://stackoverflow.com/questions/2855586/run-debug-mode-from-command-line檢查了這一點,並在此編號11頁面http://www.codeproject.com/Articles/359801/10plus-powerful-debugging-tricks-with-Visual-Studi – MillyMonster

+0

這些策略是否適用於Windows Phone開發?我試了一下......對於第一個鏈接,沒有「調試器選擇」出現。對於第二個鏈接,我無法在Visual Studio Express 2012 for WP8中找到「View-> Other Windows-> Command Window」(也許它只能在完整的Visual Studio中使用,但對Windows Phone開發有幫助嗎?) –

+0

我認爲兩個版本的Visual Studio都會有這些選項。抱歉。 – MillyMonster

回答

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的頭文件中。也許微軟在Windows Phone開發過程中將這些函數內部用於自己的測試。

問題是:是否可以訪問這個庫並以某種方式調用這些函數?我猜,這與使用iOS上的「Private APIs」類似。我嘗試了幾種使用本機C++代碼的Windows Phone 8應用程序來實現此目的,但目前爲止我沒有運氣(基本原因是應用程序在Windows Phone上運行沙盒)。有沒有什麼辦法可以在Windows Phone上運行二進制文件(也許可以通過調試橋或什麼)?

0

您可以從Win32服務/內核驅動程序訪問所有這些API。包括頭文件到你的源代碼和注入庫的方法,它將工作

+0

你有沒有建立一個應用程序,成功地做到這一點?如果是的話,你使用C#代碼還是本機應用程序? –

+0

我已經完成了原生代碼。如果您想使用C#,請使用WinPRT組件並從C#調用本機代碼 – user2307098

+0

您是如何調用InputInjection.dll函數(哪些參數)的?你能發佈一個示例代碼嗎? –