【過去ログ】質問1
自分のやりたいことや現在の設定など情報を詳細に記載してください。
マクロの質問について
現在のKeyToKeyには以下の3種類のマクロがあります。
- C#スクリプト
- ブロックマクロ
- アクションマクロ(非推奨)
マクロの質問をする際はどちらのマクロについて聞きたいのか書いてください。
※書いてない場合は返信は行いませんのでご了承下さい
返信について
返信はすべて最新バージョンの内容で書きます。
古いバージョンをご使用の方は事前に最新版へアップデートしてください。
よくある質問
Q. How can I switch the language in this app?
No you cannot.
It is supported only Japanese(language) and I have no plans to support English or else in the future.
Q. ウィンドウが表示されなくなった
ウィンドウが表示されないときの対処方法 を参照してください。
Q. アプリを非アクティブにしたままマクロやキー入力を実行できる?
できません。
マクロやキー入力等は最前面(アクティブ状態)のアプリに対してのみ動作します。
Q. 設定ファイルはどこにある?
設定ファイルはKeyToKeyのフォルダ内にあります。
設定に関係するフォルダやファイルはこちらを参照してください。
Q. マクロやキーの入力ができない
以下について確認してみてください。
設定の編集が保存できていない
正常に保存できている場合はメインウィンドウに設定内容が表示されます。
他のアプリで試す
特定のアプリで機能してないだけの可能性があります。メモ帳などを使って動作確認してみてください。
アプリの実行許可が正しくできない
環境設定からアプリの実行が正しく設定されているか確認してください
- アプリの実行許可リストに追加した項目を削除した上で動作確認する(何も設定されてない状態の場合すべてのアプリ上で動作します)
- アプリのプロセス名等の設定が正しいかどうか確認する
何かしらのキーやマウスの入力が影響している
キー入力が正しくできない場合、何かしらのキーやマウスが押されっぱなしになっていることによって正しく入力できない可能性がないか確認してみてください。
読み込みエラーが発生している
メインウィンドウのコンソールから読み込みエラーが出てないか確認してみてください。
他アプリの入力によってマクロを実行しようとしている
初期設定では、利便性の観点から、「アプリによる入力(キー/マウス)」によるマクロ等の実行がロックされています。
ここで言う「アプリによる入力」とは、以下のようなものを指します。
- KeyToKeyやJoyToKey等のマクロ系ツール
- キーボード/マウスメーカー製の割り当てツール(ただし物理デバイスかのように振る舞えるツールもあります)
- リモートデスクトップ系ツール
- 特殊なキーボード(テンキーのみキーボード、左手キーボードなど)は「アプリによる入力」を発生させることがあるようです。
■入力が「アプリによる入力」かどうかを調べるには、以下の手順を行います。
- メインウィンドウの「コンソール」からコンソールを表示させます。
- 同じく「コンソール」から「キー/マウスの入力情報を表示」にチェックを入れます。
するとキーやマウスのボタンを入力するたびにコンソールに入力パラメーター情報が表示されるので下記の項目を見ます。
名前 | 説明 |
---|---|
Key | 入力された要素の名前 |
Status | Down (押された)Up (離された) |
Injected | アプリによる入力かどうか。True の場合はアプリによる入力 |
Injected
の値がFalse
の場合は物理デバイスからの入力です。マクロ等が実行可能です。
True
の場合はアプリのよる入力です。マクロ等は実行することができません。
True
の状態でマクロ等を実行するには実行ロックを解除する必要があります。
「割り当て設定(キー/マウス)」ページ上部にある「南京錠」のアイコンボタンからのロックを解除を行うことができます。
ゲームのセキュリティがキーの入力をブロックしている
申し訳ないですが対処方法はありません
KeyToKeyが行うキーの入力監視自体をブロックしている
環境設定からフックを無効にしたら実行できる可能性があります。
ただしフックを無効にするとトリガー等の入力キャンセルができなくなります。
おことわり
コメント欄に「特定のゲームで動かない、実行できない」等のコメントを書かれても残念ながら殆どの場合何も出来ません。
特にオンラインゲームやソーシャルゲーム等はセキュリティプログラムの関係でキー入力のシミュレーションやキーボード/マウスフックなどの処理がブロックされることが多いためです。
ウイルスとして検知された場合
お使いのアンチウイルスソフトでKeyToKeyをホワイトリストに追加してください。
Microsoft Defenderの場合
- 「Windows セキュリティの設定」を開きます。
- 「ウィルスと脅威の防止」をクリックします。
- 「現在の脅威」の検知した項目を「デバイスで許可」に設定し、「操作の開始」をクリックします。
「現在の脅威」に項目が表示されない場合
「現在の脅威」にある「保護の履歴」に表示される項目から許可することができます。
フォルダを検知対象外にする
「ウィルスと脅威の防止」に戻り「ウィルスと脅威の防止の設定」にある「設定の管理」をクリックしてください。
「除外」の「除外の追加または削除」からフォルダを除外できます。
問い合わせ
問い合わせ用メールアドレス:dev.key2key@gmail.com
問い合わせによる質問について
KeyToKeyの利用方法に関する質問は以下のような場合を除き、このページのコメント欄を使用してください。
- 文字数制限などがありここに書くことができない。
- 添付ファイルがある
- どうしても知られたくないプライベートな情報がある。
コメント一覧 (443)
C#スクリプトについてです。
非アクティブのアプリに対してEnterキーやEscキーなどを送信したいのですが可能でしょうか?
key0x2key
が
しました
それか新しいのを作ってほしい
key0x2key
が
しました
key0x2key
が
しました
マクロ検知対策で、画像認識で認識した画像内のランダムな位置を毎回クリックさせたいのですが
そう言ったことをブロックマクロで再現可能でしょうか
key0x2key
が
しました
ABCDの4つの画像があり優先度を左から高く設定して、AとBがあったらAを、BとDがあったらBを選択という条件でマクロを組みたいのですが、こういう場合はこれでよろしいのでしょうか? (コードの添付方法がわからなかったため画像で失礼いたします)
https://imgur.com/3oCbK3I
key0x2key
が
しました
いつも便利に使用させて頂いております。
質問なのですが、「ファイルを複数選択した状態でマクロを発動し、選択したファイルの個数分方向キーを押す」
という動作はできますか?
例)10個のファイルを選択していた場合、10回左方向キーを押す
選択しているファイル数をどこかから取得する必要があると思うのですが、難しいでしょうか?
宜しければご教示下さい。
key0x2key
が
しました
key0x2key
が
しました
あるいはマウスとは別にタッチパッドの左クリック(ワンタッチ)にキー割り当てができれば、いいなと思っています。
何かしらの対応で上記を実現することはできますでしょうか。
key0x2key
が
しました
同時押し設定でキーボードの「A」に「←」を設定。同時押し設定には左クリックは使えないのでしょうか。
key0x2key
が
しました
例えば、マウスが10移動したら1入力、20移動したら2入力というのをリアルタイムに認識できればありがたいです。
key0x2key
が
しました
key0x2key
が
しました
PC2台でゲームAからゲームBにアイテムを送るのを自動でやりたいのですが、それぞれのPCで送る動作、受け取る動作を合計の時間をピッタリに設定したのですが(個々のPCのスペックの差のせいか)僅かにズレが発生してしまいトグルだとそのズレが蓄積して数10分で機能しなくなってしまうためです。
何か対処法はありませんでしょうか。
key0x2key
が
しました
画像を認識させるときの拡張子の種類で、処理の重さや精度に影響はありますか?
key0x2key
が
しました
key0x2key
が
しました
{"IsDisabled":false,"Name":"@If","Arguments":["TemplateMatching.TrySingle(\"U\") == True||TemplateMatching.TrySingle(\"S\") == True"]},
{"IsDisabled":false,"Name":"MouseMove","Arguments":["$MatchResultX","$MatchResultY","20"]},
{"IsDisabled":false,"Name":"@EndIf","Arguments":[]}
]
で2つの画像のどちらかがあったときにその画像にカーソルを移動してクリックする処理をしたいのですが、撮影してテストを実行して、想定したものしか反応していないことを確認したにも関わらず、まったく違うところをクリックしてしまいます。何が考えられますでしょうか。一応クリックしているのは画像を検出する設定をしている範囲内で、スコアは0.9以上を設定しています。
key0x2key
が
しました
繰り返し処理をすると、繰返し処理内で1度の処理でキーが複数回押されてしまう現象が出ています
以下検証用で作った処理です。検証はメモ帳で行っています
◯繰返し処理
3回繰り返す
|”0”を押して、”0”ミリ秒待つ、離して”1000"ミリ秒待つ
(繰り返し末端)
"Enter"を押して”0”ミリ秒待つ、離して”1000"ミリ秒待つ
この処理をトグルモードで割り当てると
希望する動作は
000(+改行)
ですが、
000000(+改行2回)
と2重で処理されています
繰返し処理をバラして、
”0”を押して、”0”ミリ秒待つ、離して”1000"ミリ秒待つ
”0”を押して、”0”ミリ秒待つ、離して”1000"ミリ秒待つ
”0”を押して、”0”ミリ秒待つ、離して”1000"ミリ秒待つ
"Enter"を押して”0”ミリ秒待つ、離して”1000"ミリ秒待つ
とすると、
000(+改行)
と希望通りの動きをするのは確認済みです
ループカウントを用いてn回動作をさせたいので、繰返し処理を使えるようにしたいです
原因等なにかわかりますでしょうか?
よろしくお願いいたします
key0x2key
が
しました
設定編集もできなくなってしまっています。解決方法を教えてほしいです。
当方プログラミングの知識が全く無いので、アクションマクロを使用しています。
windows10
2025/01/25 (土) 5:35:36:
{
"ClassName": "System.NullReferenceException",
"Message": "オブジェクト参照がオブジェクト インスタンスに設定されていません。",
"Data": null,
"InnerException": null,
"HelpURL": null,
"StackTraceString": " 場所 KeyToKey.Models.SettingModel.GetSetting(String fileName) 場所 C:\\Users\\root\\Source\\Repos\\KeyToKey\\KeyToKey\\Models\\SettingModel.cs:行 610\r\n 場所 KeyToKey.Models.SettingModel.Load(String fileName) 場所 C:\\Users\\root\\Source\\Repos\\KeyToKey\\KeyToKey\\Models\\SettingModel.cs:行 363\r\n 場所 KeyToKey.ViewModels.Edit.EditViewModel.<ChangeFile>d__267.MoveNext() 場所 C:\\Users\\root\\Source\\Repos\\KeyToKey\\KeyToKey\\ViewModels\\Edit\\EditViewModel.cs:行 687",
"RemoteStackTraceString": null,
"RemoteStackIndex": 0,
"ExceptionMethod": "8\nGetSetting\nKeyToKey, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\nKeyToKey.Models.SettingModel\nKeyToKey.Configurations.KeyToKeySetting GetSetting(System.String)",
"HResult": -2147467261,
"Source": "KeyToKey",
"WatsonBuckets": null
key0x2key
が
しました
質問失礼いたします。
先月まで使えていたものが、突然使えなくなりました。
アプリ自体が起動していない現状です。
メモでログを拝見すると以下のようになっております。
"Descriptor": {
"Result": {
"Code": -2147467259,
"Success": false,
"Failure": true
},
"Code": -2147467259,
"Module": "General",
"NativeApiCode": "E_FAIL",
"ApiCode": "Unspecified error",
"Description": "エラーを特定できません\r\n"
},
"Message": "HRESULT: [0x80004005], Module: [General], ApiCode: [E_FAIL/Unspecified error], Message: エラーを特定できません\r\n",
ご多忙の折に恐縮ですが、ご教示いただけましたら幸いです。
よろしくお願いいたします。
key0x2key
が
しました
同時押し設定で任意の単一ボタンが押されている間に、任意の同時押しボタンを押してアクションが実行されるようには出来るでしょうか。
(例えばパッドの→を押しながら□+×を同時押しするとキーやマクロが実行されるようにしたい)
逆の複数ボタンを押しながら単一ボタンはシステムとして出来ると思うのですが、単一+複数はマクロなどを組む必要があるでしょうか?
key0x2key
が
しました
クリップボードを読み取りコンソールに表示するマクロなのですが
一個前のクリップボード情報が表示されてしまいます。
どうすればいいでしょうか?
https://pastebin.com/jrUfFTM8
key0x2key
が
しました
Cスクリプトで以下の動作を実現する行動はないでしょうか?
・サイドボタン1を短く押して離すと、FlickKeyboardというソフト(https://1ikehen.ninpou.jp/)をアクティブ化した後、Windows 11デフォルトのメモ帳をアクティブ化
300mm秒以上長押しした場合は2つとも最小化
・サイドボタン2を短く押して離すと中クリック
300ミリ秒以上長押しした場合はコントロールとqを同時押し
お手数ですがよろしくお願いします。
key0x2key
が
しました
ループ条件で画像Aがない場合ループを中断して次の処理、画像Aがある場合画像Bの文字をコピーしてクリップボードで当てはまったら何もしない 当てはまらなかったらカーソル移動後クリックするマクロなのですが
画像Aが無いのにも関わらず画像Bの処理をしてしまいます、中断出来ません。
どなたか教えてください。よろしくお願いいたします。
https://pastebin.com/V5N4Cr3m
key0x2key
が
しました
入力を記録してそのまま使った場合、
例えば左クリックを押した状態のまま1秒かけて座標100下に移動して離すという事をしたい時、押してその場で1秒押して、離してから座標100下に移動するという挙動をするので。
key0x2key
が
しました
アクションマクロでは、座標と座標の差を絶対値で出すのは無理ですか?
例えば、画像Aの座標を(X1,Y1)、画像Bの座標を(X2,Y2)として
$A1=X1、$B1=X2
$B1=X2-X1
としたのですが認識さえしませんでした。
key0x2key
が
しました
②設定を保存する時に表示される、保存しましたというポップアップメッセージが消えなくなることがあり、そうするとプロファイルが無効となり、本ソフト自体を再起動するまで使えなくなってしまうことがあるのですが、対策は出来ますか?
key0x2key
が
しました
[
{"IsDisabled":false,"Name":"@Task","Arguments":[]},
{"IsDisabled":false,"Name":"@While","Arguments":["True"]},
{"IsDisabled":false,"Name":"Tap","Arguments":["Keys.K","60","10000","True"]},
{"IsDisabled":false,"Name":"@EndWhile","Arguments":[]},
{"IsDisabled":false,"Name":"@EndTask","Arguments":[]}
]
[
{"IsDisabled":false,"Name":"Local.Assign","Arguments":["$終点","ElapsedTime()+3600000"]},
{"IsDisabled":false,"Name":"@While","Arguments":["true"]},
{"IsDisabled":false,"Name":"@Break","Arguments":["$終点<ElapsedTime()"]},
{"IsDisabled":false,"Name":"//","Arguments":["ループの中身"]},
{"IsDisabled":false,"Name":"@If","Arguments":["TemplateMatching.TrySingle(\"A\") == True"]},
{"IsDisabled":false,"Name":"MouseMove","Arguments":["$MatchResultX","$MatchResultY","100"]},
{"IsDisabled":false,"Name":"Tap","Arguments":["Keys.T","150","80","True"]},
{"IsDisabled":false,"Name":"Wait","Arguments":["Random(30000,55000)"]},
{"IsDisabled":false,"Name":"@Else","Arguments":[]},
{"IsDisabled":false,"Name":"Tap","Arguments":["Keys.T","150","80","True"]},
{"IsDisabled":false,"Name":"Wait","Arguments":["Random(30000,55000)"]},
{"IsDisabled":false,"Name":"@EndIf","Arguments":[]},
{"IsDisabled":false,"Name":"//","Arguments":["ループの中身"]},
{"IsDisabled":false,"Name":"@EndWhile","Arguments":[]}
]
key0x2key
が
しました
[
{"IsDisabled":false,"Name":"Global.Assign","Arguments":["$マウスブロック","True"]},
{"IsDisabled":false,"Name":"@EasyFor","Arguments":["6"]},
{"IsDisabled":false,"Name":"@EasyFor","Arguments":["6"]},
{"IsDisabled":false,"Name":"Local.Assign","Arguments":["$横の座標","Input.GetCursorX()"]},
{"IsDisabled":false,"Name":"Local.Assign","Arguments":["$縦の座標","Input.GetCursorY()"]},
{"IsDisabled":false,"Name":"Global.Assign","Arguments":["$マウスブロック","True"]},
{"IsDisabled":false,"Name":"MouseClick","Arguments":["MouseButton.Right","100","90","True"]},
{"IsDisabled":false,"Name":"MouseOffset","Arguments":["0","21","15"]},
{"IsDisabled":false,"Name":"MouseClick","Arguments":["MouseButton.Left","100","90","True"]}
{"IsDisabled":false,"Name":"MouseMove","Arguments":["$横の座標+40","$縦の座標","20"]},
{"IsDisabled":false,"Name":"Global.Assign","Arguments":["$マウスブロック","False"]}
{"IsDisabled":false,"Name":"@EndFor","Arguments":[]},
{"IsDisabled":false,"Name":"MouseMove","Arguments":["$横の座標","$縦の座標+38","50"]},
{"IsDisabled":false,"Name":"Local.Assign","Arguments":["$横の座標","Input.GetCursorX()"]},
{"IsDisabled":false,"Name":"Local.Assign","Arguments":["$縦の座標","Input.GetCursorY()"]},
{"IsDisabled":false,"Name":"@EndFor","Arguments":[]},
{"IsDisabled":false,"Name":"Global.Assign","Arguments":["$マウスブロック","False"]}
]
仮想OS上で動かしているため、マクロの処理が終わるまでの時間でホストOS側でウェブページなどをみようとカーソルを動かすと、高確率で動かしている途中のカーソル位置をインプットしてしまいます。マウスブロックしているはずなのですが、原因が分かりますでしょうか。
key0x2key
が
しました
key0x2key
が
しました
key0x2key
が
しました
KeytoKeyのブロックマクロは何のプログラミング言語をもとに動いていますか?Python?
また、実行用コードを直接編集してマクロをつくることは可能ですか?
多次元リストの取得などがしたいのですが、ブロックマクロでのやり方がわからないので、この際実行用コードを直接編集して作ってやろうと思った所存です。
key0x2key
が
しました