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.