Autor Téma: Simulácia (opäť) stlačenia klávesu  (Přečteno 250 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6141
  • Karma: 44
    • Verze Delphi: W10 + D11
Simulácia (opäť) stlačenia klávesu
« kdy: 26-11-2021, 12:38:57 »
Už to tu dlho nebolo. keybd_event je zastaraný a mám použiť SendInput. Našiel som kód v nejakom C. Je nad moje. Ide mi o VK_INSERT
Kód: Delphi [Vybrat]
  1.   UINT SendInput(
  2.   [in] UINT    cInputs,
  3.   [in] LPINPUT pInputs,
  4.   [in] int     cbSize
  5. );
  6. .
  7. void ShowDesktop()
  8. {
  9.     OutputString(L"Sending 'Win-D'\r\n");
  10.     INPUT inputs[4] = {};
  11.     ZeroMemory(inputs, sizeof(inputs));
  12. .
  13.     inputs[0].type = INPUT_KEYBOARD;
  14.     inputs[0].ki.wVk = VK_LWIN;
  15. .
  16.     inputs[1].type = INPUT_KEYBOARD;
  17.     inputs[1].ki.wVk = VK_D;
  18. .
  19.     inputs[2].type = INPUT_KEYBOARD;
  20.     inputs[2].ki.wVk = VK_D;
  21.     inputs[2].ki.dwFlags = KEYEVENTF_KEYUP;
  22. .
  23.     inputs[3].type = INPUT_KEYBOARD;
  24.     inputs[3].ki.wVk = VK_LWIN;
  25.     inputs[3].ki.dwFlags = KEYEVENTF_KEYUP;
  26. .
  27.     UINT uSent = SendInput(ARRAYSIZE(inputs), inputs, sizeof(INPUT));
  28.     if (uSent != ARRAYSIZE(inputs))
  29.     {
  30.         OutputString(L"SendInput failed: 0x%x\n", HRESULT_FROM_WIN32(GetLastError()));
  31.     }
  32. }
Hlavne neviem ako deklarovať inputs.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6141
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Simulácia (opäť) stlačenia klávesu
« Odpověď #1 kdy: 26-11-2021, 13:15:09 »
Trúbi, svieti, len nejde. Kde som sa sekol?
Kód: Delphi [Vybrat]
  1. var
  2.   Inputs: array [0..0] of TInput;
  3. begin
  4.   ZeroMemory(@Inputs, SizeOf(Inputs));
  5.   Inputs[0].Itype := INPUT_KEYBOARD;
  6.   Inputs[0].ki.dwFlags := VK_INSERT;
  7.   SendInput(1, Inputs[0], SizeOf(TInput));
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6141
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Simulácia (opäť) stlačenia klávesu
« Odpověď #2 kdy: 26-11-2021, 14:56:52 »
Kód: Delphi [Vybrat]
  1.   ZeroMemory(@Inputs, SizeOf(Inputs));
  2.   Inputs[0].Itype := INPUT_KEYBOARD;
  3.   Inputs[0].ki.wVk := VK_INSERT;                      // Tu
  4.   SendInput(1, Inputs[0], SizeOf(TInput));

W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.