Tablet-Modus prüfen

  • VB.NET
  • .NET 4.0

SSL ist deaktiviert! Aktivieren Sie SSL für diese Sitzung, um eine sichere Verbindung herzustellen.

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von SchorschCode.

    Tablet-Modus prüfen

    Neu

    Hallo zusammen,

    ich habe mit VB.Net 2010 ein Programm erstellt, welches sowohl auf einem normalen PC als auch auf einem Windows-Tablet laufen soll.

    Wie kann ich im Programm prüfen, ob in Windows der Tablet-Modus aktiviert wurde?

    Danke im voraus für die Tipps.

    Schorsch

    Neu

    Hallo

    Also reden wir von einer UWP App richtig? Denn wenn es eine App sein soll führt kein Weg über UWP vorbei, sonst ist und bleibt es eine Desktop App.

    Hierfür gibt es eine API welche dir Informationen darüber liefert wie der User das Gerät bedient, den auch im Tablet Modus kann ich mit Maus und Tastatur bedienen, das muss ja auch bedacht werden.

    Schau mal unter Windows.UI.ViewManagement.UIViewSettings.UserInteractionMode

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    Neu

    Hallo Sascha,

    danke für den Hinweis.

    Ich hatte mir das (natürlich) einfacher vorgestellt. Meine Desktop-Anwendung ist auch für Touchscreens gedacht, und das war für mich dasselbe wie eine Tablet-Bedienung. Ist es natürlich nicht, wie ich eben gelesen habe.

    Aber bei der geringen Funktionalität will ich nicht extra eine UWP-Anwendung erstellen.

    Mal sehen, vielleicht hat ja jemand noch eine Idee.

    Gruß
    Schorsch

    Neu

    Hallo

    Naja, wenn du zumindest die Desktop-Anwendung mit WPF erstellt gibt es hier Events für die Bedienung über Touch wie z.b. OnTouchDown
    So kann man eigendlich auch feststellen ob nun per Touch oder per Maus ineragiert wird.

    In WinForms weis ich es ehrlich gesagt nicht. Keider hast du ja immer noch nicht geschrieben was für ein DesignFramework du verwendest.
    Aber warum sollte ich eine WinForms anwendung erstellen wenn ich meine anwendung für Touch optimieren möchte?

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    Neu

    Hallo Sascha,

    es handelt sich um eine WinForms-Anwendung mit sehr geringer Funktionalität. Da müssen nur ein paar numerische Tasten gedrückt oder über die Tastatur eingegeben werden.

    Üblicherweise läuft die Anwendung auf einem Desktop-PC. Nun habe ich ein W10-Tablet in die Finger bekommen und fand die Idee reizvoll, dasselbe Programm auch da laufen zu lassen. Geht auch soweit. Allerdings wird an einer Stelle die Seriennummer der HDD abgefragt - und das Tablet hat natürlich keine und das Programm stürzt ab.

    Da dieser Tablet-Modus ja eine Windows-Einstellung ist dachte ich, die könne man abfragen.

    Ich gebe Dir völlig recht, dass eine ordentliche Tablet-Anwendung eine andere Basis braucht.

    Trotzdem besten Dank und Gruß nach Wiener Neustadt

    Schorsch

    Neu

    SchorschCode schrieb:

    und das Tablet hat natürlich keine und das Programm stürzt ab

    Zeig mal deinen Code. Ein Tablet hat keine HDD aber eine SSD oder einen Flash Speicher. Auch diese haben eine Seriennummer.

    Wenn du zeigst wie du die Seriennummer abrufst können wir dir sicher Tipps geben wie du den Fahler beseitigst.
    Da wäre ein Treadtitel "Festplatten-Seriennumer abrufen schlägt auf Tablet fehl" besser gewesen. ^^

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    Neu

    Hallo Sascha,

    ich wollte schon wissen, ob ich den Tablet-Modus prüfen kann, weil ich a) darüber nichts fand im Forum und b) ich dies auch an anderer Stelle noch gut gebrauchen kann.

    Hier der Code zum Abfragen Seriennummer der HDD:

    VB.NET-Quellcode

    1. Function GetHDDSerial(ByVal HDD_idx As Integer) As String
    2. Dim searcher As New System.Management.ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive")
    3. For Each wmi_HD As System.Management.ManagementObject In searcher.Get()
    4. If CInt(wmi_HD.Item("Index")) = HDD_idx Then
    5. Return Environment.MachineName & "-" & wmi_HD.Item("Signature").ToString
    6. End If
    7. Next wmi_HD
    8. Return ""
    9. End Function


    Der Aufruf erfolgt mit

    VB.NET-Quellcode

    1. GetHDDSerial(0)


    weil ich immer nur die Seriennummer des Laufwerks C: haben möchte. Bin gespannt auf die Lösungsansätze.

    Gruß

    Schorsch

    Neu

    Hallo

    Gerade das hier gefunden. Ist das nicht das was du benötigst?

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    Neu

    Hallo Sascha,

    genau das ist es!

    Wenn der Tablet-Modus eingeschaltet ist, hat folgender Registry-Eintrag

    VB.NET-Quellcode

    1. "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ImmersiveShell"


    im Key "TabletMode" den Wert 1, sonst ist der Wert 0.

    Vielen Dank, Sascha. Hast mir sehr geholfen!

    Gruß

    Schorsch