1

RubyでAutoitを使用しようとしています。Autoit には、ウィンドウ タブ アクセスなど、Gui オートメーションに必要なユーザー定義関数がいくつかあります。問題は、通常の autoit API とは異なり、autoit dll の ruby​​ win32ole オブジェクト ハンドルから autoit の UDF にアクセスできないことです。 . Ruby コードでこれらの UDF にアクセスする方法はありますか? これらは実際にはautoitスクリプトで定義されたいくつかの機能であり、私が望むことは不可能だと思います. 以前にこれを試して何らかの結論に達したかもしれない誰かからの意見が欲しい.

よろしくお願いします、 アンジャリ

4

2 に答える 2

2

RubyでUDFを書き直すのは簡単な解決策です。ただし、作業量が多いため、すべての場合に解決策とは限りません。AutoItをdllやCOMなどにコンパイルする方法がないため、RubyからAutoIt関数を直接呼び出す方法はありません。

あなたができることは、AutoIt UDFを書き直して、プロセス間通信を可能にすることです。これは、コマンドラインパラメータを介して行うことができます。

If $CmdLine[0] > 1 Then
    Switch $CmdLine[1]
        Case "/1"
            Method1()
        Case "/2"
            Method2()
    EndSwitch
EndIf

Func Method1()
    ConsoleWrite("This is the 1st Method" & @CRLF)
EndFunc

Func Method2()
    ConsoleWrite("This is the 2nd Method" & @CRLF)
EndFunc

上記のスクリプトをCUIとしてコンパイルし(AutoItコンパイラのオプションをチェック)、Rubyから実行します。その後、標準ストリームを介して出力を取得できます。または、スクリプトの出力をディスク上のファイルに書き込んでから、Rubyを使用してファイルの内容を読み取ることもできます。

従来とは異なるプロセス間通信のその他のオプションには、次のものがあります。

  • メールスロット: http://www.autoitscript.com/forum/topic/106710-mailslot/
  • _SendMessage:AutoItスクリプトがRubyで作成されたウィンドウにWindowsメッセージを送信するようにします
  • AutoItでTelnetサーバーを作成し、TCPを介してコマンドを送受信します:http ://www.autoitscript.com/forum/topic/123713-simple-telnet-server-skeleton-with-authentication/
  • よりステートレスな通信を探している場合、またはWebからのHTTPサーバー:GoogleでAutoITHTTPServerを検索します。新規ユーザーのスパム保護により、リンクを投稿できなくなります。

可能性は無限大です。:)この投稿はあなたが始めるはずです。

于 2011-02-09T09:00:16.487 に答える
0

autoitフォーラムによると、それはできません。RubyでUDFを書き直す必要があると思います。

于 2011-01-13T14:47:44.687 に答える