よくある質問(FAQ)
Q1.注意することは?
ファイルの削除やレジストリの追加、削除をする場合
1.必ずバックアップを取ること。
2.仮想マシン等で動作を確認する。
3.削除するファイルのパスを MsgBox関数や ConsoleWrite関数で確認する。
一時ファイル
1.一時ファイルを保存する場合、一部の 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 で作成したウィンドウのタイトルを入力します。
コードの説明:
既に他にインスタンスが存在する場合、スクリプトを終了します。
WinExists、_Singleton 関数のどちらを使用しても構いません。
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.ソースコードが長くてコピーが面倒です
簡単なコピー方法をご紹介します。
まずソースコードの先頭を選択(クリック)します。
次に「SHIFTキー」を押しながらソースコードの最後尾をクリックするとすべて選択されます。
この方法はソースコードに限らず、WEBページのテキスト、テキストエディタなどでも使用できるWindowsの便利な機能です。
現在のページのテキストでお試しください。
Q11.使用している Autoit のバージョンは?
2022/09/26 現在使用しているAutoitのバージョンは 3.3.16.1 です。
Q12.セキュリティソフトで検知されてしまう
Autoit で作成したプログラムは、Windows セキュリティ(Microsoft Defender、Windows Defender)で誤検知される場合があります。
特に x86(32ビット用)でコンパイルしたプログラムはほとんど検知されてしまいます。
x64(64ビット用)でコンパイルすれば、悪意のないコードならばほとんどの場合検知されませんが、「UPX で圧縮」を選択してコンパイルすると悪意のないコードでもセキュリティソフトで検知されてしまいます。
そのため、筆者の自作ソフトは、ほぼ x64(64ビット用)で作成しています。
また、レジストリなど、システム関連の設定を変更するプログラムは、不審なプログラムとして検知される場合があります。