1. ホーム

ahkスクリプトガイド

2022-02-16 12:06:43

1 - ファンデーション

旅を始める前に、いくつかのアドバイスをさせてください。このガイドでは、たくさんのテキストとたくさんのコードを目にすることになります。より効果的に学ぶために、このテキストを読み、そして 試す のコードで構成されています。その後、コードを深く掘り下げてください。 
このページに掲載されている例のほとんどはコピー&ペーストが可能です。 
混乱した場合は、もう一度読んでみてください。

a. AutoHotkeyのダウンロードとインストール

このドキュメントはローカルでご覧になっているので、おそらくAutoHotkeyはすでにインストールされており、セクションbまで読み飛ばすことができます。

AutoHotkey (AHK) の使い方を学ぶ前に、ダウンロードする必要があります。ダウンロードした後、インストールが必要な場合もあります。しかし、これはダウンロードしたバージョンによります。このガイドでは、初心者がセットアップするのが最も簡単なので、インストールされたバージョンを使用することにします。

テキストの説明です。

  1. AutoHotkeyのホームページをご覧ください。  https://autohotkey.com/
  2. クリックするとダウンロードできます。  https://autohotkey.com/download/ahk-install.exe
  3. Autohotkeyのインストール時に、UNICODE版とANSI版のどちらをインストールするか尋ねられます。簡単に言うと、英語以外の文字や数字をサポートさせたい場合は、UNICODEバージョンを選択します。バージョンを選択した後、インストールボタンが表示されるまで次へをクリックし続けます。
  4. 完了しましたか?素晴らしい!次のステップに進みましょう。

動画の説明
フランキーの"Install and Hello World"です。
http://www.autohotkey.com/forum/viewtopic.php?t=77674

b. スクリプトの作成方法

Autohotkeyをインストールした後、「何ができるのだろう」と思うかもしれません。AutoHotkeyは魔法ではありません、そうありたいとは思いますが。ですから、何をすべきかを指示する必要があります。そして、その作業を"writing a script"と呼びます。

テキストの説明です。

  • 1. デスクトップの余白を右クリックします。
  • 2. メニューの「"New"」をクリックします。
  • 3. 中の "AutoHotkey Script" をクリックし、新しいスクリプトを作成します。
  • 4. スクリプトに名前を付けます。注:ファイル名の末尾に.ahkを付ける必要があります。例:MyScript.ahk
  • 5. 作成したスクリプトを探し、右クリックします。
  • 6. スクリプトの編集("Edit Script")をクリックします。
  • 7. 新しいウィンドウがポップアップ表示されます。おそらくメモ帳でしょう。もしそうなら、うまくいきました!

    さて、スクリプトができたので、内容を追加していきましょう。組み込みのコマンド、関数、変数を使用する必要がある場合は、以下を参照してください。  第5章 .

    を使用しているすべてのファイルの一覧です。 送信 コマンドで、ホットキーを押すとウィンドウにテキストが送信されます。

    ^j::
       Send, My First Script
    Return
    
    
    

    これについては、後でもっと深く見ていきましょう。それまでは、上のコードを説明しましょう。
    - 1行目  ^j::  はホットキーです。  ^  は  <スパン CTRL ,  j  は文字  j . の中にあります。  :: 左側  は、このホットキーを押すことを示します。
    - 2行目  Send, My First Script  キーストロークの送り方を示す。  SEND  はコマンドで、カンマ(,)の後に内容が送信されます。
    - 3行目  Return . リターンはあなたの親友になります。この後、コードの実行を停止してくれます。スクリプトの内容が多くなってきたら、Returnを使うことで多くの問題を回避することができます。


  • 8. ファイルを保存します。
  • 9. デスクトップ上でファイルをダブルクリックして実行し、メモ帳などテキストを入力できる場所を開いて Ctrl + J .
  • 10.素晴らしい! あなたの最初のスクリプトは完成しました。自分自身を誉めてあげてください。そして、チュートリアルの残りを読んでください。

動画で紹介します。
フランキーの「インストールとHello World"」。
http://www.autohotkey.com/forum/viewtopic.php?t=77674

c. コマンドをマージしない

コードを書いていると、同じ行に複数のコマンドを落としたり、1つのコマンドの中に複数のコマンドを入れ子にしたりしたくなることがありますが、これはやめましょう。で セクション5  は、なぜこれをやってはいけないのか、そしてどうすればいいのかを説明します。

d. その他の基本情報

パソコンでのヘルプファイルの探し方。
AutoHotkeyをデフォルトの場所にインストールしたと仮定して、いくつかの方法があります。
オプション1:
  1. 画面上のスタートメニューまたはスタートボタン(通常、左下隅)を探します。
  2. をクリックします。 プログラム または すべてのプログラム .
  3. 一覧で探す オートホットキー .
  4. が表示されます。 AutoHotkeyヘルプファイル . それをクリックします。
  5. 完了!
オプション 2:
  1. デスクトップに移動します。
  2. 探す マイコンピュータ または コンピュータ . そして、それを開く。
  3. インストールに進む オートホットキー をハードディスクに保存してください。それは、もしかしたら C:\ ディスクを使用します。
  4. での プログラムファイル フォルダを探し、その中から AutoHotkey .
  5. 検索 AutoHotkey.chm  または、黄色いクエスチョンマークのアイコンが付いたAutohotkeyというファイルを探します。
  6. 完了

その他のリンク
ドキュメント
コマンド一覧
機能
変数

2 - ホットキーとホットストリング

ホットキーとは何ですか?ホットキーとは、熱くなるキーのことで、冗談です。ホットキーは、特定のアクションをトリガーするために使用されるキーストロークまたはキーの組み合わせです。
ホットストリングとは何ですか?ホットストリングは主に略語ライブラリの拡張(自動置換)に使用されます。もちろん、任意のスクリプトアクションをマッピングするためにも使用できます。

これはホットストリングです。

^j::
   Send, My First Script
Return


これはホットストリングです。

::ftw::Free the whales


この2つの例の違いは、ホットキー CTRL & J はイベントを発生させ、ホットストリングは入力された "ftw" を "Free the whales" に変換します。

ホットキーはどのように作成するのですか?  いい質問ですね。ホットキーは、:.のペアで作成します。キー名またはキーコンビネーション名は :: . 次のようなコードで Return を終了します。

注:例外もありますが、説明するには時期尚早なので、ウィザードページでは取り上げません。

esc::
   MsgBox Escape!!!!
Return


ホットストリングは、トリガーされるテキストの両側に一対の :: があります。置換テキストは、2つ目のペアの :: の中にあります。 右側 .

上記のように、ホットストリングはスクリプトアクションを開始することもできます。ホットキーと同じようなことができるのですから、すごいですよね。

::btw::
   MsgBox You typed "btw".
Return


ここで良い知らせがあります。各ホットキー、ホットストリング、タグなどに対して複数行のコードを書くことができるのです。

^j::
   MsgBox Wow!
   MsgBox this is
   Run, Notepad.exe
   winactivate, Untitled - Notepad
   WinWaitActive, Untitled - Notepad
   send, 7 lines{!} {enter}
   sendinput, inside the ctrl{+}j hotkey
Return


a. キーとミステリーシンボル

という質問があるかもしれません。 どうして^がCTRLの略だとわかるんですか? . いい質問ですね。この表で、^やその他の記号の意味を確認してください。
<テーブル シンボルマーク 説明 # Win (Windowsロゴキー) ! オルト ^ コントロール + シフト & 2つのキー(マウスボタンを含む)を1つのカスタムホットキーに接続するために使用します。

(シンボルの詳細な一覧は ホットキーのページ )

さらに、よく使われるボタンの一覧を紹介します。
キーストローク一覧

キーの一覧を設定するためには  &です。  をクリックして、ホットキーの組み合わせを定義します。次の例では  テンキー0 を押した後、2回目のキーを押すと、ホットキーが起動します。

Numpad0 & Numpad1::
   MsgBox You pressed Numpad1 while holding down Numpad0.
Return

Numpad0 & Numpad2::
	Run Notepad
Return


ホットストリング用のクールなモディファイアがあるのかと思ったら、答えは「イエス」です
ホットストリングのモディファイアは、例えば、最初のペアの :: の間にあります。

:*:ftw::Free the whales


ホットキーとホットストリングのモディファイアの詳細と例を見るには、以下をご覧ください。
ホットキー
ホットストリング

b. ウィンドウズ・スペシャル・ホットキー/ホットストリング

特定のウィンドウでのみホットキーやホットストリングを動作させたい(または無効にしたい)場合があります。この場合、#コマンドを使用します。

#IfWinActive
#IfWinExist

これらの特別なコマンド(技術的にはコマンドと呼ばれます)は、コンテキスト依存のホットキーとホットストリングを作成します。単にウィンドウのタイトルを指定するだけです。しかし、場合によっては、ウィンドウ ハンドル、グループ、またはクラスを指定する必要があります。これらについてのより高度な説明は、こちらをご覧ください。 #IfWinActive .

#IfWinActive Untitled - Notepad
#space::
   MsgBox You pressed Win+Spacebar in Notepad.
Return
#IfWinActive


コンテキストセンシティブをオフにするには、#ifwinのすべてのパラメータをNULLに設定する必要があります。たとえば

Notepad
#IfWinActive untitled - Notepad
!q::
   MsgBox, You pressed Alt and Q in Notepad.
Return
#IfWinActive

; Any window that isn't Untitled - Notepad
!q::
   MsgBox, You pressed Alt and Q in any window.
Return


ifwinコマンドが閉じられると(またはスクリプトで一度も使用されないと)、すべてのホットキーとホットストリングがすべてのウィンドウに対して有効になります。


ifwinコマンドがオンのとき。スクリプト内の#ifwinの間のホットキーとホットストリングに影響します。

; Notepad
#IfWinActive ahk_class Notepad
#space::
   MsgBox, You pressed Win+Spacebar in Notepad.
Return
::msg::You typed msg in Notepad
#IfWinActive

; MSPaint
#IfWinActive untitled - Paint
#space::
   MsgBox, You pressed Win+Spacebar in MSPaint!
Return
::msg::You typed msg in MSPaint!
#IfWinActive


より詳細な情報や類似のコマンドについては、以下をチェックしてください。
#IfWinActive

c. ファイルに複数のホットキー/ホットストリングが含まれる場合

一部の人の特別な気まぐれを満足させるために、AutoHotkeyは以下のようなインクルージョンをサポートしていることをここで述べておきます。  任意に多くの  のホットキーとホットストリングを、1ファイルでも3253ファイルでも(それ以上でも)使用することができます。

#i::
   run, http://www.google.com/
Return

^p::
   run, notepad.exe
Return

~j::
   send, ack
return

:*:acheiv::achiev
::achievment::achievment
::acquaintence::acquaintance
:*:acquire::acquire
::acquisitions::acquisitions
:*:agravat::aggravat
:*:allign::align
::ameria::America


上記のコードで全く問題ありません。複数のホットキー、複数のホットストリングが、1つの大きなスクリプトファイルに収められています。

d. 事例紹介

::btw::By the way ; replaces "btw" with "By the way", when you press the terminator.
:*:btw::By the way ; replaces "btw" with "By the way" without pressing the terminator.

^n:: ; Ctrl & n hotkey.
   run, notepad.exe ; When you press Ctrl & n, it will start Notepad.
Return ; The contents of the hotkey will end, nothing after this will be triggered.

^b:: ; Ctrl & b hotkeys
   send, {ctrl down}c{ctrl up} ; Copies the selected text. You can also use ^c, but this method is more reliable.
   SendInput, [b]{ctrl down}v{ctrl up}[/b] ; Paste the copied text with bold tags before and after the text.
Return ; End of hotkey content, nothing after this will be triggered.


3 - 送信ボタン

さて、あなたはいくつかのキーストロークをプログラムに送信することにしました。このとき  送信  コマンドを使用します。Sendはキーストロークを送るという意味で、タイピングやキーストローク操作をシミュレートしています。
Sendを使用する準備をする前に、注意すべき共通の問題点があります。
他のホットキーと同様に、Sendにもいくつかの特殊なキーがあります。  送信に関するその他の特殊キーです。
特殊キーの代表的なものは以下の4つです。


! : ALTキー入力を送信します。例えば  送信 これはテキストです!a  と入力すると、ALT+aの後に、quot;This is text"というキーストロークが送信されます。  注意事項 A と !a は、プログラムによっては異なる効果をもたらします。これは、!AはALT+SHIFT+Aを押すことを意味し、!aはALT+aを押すことを意味するからです。よくわからない場合は、小文字を使用してください。

<スパン + : SHIFTキーストロークを送信します。例えば 送信 +abC  はテキスト "AbC"を送信し、一方  送る ! +a  を押すと、ALT+SHIFT+aが押されます。

<スパン ^ : CONTROL (Ctrl) キーストロークを送信します。例  送信 ^!a  はCTRL+ALT+aを押しますが  送信 ^{Home}  はCONTROL+HOMEを送信します。  備考 : プログラムによっては、^A と ^a は異なる効果を持つことがあります。これは、^A は CONTROL+SHIFT+A を押し、^a は CONTROL+a を押すからである。よくわからない場合は、小文字を使用してください。

# : WINキーストロークを送信するので  送信 #e  は、Windowsキーを押しながら、文字quot;e"を押します。

次のセクションでは、送信可能な特殊ボタンのリストについて説明します。  送信ページ をクリックすると、特殊キー操作の一覧が表示されます。

注意事項
この表 はありません。 に適用されます。 ホットキー . つまり  CTRL  または  ENTER  (または他のキーストローク)を使用し、{}を使用しないでください。


以下は、ホットキーを作成する際のエラーを示す例です。
; When you create a hotkey...
; Here is the wrong script
{LCtrl}::
   send, AutoHotkey
Return

; Here is the correct script
LCtrl::
   send, AutoHotkey
Return



前述の大きな表には、AHKに内蔵されている特殊なボタンのほぼすべてが表示されています。例えば  {enter}  と  {space} .
よく、文書で括弧を使うのは遊びだと思う人がいます。しかし、実際には 括弧は必要です . これはAutoHotkeyに  {!}  を送信するのではなく、感嘆符を表示します。  オルト  キーストローク"です。そこで、よく見てみると 送る  のページで、括弧を正しい場所に置くことを確認してください。

Note the !?!! in the {}. This is because, without the {}, AHK will
send ALT keystroke.
send, This text has been typed{!}


; Similar to the above example. AHK will print the word "enter" ...
; ... If enter is not accompanied by {}.
send, Multiple enter lines have enter been sent. ; Error
send, Multiple{enter}lines have{enter}been sent.


Do not put brackets around ordinary words or ordinary letters.
send, {a} ; error
send, {b} ; error
send, {c} ; error
send, {a}{b}{c} ; error
send, {abc} ; incorrect
send, abc ; correct


もう一つのよくある間違いは、sendコマンドを使うときに、そう思ってしまうことです。 すべてのコンテンツ は括弧で囲む必要があります。これは間違いです。特別なキーリストにない場合は、括弧で囲む必要はありません。あなたは しない  通常の文字や数字、あるいは次のような記号の周りに括弧を付ける必要はありません。(ピリオド)は{}である必要はありません。
また、Sendコマンドを使うと、複数の文字、数字、記号を一度に送ることができるので、文字ごとにSendコマンドを書く必要はありません。
; The following example indicates that a key is pressed while another key (or keys) is pressed.
If one of the methods does not work, try the other method.
send, ^s ; both mean send CTRL+s keystrokes
send, {ctrl down}s{ctrl up} ; both send CTRL+s keystrokes
send, {ctrl down}c{ctrl up}
Send, {b down}{b up}
Send, {TAB down}{TAB up}
Send, {Up down} ; Press the up key.
Sleep, 1000 ; Hold for 1 second.
Send, {Up up} ; then release the up key.


キーが押されたり離されたりしていることを示すには、キーを括弧で囲み、↑または↓を付けます。
send,
(
Line 1
Line 2
Apples are a fruit.
)


ここで、あなたはこう思うかもしれません。  "超長文を送るとき、どうすれば読みやすい文章になるのでしょうか?  簡単です。非常に長いテキストを一連の短い行に分割すればいいのです。これは、sendの後に左括弧を1つだけ含む新しい行を追加し、送信したい内容を複数行に分けて書けばいいのです。最後に、新しい行を開始し、右の括弧で終了させます。詳しくは、以下を参照してください。  続きのページ .
SetKeyDelay, 0, 50
SetKeyDelay, 150, 150, Play

注:Sendコマンドは様々な形をとることができます。それぞれの形式には特徴があります。もし send コマンドのある形があなたのニーズを満たさないなら、他の形を試してみてください。ただ "send" コマンドを "sendPlay" または他のものに置き換えてください。
以下は、テキストを送信するための一般的なコマンドの一覧です。
送信
SendRaw
送信入力
送信再生
イベント送信
各コマンドの詳細については、こちらをご覧ください。  こちらをクリックしてください。 .

a. ゲーム

<スパン とても重要です
多くのゲーム、特に新しいゲームには、GameGuard、Hackshield、PunkBusterなどのアンチチートシステムが搭載されています。アンチチートシステムにより、ホットキー、ホットストリング、送信コマンドのすべてが失敗した場合、あなたは運が悪いことになります。
アンチチートシステムの迂回がゲームのルールに反することは言うまでもないが、アンチチートそのものを迂回することは容易ではない。ゲームによってはホットキーを使うことで可能性を高める方法がありますが 確実にうまくいくとは誰も言い切れない  . だから、できる限り試してみてください すべて  簡単にあきらめないでください。

もう一つ、DirectXについて注意することがあります。DirectXのゲームでAutoHotkeyを使用していて問題が発生した場合、次のことを試してみてください。プログラムが許可している場合、ゲームをウィンドウモードで実行してみてください。これにより、いくつかのDirectXの問題が解決されます。
pixelコマンドやimageコマンドを使用すると、DirectXでさらに問題が発生する場合があります。設定した色に関係なく、画面の色が黒(0x000000)になることがあります。これは非常にやっかいな問題です。プログラムが許可している場合は、プログラムをウィンドウモードで実行してみてください。

すべてのプログラムでAutoHotkeyを確実に実行させる確実な方法はありません。いろいろ試してみてもうまくいかない場合は、AutoHotkeyが今のあなたに必要なものではないのかもしれません。


の質問から引用しています。 よくある質問 のページをご覧ください。
ゲームによっては、DirectInputモードのみを使用するものもあります。その欠点は、アナログキーボードやマウスの操作をすべて無視する可能性があることです。この問題を解決するには、以下の方法のいずれかを試してみてください(または、それらをすべて併用してください)。
  • 以下の3つのメソッドを  送信プレイ コマンドを使用します。1) SendPlayコマンドを直接使用する、2)  送信モード  に切り替えてプレイモードにする、または3) ホットストリング キー操作を送信するためのオプションをSP(Sendplay)モードに設定します。
  • を使用します。  キー遅延の設定  を使用すると、キーストロークの遅延を増やすことができます。たとえば、以下のようになります。
  • ; Run a program. Note: Most programs may require the full path.
    Run, %A_ProgramFiles%\Some_Program\Program.exe
    
    ; Open a URL
    Run, https://autohotkey.com
    
    
  • 使用方法  送信制御  コマンドを使用します。他のすべての送信モードが失敗した場合、このコマンドが動作することがあります。

4 - プログラムやページを実行する

実行したい 描画,電卓,スクリプト.ahk プログラム、またはフォルダを開くには  実行  コマンドを使用します。また、このコマンドは、URLを開く場合にも使用できます。  https://autohotkey.com/  . すでにインストールされているプログラムを開きたい場合は、次のように簡単にできます。
Some programs do not require the full path, such as Windows standard programs.
Run, Notepad.exe
Run, MsPaint.exe

Use AHK built-in parameters to open "My Documents"
Run, %A_MyDocuments%

; open some web pages 
Run, https://autohotkey.com
Run, http://www.google.com






その他、コマンドライン引数やCLSID(Windows Class Identifier)など、高度な機能も搭載しています。
Runコマンドについてもっと詳しく知りたい方は  実行コマンドのページ
以下は、Runコマンドの例です。
Command, argument 1, argument 2, argument 3








詳細と例については、クリックしてください。
コマンド実行ページ .

5 - コマンドと機能

AutoHotkeyには、開発者が使用するための重要なツールが2つあります。
コマンドと関数

お役立ちリンク集
使用したコマンドの一覧です。  コマンド/index.htm
全組込み関数の一覧です。  Functions.htm#BuiltIn

コマンド

コマンドと関数は、その構文で区別することができます。コマンドは引数の後に括弧を必要としませんが、関数は必要です。つまり、コマンドは次のようなものです。

Msgbox, Hello Run, Notepad.exe ; error
Msgbox, Hello, Run, Notepad.exe ; error

Msgbox, Hello ; correct
Run, Notepad.exe

コマンドを使用する場合、複数のコマンドを同じ行に並べることはできません( ifEqual  を除く)。
また、他のコマンドの引数として挿入することはできません。

parameter

関数と異なり、コマンドは伝統的な構文を使用します。つまり %variable% のように、引数の前後に % を付ける必要があります。 This is some text . テキストや数値はダブルクォーテーションで囲む必要はありません。  % . また、関数と異なり、コマンド引数は演算を行いません。

注:引数で算術演算をしたい場合は、1つの  Function(argument1, argument2, argument3)  を使えば強制的に式を作ることができますが、ここではそのことには触れません。

機能

前述したように、関数はコマンドと異なり、括弧を必要とする。典型的な関数は次のようなものです。
SubStr(37*12, 1, 2)



コマンドと比較して、ファンクションには主に次のような違いがあります。
  1. 算術演算が使用できる。
    -- 
    SubStr(A_Hour-12, 2)
    
    --  SubStr(A_Now, 7, 2)
  2. パラメータの前後にはパーセント記号は必要ありません。
    --  SubStr(A_AHKPath, inStr(A_AHKPath, "AutoHotkey"))
  3. 関数は、他の関数の中に入れ子にすることができます。
    --  SubStr("I'm scripting, awesome!", 16)
  4. テキストの前後は二重引用符で囲む必要があります。
    --  MyVariable :=Function(Parameters)
関数は通常、値を返しますが、これもコマンドとは異なります。コマンドは  出力バー  パラメータで結果を保存しますが、関数はそうではありません。関数の戻り値を変数に代入するには、次のようにすればよい。
MyVariable:=SubStr("I'm scripting, awesome!", 16)
SubStr(...)

値を代入する方法はこれだけではありませんが、最も一般的な方法です。関数を代入することで、(この場合、関数は  MyVariable の右側で、関数の戻り値が変数  ; These are the commands Msgbox, This is some text. StringReplace, Output, Input, AutoHotKey, AutoHotkey, ALL SendInput, This is awesome{!} {!} {!} ; These are the functions SubStr("I'm scripting, awesome!", 16) FileExist(VariableContainingPath) Output:=SubStr("I'm scripting, awesome!", 16) .
機能に関する詳細情報

要するに
if (var=5)
{
   MsgBox, var equals %var%!!!
   Exitapp
}






a. コードブロック

コードブロック は、2つの括弧( { <未定義  と  } ) はコードのブロックを囲み、AutoHotkeyはそのコードが全体であることを判断するために使用します。コードブロックは、しばしば  もし  と  ループ  の中にある。 括弧がなければ、ブロックの中の最初の行のコードだけが実行される。

以下のコードでは、varが5のとき、すべての行が実行されます。
if (var=5)
   MsgBox, var equals %var%!!!
   Exitapp







以下のコードでは、var が 5 になったときだけメッセージボックスが表示されますが、var が 5 であろうとなかろうと、スクリプトは終了します。
if (var=5)
   MsgBox, var equals %var%!!!
MsgBox, we are now 'outside' the if. We did not need {}'s since there was only 1 line below it.



次の例は、関連するコードが1行しかない場合、どのように書けばよいかを示す非常に良い例です。上のコードと同じことをするのですが、2行目のコードがIfに関連していることが簡単にわかるようにインデントしています。
variable=text




6 - 変数

変数 は、情報の入った付箋のようなものです。関数やコマンド、数式の中で、テキストや数値、データを保存するために使用することができます。変数がなければ、プログラムやスクリプトはとてもつまらないものになるでしょう。


変数に値を代入する方法はたくさんありますが、ここでは最も一般的なものを説明します。特に等号(=)に注意してください。
  1. variable=%variable2%
    
    
    
    
    これは、変数に値を代入する最も簡単な方法で、伝統的な方法である。等号の後にテキストを入力するだけです。
  2. variable:="text"
    
    
    
    
    ある変数の値を別の変数に代入すること以外は、上記と同様です。
  3. variable:=variable2
    
    
    
    
    ここでは、式によって変数に値が代入されています。  =  の前に  :  . テキストは必ずダブルクォーテーションで囲んでください。
  4. variable:=6+8/3*2-sqrt(9)
    
    
    
    
    変数が式で代入される場合、%は必要ありません。
  5. var=%var2% some text %var3%.
    
    
    
    
    また、式の中で演算を使用することもできます。
のように、前者と後者を組み合わせることができる。
var:="The value of 5+ " Variable " is: " 5+Variable
3行目、4行目、5行目は、次のようにマージすることも可能です。
:=
+=
-=
. =

を置きました( = という記号が前に付いています。 代入演算子 であり、通常は式である。例えば

StringLen, 
OutputVar
InputVar
 などなど.

a. パーセント記号を使用する場合

変数についてよくある質問のひとつに、パーセント記号をいつ使うか、というものがあります( % ). 以下の内容で、これらの問題が解決されることを期待します。

パーセント記号を使用する場合。
  1. コマンドを使う場合(前項参照)には、パーセント記号を使う必要があります。
    -- 入出力変数を除く。
  2. 従来のモード(等号の前に他の記号がない)で変数に値を代入する場合、パーセント記号を使用する必要があります。
こんなとき ドンマイ パーセント記号を使用します。
  1. などのパラメータでは、入力変数や出力変数にパーセント記号を使用しないでください。  Var  = 123abc
  2. 代入の左側の変数には、パーセント記号を使用しないでください、例.  If  Var1  < %Var2%
  3. If文では、従来の代入(式を含まない)の左辺の変数にパーセント記号を使用しないでください。  If (Var1 ! = Var2) Var1 := Var2 + 100
  4. 式中の変数にパーセント記号を使用しないでください。
    InputBox, OutputVar, Question 1, What is your first name?
    if (OutputVar="Bill")
       MsgBox, That's is an awesome name, %OutputVar%.
    
    InputBox, OutputVar2, Question 2, Do you like AutoHotkey?
    if (OutputVar2="yes")
       MsgBox, Thank you for answering %OutputVar2%`, %OutputVar%! We will become great friends.
    else
       MsgBox, %OutputVar%`, That makes me sad.
    
    
    

b. ユーザーの入力を得る

時には、ユーザーに特定の値を選択させたいこともあるでしょう。これを実現する方法はたくさんありますが、最も簡単な方法のひとつが  入力ボックス  コマンドを使用します。次の例は、ユーザーにいろいろな質問をし、ユーザーの入力をもとに何かをするものです。
, 4, , Would you like to continue?


c. その他の例


MsgBox


, No
   Return ; If No is selected, the script will be terminated.
MsgBox You pressed YES. ; The user selected YES.


The following examples show when to use the percent sign and when not to.
Variable=text ; Assigning a text to a variable in the "traditional" way.
VariableNumber:=6 ; assigns a number to a variable using "expressions".
Variable2=%Variable% ; Assigns the value of a variable to a variable in the "traditional" way.
Variable3:=Variable ; assigns the value of a variable to a variable using "expressions".
Variable4.=Variable ; Adds the value of one variable to another variable using "expressions".
Variable5+=VariableNumber ; adds the values of two variables to the first variable using "expressions".
Variable5-=VariableNumber ; Use "expression" to subtract the value of the first variable from the value of the second variable, and then save the result to the first variable.
Variable6:=SubStr(Variable, 2, 2) ; The variables in the function. They are always expressions.
Variable7=%Variable% Text ; In the "traditional" way, the value of a variable is added to a text and then assigned to another variable.
Variable8:=Variable " Text" ; Use "Expression" method, add a text to the value of one variable and assign it to another variable.
MsgBox, %Variable% ; The variable in the command. 
StringSplit, Variable, Variable, x ; variables in the command, but they are used as input or output variables.
if (VariableNumber=6) ; If IF uses parentheses, then the contents of the parentheses are an expression, so there is no need for a percent sign.
If (Variable ! = VariableNumber) ; If IF uses parentheses, then the content in the parentheses is an expression, so the percent sign is not needed.
if VariableNumber=6 ; If IF does not use parentheses, then the contents of IF will follow in the traditional way. However, only the variables on the "right" side of the assignment require a percent sign. 
If Var1 < %Var2% ; If IF does not use parentheses, then the content after IF will be in the traditional way. However, only the variables to the right of the assignment"statement" require a percent sign. 



IfMsgBox


MyObject := ["one", "two", "three", 17]




"one"

7 - オブジェクト

オブジェクト は、実はもっと効率的なデータ整理の方法で、いろいろな使い道があるのです。オブジェクトを配列として扱うことがありますが、ここで重要なことは、配列はすべてオブジェクトであるということです。使用する範囲によって異なるオブジェクトを区別することはできますが、どれも同じ性質を持っています。


オブジェクトは、変数の集合体と考えることができます。変数の名前を「キー」、変数の中身を「値」と呼びます。
あるオブジェクトをこう呼ぶのを聞いたとき  配列  または  インデックス付き配列  これは、このオブジェクトのキーが 1 から増加する連続した数字であることを示します。
あるオブジェクトをこう呼ぶのを聞いたとき  連想配列  これは、そのオブジェクトのキーが文字列(またはテキスト)か、連続しない数字であることを意味します。時にはその両方が混在していたり、配列であったりすることもあるのです
オブジェクトのキーと値に制限はなく、別の配列にすることも可能です 
オブジェクトの値も配列である場合、それを  ネストされた配列  は、後で説明します。
例えば、配列の使用箇所はたくさんあります。
  1. 食料品店のリストのように、順序付けられたリストの集合を記述する必要がある場合(この場合、インデックス付き配列を使うのがベスト)。
  2. ボードゲームのようなグラフィカルな四角形を記述する必要がある場合(この場合、ネストされたオブジェクトを使用するのが最適です)。
  3. 果物の性質を記述するように、一連のものを記述する必要があり、それぞれのものが独自の名前を持っている場合(これは連想配列を使用するのが最適です)

a. オブジェクトの作成

オブジェクトを作成する方法はいくつかありますが、その中で最も一般的なものを以下に紹介します。
  1. 1
    
    角括弧の形を利用する ここでは、quot;indexed array"オブジェクトと呼ばれるものを紹介します。添字配列とは、添字の番号が1から順に大きくなっていくデータの集合を含むオブジェクトのことです。 この例では、値  "one"  は、対応するキー  1  (インデックス番号1とも呼ばれる)、値