Excel klávesnice a myš

Tento objekt umí pracovat s klávesnicí a myší, toto lze využít pro automatizaci aplikace, která nemá žádné použitelné API či jinou možnost přistupovat k ní elektronicky. Zde popíši jen samotný objekt. Proč jsem ho napsal a s čím sem bojoval je v článku zde.

Ukázka

Jde o pár řádků kódu(7) pro ukázku. Zvládne to opravdu každý. V testovacím souboru si můžete objekt „osahat“.

Testovací soubor obsahuje metUkazka to je to co je na videu (jen vyhledání a kopírování) a metUkazka_s_kontrolou zde kontroluji název vyhledávaného klienta zda je kopírovaný email skutečně jeho.

Objekt má 10 public funkcí, 3 private a 2 objektové

Public

  • metMysKlik – jen klikne na určené místo
  • metMysKlikVypisText – klikne na souřadnicea vypíše požadovaný text znak po znaku(zde je závislost na CapsLock, MumLock, znakové sadě atd…). Je vhodné pro klik s použitím nějaké funkční klávesy, například promazání nějakého pole „{DEL 10}“ – 10x zmáčknout DEL. Pro výpis hodnot nedoporučuji využívat, vhodnější se cokoli s CtrlV.
  • metMysKlikCtrlC – klikne na souřadnice a stiskne ctrl+c. Návratová hodnota je obsah schránky. Schránka je po této funkci prázdná.
  • metMysKlikCtrlV – klikne na souřadnice a stiskne ctrl+v. Tímto se dají vkládat hodnoty do požadovaných polí ze schránky. Schránka se plní vstupní hodnotou této funkce, není potřeba se schránkou nijak pracovat. Schránka je po této funkci prázdná.
  • metVypisText – vypíše požadovaný text znak po znaku(zde je závislost na CapsLock, MumLock, znakové sadě atd…). Je vhodné pro klik s použitím nějaké funkční klávesy, například promazání nějakého pole „{DEL 10}“ – 10x zmáčknout DEL. Pro výpis hodnot nedoporučuji využívat, vhodnější se cokoli s CtrlV.
  • metCtrlC – ctrl+c
  • metCtrlV – ctrl+v
  • metCekejMS – čeká x milisekund, funkce obsahuje kontrolu na stisknutí přerušovací klávesy(prerusovaciKlavesa)
  • setClipboard – uloží hodnotu do schránky – pokud by nevyhovovaly funkce s CtrlC
  • getClipboard – načte hodnotu ze schránky a schránku vyčistí – pokud by nevyhovovaly funkce s CtrlV

Private

  • metUkonceni – kontroluje pomocí metStavKlavesy zde nedošlo ke stisku přerušovací klávesy(prerusovaciKlavesa) a pokud ano zeptá se zda ukončit a nebo pokračovat. Dá se použít i jako stopka procesu.
  • metStavKlavesy – samotná kontrola stisku přerušovací klávesy (prerusovaciKlavesa)
  • metResetKlavesy – resetuje stav přerušovací klávesy (prerusovaciKlavesa) aby se nevyhodnocoval stisk stále

Objektové

  • Class_Initialize spouští se sama při tvorbě objektu– nastavení doby čekání při každé operaci (2 ms jsou OK), nastavenípřerušovací klávesy (prerusovaciKlavesa) a resetování její funkce (po stisku již nedělá nic, jen ji zachytává tento objekt)
  • Class_Terminate spouští se sama při ukončení/zničení objetu – nastavení původní funkce přerušovací klávesy

Zde POZOR nastavení přerušovací klávesy, je třeba udělat v obou funkcích, jinak nebude fungovat správně. Class_Initialize (prerusovaciKlavesa, Application.OnKey) plus Class_Terminate(Application.OnKey). Klávesa je definována i v Enum enumKlavesy, tak změnit i zde.

Implementace

Pro fungování je potřeba Microsoft Forms 2.0 Object Library , pokud nebude v seznamu je k nalezení pod FM20.dll například C:\Windows\System32\FM20.dll

Zkušeným to psát nemusím, ale pro začátečníky připomínám. Aby bylo možné objekt použít musí se objekt inicializovat. Já mám rád tuto variantu. RPA bude objekt pro práci s klávesnicí a myší

    Dim RPA  As clsKlavesniceMys
    Set RPA = New clsKlavesniceMys

Půjde tedy pak použít:

RPA.metVypisText "{DOWN}"

pro klik na klávesu dolů

RPA.metMysKlikCtrlV klik, "Slovo", 150, 420

Pro klik na souřadnice 150,420 a vložení pomocí ctrl+v "Slovo"
Na těchto souřadnicích je pole pro vyplnění hodnoty.