HTA를 사용하여 Automation Anywhere에서 Bot 실행 중 자막 표시

만들게 된 계기



RPA를 사용하여 데모와 데모 동영상을 만들 때가 종종 있지만,
표준에 갖추어진 Message Box에서는 문자가 작고 알기 어렵기 때문에,
동영상 편집 소프트로 넣을 것 같은 자막을 Bot측에서 생성할 수 있도록 해 보았습니다.

HTA(HTML Applications)라는 상당히 오래된 기술을 사용한 방법이므로, 언제까지 사용할 수 있는지 모르는 곳이 불안한 곳입니다.

참고로 한 페이지



HTML Applications Part 1 - Qiita
HTA에서 런타임 인수 얻기 -Idea to Code-
HTA 관련 태그[HTA:APPLICATION] - bnote

시도한 환경



Automation Anywhere Enterprise 11.3.2 한국어 버전
Windows 10 Professional
화면 해상도: 1920x1080 (배율 100%)

대략적인 흐름


  • HTA 파일 만들기
  • 자막 창 닫기 Task 만들기
  • 사용

  • 만드는 법



    HTA 파일 만들기



    네, 여기가 제일 힘들었습니다만, 여러분 안심해 주세요.
    완성된 것을 붙여 둡니다.
    화면 해상도를 자동으로 인식하는 기능은 구현하지 않으므로 환경이나 기호로 내용을 다시 작성해 주세요.

    텍스트 편집기에서 **.hta 형식으로 빈 hta 파일을 만들고 다음 코드를 붙여 저장합니다.
    <html><head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Subtitle</title>
        <HTA:APPLICATION
            ID="oHTA"
            APPLICATIONNAME="mysubtitle"
            BORDER="none"
            BORDERSTYLE="normal"
            CAPTION="no"
            CONTEXTMENU="yes"
            SCROLL="no"
            ICON="./icon.ico"
            INNERBORDER="no"
            MAXIMIZEBUTTON="no"
            MINIMIZEBUTTON="no"
            SHOWINTASKBAR="no"
        />
        <SCRIPT LANGUAGE="VBScript">
        Sub Window_OnLoad
            Window.ResizeTo 1600,170  '字幕表示するウィンドウのサイズを指定。画面の解像度、お好みにより調整してください。
            WindowLeft = (window.screen.availWidth - window.screen.availWidth)   '字幕を表示するウィンドウのX軸の位置を変数に格納
            WindowBottom = (window.screen.availHeight - 165)   '字幕を表示するウィンドウのY軸の位置を変数に格納。好みで調整してください。
            window.moveTo WindowLeft, WindowBottom    '変数に格納した値を元に、字幕を表示するウィンドウを移動
    
            full_str = oHTA.commandLine  'コマンドラインの文字列取得
            str_start = 1    'パスの先頭
            str_end = InStr(2, full_str, """")  'パスの末尾
            str_end = str_end + 1  'パスの直後のスペース分加算
            m = Mid(full_str, str_start, str_end)  'パス部分を取得
            param_str = replace(full_str, m, "")  'パス部分を削除
            dim oText
            Set oText = document.GetElementById("body")    'idを元に文字列を入れ替えたい部分を指定
            oText.innerText = param_str    'パス部分を削除した文字列(つまりはコマンドラインで指定したパラメーター部分=字幕に出したい文字)をHTMLの本文に書き出し。
          End Sub
    </SCRIPT>
    </head>
    <body style="background-color:#444;color:orange;font-family:meiryo"><center>
    <DIV id="body" Style = "font-size:56px"></DIV>
    </body></center></html>
    

    자막 창 닫기 Task 만들기



    위의 hta는 겉보기에 중요하므로 닫기 버튼이 포함된 제목 표시줄을 숨깁니다.
    따라서 자막 창을 닫을 때는 프로그램적으로 직접 닫아 줄 필요가 있습니다.
    이번에는 Automation Anywhere Enterprise의 Close Window 명령을 사용했습니다.
    HTA 파일의 다음 부분에서 설정한 이름이 자막 창의 창 이름이 됩니다.<title>Subtitle</title>아래와 같은 Task를 작성합니다. Delay의 초수나 유무는 기호로.
    어떠한 이유로 잘 닫히지 않은 윈도우가 남는 경우를 상정하고, Loop를 사용해 Subtitle라는 윈도우명의 윈도우가 있으면 모두 닫도록 하고 있습니다.



    사용



    자막 표시



    Open Program/File로 작성한 HTA 파일을 호출하여 자막 창을 표시합니다.
    3단계: 매개변수(선택 사항)에 입력한 문자열을 자막으로 표시합니다.


    자막 지우기



    방금 만든 자막 윈도우를 닫는 Task를 Run Task로 실행.
    Bot의 명령 목록에서 어디에 배치할지 등은 궁리가 있을지도 모릅니다.

    완성! !



    이런 식으로 표시됩니다.


    파악하고 있는 과제, 불편한 곳


  • 자막 창은 특히 "항상 맨 앞에 표시"와 같은 설정을하지 않으므로 자막이 뒤쪽으로 돌아가 보이지 않을 수 있습니다
  • "항상 맨 앞에 표시"는 HTA의 기능으로 구현할 수 없다. Excel 기능을 빌려 실현할 수는 있지만 표시가 느려서이 용도에는 적합하지 않았습니다.
  • Bot 측에서 보면 자막 윈도우가 Active Window라는 인식이 되어 버릴 가능성이 있고, Bot 측의 Window 지정을 조금 배려할 필요가 있다(기존의 Bot에 짜넣을 때 등)
  • Close Window 커멘드로 자막 윈도우를 닫을 때, 한순간 자막 윈도우가 Active가 되어, 뒤에 숨어 있던 상태이거나 하면, 사라진 자막이 또 한순간 나와 버려 보이지 않는다. (다른 방법으로 닫으면 그렇지 않을까요?)
  • 개행을 넣을 수 없는 사양
  • 좋은 웹페이지 즐겨찾기