8

ユーザーがWindowsPhone8デバイスのタッチスクリーンをタップするのをシミュレートするための最良のアプローチは何でしょうか?

私が想像できるアプローチの1つは、ネイティブコードを使用して、マウスイベントを制御するWin32API関数を呼び出すことです。これは、タッチスクリーンイベントがマウスイベントとほぼ同じであり、これらのAPI関数にアクセスできることを前提としています。これがWP8の場合であるかどうか誰かが知っていますか?

もう1つのアプローチは、WindowsPhone用のAndroidADBのようなものを用意することです。Androidでは、ADBを使用してPCからデバイスを制御し、タッチスクリーンイベントをシミュレートすることもできます(Monkeyrunnerなどを介して)。ADB for Windows Phone 8のようなツールがある場合、情報が見つかりません。

このための解決策を見つける目的は、自動テストプロセスにWindowsPhone8デバイスを統合することです。

4

2 に答える 2

5

Windows Phone 8のSystem32フォルダーにInputInjection.dllという名前のDLLファイルがあることがわかりました(少なくとも、マウントしたシミュレーターイメージには)。

このライブラリには、次の関数が含まれています。

  • ApiInjectInitialize
  • ApiInjectTouchEvent
  • ApiInjectButtonEvent
  • ApiInjectEnableExclusive
  • ApiInjectUninitialize

DependencyWalkerのInputInjection.dll

いくつかの調査を行ったところ、Windows8開発用のタッチ入力をシミュレートする公式の方法があることがわかりました。

ただし、Windows8の開発に使用される関数はWindowsPhone 8では使用できません。ただし、関数の名前は、InputInjection.dllで見つけたものと同じです。

  • ApiInjectInitializeと同様のInitializeTouchInjection
  • ApiInjectTouchEventに似たInjectTouchInput
  • (...)

InputInjection.dllとその関数に関するドキュメントが見つかりませんでした。これらの関数は、SDKのヘッダーファイルにも表示されません。たぶん、Microsoftはこれらの関数をWindowsPhone開発中の独自のテストのために内部的に使用しています。

問題は、このライブラリにアクセスして、これらの関数を何らかの方法で呼び出すことは可能ですか?これは、iOSで「プライベートAPI」を使用するのと似ていると思います。ネイティブC++コードを使用してWindowsPhone8アプリでこれを実現するいくつかの方法を試しましたが、これまでのところうまくいきませんでした(基本的な理由は、アプリがWindows Phoneでサンドボックス化されて実行されるためです)。Windows Phoneでバイナリを実行する方法はありますか(おそらくデバッグブリッジなどを介して)?

于 2013-01-07T12:51:33.257 に答える