3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

RPA (Robotic Process Automation)Advent Calendar 2021

Day 13

AutoItによるRPAが、気づくとクリックに失敗して迷子になっているのを避けるには

Posted at

私、RPAは基本的にAutoItを使います。ローカルのツールを制御するのは割と手堅いのですが、長時間放置するような場合だと、想定した操作が実現せずに迷子になってしまうケースがままあります。Explorer上でのアイコンクリックも、やばめです。何が起きているのかはなかなかわからないのですが、起きているケースはほとんどが「WEBブラウザの操作」なので、「リンクをクリックしたつもりが、マウスカーソルが微動してドラッグになっている」という現象だと推察されます。

「遷移が遅れたら、遷移するまで待つ」というコードを組み込むと、大体そのコードで待ちぼうけを食らっているので、遷移し損ねているのは間違いなさそうです。そんな場合、どうすればよいでしょうか。私のお勧めは、下記のようなMouseClick()とMouseClickDrag()のラッパーを書いて置き換えることです。

;BlockInputは管理者権限でないと機能しない
#requireAdmin

;MouseClick,MouseClickDragは、ユーザー入力がノイズとなって効かない可能性がある
;具体的に言うと、マウスクリック時にマウスカーソルが揺れると、ブラウザ上では画像クリックではなく
;画像ドラッグとなってしまって効かなくなる
Func BIMouseClick ($btnname, $x=-1, $y=-1, $clicks = 1 , $speed = 10)
	If $x = -1 or $y = -1 Then
		Local $aPos = MouseGetPos()
		$x = $aPos[0]
		$y = $aPos[1]
	EndIf

	BlockInput(1)
	MouseClick($btnname, $x, $y, $clicks, $speed)
	BlockInput(0)
EndFunc
Func BIMouseClickDrag ($btnname, $x1, $y1, $x2, $y2, $speed = 10)
	BlockInput(1)
	MouseClickDrag($btnname, $x1, $y1, $x2, $y2, $speed)
	BlockInput(0)
EndFunc

小ネタでした!

本当は、クリップボード経由でのブラウザ拡張やExcel VBAとの連携なんかをご紹介したほうが付加価値感はあるのでしょうが、ひとまず、資格記事がトップだと落ち着かない、というのがあって、無理くりコード入りの記事をポストしました。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?