見出し画像

お前もチーターにならないか?(kmmac72)

※kmmac72はコンピュータの操作を記録し、忠実に再現できるキーボード&マウスマクロツールです。


使い方の自分用メモ編です。

注意:xp時代のものなのでwindows10だと不備があります。

24/01/14途中公開。
基本的なことは記載しましたが全部はできてません。
KMmacro.mdファイルと照らし合わせて使った方がいいかも。


あった方がいいもの

VScode

KMmacro関連のほとんどはテキストファイルです。(.MAC,.MNU,.INI)
また、備え付けの編集機能が機能しないため、ファイルを直接書き換える必要があります。(KMmacro.INIからデフォ編集ソフトの変更可能)


各ファイルの説明

ダウンロードして解凍したとして。
このフォルダ内だけで独立しているので、フォルダごと適当なところに保存して、いらなくなったらフォルダごと削除すればOKです。

KMmacro.exe

起動ファイルです。最終的にはこれしか使いません。
ダブルクリックするとその場でメニューが出るので、使いたい機能を使います。メニューを出しても使わない場合はESCキーで消せます。

KMmacro.MNU

上記メニューのショートカットのURL記述箇所です。imomushiとかのやつ。
これを開いて項目を削除することでメニュー一覧から消すことができます。(マクロ自体は消えない)

~.MAC

マクロ本体です。「記録」を押した先で保存すると作成されます。
自動でメニューに追加されます。

KMmacro.INI

ソフト全体の挙動数値が変更できます。
例えば、基本動作は50ミリ秒の待ち時間が発生しますがこれを5ミリ秒に変更したりできます。

操作説明関連

はじめに.txt
KMmacro.txt
_Q&A.txt
HELPフォルダ(上記Q&Aを含む)

基本操作はKMmacro.txt,
追加情報はHELPフォルダ内の_kmmacrop.htmをブラウザで開けばOKです。

他は起動したときに呼び出すファイルだったり、サンプルファイルです。
気になるならファイルをVScodeにドラッグインドロップで見れます。


操作方法

起動ファイルをホットキー登録

起動ファイルのショートカットをデスクトップに作成。
プロパティからショートカットキーを作成(公式HELPオススメは"\")

これでctrl+alt+\で起動するようになります。
(起動には5秒ほどかかります)

注意:フルスクリーン表示のアプリがアクティブファイルになっているときは使用できません。

--

マクロ登録方法

  1. マクロ操作したいウィンドウを開きます。

  2. KMmacro.exeを起動して、「^_記録」を押します。

  3. マクロ操作したいウィンドウに移り、マウスとキーボードの動きを覚えさせます。

  4. KMmacroに戻り、終了ボタンを押して.MACファイルを任意の箇所に保存します。

  5. 必要があれば.MACをVScodeで編集して完成です。

  6. 使用するにはKMmacro.exeを起動してメニューから作成したマクロを選択します。

なお、上記動作で覚えさせることができる内容は、
・どのキーが押されたか(1キーずつ)
・左クリックを押した箇所、右クリックを押した箇所
のみです。
文字入力は挙動がおかしいので編集する必要があります。

・マクロはKMmacroを起動した時点から始まります。
1回目の動作は「操作したいウィンドウを選択してアクティブウィンドウにする」が必須です。

・ファイル名を「キー_hoge」にすると、KMmacroを起動したときにキーを押すとそのマクロが実行できます。
(例:起動の時に^を押すと記録ボタンが押されたのと同操作になります)

常駐モード

メニューキーを介さず登録したホットキーで起動させるモードです。




マクロの編集

作成したマクロの名前変更

2か所変更します。
・作成した.MACファイル自体の名前を変更
・KMmacro.MNU内の登録名を変更

メニューからマクロを削除

2か所変更します。上と同じです。変更を削除にしてください。

マクロを停止

ESCキーを押します。2回押すとalertも消せるので素早くできます。
無限ループ処理でも止められます。
ただし、delayの処理の最中は受け付けません。
delayの最中でも受け付けるようにするには

delay 20000 500

というように、「500ミリ秒ごとにキー入力を受け付けるようにする」
といった記述が必要です。

メッセージを表示する

マクロ起動中は他の操作を行うのがほぼ不可能なため、動作が終わったことを示す必要があったりします。

message "" "all finish!" 


はい、いいえ、キャンセルどれを押しても同じ。

ただし、unicodeに対応していないので、Shift-JISで記述が必要です。

VScodeだと、右下のUTF-8をクリックして、「エンコード付きで再度開く」からshiftjisで検索
再び押して、「エンコード付きで保存」で変更する。

または規定の文字表示の設定を変更する。

VScodeで編集できるようにする

KMmacroの「] 編集」ボタンからファイルを選んで開くボタンを押すとVScodeが起動できるようにします。
なお、VScodeにドラッグインドロップでも開けます。

KMmacro.INIの「; 「編集」で起動するエディタ」の項目下のeditor=
を書き加えます。

; 「編集」で起動するエディタ(デフォルトは c:\windows\Notepad.exe)
editor=C:\Program Files\Microsoft VS Code\Code.exe

※これはデフォで入れた場合であり、貴殿の環境では間違いかも。
VScodeの起動ファイルから数珠繋ぎの「ファイルの場所を開く」から本体の箇所を特定してプロパティからコピペしてください。

マクロの編集2

マクロ内の記述種類は大きく分けて3つ。

コメント「;」

; 行の最初に;がある場合はその行は読み込まれない。メモ書きなどに使う。
;; これは「;」として読み込まれる。

コマンド

行の最初がコマンドの場合そのコマンドが実行されます。

LCLICK 50,215
KEY [ALT]++ F [ALT]--
KEY C
LCLICK 50,445

X50,Y215 部分を左クリック
Altキーを押しっぱなし(++)のままとFキーを押した後Altキーを離す(--)
Cキーを押す
X50,Y445 部分を左クリック

それ以外

・AUTOPASTE コマンドがOFFのとき
関数を演算する。関数以外の記述はエラーと吐き出す。
・AUTOPASTE コマンドがONのとき
文字列と認識し、クリップボード経由でマクロ操作したいウィンドウへ渡す

マクロの編集3(コマンド)

実際入力して扱えるコマンドなど。

キーボードマクロ

クリック

瞬間的に指定箇所の1点を1回クリックします。

;LCLICK x,y
;(x,y)座標にマウスカーソルを移動し、左クリックします。
LCLICK 500,500

;RCLICK x,y
上の右クリック版。
RCLICK 500,500

ムーブ

現在地からB地点までカーソルを動かします。

;MOVETO x,y
;(x,y)座標にマウスカーソルを移動します。クリックはしません。絶対値移動。
MOVETO 500,500

;MOVERE x,y
;(x,y)座標にマウスカーソルを移動します。クリックはしません。相対値移動
;例:現在地が100,100の場合、以下は100+500,100+500なので600,600の位置に移動。
MOVERE 500,500

コマンド原点座標の変更

クリックやムーブの相対値の時に参照にする原点を変更します。

;SETORIGIN x,y
;LCLICK、RCLICK、MOVETO コマンドの座標の原点を (x,y) 座標にします。
SETORIGIN 100,100

スクロール

マウスの中ボタンの操作です。

;WHEEL n
;nの回数だけ上方向に転ばします。数値をマイナスにすると下方向に転ばします。
WHEEL 5

;WindowsNT 系列でない場合はコマンド1回につき1回転ぶので、必要回数だけコマンドを繰り返すと同じことができます。
WHELL 1
WHELL 1
WHELL 1
WHELL 1
WHELL 1

一時停止

何も入れないと、すべてのコマンドが50ミリ秒ごとに実行されます。
例えばアクションのあとに待たないと次が実行されないことなどに。

;DELAY m n
;m の数値だけマクロが停止します。この間すべての動作を受け付けません(ESC含む)
;n の数値ミリ秒ごとに入力を受け付けます。
DELAY 5000 500

;AUTODELAY n
;これを入力した以降のコマンド待機時間を50ミリ秒から変更します。
;nが無効な値のとき100ミリ秒になります。
AUTODELAY 200

なお、初期設定の50ミリ秒を変更する場合はKMmacro.INIにて。

入力

キーを入力したり、文字列を渡したり。

;key [right]
;Key A
;1つのキーを入力したという行動を渡します。
;やりたい内容は記録で実際ボタン押して調べて。
Key A

;PASTE 文字列
;文字列部分をクリップボード経由で渡します。(ctrl+Vと同じ)
;文字はShift-JISで記述する。
PASTE お前もチーターにならないか?

;SEND 文字列
;文字列部分を送信します。変数で中身を変更して渡す場合などに
SEND お前も+%0+にならないか?

その他、研究中

PASTEKEY キー
 アプリケーションにデータをコピーするときのキー操作を変更します。
・SETBREAKKEY
 マクロ中断キーを変更します。
・READJOYSTICK
 ジョイスティックの状態を変数 %joybutton、%joystick などに返します。
・SET-IME 文字列
 IME のオン・オフを行います。文字列が"True" なら IME をオン、それ以外ならオフにします。 (注)Windows 10 では動作しないようです

変数

%hogeのように%を直前につけたものが変数として認識されます。
変数とそれ以外の間は半角スペースを空けます。

基礎

;宣言
DIM %hoge
DIM %fuga
DIM %piyo

;数字は63まで宣言なしで使用可能。
;なお数字ではなく変数としての箱。
%0
%63

;中身の確認(messageでも可)
MESSAGE "" %hoge

;複数の変数の中身の確認
(message %hoge " " %fuga)

;文字列を入れる
SET %hoge あ
;数字だけを入れると数字として中身が入る
SET %hoge 0

;文字列の合体
;piyoに%hogeと%fugaの連結文字列を入れる
SET %piyo (& %hoge %fuga)

;使用の注意===

;ラベルとして使う
(& ":" &hoge) ;:hogeという名前のラベルとして読み込み

;x,y値のとき
SET %hoge (x,y)
LCLICK %hoge
;または
LCLICK (& %hoge "," %fuga)

条件式

;ここではIFで行う
;IFは条件式がTRUEのとき起動する。
;また、見栄えでそろえているが、実際は半角スペース1つにする。

DIM %A
DIM %B
DIM %C

;===========================

;倫理演算
IF (= %A %B)      message "" AとBが等しい場合
IF (<> %A %B)     message "" AとBが異なる場合
IF (not %A)       message "" AがTrueでない場合(TrueのときはFalseを返す)
IF (or %A %B %C)  message "" A,B,CいずれかがTrueのとき
IF (and %A %B %C) message "" A,B,C全てがTrueのとき

;数値演算(A,B,Cの中が数字のとき)
IF (> %A %B)      message "" A>Bの関係のとき
IF (< %A %B)      message "" A<Bの関係のとき
IF (>= %A %B)     message "" A>=Bの関係のとき
IF (<= %A %B)     message "" A<=Bの関係のとき

;文字列演算(A,B,Cが数字以外のとき)
IF (in %A %B)     message "" Aの文字列の中にBが含まれているとき

文字列

;hogeに代入すると仮定する。
;また、空白は半角スペース1として置き換えて考える
DIM %hoge
DIM %A
DIM %B
DIM %C
DIM %i ;数字
DIM %l ;数字

;===========================

;文字数を返す
SET %hoge (len %A) ;※2byte文字も1で返す

;Aの中のBは何文字目にあるかを返す。なければ0。
SET %hoge (pos %B %A)

;Aの中からi文字目からl文字目までを返す。
 ;iが数字以外の場合iを1として扱う
 ;lが数字以外の場合(len %A)として扱う
 ;i+l=(len %A)のとき、文字列の末尾まで返す。
SET %hoge (substr %A %i %l) 

;Aの中からBより以前の文字を返す
SET %hoge (token %A %B) ;例:A=="123,456"B=","のとき123

;端の半角スペースやタブを取り除く(trimシリーズ)
SET %hoge (trim %A)  ;前後の端から空白を除く「 A 」->「A」
SET %hoge (ltrim %A) ;前端から空白を除く  「 A 」->「A 」
SET %hoge (rtrim %A) :後端から空白を除く  「 A 」->「 A」

;大文字<->小文字変換
SET %hoge (upcase %A)   ;a->Aに変換して入れる
SET %hoge (downcase %A) ;A->aに変換して入れる
SET %hoge (zenkaku %A)  ;ア->アに変換して入れる
SET %hoge (hankaku %A)  ;ア->アに変換して入れる

;端の一文字だけ返す
SET %hoge (left %A i)     ;Aの前からi文字を入れる
SET %hoge (right %A i)    ;Aの後からi文字を入れる

;文字コード変換
SET %hoge (asc %A) ;A->65に変換して入れる
SET %hoge (chr %A) ;65->Aに変換して入れる

;Aの中に含まれるBをCに置き換える
SET %hoge (retext %A %B %C)

演算

DIM %A
DIM %B
DIM %C
DIM %hoge

;足し算
SET %hoge (+ %A %B %C) ;A+B+Cを足した数がhogeに代入
;引き算
SET %hoge (- %A %B %C) ;A-B-Cの残りがhogeに代入
;乗算(掛け算)
SET %hoge (* %A %B %C) ;A*B*C以下略
;除算(割り算)
SET %hoge (div %A %B) ;A/B(整数のみ{10/3->3)
;余り算
SET %hoge (mod %A %B) ;A/Bの余り(10/3->1)

;=============
;代入せずに直接変更する(Aを変更)

;足し算
INT %A %B ;A+B(Bは整数のみ,それ以外・省略の場合1を足す)
;引き算
DEC %A %B ;A-B

変数を取得する関数

;hogeに代入すると仮定する。
;また、空白は半角スペース1として置き換えて考える
DIM %hoge

;===========================

;通過した時点でのアクティブウィンドウのタイトルを取得
SET %hoge (GETTITLE %0)

;はい、いいえ、キャンセルの結果を%0へ代入
(message %0 表示する文字) ;それぞれ文字列で「YES」「NO」「CANCEL」
(message "" 表示する文字) ;代入の必要がない場合はこう書く

;クリップボードに入力、クリップボードから変数へ代入
CLIPBRD 入れたい文字列 ;入力
GETCLIPBRD %hoge ;入れたい文字列 を%hogeに代入




あ

その他

種類別けできなかったやつら

;タスクトレイの KMmacro アイコンにマウスカーソルをもっていった時に表示されるメッセージ(ポップアップヒント)を設定します。
HINTMESSAGE テキスト

WindowsNT 系列のみ

https://wa3.i-3-i.info/word11005.html

windows対応のソフトとかブラウザに使える。
ゲームとかは使えない。

あとで試してみる

・BEEP
 指定した周波数・時間、BEEP 音をならします(WindowsNT 系列のみ)。


機能しなかったもの

;n秒間マウスとキーボードの入力をブロックする
BLOCKINPUT n



あ



実行制御関係

何もしなければ、上から下から順にコードが読み込まれますが、
以下を行うことで読み込む順番を変更したりループさせたりできます。

マクロを終了する

END
これ以降は何を書こうが読み込まれない。
コメント文じゃなかろうがエラーは吐かれない。

条件分岐

;IF(条件)A
;条件内容がTRUEのとき、A(コマンド)が実行されます。



この記事が気に入ったらサポートをしてみませんか?