1 :
名無しさん@お腹いっぱい。 :
2010/06/22(火) 11:22:07 ID:dqr8+Nvh0 AutoItはBASICに似た言語仕様で、Windows用プログラムのGUI自動操作機能を提供します
主な特徴 ・ 実行環境はWindows ・ BASIC似た言語構造を持つ ・ TCPとUDPをサポート ・ COMオブジェクトをサポート ・ DLLをサポート ・ コンソールアプリケーションの実行と標準ストリームへのアクセスが可能 ・ GUI、メッセージボックス、入力ボックスの作成が可能 ・ 音声ファイルの制御可能 ・ マウス操作のシミュレートが可能 ・ ウィンドウ、プロセスの操作が可能 ・ アプリケーション、アプリケーション内の各コントロールへの入力、キーストロークの送信が可能 ・ スクリプトをスタンドアローンの実行形式にコンパイル可能 ・ Unicodeをサポート(v3.2.4.0以降) ・ 64ビットコードをサポート(v3.2.10.0以降) ・ 正規表現をサポート ・ Windows Vistaのユーザーアカウント制御に対応
wshでクリップボードを読むためにAutoItX3.dllだけ使ってるわ
AutoItは言語じゃねえソフトだ
AHK よりも言語仕様がきれいだからいいなぁと思ってるんだけど、 ホットキーにいろいろ制約があるんだよね、たしか。 修飾キーをホットキーにできないとか、ホットキー設定数に上限があるとか。
スレ立ったか、日本だとAutoHotKeyばっかだよな。 言語的に綺麗なのと、自動操作的なのがAutoItが向いているらしいが、 カスタマイズよりなのはAutoHotKeyですんじゃうのがねえ
シビアなキーカスタマイズが絡む場合は、AHKかkeyhacのPython使うほうがいいかもしれない。 キー操作が絡んで、かつ速度を求めないなら、AHKやkeyhacからWSHやAutoITのスクリプトを走らせてもいい。 AutoItXはWSHから使えるのが便利なところ。素のAutoItのGUIの部分は使えんけど。 GUI使いたきゃ、HTAから使ってもいいし、ほかのDLL使ってもいい。 SFCminiのDLLとSeraphyのDLLまで使えば、UWSCやAutoHotKeyとほぼ同等のことを javascriptやVbscriptの文法で出来てしまう。 テキストエディタなどWSHやdmscriptを使えるアプリのマクロからも、 他のアプリを制御したり、他のアプリのウィンドウの情報を取ってくることが簡単になる。 もちろん、出来ないことも大いけども。 いちいちコマンドラインツールを探さなくても、とりあえず今使ってるアプリを スクリプトから制御することが簡単になる。
>>10 SFCminiのDLLとSeraphyのDLL、知らんかった調べてみるわ
12 :
名無しさん@お腹いっぱい。 :2010/07/14(水) 13:57:51 ID:C5A1uOi20
ソフトはポータブルOK、スクリプトはEXE化OK、 チューニング済みのエディタ付き、 ものすごく詳細で質の高そうなヘルプとライブラリとGUIキット、 これだけ揃っているのに、 海外でもそれほど普及しているわけではないんだよな。 (昔Googleのトレンドサーチで調べてみたけど、ベトナムとか東南アジアが結構多かった) 例えばPythonとかでこういうことをやろうとすると、 この手のマクロだと意外と情報やツールが無くて、 かなり基本的なところから自分で手作りしなくてはならない。 PCやOSが変わっても問題ないような環境をそこそこ揃えるだけでも、かなり面倒。 UWSCの場合はEXE化が有料というのもあるけど、 CALL(include)の仕様等のせいなのか、 コミュニティに、サンプルスクリプトのレベルを超えた 「ライブラリ」と言う概念自体が、ないのがどうかなあと思う。
このまま落ちるのもったいないね。 次スレででもAutoHotKeyのスレタイトルに入れてもらって統合してもらったらいいのかもしれないw
14 :
名無しさん@お腹いっぱい。 :2010/07/20(火) 12:55:53 ID:5ndYae0j0
使えるツールなんだから、みなさんもときどきカキコしましょう。AutoItXでもいいじゃないですか。
このソフト使ってる人居たら 自分が使ってるスクリプト書いてくれ どんなことができるのかよく解らない
ほぅ。こんなスレあったのか。 普段AHK使ってるけど、AHKのコンパイルユーティリティに 「AutoIt」のロゴが出ていて気にはなっていた。 やっぱ派生元だけあって似てるな。 AHKがホットキーの制御、AutoItが他アプリの制御に特化してる感じ。 AHKも派生版だけどx64、COMあたりはサポートされてきてるし、 どっちも外部DLLや構造体操作はできるんで、一方で出来て他方で出来ないことは 殆ど無いんだろうけど。 (AutoItでLLフックしてホットキーツールとして使うとか) 文法的にはこっちが好みだけど、やりたい事のメインははキーマウス制御だからなぁ・・・
17 :
名無しさん@お腹いっぱい。 :2010/07/29(木) 08:01:37 ID:rPX9LvmZ0
日本だといまいちはやってない感があるけど シェア的にAutoItとAutoHotKeyもしくは他の自動化みたいなツールどれが上なんですかね 今AutoHotKey使っているけど、日本語情報多いしやりたいことがサクッとできることが多いんだけど 文法が独特すぎて AutoItとAutoHotKeyの違いみたいなの知りたいなあ
18 :
名無しさん@お腹いっぱい。 :2010/07/31(土) 12:26:35 ID:eK7X/SqxP
数ヶ月ぶりにやっと書き込みできた
スクリプト投稿サイトとかあったら面白いかね
>>17 少なくともuwsc(シェアウェア版)で出来る事は全てできるが
AHKとAutoITはどちらかにできてどちらかに出来ないものもあるから自分のやりたい事と相談したらいいかと
>>15 必要ない人にはまったくもってこの手のソフトは必要ないから安心しろ
>>18 作者乙
20 :
名無しさん@お腹いっぱい。 :2010/08/06(金) 12:15:01 ID:WoeFo9F90
if $a != $b Then 略 こんな感じで書きたいんですけど!=が実装されてないのでこんなときはどのように書いたらいいですか?
>>15 Run("notepad.exe")
Send("ようくそむし")
Exit
Run("notepad.exe") WinWaitActive("無題 - メモ帳") Send("ようくそむし") Exit
minimeとか、AutoItで書かれてるプログラムみてみるといいかも。 ソースが公開されてるはずだし。 他にはどんなのあんのかな?
もっと質問とか書いて 規制されて書けないなら代理レス頼んで 初歩的なものなら答えるから
25 :
名無しさん@お腹いっぱい。 :2010/08/08(日) 11:22:23 ID:S4yFr4zi0
こんな質問でもいいのかな AutoHotKeyをキーカスタマイズやちょっとしたウインドウの監視なんかに普段から使っていて、 その他の日常的な書き捨てスクリプトはLL系の言語で書いてます その上で、AutoItを使う利点といいますか、AutoItでしかできない、 もしくはAutoItだとこういう分野は他のツールや言語使うよりは楽だ、 というようなものはないでしょうか?
VBScriptとJScriptみたいなものだよ どちらかが上下関係が生まれるほどの差はないから好きなほうを使えばいい AHK使ってるなら無理に乗り換えなくてもいいかも知れない 専用のコードエディタやGUIエディタも便利だったりする
27 :
名無しさん@お腹いっぱい。 :2010/08/22(日) 15:15:17 ID:kJvkhdtl0
AutoHotKeyの言語仕様にぶち切れ気味になってきたから、せっかくだからAutoIt試してみるわ
>>1 関連リンクサンクス
28 :
名無しさん@お腹いっぱい。 :2010/08/22(日) 15:39:24 ID:kJvkhdtl0
指定したProcessの起動コマンドラインと引数取得する方法内ですか? AutoHotKeyみたいにAPI叩くしかないかな? リファレンスよんだけど標準ライブラリには、Process列挙とか探したりくらいしかないみたいだし。
29 :
名無しさん@お腹いっぱい。 :2010/08/22(日) 16:54:36 ID:kJvkhdtl0
AutoItってlogging用の命令かライブラリってないんですかね? loggingといっても、printfデバッグとか表示確認したいといいますか、 MsgBoxだと何度も表示が邪魔臭いけど、 ConsoleWriteだと表示、非表示のレベルを切り替えるが面倒だよね、という話です。 まあConsoleWriteで出しっぱなしでもいいんですが
30 :
29 :2010/08/22(日) 18:11:04 ID:kJvkhdtl0
loggingの件ですが、ConsoleWriteだとSciTEから実行時は標準出力に吐いてくれて、 ファイラーなどから実行時はとくに何事もなく実行されるので、ConsoleWrite使ってみます。 しかし、コマンドラインから実行しても出力がでないのですが、 これは/consoleつけてコンパイルしない限りは出せないものなのでしょうか?
亀レスだがコマンドラインからしても出力する 規制解けて書き込みできるからまだ見てたらコード晒してもらえればチェックしてもいいけど
あげ
Chromeを終了する際、1回 WinClose を実行するだけでは終了せず、何回か実行しなければならない 仕方がないので、 While WinExists("[CLASS:Chrome_WidgetWin_0]") <> 0 WinClose("[CLASS:Chrome_WidgetWin_0]") WEnd としているけど、何となくスマートではない気がする 何かいい方法はないかな?
>>33 ProcessClose("chrome.exe")
ただし副作用あり
もしくはControlSendでメニューから終了を押すとか
Chromeが変って事?
Chromeの仕様上そういう事になる
Chromeの仕様? バグを仕様と言うのとは違って?
バグじゃない仕様
ふ〜ん… どう言う仕様か解んないけど、そ〜成ってるって事で。
>>34 レスサンクス
来週そのやり方で試してみる
現時点で最新版から日本語訳サイトに載ってない関数をリストしてみて googleドキュメントとかに関数リストとか置いて編集できるようにしたら便利かな? 公式のライセンスに従えば大丈夫だと思うので・・・ AscWReturns BinaryReturns BinaryLenReturns BinaryMidExtracts BinaryToStringConverts ChrWReturns ControlTreeViewSends DllCallbackFreeFrees DllCallbackGetPtrReturns DllCallbackRegisterCreates FileFlushFlushes FileGetEncodingDetermines FileGetPosRetrieves FileSetPosSets GUICtrlSetDefBkColorSets GUICtrlSetDefColorSets GUIGetStyleRetrieves GUISetAccelerators GUISetStyleChanges HttpSetUserAgent InetClose InetGetInfo InetRead IsBinaryChecks IsPtr OnAutoItExitRegister OnAutoItExitUnRegister PluginCloseClose PluginOpenOpen ProcessGetStats Ptr RunAsRuns RunAsWaitRuns SendKeepActiveAttempts StdioCloseCloses StringCompareCompares StringFromASCIIArrayConverts StringToASCIIArrayConverts StringToBinaryConverts VarGetTypeReturns
便利 既存の関数でも結構仕様変わってるから、全面的に書きなおしたほうがよさげ
これ日本語サンプルとかヘルプを充実させるとuwscが儲からなくなるよね
AHK からの移行を考えており、AutoIt 試用を始めました。 あるファイルパスから、ファイル名、ディレクトリ、拡張子を それぞれ取り出すにはどうするのが簡便でしょうか。 (AHK では SplitPath を使っていました)
_PathSplit を使えばいいかな File.au3 をインクルードしないとダメだけど
最新ヘルプの日本語化どうなった? まだ進んでないようなら、俺も時間があるときに作業しようと思うけど
だから、そんな事言ってる時点で、( ´,_ゝ`)プッなのさ。 ホントにやる気有るなら、ガツガツ進んでるハズだから。
どうやら日本語化されると困る人が常駐しているようで
黙って作業を進める人は、サイトを畳むときも他人の都合になんて配慮してくれないけどな
思ったより使いやすかったです。 もう少し文字列処理が速いとよかったですね。 JSONの解釈にとても時間がかかってしまいます。
これってIniWriteでiniファイルを作成する時、文字のエンコードを指定できないの? スクリプトはUTF-8で保存してるのに、日本語を出力すると必ずShift_JISで保存されてしまう 元からUTF-8なiniファイルを事前に用意しておくってのは無しということで
iniファイルがない場合に@ComSpecでUTF-8のファイルを作成してIniWriteで書き込みでいいんじゃない
>>53 レスサンクス
コマンドプロンプトでやる方法はよくわからんかったから、ファイルが見つからなかった時に
$file = FileOpen("test.ini", 257)
FileWrite($file, "; Do not edit this file." & @CRLF & "; 編集しないでください。")
FileClose($file)
こんな風にするようにした
ごめん、これで解決したと思ったら、IniWriteで日本語書きこんだら文字化けしたわ 根本的に、IniWriteからはANSIでしか書きこめないみたい iniファイルはShift_JISで扱うしかないのか…残念だ
UTF-16LEで試してみたら、正常に書き込めた Unicode対応はだいぶ中途半端なんだね 何か一人で騒いじゃってごめん
いまいち盛り上がらんね ggると使ってる人は五年前からいるらしいけど やっぱ英語に抵抗があるからか
翻訳用wikiつくろうか
はい、つくってください
アフィリエイト張るけどいい?
貼っても編集されて消されるんじゃね?
編集できない箇所に張るけどそれでもよければ
何がやりたいんだこいつ
>>57 と、まぁ、そういうワケで盛り上がらないんだろうね。
UWSCは、本人がフォローしまくってるのにね。w
この手は今後NILScriptに大量移行しそうな予感…
やってもらうのはいいけどアフィ張るのは気に食わない奴のせいでまた発展しないダメスレ
NILは流行らないと思うよ あのライセンスじゃ使う気もおきない
68 :
名無しさん@お腹いっぱい。 :2010/10/22(金) 01:18:05 ID:xYv5iFsF0
AutoHotKey互換ライブラリってないんでしょうか? AutoHotKeyの言語仕様がどうにもイライラきてAutoIt試しているのですが、 AutoHotKeyでは楽にできたことが結構面倒ですよね? 例えば、タイマー作って、定期的にマウスカーソル以下のクラスとタイトルを得ようとしたときに、 AutoHotKeyでは、 SetTimer, on_timer,100 on_timer: MouseGetPos, x, y, win, ctr ; ウインドウのIDまで取るのに何でこの名前なんだ WinGetClass, class, ahk_id %win% WinGetTitle, title, ahk_id %win% Tooltip, % "Window Class: " class ", Window Title: " title return というような、かなりラップした形になっていて、AutoIt3もラップしてありますが、 タイマーの生成にウインドウを生成してウインドウハンドルが必要だったり素のWin32に近いですよね。 MouseGetPosやWinGetClassなどもそうですが。 確かにAutoIt3はそれらの処理を簡単に使えるようにラップしたり、 AutoHotKeyとある程度互換のあるライブラリを作ることができる言語だとは思うのですが、 似たようなことがこれからもあるとけっこう面倒だな、というのが第一印象でした。
じゃあAHK使えば
誰も書きこみしないで1ヶ月たってしまったな ホットキーの指定がやりにくいのが人気が出ない一因だろうな
71 :
名無しさん@お腹いっぱい。 :2010/12/12(日) 02:41:35 ID:7PqPjM4j0
>>39 は恥ずかしいやつだな。マルチプロセスモデルも知らんのか
誰も使ってないの?
FF-Page_Analyzerって動きますか?
@set @SHORT_CIRCUIT = true;/* & (@title batjs:%~nx0) & (@cscript.exe //nologo //e:jscript "%~f0" %*) & (@goto :eof) & @end */; // AutoItXのデモ。インストールが必要。Cscript.exeのバッチから起動して動かしてみる。 oshl=new ActiveXObject("WScript.Shell"); ofso=new ActiveXObject("Scripting.FileSystemObject"); try{oauto = new ActiveXObject("AutoItX3.Control.1");}catch(e){;oshl.popup('AutoItXのDLLをシステムに入れないと動かないです。',10);WScript.Quit();}; var oCONSOLE = ofso.CreateTextFile('CON', true); println=function(s){oCONSOLE.WriteLine(s);}; print=function(s){oCONSOLE.Write(s);}; 文字変換_reタイトル_reクラス=function(sretitle,sreclass){ var sopt="";if(typeof(sreclass)=="undefined"){sreclass="";}; if(sretitle!=""){sretitle="REGEXPTITLE:(?i)"+sretitle + ";";}; if(sreclass!=""){sreclass="REGEXPClass:(?i)"+sreclass + ";";}; if(sretitle!="" && sreclass!=""){sopt =" ";}; return "[" + sretitle + sopt + sreclass + "]"; }; stitle=文字変換_reタイトル_reクラス("^batjs:.*$","ConsoleWindowClass"); println("コンソールのウィンドウを動かしてみます。"); oauto.WinMove( stitle, "", 200,100,320,240); println("マウスもを動かしてみます。"); for(var x=200,y=100,i=0;i<330;i=i+10){ print('.');oauto.MouseMove(x + i, y);oauto.sleep(10); }; println("\nこれにて終了します。");oshl.popup("おわり");
AutoItX3をポータブル運用で実験したい人向けの準備。Cドライブの直下に適当なフォルダを作ってからそろえるものは4つ。 1 メモ帳で、cscript.exe.manifest というファイル名のテキストファイルを作る。これは別記する。 2 メモ帳で、sample.bat というファイル名のテキストファイルを作る。↓はその中身。 3 AutoITのサイトから自己解凍版を落として、その中のAutoItX3.dllをコピーする。 4 System32のフォルダからCscript.exeをコピーする。(WScript.exeやMshta.exe、D-Monkey、テキストエディタでも同じよう にやれば使えるよ)。すべてが揃ったらsample.batを実行してみる。 @set @SHORT_CIRCUIT = true;/* & (@title batjs:%~nx0) & (@%~dp0cscript.exe //nologo //e:jscript "%~f0" %*) & (@goto :eof) & @end */; // AutoItXのデモ。インストールが必要。Cscript.exeのバッチから起動して動かしてみる。 oshl=new ActiveXObject("WScript.Shell"); try{oauto = new ActiveXObject("AutoItX3.Control.1");}catch(e){;oshl.popup('AutoItXのDLLをシステムに入れないと動かないです。',10);WScript.Quit();}; stitle="[REGEXPTITLE:(?i)^batjs:.*; REGEXPClass:(?i)ConsoleWindowClass;]"; oauto.WinMove( stitle, "", 300,300,320,120); for(var x=300,y=300,i=0;i<330;i=i+10){WScript.StdOut.Write(".");oauto.MouseMove(x + i, y);oauto.sleep(10);};oshl.popup("おわり");
cscript.exe.manifestの中身はこんな感じ。(下記の中の、cscript.exeをwscript.exeに置き換えて、ファイル名をWScript.exe.manifestにすれば、WScript.exe用マニフェストの出来上がり。Windows2000はマニフェスト使えないから、DLLをシステムに入れないと駄目。) <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="cscript.exe" version="1.0.0.0" type="win32" /> <file name="AutoItX3.dll"> <typelib tlbid="{f8937e53-d444-4e71-9275-35b64210cc3b}" version="1.0" helpdir="" /> <comClass clsid="{1a671297-fa74-4422-80fa-6c5d8ce4de04}" threadingModel="Apartment" tlbid="{f8937e53-d444-4e71-9275-35b64210cc3b}" progid="AutoItX3.Control.1" description="AutoItX3 Class" /> </file> </assembly>
77 :
名無しさん@お腹いっぱい。 :2011/02/19(土) 08:14:16 ID:39MDu8Me0
何秒間か何もしないことを命令する時はどうすればいいんだ
sleepか
79 :
名無しさん@お腹いっぱい。 :2011/02/23(水) 08:29:18.76 ID:pHCPPz700
>>75 えーとこれは
AutoItのdllをWSH(JScript)から使うということでいいのかい?
dllさえ使えればどこでもAutoItが使えるのか
どこでも使えるようにするには、できればActiveXの登録を省きたいわけけど
マニフェストがあればAutoItX3.dllをシステムに登録しないでも使えるのかな
デーデデレデッ、ツッ、デーレデンデッ、デーデデレデッ、ツッ、デーレデンデッ So beat it, just beat it. ポゥ
ageてしまった
>>75-76 いけたよー
manifestを作ってexeの同じフォルダにおけば、COMをシステムに登録しなくても使えるのは便利だな
アップデートを気を付けないといけないが、それはポータブル運用だと当たり前か
ポータブル運用のmshta.exeでも同じようにAutoItX3.DLLを使えるよぉ。
>>75 と同じ要領でMshta.exeをコピーして、マニフェストを作って、おなじ場所に下記を sample.wsfとして保存し実行します。
CDATAのタグで囲まれた中はまんまHTA。引数の処理だけはWSFのメリットを生かして環境変数で渡し、配列argで受け取るようにしました。スクリプトが長いので2回に分けます。
<job id='htawsf'><resource id='htawsf'><![CDATA[;;;
<html><head><meta http-equiv=Content-Type content=text/html; charset=shift_jis><title>HTA</title></head><script> main=function(){
for(var sadd='',iii=0;iii<arg.length;iii++){sadd+=(iii+1)+"/"+(arg.length)+"="+arg[iii]+"<br>";};
document.getElementById( 'div1' ).innerHTML=sadd;
oshl.popup("引数の数="+ arg.length+"\n"+"引数=arg[x]");
try{oauto = new ActiveXObject("AutoItX3.Control.1");}catch(e){;oshl.popup('DLLがないです。');return;};
oauto.tooltip("マウスカーソルにツールチップ●●●●●●●●●●●");
};</script>
<body id=mainbody onload=main() ><div id="div1" name="div1"></div></body>
<script>moveTo( 120, 120 );resizeTo(320,240)</script>
<HTA:APPLICATION ID="objhtawsc" APPLICATIONNAME="htawsc" navigable=yes singleInstance="yes" /></html>
<!-- ]]></resource><script>/ * 下のif の手前まではWSFとHTAのスクリプトを共有できる。 * /;//-->
</script><script> var oshl=new ActiveXObject("WScript.Shell"); var ofso=new ActiveXObject("Scripting.FileSystemObject"); var oenvprocess=oshl.Environment('process'); if(typeof(location)=='object'){/ * HTAでは引数をarg[0]から受け取る。 * /; var pdirscript = ofso.GetFile(location.pathname).ParentFolder; var n=oenvprocess.item('arglength');if(n==''){n=0;}; for(var arg=[],iii=0;iii<n;iii++){arg.push( oenvprocess.item('arg'+iii));}; }else{ / * WSFからHTAに環境変数arg0 arglength で引数を送る * /; var pdirscript = ofso.GetFile(WScript.ScriptFullname).ParentFolder; for(var arg=WScript.Arguments,iii=0;iii<arg.length;iii++){oenvprocess.item('arg'+iii)=arg(iii);};oenvprocess.item('arglength')=arg.length; oshl.run( pdirscript+"\\"+"MSHTA.EXE " + "\""+ WScript.ScriptFullName+"\"",1,false);};</script></job>
ttp://www6.atwiki.jp/eamat/pub/MyScript/ IME の状態を取得しようと、IME.ahk から IME_GET の移植をやってみたんだけど
どうもうまくいかない
Func IME_GET($WinTitle)
$stGTI = DllStructCreate("dword;dword;hwnd;hwnd;hwnd;hwnd;hwnd;hwnd;long;long;long;long")
DllStructSetData($stGTI, 1, DllStructGetSize($stGTI))
If DllCall("user32.dll", "BOOL", "GetGUIThreadInfo", "DWORD", 0, "PTR", DllStructGetPtr($stGTI)) <> 0 Then
$hwndFocus = DllStructGetData($stGTI, 4)
MsgBox(0, "", String($hwndFocus)) ; 正常に取得できていることの確認
Else
$hwndFocus = WinGetHandle($WinTitle)
EndIf
Return DllCall("user32.dll", "LRESULT", "SendMessage", _
"UINT", DllCall("imm32.dll", "HWND", "ImmGetDefaultIMEWnd", "HWND", $hwndFocus), _
"UINT", 0x0283, "WPARAM", 0x0005, "LPARAM", 0)
EndFunc
MsgBox(0, "", IME_GET(WinGetTitle("[ACTIVE]")))
本来なら1か0が返却されなければいけないはずだけど、
どうも imm32.dll の関数が正常に動作しないみたい
$hwndFocus の値は正常に取得できてるんだけど…
何かおかしい所があったら指摘してくださいな
85 :
84 :2011/03/04(金) 06:48:43.20 ID:c8mG8L1E0
$hwndFocus = ControlGetHandle($WinTitle, "", ControlGetFocus($WinTitle)) 本当は、$hwndFocus はこれで求められるからかなり無駄なことやってるんだけど、 まあその辺は大目に見てください…
>>84 DllCallは戻り値が配列になるはず。自分もうっかりよくやる。
87 :
84 :2011/03/08(火) 23:59:41.93 ID:HZ2wuul90
ご指摘の通り、DllCallの戻り値の仕様を誤解していたことが原因でした ヘルプファイルの Return Value の所だけを見て、戻り値は指定した型で 直接戻ってくるものだとばかり思ってました…最後まで読まなければダメですね Func GetImeState() Local $hFocus, $hIme, $result, $title $title = WinGetTitle("[ACTIVE]") $hFocus = ControlGetHandle($title, "", ControlGetFocus($title)) $hIme = DllCall("imm32.dll", "HWND", "ImmGetDefaultIMEWnd", "HWND", $hFocus) $result = DllCall("user32.dll", "LRESULT", "SendMessage", _ "HWND", $hIme[0], "UINT", 0x0283, "WPARAM", 0x0005, "LPARAM", 0) Return $result[0] EndFunc ということで、これで正常に動きました
日本語公式サイト作ろうぜ!
いつの間にか日本語訳も最近になってた
90 :
名無しさん@お腹いっぱい。 :2011/03/27(日) 01:09:18.88 ID:a4CKIj040
セルフィチャンネルの下のボタンを押したいのですが <a href="javascript:toFriendPageClickFun();" class="roomFreeGiftBtn">フリーギフトを贈る</a> MouseClick() これは、座標指定タイプなので、マウスの使用が制限されてしまいます。 FireFoxを使っているので、FF.au3 の_FFClickで試行錯誤していますが、うまくいきません。
その押したいページのurlぐらい張ったらどうなんだ
>>91 すみません、それでは追記します。
URLは
http://mixi.jp/run_appli.pl?id=6642 です。
基底 HRMLが、run_appli.pl.htmで、
その中にある iframe タグで、ifr.htm が組み込まれており、そのHTML内に
<a href="javascript:toFriendPageClickFun();" class="roomFreeGiftBtn">フリーギフトを贈る</a>
があります。
試行錯誤したコードも張らないって事は1から作れと?w
95 :
名無しさん@お腹いっぱい。 :2011/03/28(月) 22:17:23.52 ID:luVJJYvK0
MozRepl
ソーシャルゲームは自動化したいよなw
フリーギフトを贈るってことはフレかサブへアイテム贈るってことか RMTじゃない気がww UWSCでセルフィチャンネルの自動化とか懐かしいわ さてAutoIt3.exeを叩いてから先が進まん ググってくるかな
100 :
名無しさん@お腹いっぱい。 :2011/06/11(土) 14:41:09.23 ID:lthcpKE50
マイミクにフリーギフトを送るだけなのにRMTじゃないよね。 ControlClickを使用して座標を指定すれば押せます。
開発版に3.3.7.9が着てましたねそろそろバージョンうpくるかな
昨日見つけたけど、AHKよりもこっちのがいいな
右alt+右ctrlホットキーで呼び出した関数内でSend使ったら alt ctrl押しっぱなし状態になったみたいなので キーを離すまで待ったほうがいいみたいだった Func WaitShiftCtrlAltUp() While _IsPressed(10) Or _IsPressed(11) Or _IsPressed(12) Sleep(100) WEnd EndFunc
Windows 2000 SP4 において SciTE4AutoIt3.exe (update7/3/2011)をインストールすると、 c:\Program Files\AutoIT3\SciTE\SciTE.exe は有効な Win32 アプリケーションではありません。 と警告が出て、起動しません。 AutoIt v3 Full Installationで入ってくるライト版のエディタは起動するのになー。AU3Recordを使いたい。 ご存知の方、なにか情報を寄せて頂ければ幸いです。
106 :
104 :2011/07/12(火) 17:16:49.59 ID:56tenYQn0
>>105 モバなんでID変わったかと思いますが。
なるほどソースコードを手に入れて、違うコンパイラーでビルドすると
Linuxのカーネルのアップデートでコンパイルやったことがあるけど
NT系でやるのは初めてだなー
探してみます。情報ありがとう。
ahkのコードこっちに書き換えたけど hotkey周り以外はこっちのが優秀だな StdinWrite StdoutReadが良すぎる
>>104 http://sourceforge.net/tracker/?func=detail&aid=3027337&group_id=2439&atid=102439 >:
I have a couple of machines with W2K. When Sc212.exe is clicked in them,
>an error box appears saying: "...Sc212.exe is not a valid Win32 application"
>The binaries run OK in Win XP machines. The problem is both with the single
>file as well as the wscite archive.
>Previous versions (from 2.11 downwards) didn't had this issue.
>Comment ( 1 )
>SciTE is now built with Visual Studio 2010 which does not produce
>executables which run on Windows 2000. If you need to run on Windows 2000
>then build with an older compiler such as Visual Studio 2008.
>>104 scite227.zip\scite\README
*** Windows version ***
A C++ compiler is required. Visual Studio .NET 2008 is the development system
used for most development although TDM Mingw32 4.4.1 is also supported.
To build Scintilla, make in the scintilla/win32 directory
cd scintilla\win32
GCC: mingw32-make
VS .NET: nmake -f scintilla.mak
cd ..\..
To build SciTE, use the makefiles located in the scite/win32 directory
cd scite\win32
GCC: mingw32-make
VS .NET: nmake -f scite.mak
An executable SciTE will now be in scite\bin.
The Visual C++ 6.0 project (.dsp) and make files are no longer supported but are left
in the download for people that are prepared to update them.
統合エディタとレコーディングツールが使えるようになったので、 こまかい物を作っています。 スススとカーソルが動いて、どんどんクリックされていって面白いです。 さて、MouseMove は絶対位置指定しかできないのでしょうか。 MouseMoveで、絶対位置指定 1回目のクリック →「処理」 →カーソルを12ピクセル移動 2回目のクリック →「処理」 →カーソルを12ピクセル移動... の繰り返しになるので、最初のクリック位置を手に入れて、あとは12を足していくようにできればと思ってます。 配列を作って、そこから座標を取りだしていけばいいのかな。
AutoItSetOption("MouseCoordMode", 0) でアクティブなウィンドウに対する相対座標指定とかはできるけど・・。 12ピクセルずらすなら座標に12足していけばいいだけじゃね? $x=0 $y=0 MouseClick ( "left" , $x, $y ) $x+=12 MouseClick ( "left" , $x, $y ) ・・・ みたいな。 AU3Infoでボタンの情報とれるならControlClick使った方が確実。
レスありがとうございます。 > AutoItSetOption 多くの種類のAutoItの関数/パラメータのオペレーション方法を変更します。 なるほど。助かりました ちなみに、自動化したいアプリケーションは、ファイルメーカープロ5のランタイムで作成されたもので AU3Infoで見ても、ボタンの情報は一切でてきません、なのでMouseClickでやるしかありません。
TimerDiffって何ですか マニュアル読んでもいまいちよくわかりません
初心者ですが質問させてください。 Autoitでも画像認識をさせたいためにImagesearchを導入しようとしているのですが 中々うまくいきません。 youtubeにロシア語?らしきImageserchのチュートリアル動画はあるのですが、 いかんせん画像のみでの推測なってしまいよくわかりません。 Readmeを読む限り 1,dllファイルをwinodwディレクトリに入れる。 2.ImageSearch,au3をIncludeディレクトリに入れる。 3.認識させたい画像をスクリプトと同じディレクトリに入れる。 で上手くいくはずだとおもうのですが、これでできないということは画像の切り取り方が 下手だということでしょうか。ご教授お願いいたします。 また2点目にキーストロークとマウスのクリックを同時推しするのに良いスクリプトの 書き方はないでしょうか? Sendではキーストロークのみしか複数同時押しはできないように見受けられたので Send({* down})及びupとMouseDown及びUpを使って書いてみたのですが上手くいかず 壁にぶち当たっています。
>>114 マニュアルに書いてある通り、時間計測のためのAPI。
TimerInitで計測開始、TimerDiffで計測終了
>>115 その「Imageserch」って公式のライブラリじゃないですよね?
URLくらいは貼ってもらわないとなんとも言えないです。
キーストロークとマウスのクリックを同時押し、試してみたけど↓みたいな
感じで書いて(一応)自分の環境では手動操作を再現できるみたいですが、
どんな問題が起きるんでしょうか?
Send("{CTRLDOWN}")
MouseMove(100,200)
MouseDown("left")
MouseUp("left")
MouseMove(200,200)
MouseDown("left")
MouseUp("left")
Send("{CTRLUP}")
>>116 ありがとうです
Sleepとはまた別なんですね
ゲームのマップエディタに使うことを考えています。 スプラッシュをopt=1(スプラッシュをアクティブにしない)で表示させて、その上からマウスクリックしてゲームエディタをクリックするなんてことはできないでしょうか?
>>119 やりたいことがイメージできないんだけどスプラッシュウィンドウの
クリック位置に応じてゲームエディタ(別ウィンドウ)を操作したいってことか?
多重起動を禁止して、起動済みのウインドウをアクティブにして アクティブにしたウインドウにデータを送る良い方法はありませんか? 起動済みのウインドウをアクティブにするのは 今のところWinAPIEX.au3を使って、コンパイルした状態ならなんとかなったのですが ウインドウハンドルの取得の確実性が無いきがします あとデータを送るには隠しボタンと入力を使う方法以外に無いものでしょうか? より良い方法があれば教えてください
If _Singleton(@ScriptName, 1) = 0 Then If @Compiled Then Local $p_list = ProcessList(@ScriptName), $p_loca, $p_data For $i = 1 to $p_list[0][0] If $p_list[$i][1] = @AutoItPID Then ContinueLoop $p_loca = _WinAPI_GetProcessFileName($p_list[$i][1]) If $p_loca = @AutoItExe Then $p_data = _WinAPI_EnumProcessWindows($p_list[$i][1], 1) If $p_data[0][0] > 0 Then WinActivate($p_data[1][0]) ControlSetText($p_data[1][0], "", "Edit1", "DATA" ) ControlClick($p_data[1][0], "", "Button2") Exit EndIf EndIf Next EndIf Exit EndIf
AHKでいうKeyWaitみたいな キーが押されている間だけ何かするってこと出来ないでしょうか?
UDFに_IsPressed()っていう関数がある。 #include <Misc.au3> MyKeyWait(41) MsgBox(0, "", "aキーが押された") Func MyKeyWait( $key ) $dll = DllOpen("user32.dll") While 1 Sleep (100) If _IsPressed($key, $dll) Then ExitLoop EndIf WEnd DllClose($dll) EndFunc
AutoIt + sqlite で日本語のデータを書き込むにはどうすればいいんですか
>>125 補足。ファイルの文字コードがutf8だと動かないちゃんと動かないっぽい。
shift-jisだと動いた。
>>127 :memory: を test.db にして、";テーブルを削除"の次の行をコメントアウトすると、スクリプトのあるフォルダにファイルができるけど、やっぱり文字化けする
sqlite.au3のスクリプトを見ると、utf-16をutf-8に変換してからsqlを送ってるみたいだけど、自分のレベルじょ理解できないんで、とりあえず日本語なしで使ってる
>>127 「文字化け」の謎が解けました
sqlite単体で書き込んだファイルとおなじように、autoitで書き込んだファイルをコマンドプロンプトから開いてたのが原因です
お騒がせしました
質問です。 このツールで、UWSCのCHKIMG相当の画像判定を可能とするような、 連携可能な外部ツールで良い物はありますか? このツールの一部の機能は外部の他言語から利用可能とWikipediaにありましたが、 ユーザーがプログラミングした部分も外部から利用可能に出来ますか? ついでに、WikipediaのAutoItのページにあった、 AutoItをパクった上で敵対行動をした何かとは、何でしょう?
>>131 遅くなりましたがレスありがとうございました。
参考になりました。