Announcement

Collapse
No announcement yet.

Funktionstasten abfragen / Tastendruck simulieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Funktionstasten abfragen / Tastendruck simulieren

    1.) Funktionstasten abfragen:
    Wie kann ich abfragen welche Funktionstaste in Kombination mit der Shift-Taste gedrückt wird. Von F1-F12 mache ich das in dem Ereignis FormKeyDown mit: z.B.: if (key=VK_F1) THEN ... Wie kann ich nun Shift+F1 abfragen.
    2.) Tastendruck simulieren:
    Beim Drücken einer Funktionstaste soll nun zum Beisbiel das Drücken der ESC-Taste und A simuliert werden. Das mache ich mit SendStr(#27+'A'). Weis jemand wie ich STRG und A simulieren kann?

  • #2
    Hi

    Das Ereigniss OnKeyDown() gibt noch den Parameter Shift mit.
    If ssShift in Shift then ; fragt ob die Shift-Taste gedrückt ist. Schau mal unter TShiftState in der Hilfe nach.
    In der zweiten Frage ist es wichtig zu wissen ob NUR Deine Anwendung oder ALLE Anwendungen diese Keystrokes empfangen sollen. Die Funktion keybd_Event() simuliert einen Tastenanschlag so als ob diese echt gedrückt wird. Sollte also igendeine Anwendung aktiv sein bekommt diese mit keybd_event() die entsprechenden wm_KeyDown, wm_KeyUp und wm_Char Messages zugestellt. keybd_event() arbeitet also global auf ALLE Anwendungen. Für lokale Key-Events würde ich mit PostThreadMessage() einfach wm_KeyDown,wm_KeyUp Messages an meine Anwendung absetzen. Weitere hilfreiche Funktionen sind:

    Windows.MapVirtualKey(),

    Windows.GetAsyncKeyState(),

    Windows.GetKeyboardState(),

    Menus.ShortCutToKey(),

    Menus.ShortCut()

    Messages: wm_KeyDown, wm_KeyUp, wm_Char

    Gruß Hage

    Comment


    • #3
      tag hagen,

      kann ich mit keybd_Event() auch tastenkombinationen simulieren. ich möchte ein programm für behinderte
      schreiben,m it dem man mit dem druck einer taste eine tastenkombination simuliert z.b. <strg> + <c> mit
      der f2 taste. das ganze soll in ganz windows funktionieren!!!!!!! geht das mit dieser funktion???
      wenn ja, codebeispiel wäre nicht schlecht!!!!!

      mfg

      marku
      Herzliche Grüße

      Markus Lemcke
      barrierefreies Webdesign

      Comment


      • #4
        Hi Markus

        Aber klar doch, ALLE Tasten können simuliert werden.

        <pre>

        keybd_Event(vk_F11, 0, KEYEVENTF_EXTENDEDKEY, 0);
        keybd_Event(vk_F11, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);

        </pre>

        erste Anweisung "drückt" die Taste F11 und die zweite läßt sie "los", d.h. zuerst wird eine wm_KeyDown ans focusierte Fenster gesendet und die zweite Anweisung sendet wm_KeyUp F11. Das gerade aktive Eingabefenster, egal zu welcher Anwendung, bekommt diese Ereignisse zugestellt.

        Übrigens, mouse_Event() ist das Pedant für die Maus.

        Gruß Hage

        Comment


        • #5
          tag hagen,

          kannst du noch ein beispiel für strg + C machen????

          mfg

          markus

          p.s. hier ist also keine hook-funktion nötig?????????
          Herzliche Grüße

          Markus Lemcke
          barrierefreies Webdesign

          Comment


          • #6
            Hi Markus

            <pre>

            keybd_event(vk_Control, 0, KEYEVENTF_EXTENDEDKEY, 0);
            keybk_event(Ord('C'), 0, 0, 0);
            keybk_event(Ord('C'), 0, KEYEVENTF_KEYUP, 0);
            keybd_event(vk_Control, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);

            </pre>

            Du "drückst" also Strg (Control), hältst diese gedrückt. Dann wird 'C' gedrückt und wieder losgelassen, und danach die Strg-Taste.
            Genauso wie Du es auf der tastatur machst müsste es auch, wie oben, per Program gehen.

            Gruß Hage

            Comment

            Working...
            X