2012-12-07 8 views
8

Was wäre der beste Ansatz, um einen Benutzer auf einem Touchscreen eines Windows Phone 8-Geräts zu simulieren?Windows Phone 8 - Touchscreen-Ereignisse simulieren

Ein Ansatz, den ich mir vorstellen könnte, ist, nativen Code zu verwenden, um die Win32-API-Funktionen aufzurufen, die die Mausereignisse steuern. Dies würde voraussetzen, dass Touchscreen-Ereignisse mehr oder weniger den Mausereignissen entsprechen und dass diese API-Funktionen zugänglich sind. Weiß jemand, ob das bei WP8 der Fall ist?

Ein anderer Ansatz wäre, etwas wie den Android ADB für das Windows Phone zu haben. Unter Android kann man mit ADB das Gerät vom PC aus steuern und auch Touchscreen-Ereignisse simulieren (z. B. über Monkeyrunner). Ich habe keine Informationen gefunden, wenn es ein Tool wie ADB für Windows Phone 8 gibt.

Der Zweck der Suche nach einer Lösung dafür ist die Integration von Windows Phone 8-Geräten in einem automatisierten Testprozess.

+0

http://StackOverflow.com/Questions/2855586/Run-Debug-Mode-from-Command-line Überprüfen Sie diese und Nummer 11 auf diesem http://www.codeproject.com/Articles/359801/10plus-powerful-debugging-tricks-with-Visual-Studi – MillyMonster

+0

Wenden diese Strategien für die Windows Phone-Entwicklung an? Ich habe sie ausprobiert ... Für den ersten Link gab es keine "Debugger-Option". Für den zweiten Link kann ich "View-> Anderes Windows-> Command Window" in Visual Studio Express 2012 für WP8 nicht finden (vielleicht ist es nur im vollen Visual Studio verfügbar, hilft es aber trotzdem für Windows Phone Entwicklung?) –

+0

Ich nahm an, beide Versionen von Visual Studio hätten diese Optionen. Es tut uns leid. – MillyMonster

Antwort

5

Ich fand heraus, dass es eine DLL-Datei namens InputInjection.dll im Ordner System32 des Windows Phone 8 (zumindest in dem Simulator-Image, das ich montiert).

Diese Bibliothek enthält die folgenden Funktionen:

  • ApiInjectInitialize
  • ApiInjectTouchEvent
  • ApiInjectButtonEvent
  • ApiInjectEnableExclusive
  • ApiInjectUninitialize

InputInjection.dll in Dependency Walker

einige der Forschung, fand ich heraus, dass es offizielle Wege Touch-Eingabe für Windows 8 Entwicklung zu simulieren:

jedoch die Funktionen für Windows 8 Entwicklung sind nicht verfügbar unter Windows Phone 8. Aber die Funktionen sind ähnlich denen, die ich in InputInjection.dll:

benannt
  • InitializeTouchInjection ähnlich
  • InjectTouchInput ähnlich wie ApiInjectInitialize ApiInjectTouchEvent
  • (...)

Ich war nicht in der Lage, alle Unterlagen auf InputInjection.dll und seine Funktionen zu finden. Diese Funktionen werden auch nicht in den Headerdateien des SDK angezeigt. Möglicherweise verwendet Microsoft diese Funktionen intern für eigene Tests während der Windows Phone-Entwicklung.

Die Frage ist: Ist es möglich, auf diese Bibliothek zuzugreifen und diese Funktionen irgendwie aufzurufen? Dies wäre vergleichbar mit der Verwendung von "privaten APIs" auf iOS, denke ich. Ich habe mehrere Möglichkeiten versucht, dies mit einer Windows Phone 8 App mit nativem C++ - Code zu erreichen, aber bisher hatte ich kein Glück (der Grund dafür ist, dass die Apps auf Windows Phone Sandboxing ausführen). Gibt es eine Möglichkeit, eine Binärdatei auf Windows Phone zu erhalten (vielleicht über eine Debug-Brücke oder etwas)?

0

Sie können auf alle diese APIs von Win32 Service/Kernel Driver zugreifen. Fügen Sie die Header-Datei zu Ihrem Quellcode und Bibliothek der Injektion Methode wird es funktionieren

+0

Hast du eine App gebaut, die das erfolgreich macht? Wenn ja, haben Sie C# -Code verwendet oder handelt es sich um eine native App? –

+0

habe ich mit nativem Code gemacht. Wenn Sie mit C# machen wollten, verwenden Sie die WinPRT-Komponente und rufen Sie von C# zu nativem Code auf – user2307098

+0

Wie haben Sie die Funktionen der InputInjection.dll aufgerufen (welche Argumente)? Können Sie einen Beispielcode posten? –