よくある質問(FAQ)
Q1.注意することは?
ファイルの削除やレジストリの追加、削除をする場合
- 必ずバックアップを取ること。
- 仮想マシン等で動作を確認する。
- 削除するファイルのパスを MsgBox 関数や ConsoleWrite 関数で確認する。
一時ファイル
一時ファイルを保存する場合、一部の PC では指定したフォルダーに正しくアクセスできないことがあるので注意が必要です。
返し値
ほとんどの関数には返し値があります。
プログラムを書く際には、必ず条件付き命令文ifなどを使用して返し値の確認コードを記述しましょう。
確認コードを記述することにより、どこでエラーが起きているかがすぐに判断できます。
例えば Run 関数には次の返し値があります。
- 成功: 実行したプロセスの PID(プロセス識別値)。
- 失敗: 0 を返し
@errorに非ゼロを設定します。
Q2.DOSコマンドを実行するには?
Run、RunWait、_RunDos 関数を使用します。
Run、RunWaitの書き方:
Run(@ComSpec & " /c " & 'コマンド', "", @SW_HIDE)
RunWait(@ComSpec & " /c " & 'コマンド', "", @SW_HIDE)
頭に@の付くものはマクロと呼びます。
@ComSpec はC:\Windows\System32\CMD.exeを意味します。
Q3.プログラムを 1つしか起動できないようにするには?
ウィンドウが存在するかを判断し、存在すれば終了するというようにすればプログラムは 1つしか起動できません。
WinExists 関数
$Ver = "test"
If WinExists($Ver) Then Exit
頭に$の付くものは変数です。
コードの説明:
変数 $Ver に文字列「test」代入します。
もしも ウィンドウタイトル「test」が存在すれば スクリプトを終了します。
_Singleton 関数
#include<Misc.au3>
_Singleton("test"); 「test」には Autoit で作成したウィンドウのタイトルを入力します。
コードの説明:
既に他にインスタンスが存在する場合、スクリプトを終了します。
Q4.外部のアプリケーションを実行するには?
Autoit の基礎 – プログラムの実行と終了、スクリプトの一時停止
Q5.注釈(コメント)を付けるには?
1.「;」セミコロンを使用します。
;これはコメントです。
ShellExecute("Notepad.exe");ノートパッドを開く
2.#cs と #ce で囲むとブロックコメントを書くことができます。
#cs
この部分はコメントになります。
#ce
Q6.レジストリを編集するには?
Autoit の基礎 – レジストリの読み取り、書き込みと削除
Q7.レジストリを即時反映するには?
次のコードを実行します。※このコードはすべてに対して反映できるものではありませんので、PC のログオフや再起動などが必要になる場合があります。
DllCall("user32.dll","int","SendMessageTimeout","hwnd",65535,"int",26,"int",0,"int",0,"int",0,"int",1000,"str","dwResult")
Q8.どのようにプログラムを書いていますか?
- 私はまず目的を決めます。
- そして目的の動作をするようにプログラムを書き、とりあえず完成させます。
- プログラムが完成したら最適化を行い、追加したい機能があれば追加していきます。
- 最後にすべての動作を確認して作業完了です。
Q9.最適化とは何ですか?
不要なコードの削除、短縮を行い、なるべくファイルサイズが大きくならないように編集し、さらにすべての動作を確認して不具合があれば修正をします。
Q10.使用している Autoit のバージョンは?
現在(2025/12/26)使用している Autoit のバージョンは 3.3.18.0 です。
Q11.セキュリティソフトで検知されてしまう
AutoIt で作成したプログラムは、 Windows セキュリティ(Microsoft Defender、 Windows Defender)で誤検知される場合があります。
特に x86 (32 ビット用)でコンパイルしたプログラムはほとんど検知されてしまいます。
x64 (64 ビット用)でコンパイルすれば、悪意のないコードならばほとんどの場合検知されませんが、「UPX で圧縮」を選択してコンパイルすると悪意のないコードでもセキュリティソフトで検知されてしまいます。
そのため、筆者の自作ソフトは、ほぼ x64 (64 ビット用)で作成し、「UPX で圧縮」を選択せずにコンパイルしています。
また、レジストリなど、システム関連の設定を変更するプログラムは、不審なプログラムとして検知される場合があります。
さらに、脅威名の末尾が「!ml」(例: Trojan:Win32/Wacatac.B!ml など)となっている検知は、 AI (機械学習)による予測検知です。確実な脅威ではなく、自動化ツールの挙動に対するセキュリティソフトの過剰反応(誤検知)ですので、安心してご利用ください。