質問
私はルビーで自動車を使用しようとしています。 Window Tab AccessなどのGUIオートメーションに必要なユーザー定義の機能があります。問題は、通常の自動車APIとは異なり、Autoit DLL用のRuby Win32oleオブジェクトハンドルからAutoitのUDFSにアクセスできないことです。 。私のルビーコードでこれらのUDFにアクセスする方法はありますか?これらは実際には自動車スクリプトで定義されているいくつかの関数であり、私が望むものは不可能だと思います。私はこれを前に試したことがあり、いくつかの結論に達した人からの意見が欲しいです。
よろしくお願いします、アンジャリ
解決
によると、それはできません 自動車フォーラム. 。 RubyのUDFを書き直す必要があると思います。
他のヒント
RubyでUDFSを書き換えることは簡単なソリューションです。ただし、関係する作業量のため、それはすべての場合において解決策ではありません。 Rubyから自動車機能を呼び出す直接的な方法はありません。なぜなら、AutoitをDLLまたはcomなどにコンパイルする方法はないためです。
できることは、自動車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としてコンパイルし(自動車コンパイラのオプションをチェックしてください)、Rubyから実行します。その後、標準のストリームを介して出力をつかむことができます。または、スクリプトの出力をディスク上のファイルに記述してから、Rubyを使用してファイルの内容を読み取ることができます。
より非伝統的なインタープロセス通信のためのその他のオプションは次のとおりです。
- MailSlots: http://www.autoitscript.com/forum/topic/106710-mailslot/
- _SENDMESSAGE:自動車スクリプトにRubyで作成されたウィンドウにWindowsメッセージを送信させます
- AutoitでTelnetサーバーを作成する、TCPを介してコマンドを送信および受信します。 http://www.autoitscript.com/forum/topic/123713-simple-telnet-server-skeleton-with-authentication/
- HTTPサーバー、よりステートレス通信を探している場合、またはWebから:GoogleでAutoit HTTPサーバーを検索してください。新規ユーザー向けのスパム保護により、リンクを投稿することができません。
可能性は無限です。 :)この投稿はあなたを始めるべきです。