
AutoIt a funkce ClipGet()
Zdravím.
Používám AutoIt v3.3.10.2 a mám problém s tím, že funkce ClipGet() někdy (většinou ano, ale není na to spolehnutí) nenačte text předtím uložený do schránky přes Ctrl-Ins (Ctrl-C tam není podporované). Ve schránce ten uložený text přitom je. Je vidět, že kurzor myši na tom místě klikne a problikne i zvýraznění vybraného textu ale do proměnné $bak se to nedostane.
Zjistil jsem, že částečně pomůže vložit krátkou prodlevu mezi vložením na obrazovce vybraného textu do schránky a vlastní funkcí. Spolehlivé to ale i tak úplně není.
V tomto případě si někdy opakovaně klikne a tváří se jako by údaj nepřečetl.
Příklad kousku kódu
;; Čekám až se na určeném místě obrazovky objeví text "usp" abych mohl pokračovat dál
MouseClick("left",86,819,2)
Send("{CTRLDOWN}{INS}{CTRLUP}")
Sleep(200)
$bak = ClipGet()
if $bak <> "usp" Then
ClipPut ( " " )
sleep (1000)
MouseClick("left",86,819,2)
Send("{CTRLDOWN}{INS}{CTRLUP}")
Sleep(200)
$bak = ClipGet()
if $bak <> "usp" Then
ClipPut ( " " )
sleep (1000)
MouseClick("left",86,819,2)
Send("{CTRLDOWN}{INS}{CTRLUP}")
Sleep(200)
$bak = ClipGet()
if $bak <> "usp" Then
ClipPut ( " " )
sleep (1000)
else
Exit
EndIf
EndIf
EndIf
;; Ok našel se, jdeme dál
MouseMove(152,818)
MouseClick("left",152,818,2)
Send("{CTRLDOWN}{INS}{CTRLUP}")
Sleep(200)
$bak = ClipGet()
if number($bak) = 259 Or number($bak) = 254 Then
Send("{SPACE}n")
EndIf
Nemáte nějaký jiný tip, co s tím?
skus pouzit _ClipBoard_SetData a _ClipBoard_GetData na pracu s clipboardom
Děkuji za tip. Hned po dovolené ověřím.
Ověřeno a pokud tehdy nebyly zrovna skvrny na Slunci, tak to vypadá, že to je skutečně spolehlivější. Na cca stejném vzorku dat to zatím nespadlo.
Dík.
Menší oprava. Spolehlivější ano, ale ne zcela. Bez té 100ms pauzy to spolehlivé není. Původně při použití ClipGet() tu prodlevu v podstatě zařizoval řádek Send("{RIGHT}{CTRLDOWN}v{CTRLUP}{LEFT}")