Bildschirmtastatur basteln..nur WIE?

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Deutron.

    Bildschirmtastatur basteln..nur WIE?

    Hallo zusammen,

    ich möchte eine Bildschirmtastatur basteln. Aber ich weiß nicht wie ich sagen kann das beim Klick auf den Button1 nur in die Textbox geschrieben werden soll die gerade selektiert ist. (Also wo der Schreibmauszeiger blinkt.)
    Kann mir da jemand weiterhelfen? Die Bildschirmtastatur soll nicht für Windows sein sondern für eine andere Form die von meinen Programm ausgeht.

    MFG
    Hmm, wenn es an eine aktiv-blinkende TextBox gehen soll, die jedesmal unterschiedlich ist, würde ich es mit

    VB.NET-Quellcode

    1. SendKeys.Send("j")


    machen. Dort kannst du auch wunderbar mehrere Zeichen zusammen senden (z.B. Alt + S) In der MSDN-Dokumentation findest du unter "SendKeys" weitere Informationen.
    In VB6 beim Button aus dem "Microsoft Forms 2.0 Object Library"-Verweis gab es die Eigenschaft "TakeFocusOnClick", welche man in diesem Fall auf false stellen könnten. Da es aber beim Standard-VB6-Button diese Eigenschaft nicht mehr gab, wirds die in .net auch nicht mehr geben oder?
    Aber Du kannst dir einen public Zeiger anlegen und jedes mal wenn irgend einer Textbox den focus bekommt, setzt du den Zeiger auf diese Textbox sodass du über den zeiger immer zur aktuellen Textbox findest.
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    Hallo,

    ich habe ein ähnliche Problem, ich komme irgendwie nicht weiter.
    Immer wenn ich auf button klicke dann ist der cursor nicht mehr in der textbox.

    Wie mache ich den das:
    "Aber Du kannst dir einen public Zeiger anlegen und jedes mal wenn
    irgend einer Textbox den focus bekommt, setzt du den Zeiger auf diese
    Textbox sodass du über den zeiger immer zur aktuellen Textbox findest."
    ?
    Ich stand mal vor ähnlichem Problem, dachte auch erst total easy mit SendKeys, aber nicht den verlierenden Focus bedacht.

    Nun nach kurzem rumforschen nutze ich nun die Windowsinterne Tastertur:

    Start -> Programme -> Zubehör -> Eingabehilfe -> Bildschirmtastatur
    Hallo,

    ich wurde schon gerne eigene Tastatur programmieren.
    Ich stand mal vor ähnlichem Problem, dachte auch erst total easy mit SendKeys, aber nicht den verlierenden Focus bedacht.
    damit habe ich auch seit eine Woche rumschlagen müssen.

    Hat jemanden eine Idee wie ich es lösen können.

    ps. ich habe versuch form.focus=false zusetzen, wie schon erwartet kann man das nicht machen xD
    Mir fällt gerade noch eine Möglichkeit ein, man macht sich eine Form die eine Tastertur darstellt, die man aber nicht Focusieren kann, sie ist aber TopMost.

    So in einem Timer überprüft man die Maus Koordinaten und Maus Events. Bei einem Mausklick wird geschaut ob sich der Mauszeiger innerhalb eines Buttons befindet. Die Position hat man ja über Form.Left + ButtonA.Left und nur noch eine Überprüfung

    VB.NET-Quellcode

    1. If MausX > Form.Left + ButtonA.Left And MausX < Form.Left + ButtonA.Left + ButtonA.Width Then
    2. SendKeys("A")
    3. End If


    Müsste ggf. bischel verfeinert werden aber prinzipiell dürfte das doch eine Lösung sein oder sieht das jemand anders?

    Dodo schrieb:

    Mir fällt gerade noch eine Möglichkeit ein, man macht sich eine Form die eine Tastertur darstellt, die man aber nicht Focusieren kann, sie ist aber TopMost.

    So in einem Timer überprüft man die Maus Koordinaten und Maus Events. Bei einem Mausklick wird geschaut ob sich der Mauszeiger innerhalb eines Buttons befindet. Die Position hat man ja über Form.Left + ButtonA.Left und nur noch eine Überprüfung

    VB.NET-Quellcode

    1. If MausX > Form.Left + ButtonA.Left And MausX < Form.Left + ButtonA.Left + ButtonA.Width Then
    2. SendKeys("A")
    3. End If


    Müsste ggf. bischel verfeinert werden aber prinzipiell dürfte das doch eine Lösung sein oder sieht das jemand anders?

    hmm, das ist nicht ganz optimal.
    wie hat Microsoft das hinbekommt?
    ich habe das folgende verhalten beobachtet: die tastatur ist immer OnTop aber das Focus nicht.
    meine frage ist nun wie kann ich eine Form nicht focusieren lassen?

    hat jemand ein idee?
    1. Mit GetForenGround Funktion abfragen ob eine andere anwendung in vordergrund, bzw focus hat, oder mit GetFocus kannst du abfragen ob eine andere Anwendung den Focus besitzt
    2. Mit API SetFocus Funktion kannst du auf deine Anwendung sofort Focus setzen/in vordergrund bringen, wenn deine anwendung focus verliert