旅を始める前に、いくつかアドバイスをさせてほしい。このチュートリアルでは、たくさんのテキストとたくさんのコードを見ることになるでしょう。学習の効果を高めるためには、テキストを読み、コードを試すことをお勧めします。それから、コードを研究するのです。このページのほとんどの例をコピー&ペーストできます。もし混乱したら、もう一度そのセクションを読んでみてください。
AutoHotkey(AHK)の使い方を学ぶ前に、ダウンロードする必要があります。ダウンロードしたら、インストールしましょう。しかし、それはあなたが必要とするバージョンによります。このガイドでは、セットアップが最も簡単なインストーラーを使用します。
テキストの指示:
AutoHotkeyをインストールしたら、おそらくいろいろなことをさせたくなるでしょう。AutoHotkeyは魔法ではありません。みんなががそうであってほしいと思っていますが、そうではありません。だから、何をすべきかを指示する必要があります。このプロセスは「スクリプティング」と呼ばれています。
テキストの指示:
さて、スクリプトを作成したところで、そのファイルにコードを記述する必要があります。すべての組み込み関数と変数のリストについては、セクション5を参照してください。
ここでは、ホットキーが押されたときにSend関数を使用してテキストを入力するホットキーを含む、非常に基本的なスクリプトを紹介します:
^j:: { Send "My First Script" }
後でもっと詳しく説明します。それまでは、上のコードの説明をどうぞ:
^j::
は、ホットキーです。^
は Ctrl(コントロール)キーのことで、 j
は文字の Jです。::
の左にあるものが、押すべきキーです。Send "My First Script"
は、キーをsend(入力)する方法です。Send
は関数で、引用符の中のスペース以降はすべて入力されます。{
および }
は、hotkeyの開始と終了を示しています。動画による説明は、YouTubeのInstall and Hello Worldをご覧ください。
v2.0-a076以降のダウンロードには、メイン・プログラムと同じzipファイルにオフライン・ヘルプ・ファイルが含まれています。手動でファイルを解凍した場合、ヘルプファイルはどこに置いても差し支えありません。
v2.0-beta.4以降にはインストールスクリプトが含まれています。これを使ってAutoHotkeyをインストールした場合、各バージョンのヘルプファイルは、AutoHotkeyをインストールした場所のサブディレクトリ、例えば "C:\Program FilesAutoHotkey\v2.0-beta.7"の中にあるはずです。また、最後にインストールされたバージョンのサブディレクトリを指す "v2"というシンボリックリンクがあるかもしれません。v1.xがインストールされている場合、そのバージョンのヘルプファイルもルートディレクトリにあるでしょう。
AutoHotkey.chmまたはAutoHotkeyと書かれ、黄色いクエスチョンマークが付いたファイルを探してください。
ファイルそのものを探す必要がなければ、それを起動する方法もいくつかあります:
ホットキーとは何ですか?ホットキーとは、触れると熱くなるキーのこと。... 冗談だよ。これは、キーボードの人が何らかのアクションを起こすために押すキー、またはキーの組み合わせである。事例:
^j:: { Send "My First Script" }
ホットストリングとは?ホットストリングは主に、入力した略語を展開する(自動置換)ために使用されますが、スクリプト化されたアクションを起動するためにも使用できます。事例:
::ftw::Free the whales
この2つの例の違いは、ホットキーはCtrl+Jを押したときに発動するのに対し、ホットストリングは入力された「ftw」を「Free the whales」に変換するという点です。
「では、私のような素人がホットキーを作るにはどうすればいいのでしょうか?」いい質問です。ホットキーはコロンのペア一組で作成できます。キーまたはキーコンボは::
の左側に置く必要があります。そして、その内容は中カッコで囲んで下に書く必要があります。
注:例外もありますが、それは多くの場合混乱を招きがちです。だからチュートリアルでは扱わないことにしています。
Esc:: { MsgBox "Escape!!!!" }
ホットストリングは、テキスト置換のトリガーとなるテキストの両側にコロンのペアが1つずつあります。入力したテキストを置き換えるテキストは、2つ目のコロンのペアの右側に置きます。
前述のように、ホットストリングはスクリプト化されたアクションを起動することもできます。これは「何でもできる」という意味の洒落た言葉だ。ホットキーも同じです。
::btw:: { MsgBox "You typed btw." }
ホットキー、ホットストリング、ラベル、その他まだお話ししていない様々なものに対して、何行ものコードを書くことができます。
^j:: { MsgBox "Wow!" MsgBox "There are" Run "notepad.exe" WinActivate "Untitled - Notepad" WinWaitActive "Untitled - Notepad" Send "7 lines{!}{Enter}" SendInput "inside the CTRL{+}J hotkey." }
「どうやって^がCtrlを意味することを知るんだ!」と思うかもしれません。いい質問だね。^や他の記号の意味を知るために、この表をご覧ください:
記号 | 説明 |
---|---|
# | Win(Windowsロゴキー) |
! | Alt |
^ | Ctrl |
+ | Shift |
& | アンパサンドは、任意の2つのキーまたはマウスボタンの間に使用し、カスタムホットキーに結合することができます。 |
(記号の全リストはホットキーのページを参照)
また、ホットキーのダブルコロンの左側で使用できるホットキー名の一覧については、「キー、マウスボタン、コントローラーコントロールの一覧」を参照してください。
キーとキーの間に &
を使用することで、2つのキー(コントローラーボタンは除く)のカスタムコンビネーションを定義することができます。以下の例では、Numpad0を押しながらNumpad1またはNumpad2を押して、ホットキーのいずれかをトリガーします:
Numpad0 & Numpad1:: { MsgBox "You pressed Numpad1 while holding down Numpad0." } Numpad0 & Numpad2:: { Run "notepad.exe" }
しかし、ホットキーがそうである以上、ホットストリングにクールなモディファイアがあるのかどうか、あなたは今、疑問に思っているはずだ。そうだ!ホットストリング修飾子は、最初のコロンのペアの間に置く。事例:
:*:ftw::Free the whales
その他のホットキーとホットストリングの修飾子、情報、例については、ホットキーとホットストリングをご覧ください。
ホットキーやホットストリングを特定のウィンドウでのみ使用したい(または無効にしたい)場合があります。これを行うには、#が前に付いた洒落た指令、#HotIfを、組み込み関数WinActiveまたはWinExistと組み合わせて使う必要がある:
#HotIf WinActive(WinTitle) #HotIf WinExist(WinTitle)
この特別な指令(専門的には "ディレクティブ"と呼ばれる)は、文脈依存のホットキーとホットストリングを作成します。WinTitleにウィンドウのタイトルを指定するだけです。しかし場合によっては、HWND、グループ、クラスなどの条件を指定したいこともあるかもしれません。これらは少し高度なので、こちらで詳しく説明します:WinTitleパラメータと最後に見つかったウィンドウ。
#HotIf WinActive("Untitled - Notepad") #Space:: { MsgBox "You pressed WIN+SPACE in Notepad." }
それ以降のホットキーまたはホットストリングのコンテキスト感度をオフにするには、パラメータなしで#HotIfを指定します。事例:
; Untitled - Notepad #HotIf WinActive("Untitled - Notepad") !q:: { MsgBox "You pressed ALT+Q in Notepad." } ; Any window that isn't Untitled - Notepad #HotIf !q:: { MsgBox "You pressed ALT+Q in any window." }
スクリプト内で#HotIfディレクティブが使用されていない場合、すべてのウィンドウですべてのホットキーとホットストリングが有効になります。
#HotIf指令は位置指定:#HotIfは、次の#HotIfディレクティブまで、スクリプト内で物理的にその下にあるすべてのホットキーとホットストリングに影響を及ぼします。
; Notepad #HotIf WinActive("ahk_class Notepad") #Space:: { MsgBox "You pressed WIN+SPACE in Notepad." } ::msg::You typed msg in Notepad ; MSPaint #HotIf WinActive("Untitled - Paint") #Space:: { MsgBox "You pressed WIN+SPACE in MSPaint!" } ::msg::You typed msg in MSPaint!
より詳細な情報については、#HotIfのページをご覧ください。
このことは、なぜか一部の人々の心を横切っている。だから、はっきりさせておこう:AutoHotkeyには、1つのファイルにいくつでもホットキーやホットストリングを設定できる機能があります。それが1人であろうと、3253人(あるいはそれ以上)であろうと。
#i:: { Run "https://www.google.com/" } ^p:: { Run "notepad.exe" } ~j:: { Send "ack" } :*:acheiv::achiev ::achievment::achievement ::acquaintence::acquaintance :*:adquir::acquir ::aquisition::acquisition :*:agravat::aggravat :*:allign::align ::ameria::America
上記のコードはまったく問題ない。複数のホットキー、複数のホットストリング。すべて1つの大きな幸せなスクリプトファイルだ。
::btw::by the way ; Replaces "btw" with "by the way" as soon as you press a default ending character.
:*:btw::by the way ; Replaces "btw" with "by the way" without needing an ending character.
^n:: ; CTRL+N hotkey { Run "notepad.exe" ; Run Notepad when you press CTRL+N. } ; This ends the hotkey. The code below this will not be executed when pressing the hotkey.
^b:: ; CTRL+B hotkey { Send "{Ctrl down}c{Ctrl up}" ; Copies the selected text. ^c could be used as well, but this method is more secure. SendInput "[b]{Ctrl down}v{Ctrl up}[/b]" ; Wraps the selected text in BBCode tags to make it bold in a forum. } ; This ends the hotkey. The code below this will not be executed when pressing the hotkey.
さて、あなたは今、プログラムにキーを送信(タイプ)したいと決めた。それはできる。送信機能を使う。この関数は文字通りキー入力を送信し、タイピングやキー押下をシミュレートする。
しかし、本題に入る前に、人々が抱える一般的な問題について話しておこう。
Just like hotkeys, the Send function has special keys too. たくさん、たくさんだ。以下は、最も一般的な4つのシンボルである:
記号 | 説明 |
---|---|
! | Altを送る。例えば、Send "This is text!a" は、"This is text "とキーを送り、Alt+Aを押す。注:プログラムによっては、!A は !a とは異なる効果をもたらす。これは!A がAlt+Shift+Aを押し、!a がAlt+Aを押すからである。迷ったときは小文字を使います。 |
+ | Shiftを送る。例えば、Send "+abC" を送ると "AbC"というテキストが送られ、Send "!+a" を送るとAlt+Shift+Aを押す。 |
^ | Ctrlを送る。例えば、Send "^!a" を送信する場合はCtrl+Alt+Aを、Send "^{Home}" を送信する場合はCtrl+Homeを送信する。注: ^A はプログラムによっては ^a とは異なる効果をもたらします。これは^A がCtrl+Shift+Aを、^a がCtrl+Aを押すからである。迷ったときは小文字を使います。 |
# | Win(Windows ロゴのあるキー)を送信するので、Send "#e" を送信するには、Winを押しながらEを押します。 |
センドページの巨大な表には、AHKに内蔵されている特殊キーのほとんどが示されている。事例:{Enter}
と{Space}
。
注意:この表はホットキーには適用されません。つまり、ホットキーを作成するときに、Ctrlや Enter(またはその他のキー)を中カッコで囲まないということです。
ホットキーにやってはいけないことを示す例:
; When making a hotkey... ; WRONG {LCtrl}:: { Send "AutoHotkey" } ; CORRECT LCtrl:: { Send "AutoHotkey" }
多くの人が持っている一般的な問題は、中カッコは単に面白半分でドキュメントのページに付けられたものだと思い込んでいることだ。しかし、実際には必要なのだ。{!}
が「感嘆符」を意味し、「Altを押してください」を意味しないことをAHKが知っているのはそのためだ。ですから、送信ページの表をチェックし、括弧が正しい位置にあることを確認するのを忘れないでください。事例:
Send "This text has been typed{!}" ; Notice the ! between the curly brackets? That's because if it wasn't, AHK would press the ALT key.
; Same as above, but with the ENTER key. AHK would type out "Enter" if ; it wasn't wrapped in curly brackets. Send "Multiple Enter lines have Enter been sent." ; WRONG Send "Multiple{Enter}lines have{Enter}been sent." ; CORRECT
もうひとつのよくある問題は、人々はすべてを括弧でくくる必要があると思っていることだ。それは誤りだ。チャートになければ、括弧は必要ない。一般的な文字や数字、あるいは.(ピリオド)のような記号を中カッコで囲む必要はない
。また、送信機能を使えば、一度に複数の文字、数字、記号を送信することができます。だから、1文字ずつのSend関数の束は必要ない。事例:
Send "{a}" ; WRONG Send "{b}" ; WRONG Send "{c}" ; WRONG Send "{a}{b}{c}" ; WRONG Send "{abc}" ; WRONG Send "abc" ; CORRECT
キーを押したままにしたり離したりするには、キー名を波括弧で囲み、その後に「UP」または「DOWN」を使用する。事例:
; This is how you hold one key down and press another key (or keys). ; If one method doesn't work in your program, please try the other. Send "^s" ; Both of these send CTRL+S Send "{Ctrl down}s{Ctrl up}" ; Both of these send CTRL+S Send "{Ctrl down}c{Ctrl up}" Send "{b down}{b up}" Send "{Tab down}{Tab up}" Send "{Up down}" ; Press down the up-arrow key. Sleep 1000 ; Keep it down for one second. Send "{Up up}" ; Release the up-arrow key.
しかし今、あなたは「どうすれば本当に長いSend関数を読みやすくできるのか?」。簡単だ。継続セクションと呼ばれるものを使用する。新しい行で開始括弧を指定し、次に内容を指定し、最後にその行で終了括弧を指定するだけだ。詳しくは、継続セクションについてをお読みください。
Send " ( Line 1 Line 2 Apples are a fruit. )"
注:Sendにはいくつかの種類があります。それぞれに特徴あります。Sendがニーズに合わない場合は、別のSendを試してみてください。関数名「Send」を以下のいずれかに置き換えるだけでよい:SendText、SendInput、SendPlay、SendEvent。それぞれの役割については、こちらをご覧いただきたい。
This is important: Some games, especially multiplayer games, use anti-cheat programs. GameGuard、Hackshield、PunkBusterなどだ。これらのシステムを迂回することは、ゲームポリシーに違反し、あなたが追放される可能性があるだけでなく、回避するのが複雑です。
ゲームにチート防止システムがあり、ホットキー、ホットストリング、送信機能が動作しない場合は、運が悪かったと言えます。しかし、ゲームによっては動作する可能性を高める方法はありますが、魔法のような「今すぐ私のゲームで動作させる!」ボタンはありません。。だから、あきらめる前にこれらすべてを試してみてほしい。
また、DirectXにも既知の問題がある。問題があり、ゲームがDirectXを使用していることが分かっている場合は、FAQページに記載されていることを試してみてください。PixelSearch、PixelGetColor、ImageSearchを使用すると、さらにDirectXの問題が発生する可能性があります。どんな色を出そうとしても黒(0x000000)になるかもしれない。また、可能であれば、ウィンドウモードでゲームを実行してみてください。これにより、DirectXのいくつかの問題が修正された。
AutoHotkeyをすべてのプログラムで使えるようにする唯一の解決策はありません。何を試してもうまくいかない場合は、AutoHotkeyを使うことができないかもしれません。
mspaint.exe、calc.exe、script.ahk、あるいはフォルダなどのプログラムを実行するには、「ファイル名を指定して実行」機能を使用します。https://www.autohotkey.com/などのURLを開くのにも使える。あなたのコンピューターが、実行したいタイプのプログラムを実行できるようにセットアップされていれば、とても簡単だ:
; Run a program. Note that most programs will require a FULL file path: Run A_ProgramFiles "\Some_Program\Program.exe" ; Run a website: Run "https://www.autohotkey.com"
コマンドラインパラメーターやCLSIDなど、他にも高度な機能がある。そのようなことについてもっと知りたければ、Runのページをご覧ください。
以下はそのサンプルである:
; ウィンドウズの標準のプログラムのように、プログラムによってはフルパスで指定する必要がありません: Run "notepad.exe" Run "mspaint.exe" ; マイドキュメントフォルダを組み込み変数を使って開きます: Run A_MyDocuments ; ウェブサイトを開きます: Run "https://www.autohotkey.com" Run "https://www.google.com"
より詳細な情報や例については、Runのページをご覧ください。
AutoHotkeyでは、関数呼び出しは括弧付きでも括弧なしでも指定できます。括弧が必要なのは、関数の戻り値が必要な場合か、関数名が行頭に書かれていない場合だけである。
内蔵関数の一覧はこちら。
典型的な関数呼び出しは次のようなものだ:
Function(Parameter1, Parameter2, Parameter3) ; 括弧あり Function Parameter1, Parameter2, Parameter3 ; 括弧なし
パラメータはあらゆる種類の表現に対応している:
SubStr(37 * 12, 1, 2) SubStr(A_Hour - 12, 2)
SubStr(A_AhkPath, InStr(A_AhkPath, "AutoHotkey"))
SubStr("I'm scripting, awesome!", 16)
関数の戻り値を変数に代入する最も一般的な方法は次のとおりです:
MyVar := SubStr("I'm scripting, awesome!", 16)
これが唯一の方法ではありませんが、最も一般的な方法です。MyVar
は、:=
演算子の右側にある関数の戻り値を格納するために使用しています。詳細はファンクションを参照。
要するにだ:
; 以下は括弧なしで関数を呼び出しています: MsgBox "This is some text." StrReplace Input, "AutoHotKey", "AutoHotkey" SendInput "This is awesome{!}{!}{!}" ; 以下は括弧ありで関数を呼び出しています: SubStr("I'm scripting, awesome!", 16) FileExist(VariableContainingPath) Output := SubStr("I'm scripting, awesome!", 16)
コードブロックとは、小さな中括弧({
と }
)で囲まれたコード行のことである。AutoHotkeyが1つの大きなファミリーであることを認識し、一緒にいる必要があるように、コードのセクションをグループ化します。関数や、Ifや Loopのような制御フロー文と一緒に使われることが多い。これがないと、ブロックの最初の行だけが呼び出される。
以下のコードでは、MyVarが5に等しい場合にのみ、両方の行が実行される:
if (MyVar = 5) { MsgBox "MyVar equals " MyVar "!!" ExitApp }
以下のコードでは、MyVarが5に等しい場合にのみメッセージボックスが表示される。The script will always exit, even if MyVar is not 5:
if (MyVar = 5) MsgBox "MyVar equals " MyVar "!!" ExitApp
ifステートメントに関連するコードは1行だけなので、これはまったく問題ない。上とまったく同じだが、2行目をアウトデントにして、if文と分離していることがわかるようにした:
if (MyVar = 5) MsgBox "MyVar equals " MyVar "!!" MsgBox "We are now 'outside' of the if-statement. "の下に1行しかないので、中カッコは必要なかった。"
変数は、ある情報を保持する小さな付箋のようなものだ。テキスト、数値、関数からのデータ、あるいは数式を保存するのに使うことができる。それがなければ、プログラミングやスクリプトはもっと退屈なものになるだろう。
変数はいくつかの方法で割り当てることができる。ここでは、最も一般的な形式を取り上げる。Please pay attention to the colon-equal operator (:=
).
MyVar := "Text"
これは変数の最も単純な形である。テキストを入力するだけで完了。テキストは引用符で囲む必要がある。
MyVar := MyVar2
上記と同じだが、変数の値を別の変数に代入している。
MyVar := 6 + 8 / 3 * 2 - Sqrt(9)
式のおかげで数学ができる!
MyVar := "The value of 5 + " MyVar2 " is: " 5 + MyVar2
上記3つの課題の組み合わせ。
Equal signs (=) with a symbol in front of it such as :=
+=
-=
.=
etc. are called assignment operators.
時には、ユーザーが物の価値を選べるようにしたい。これにはいくつかの方法があるが、最も単純な方法はInputBoxである。ここでは、ユーザーにいくつかの質問をし、入力された内容でいくつかのことを行う簡単な例を示します:
IB1 := InputBox("What is your first name?", "Question 1") if IB1.Value = "Bill" MsgBox "That's an awesome name, " IB1.Value "." IB2 := InputBox("Do you like AutoHotkey?", "Question 2") if IB2.Value = "yes" MsgBox "Thank you for answering " IB2.Value ", " IB1.Value "!We will become great friends." else MsgBox IB1.Value ", That makes me sad."
Result := MsgBox("Would you like to continue?",, 4) if Result = "No" return ; Noならここでコードを終了します。 MsgBox "You pressed YES." ; Otherwise, the user picked yes.
Var := "text" ; Assign some text to a variable. Num := 6 ; 変数に数値を代入します。 Var2 := Var ; 変数に別の変数を代入します。 Var3 .= Var ; 変数の末尾に別の変数を追記します。 Var4 += Num ; 変数に別の変数を加算します。 Var4 -= Num ; Subtract the value of a variable from another. Var5 := SubStr(Var, 2, 2) ; Variable inside a function. Var6 := Var "Text" ; Assigns a variable to another with some extra text. MsgBox(Var) ; Variable inside a function. MsgBox Var ; 上と同じです。 Var := StrSplit(Var, "x") ; Variable inside a function that uses InputVar and OutputVar. if (Num = 6) ; Check if a variable is equal to a number. if Num = 6 ; Same as above. if (Var != Num) ; Check if a variable is not equal to another. if Var1 < Var2 ; Check if a variable is lesser than another.
オブジェクトは、データをより効率的に使用するための整理方法です。オブジェクトは基本的に変数の集まりである。オブジェクトに属する変数は「プロパティ」と呼ばれる。オブジェクトには、配列要素などのアイテムが含まれることもある。
オブジェクトを何かに使いたい理由はいくつもあるだろう。いくつかの例を挙げよう:
オブジェクトを作成する方法はいくつかあるが、最も一般的なものを以下に挙げる:
MyArray := ["one", "two", "three", 17]
これはArray(配列)を作成するもので、1番から上の項目のリストを表す。この例では、値"one"
がインデックス1に、値17
がインデックス4に格納されている。
Banana := {Color: "Yellow", Taste: "Delicious", Price: 3}
これにより、アドホック・オブジェクトが作成される。これは、既知のプロパティの短いセットを持つオブジェクトを素早く作成する方法です。In this example, the value "Yellow"
is stored in the Color property and the value 3
is stored in the Price property.
MyArray := Array("one", "two", "three", 17)
これはブラケット構文と同じである。これは実際には関数ではなくArrayクラスを呼び出している。
MyMap := Map("^", "Ctrl", "!", "Alt")
これはMapまたは連想配列を作成する。この例では、値"Ctrl"
がキー"^"
に関連付けられ、値"Alt"
がキー"!"
に関連付けられる。マップは多くの場合、Map()
で空の状態で作成され、後でアイテムで埋められる。
Banana := Fruit()
指定されたクラス(この場合は Fruit)のオブジェクトを作成します。
値の取得、値の設定、値の追加など、オブジェクトを使う方法はたくさんある。
MyArray[2] := "TWO" MyMap["#"] := "Win"
マップやコレクションに配列要素や項目を設定するのは、変数に値を代入するのと似ている。オブジェクト(配列、マップ、その他何でも)を含む変数にブラケット表記を追加するだけだ。括弧の間のインデックスまたはキーは式なので、数値以外のリテラル値には引用符を使用しなければならない。
Banana.Consistency := "Mushy"
この例では、バナナに含まれるオブジェクトのプロパティに新しい値を割り当てている。そのプロパティがまだ存在しない場合は、作成される。
Value := MyMap["^"]
この例では、以前にキー"^"
に関連付けられた(マップされた)値を取得する。多くの場合、キーはMyMap[modifierChar]
のような変数に含まれる。
Value := Banana.Color
This example retrieves the Color property of the Banana object.
MyMap["NewerKey"] := 3.1415
キーと値を直接追加するには、まだ存在しないキーを設定すればよい。ただし、配列に代入する場合は、インデックスが1から配列の現在の長さの範囲内になければならないことに注意。対象が異なれば、要求も異なるだろう。
MyObject.NewProperty := "Shiny"
前述のように、まだ定義されていないプロパティに代入すると、新しいプロパティが作成されます。
MyArray.InsertAt(Index, Value1, Value2, Value3...)
InsertAtは、配列内の特定の位置に新しい値を挿入するために使われるメソッドだが、他の種類のオブジェクトでもこの名前のメソッドを定義することができる。
MyArray.Push(Value1, Value2, Value3...)
Pushは、Array MyArrayの末尾に値を「追加」する。ブラケット記法は、現在の値の範囲外を代入するために使用することができないので、配列に新しい要素を追加するための好ましい方法です。
RemovedValue := MyObject.Delete(AnyKey)
Arrayと MapにはDeleteメソッドがあり、配列やマップから値を削除する。MyObject[AnyKey]
の前の値がRemovedValueに格納されます。配列の場合、これは配列要素に値を残さず、配列の他の要素には影響を与えない。
MyArray.Pop()
このArrayメソッドは、配列から最後の要素を取り除き、その値を返します。配列の長さが1短くなる。
RemovedValue := MyArray.RemoveAt(Index)
MyArray.RemoveAt(Index, Length)
配列には RemoveAtメソッドがあり、配列要素や配列要素の範囲を削除します。取り除かれた要素の右側に要素があれば、その要素は左にシフトされ、空いたスペースを埋める。
我々は旅の終わりに到達したのだ。何か学んでいただけただろうか。しかし、その前に知っておくべきことがある。楽しもう!
この2つの記号([
と]
)は、ほとんどのページの上部にある黄色い構文ボックスでコードを囲んでいます。これらの括弧の中はオプション。つまり、中に入っているものは、必要なければ出しておくことができるのだ。コードを書く際には、角括弧をコード中に入力しないことが非常に重要です。
ControlGetTextページでは、このように表示されます:
Text := ControlGetText(Control , WinTitle, WinText, ExcludeTitle, ExcludeText)
だから、やろうと思えば簡単にできる:
Text := ControlGetText(Control)
あるいは、さらに詳細を加える:
Text := ControlGetText(Control, WinTitle)
WinTextや WinTitleを記入せず、ExcludeTitleを使いたい場合は?シンプルだ!
Text := ControlGetText(Control,,, ExcludeTitle)
パラメータを無視することはできませんが、空白にすることはできます。WinTitle, WinText
を無視すると、このようになり、問題が発生する:
Text := ControlGetText(Control, ExcludeTitle)
このコードを実行すると、AHKのバージョンが表示されます:
MsgBox A_AhkVersion
または、スタートメニューまたはインストールディレクトリで "AutoHotkey Help File"または "AutoHotkey.chm"を探してください。
試行錯誤は非常に一般的で効果的な学習方法である。些細なことでいちいち助けを求めるのではなく、時には一人で時間をかけて(時には数時間、数日かけて)何かを動かそうとすることが、より早く学ぶことにつながる。
何かを試してエラーが出たら、そのエラーを研究すること。それからコードを修正してみてください。その後、もう一度実行してみてください。それでもエラーが出る場合は、コードをもう少し修正してください。あなたのコードが失敗しなくなるまで、試行錯誤を続けてください。ドキュメントを読み、エラーを読み、何が機能し、何が機能しないかを学ぶことで、この方法で多くを学ぶことができる。トライ、失敗、トライ、失敗、トライ、トライ、失敗、成功!
こうして多くの "プロ "が学んできた。でも、助けを求めることを恐れないでください。私たちは(強く)噛みついたりはしません。学習には時間がかかる。あなたが出会う "プロ "たちは、ほんの数時間や数日でマスターになったわけではない。
"最初はうまくいかなくても、トライ、トライ、またトライ" - ヒクソン ウィリアム・E
このこと(インデント)はとても重要だ!あなたのコードはこれなしでもまったく問題なく動くが、あなたにとっても他の人にとっても、あなたのコードを読むのは大きな頭痛の種になるだろう。小さなコード(25行以下)は、インデントなしで読む分には問題ないだろうが、すぐにだらしなくなってしまう。早急にインデントを学んだ方がいい。インデントに決まったスタイルはありませんが、すべてを統一するのがベストです。
「インデントとは何か?」と貴方は問う?これは単に、コードを分割するための間隔であり、何が何に属しているかがわかるようにするためのものである。通常、「レベル」ごとに3つか4つのスペースか1つのタブを使う。
インデントされていない:
if (car = "old") { MsgBox "The car is really old." if (wheels = "flat") { MsgBox "This car is not safe to drive." return } else { MsgBox "Be careful!This old car will be dangerous to drive." } } else { MsgBox "My, what a shiny new vehicle you have there." }
インデントされている:
if (car = "old") { MsgBox "The car is really old." if (wheels = "flat") { MsgBox "This car is not safe to drive." return } else { MsgBox "Be careful!This old car will be dangerous to drive." } } else { MsgBox "My, what a shiny new vehicle you have there." }
さまざまなスタイルと例については、ウィキペディアのインデントのスタイルのページを参照のこと。自分の好きなものを選ぶか、自分が一番読みやすいと思うインデントの付け方を学んでください。
質問する前に、自分で調べてみるか、自分でコーディングしてみるといい。それでも満足のいく結果が得られなかった場合は、以下をお読みいただきたい。
すぐに回答が得られない場合は、少なくとも1日(24時間)待ってから問い合わせること。私たちは手助けをするのが好きだが、自分の時間を使って無料でやっている。仕事中かもしれないし、寝ているかもしれないし、ゲームをしているかもしれないし、家族と一緒にいるかもしれないし、ただ忙しくて手伝う暇がないかもしれない。
そして助けを待つ間、自分で学んでやってみることもできる。人の手を借りずに自分で何かを作るというのはいい気分だ。