ディオゲネス・クラブ

31719
名前
件名
メッセージ
画像
メールアドレス
URL
文字色
編集/削除キー (半角英数字のみで4~8文字)
プレビューする (投稿前に、内容をプレビューして確認できます)

別のKMmacroを実行するには ─── - KIC

2024/04/14 (Sun) 17:24:00

3月に質問いたした KIC です。その節はご回答いただき、ありがとうございました。

そのご回答中に「別の KMmacro を起動して、3秒たったら KEY コマンドを実行する」という記述があったことを覚えていて、先日マクロを手直ししている際にここで使用できるとよいなぁと思い、組んでみました。
結果は、しかし、「すでに常駐しています」というメッセージが表示され、別の KMmacro を実行させることはできませんでした。
そこでお尋ねいたします。
当方は KMmacro を常駐させて毎日利用していますが、メッセージの内容からすると、この使い方は主となる KMmacro が非常駐で起動している場合のみ有効な使い方なのでしょうか。

ついでながら、KMmacro.txt ファイルの内容を読んでいて気になった箇所について質問させてください。

1.
open コマンドについて説明した L.929 に「ファイルをオープンします。input、write を行うためには、まず open 処理を行う必要があります」とあり、L.932 に 「input コマンドを使うことができる」 とあるところから、この「input、write」が KMmacro のコマンドだということはわかったのですが、「input コマンド」というものが見当たりません。「input コマンド」は現在実装されていないという理解でよろしいでしょうか。

2.
L.679 に「GOTO で IF ~ END の中に飛び込む」とありますが、「END」は「ENDIF」の書き間違いかと存じましたが、それでよろしいでしょうか。

以上です。

お時間がおありの際にご回答いただけましたらたいへん幸いに存じます。よろしくお願いいたします。

Re: 別のKMmacroを実行するには ─── - たわしと

2024/04/15 (Mon) 19:28:38

 KIC さん、こんばんは。

| この使い方は主となる KMmacro が非常駐で起動している場合のみ有効な使い方なのでしょうか。

 KMmacro は起動時に、既に常駐していないかをチェックして、二重の常駐をしないようにしている……のですが、調べてみたところ、常駐起動でない場合でも、このチェックを行っていました。そのため、常駐している KMmacro からでは、別の KMmacro は(非常駐起動でも)起動できません。ご指摘の通りです。
 というわけで、現状ではこの動作なのですが、このチェック、非常駐起動の時はたぶんいらないよなあ……。


| 「input コマンド」というものが見当たりません。

 あ、申し訳ありません。
「(1) Input … 入力用にオープンする。これでオープンしたファイルには、input コマンドを使うことができる。」
は、
「(1) Input … 入力用にオープンする。これでオープンしたファイルには、read コマンドを使うことができる。」
の誤記です。
 つまり、「read コマンドでファイルを読み込む」には、その前に「input 指定の open コマンドで、ファイルをオープンしておかなければならない」、の意味でした。

 この誤記が今まで見逃されてきたのは、キーボードマクロでファイル入出力なんてやる人があまりいなかったのか、そうでなければ、この辺の書き方が昔の BASIC という言語そのままなので、知っている人は読まなくてもわかるから、でしょうかね。


|「GOTO で IF ~ END の中に飛び込む」とありますが、「END」は「ENDIF」の書き間違いかと存じましたが、それでよろしいでしょうか。

 これもご指摘の通りで、正しくは「ENDIF」です。

 マニュアルにいくつも誤りがありまして、申し訳ありません。ご指摘、ありがとうございました。

readkey 関数で指定秒経過しても処理が先に進まない - KIC

2024/03/02 (Sat) 14:31:44

毎日ありがたく利用させていただいております。
下記マクロが昨日から急に意図どおりに動作しなくなりました。
具体的には、(readkey 3) の部分で、3秒経過しても処理が先に進みません。
それまでは問題なく動作しておりましたし、もちろんマクロの変更もありません。
無変換キーを押せば意図どおりに動き、別のキーを押せば次に進んでくれますが、
一昨日までは何も押さなければ、3秒後に次に進んでくれましたし、それが意図した処理です。
元々は readkey 関数を使用した部分はなく、一時停止機能があると便利な場面があって付け足しました。
ですので、自動で8回繰り返してもらいたいのですが、このままでは自動化されず、困っております。
KMmacro のバージョンは 0.72 です。
ご診断いただけませんでしょうか。
また、何か別の方法で一時停止機能を装備できるようでしたら、ご教示いただけませんでしょうか。
よろしくお願いいたします。

***** マクロ抜粋部分 ここから *****
DIM %times %rest %readKey
SET %times 0

FOR %0=1 TO 8
INCLUDE SubRoutine_1.mac
INC %times 1
SET %readKey (readkey 3)
IF (= %readKey "[MUHENKAN]") EXITFOR
NEXT

IF (= %times 8) THEN
GOTO :LS2B_1
ELSE GOTO :Restart_1
ENDIF

:Restart_1
(message 一時停止中 再開は[Ctrl]+[Alt]+ Q を押下)
PAUSE [Ctrl]
PAUSE [Alt]
PAUSE Q

SET %rest (- 8 %times)
FOR %0=1 TO %rest
INCLUDE SubRoutine_1.mac
NEXT

:LS2B_1
INCLUDE SubRoutine_2.mac
***** マクロ抜粋部分 ここまで *****
以上

Re: readkey 関数で指定秒経過しても処理が先に進まない - たわしと

2024/03/02 (Sat) 22:22:33

 KIC さん、こんばんは。

| 下記マクロが昨日から急に意図どおりに動作しなくなりました。
| 具体的には、(readkey 3) の部分で、3秒経過しても処理が先に進みません。

 当方でも readkey の動作を試してみましたが、こちらでは特に異常はありませんでした(win10環境)。win11 では違ってくる可能性もありますが、念のため、ごく単純なマクロ、例えば

SET %0 (readkey 3)
(message %0)

と言ったようなマクロを実行して、readkey の時間待ちが動作するかどうか、確認してみていただけないでしょうか。

 このマクロも上手く動かないようなら、readkey の動作がうまくいっていないことになります。この場合は……今のところ、簡単な対処方法は思いつきません。
 実は、「別の KMmacro を起動して、3秒たったら KEY コマンドを実行する」でいいんじゃない? と思って試してみたのですが、うまく行きませんでした。readkey(で使っている仕組み)は、ソフト的なキー入力には反応してくれないようです。
 となると、readkey の時間待ちの部分のコードを修正して作り直す、しかなさそうですが……とりあえず、結果をお待ちしています。

Re: readkey 関数で指定秒経過しても処理が先に進まない - KIC

2024/03/03 (Sun) 11:06:42

早速のご返信、ありがとうございます。
結論から申し上げますと、Windows を再起動したら3日前までの状態に戻りました。
お騒がせして申し訳ございませんでした。
今朝、こちらを開き、ご教示いただいたことを確認(NG)し、
エディタをメモ帳に変えて試行(NG)し、
そこまでしたのでまさかと思いつつ、いつもなら試行する Windows の再起動をしたところ、動作しました。
そこまでせずに投稿してしまい、申し訳ございませんでした。

この機会にもう一点だけ質問させてください。
昨秋から KMmacro を使い始め、とてもすばらしいアプリケーションでしたので、もっときちんと知りたいと思い、
KMmaro.txt を土台にして自分用のマニュアルを作成し、今も更新し続けております。
そのなかで1つだけわからないことがございます。
それは、KEY コマンドの項にある「[KEY-x]で、キーx を入力できます」という部分です。
たとえば、サクラエディタ上で以下を実行すると、置換ウィンドウを開いて1秒後に閉じることができます。

***** 例 ここから *****
KEY [OEM-162]++ R [OEM-162]--
delay 1000
KEY [OEM-164]++ X [OEM-164]--
***** 例 ここまで *****

このうちの R と X の部分を [KEY-x] の形式にして実行すると、KMmacro に「[]の中が不正です」と叱られます。
これは一例ですが、[KEY-x] 中の 「x」 にいかなるものを入れたら正しく実行されるようになりますか。
ご回答賜れましたらたいへん幸いに存じます。

追伸
Windows のエディションは Windows 10 Pro で、バージョンは 22H2 です。

Re: readkey 関数で指定秒経過しても処理が先に進まない - たわしと

2024/03/03 (Sun) 21:01:45

 KIC さん、こんばんは。

| 結論から申し上げますと、Windows を再起動したら3日前までの状態に戻りました。
| お騒がせして申し訳ございませんでした。

 ご報告、ありがとうございます。
 上手く動いたとのことで、ほっとしました。


| そのなかで1つだけわからないことがございます。
| それは、KEY コマンドの項にある「[KEY-x]で、キーx を入力できます」という部分です。

 すみません、これはマニュアルの誤りです。コードを読み直してみたところ、そのような機能は作っていませんでした。
 というか、これ、何をしようとしたんだろう。これに類するものを作ろうとした……ような記憶はうっすらとあるんですが、この説明のままだと、意味不明な機能ですよね。うーん、思い出せない。

 ご指摘いただき、ありがとうございました。

Re: readkey 関数で指定秒経過しても処理が先に進まない - KIC

2024/03/04 (Mon) 12:02:18

ふたたび早速ご返信くださり、本当にありがとうございます。
[KEY-x] に関しまして、わざわざコードを読み直していただいたとのことで、感謝に堪えません。
KMmaro.txt につきましては、しっかり理解したと思っている点でも、時間をおいて読み直すと発見があり、これまで何度もマクロを短くするうえで役立っております。
またわからない点がございましたら質問させていただくかもしれませんが、今回はこれにて失礼申し上げます。
お忙しいなか、貴重なお時間をおさきくださリ、誠にありがとうございました(ご返信は不要です)。

ありがとうございます - ゆず

2024/01/14 (Sun) 10:53:41

これはイイです。
シンプル、かんたんで面白い。

PowerAutomateにがっくりしてこちらへ辿り着きました。久々にシェアレジしました。
ICカード書込みソフトの操作を自動化するのに、APIやらOCXやらVBを組むやら面倒なので、起動しておいて書込みボタンをKMmacroでクリックすることにしました。
これからもご活躍期待しております。

Re: ありがとうございます - たわしと

2024/01/14 (Sun) 21:14:09

 ゆず さん、こんばんは。

| これはイイです。
| シンプル、かんたんで面白い。

 わざわざ投稿いただきまして、ありがとうございます。それからシェアレジの方も、ありがとうございました。
 添付した「はじめに.txt」にも書いたとおり、開発環境が非常に古いものなので、最近はあまり触っておりません。が、この前動かした時には、 Windows XP マシンもまだ動いていたようです。もしも何かご要望がありましたら、マシンがまだ動くうちに、お早めにお知らせください(マシンが動いても、私が対応できない可能性はありますけど)。

ドラッグの記憶方法 - きゃめる

2023/12/17 (Sun) 09:58:14

左クリックのドラッグを記録したいのですが、keyコマンドと「++」を直接書き込む他に方法はないのでしょうか。
ただその場でドラッグするだけで記録する方法はないのでしょうか。
あと、ドラッグの軌跡を記録する方法があれば教えてほしいです。

Re: ドラッグの記憶方法 - たわしと

2023/12/17 (Sun) 16:41:07

 きゃめる さん、こんばんは。

| 左クリックのドラッグを記録したいのですが、keyコマンドと「++」を直接書き込む他に方法はないのでしょうか。

 KMmacro ではドラッグの開始や、ドラッグの軌跡を記録する方法はありません。
 ただ、常駐モードを使えば、ある程度簡単にキーの位置の記録をすることはできます。

 例えば、KMmacro.hot に次のように記入して、KMmacro を常駐モードで起動してください。
 F1 キーを押すたびに、その時点でのマウスカーソルの位置を「drag.mac」(KMmacro.exe と同じフォルダに)というファイルに記録します。

------------ KMmacro.hot ------------

hotkey=[F1] : クリック位置の記憶
LOG drag.mac (& "moveto " (getmouse) )
; LOG drag.mac "Key [LCLICK]++" ; key コマンドも一緒に記録したければ、これも入れておく。

-------------- ここまで --------------

 残念ながら、常駐モードのホットキーには [LCLICK] などのマウスクリックは使えないので、上の例では別のキー(F1)を使っています。
 

Re: Re: ドラッグの記憶方法 - きゃめる

2023/12/19 (Tue) 18:37:12

丁寧に返信とても助かります。ありがとうございます。
自動的にドラッグを記録する方法や軌跡を記録する方法を知りたかったのは、通信待機のあるソフトウェアにマウス操作の自動化を施したかったのですが、記録を止めて書き込みながら記録する方法だとdelay時間を上手く測定できず、後から作ろうにも長いコードになる予定で、後からでは見返した時にどこの事か分からなくなりだったからです。
ですが、あれから事前にドラッグ部分のみ作っておいて、記録の時は、ドラッグする直前で、キーを押してコードに印を付けることで見返すことができるようにし、そこにドラッグのコードをはめ込むことで解決しました。
また機会があれば教えていただいた方法も有難くやってみたいと思います。

別の疑問が出て恐縮なのですが、コードにコメントのようなものを残すことは可能でしょうか。コード上に描いても実行時には無視される文章です。
Q&Aに既に記載済みならすみません。

Re: ドラッグの記憶方法 - たわしと

2023/12/19 (Tue) 20:10:24

 きゃめる さん、こんばんは。

| 別の疑問が出て恐縮なのですが、コードにコメントのようなものを残すことは可能でしょうか。コード上に描いても実行時には無視される文章です。

 これは、「;」を使ってください。「;」以降は、コメントと見なして無視します。

Re: Re: ドラッグの記憶方法 - きゃめる

2023/12/19 (Tue) 20:31:43

わかりました。ありがとうございます。

win11での不具合 - らあく

2023/10/09 (Mon) 21:19:46

付属するKMmacro.txtの画像処理関係のコードを試そうとしましたが、movereとmovetoとkey[LCLICK]が動作しませんでした。大文字かと思って試したり、カンマ前後でスペースを打ったりしても駄目でした。あと、BLOCKINPUTも全く動作せず、マウスとキーボードの入力ともに受け付けてしまっています。

Re: win11での不具合 - たわしと

2023/10/10 (Tue) 18:40:35

 らあく さん、こんばんは。

 「win11 での不具合」とのことですが、当方、win11 の動作するマシンを持っておりませんので、この点の検証ができません。ただ、よくあるミスとして、以下の二点がありますのでご確認ください。


・マクロに全角スペースを使っている
 KMmacro.txt や「Help」フォルダの HTML ファイルにあるマクロの例では、「表示の際の形を整えるために全角スペースを使っている」箇所がありますが、実際のマクロでは半角スペースを使ってください。全角ですと、うまく動かない場合があります("~" の中など、文字列として全角スペースを使うのはかまいません)。

・余分なスペースを入れている
 LClick など、座標を「x座標,y座標」で指定するコマンド・関数では、座標指定に余分な半角スペース等を入れることができません。普通のプログラム言語なら、スペースを入れて見やすくするのが定跡なのですが、KMmacro は「普通の言語」ではないので……。他に、FOR 文でも余分なスペースを入れると上手く動きません。
 逆に「key[LCLICK]」など、スペースを省略した場合も、上手く動きませんのでご注意ください。


 これらが原因ではないとすると、win11 固有のトラブルとなりそうです。が、私が win11 マシンを持っていないことと、「_はじめに.txt」にも書いたとおり開発環境が古いため、修正ができるかどうかは不明です。

 そういえば、Help の方はともかく、KMmacro.txt の全角は、今ではいらないな。もし次があれば、修正しておこう……。

Re: Re: win11での不具合 - らあく

2023/10/11 (Wed) 15:44:13

質問に答えていただき、ありがとうございます。全角スペースがあるとだめだと言うことは考えていませんでしたが、スペースをなくすと一部上手くいっていたので合点がいきました。新たに質問したいのですが、SearchGraph 1 2で2でなく1の左端と上端が帰るのは元々そういうものなのでしょうか。1をウィンドウ全体、2をその中のボタンにして返り値をクリックさせるとウィンドウの左端と上端をクリックしてしまいます。もちろん、1と2を逆にするとfalseになります。

Re: win11での不具合 - たわしと

2023/10/12 (Thu) 21:24:25

 らあく さん、こんばんは。

| SearchGraph 1 2で2でなく1の左端と上端が帰るのは元々そういうものなのでしょうか。

 いえ、そういう動作は意図していません。こちらでもちょっと試してみましたが、そうはなりませんでしたし……。
 もしよろしければ、該当部分のマクロを(公開するのに支障がある部分は、適当に修正したうえで)書き込んでみて頂けないでしょうか?

Re: win11での不具合 - らあく

2023/11/03 (Fri) 11:09:34

返信おそくなりましたが、該当部分のコードは以下になります。
OpenGraph 1 "c:\web_limit\window.bmp"
OpenGraph 2 "c:\web_limit\screenshot.2.bmp"
DIM %up0
DIM %left0
DIM %upp
DIM %leftt
set %up0 (SearchGraph 1 2)
MESSAGE "" %up0
;↑723,623とかで実際ある部分より下
IF (<> %up0 "False") THEN
;set %left0 (token %up0 ",")
;set %upp + %up0 5
;set %leftt + %left 5
;LCLICK (& %leftt "," %upp)
LCLICK %up0
ELSE
  (message "no button")
ENDIF

CloseGraph 1
CloseGraph 2
この操作を始めた時の状態として必須なのが、ウィンドウを最大化したchromeあるいはedgeの拡張機能の管理から拡張機能の詳細に飛んでいる状態にしてある事です。
因みに、window.bmpはその拡張機能の詳細を押した後、ENDボタンを押した状態で撮ったもので、screenshot.2.bmpはwindowをwindow.bmpとそっくりの状態にした状態で「拡張機能のオプション」ボタンのみをスクリーンショットで撮ったものです。

Re: win11での不具合 - たわしと

2023/11/04 (Sat) 21:06:52

 らあく さん、こんばんは。

| 返信おそくなりましたが、該当部分のコードは以下になります。

 うーん、これを見る限りでは、SearchGraph の書き方は問題ないですね。
 念のための確認ですが、window.bmp はそのウィンドウだけでなく、画面全体をスクリーンショットしたものですよね? でないと、「画面全体での座標」ではなく、「ウィンドウ内の座標」を返してしまって、クリック位置がずれることになるので。
 あと、ちょっと気になったのは、コメントアウトされている

set %upp + %up0 5
set %leftt + %left 5

のところで、これは

set %upp (+ %up0 5)
set %leftt (+ %left0 5)

かと思います。
 ただ、コメントアウトしてあると言うことは、ここがなくても、うまく行かないってことなんですよね……。
 全然値が返らないとかじゃなく、「723,623」と、それらしい数字が返っているのも、よくわからないな。一応、スクリーンショットの取り方について、確認してみてください。


Re: win11での不具合 - らあく

2023/11/05 (Sun) 16:07:48

window.bmpについては、ちゃんとタスクバーまで撮りました。一つ違うようで気になる部分があって、screenshot.2.bmpには背景色も含まれていることです。さすがにそれを透過処理してボタン固有の色だけにすれば正確に動作する…ということはないですよね。

Re: win11での不具合 - たわしと

2023/11/06 (Mon) 20:51:17

 らあく さん、こんばんは。

| screenshot.2.bmpには背景色も含まれていることです。さすがにそれを透過処理してボタン固有の色だけにすれば正確に動作する…ということはないですよね。

 SearchGraph は、単純に画像のドットとドットを比較しているだけですので、これをやると逆に動作しなくなります。


 書き込みを読み直していて、ちょっと気になったんですが、最初のほうの質問では、

| SearchGraph 1 2で2でなく1の左端と上端が帰るのは元々そういうものなのでしょうか。

でした。ところが、

| ;↑723,623とかで実際ある部分より下

ともあります。検索先の画像が画面全体だとすると、その左端・上端は 0,0 になるはずなんですが……このあたりに、何か意思疎通の齟齬があるような気がします。
 まあ、単なる動作不良の可能性も、もちろんあるんですけど。

Re: win11での不具合 - らあく

2023/11/07 (Tue) 10:29:35

SearchGraphの仕様の詳細を教えていただけないでしょうか。念のため自分が想定している使い方と仕様が違ったりしないかなど確認したいので。

追記: すみません、書きそびれていましたが左端と上端が帰るのがコードを見直した結果"723,623"のように実際あるボタンより下の座標を指すようになったということです。

Re: win11での不具合 - たわしと

2023/11/07 (Tue) 21:21:43

 らあく さん、こんばんは。

| SearchGraphの仕様の詳細を教えていただけないでしょうか。念のため自分が想定している使い方と仕様が違ったりしないかなど確認したいので。

 仕様というほどのものではありませんが、
(SearchGraph 画像1 画像2)
で、画像1の中で、画像2を探します。
(1) 画像があれば、「画像1の画像の中にある画像2の場所」の、"左端,上端" 座標を返します。
(2) なければ "False" を返します。

| 追記: すみません、書きそびれていましたが左端と上端が帰るのがコードを見直した結果 723,623 のように実際あるボタンより下の座標を指すようになったということです。
 ああ、そういうことですか。こちらこそすみません。

 それにしても不思議です。「まったく動かない」とか「0,0 や False が返る」ならまだわかないではない(バグとしても、ありがちな感じ)んですけど、中途半端な座標が返るというのがよくわかりません。しかも、「下の座標」ということは、該当する画像位置を通り過ぎているわけで……。

Re: win11での不具合 - らあく

2023/11/15 (Wed) 11:45:53

当方の環境ではLCLICKの座標を指定してもコンスタントに一点をクリックすることができないため、SearchGraphを用いようと思いました。結果的にずれはしますがLCLICKより操作の再現性が取れる為、ずれを修正する形でその問題を解決しました。ここまでお答えいただきありがとうございました。

Re: win11での不具合 - たわしと

2023/11/15 (Wed) 21:59:19

 らあく さん、こんばんは。

| ずれを修正する形でその問題を解決しました。ここまでお答えいただきありがとうございました。

 あまりお力になれず、申し訳ありませんでした。当方の環境は win10 ですが、来年の頭くらいまでには買い換えを考えていますので、その際には新しい環境で検証してみたいと思います。

複数の.macを条件付きで使用するスクリプト だいあ

2023/09/13 (Wed) 05:11:54

こんにちは
main.macのマクロを実行している場合に
処理の途中で一定の確率でsub.macを動かし

再度main.macの所定の場所から回帰し実行する事は可能ですか?

if文というよりも、本当に一定確率で起動する感じです!

Re: 複数の.macを条件付きで使用するスクリプト - たわしと

2023/09/13 (Wed) 20:06:30

 だいあ さん、こんばんは。

| 処理の途中で一定の確率でsub.macを動かし
| 再度main.macの所定の場所から回帰し実行する事は可能ですか?

 「一定の確率」は、random 関数で乱数を作り、「sub.macを動かす」は、exec コマンドでもう一つの kmmacro を起動するのが簡単でしょう。
 こんな感じです。

------------ KMmacro.mac ------------
set %0 (random 10) ; %0 に 0~9 の数値をランダムにセット

if (< %0 3) then  ; %0 が0~2なら、つまり30%の確率で
  EXEC "kmmacro.exe /FILE=sub.mac" TRUE    ; もう一つの kmmacro を起動し、sub.mac を実行

else        ; それ以外なら
  (message "%0=" %0 ":はずれ")

endif

(message "終わり")
-------------- ここまで --------------
※注:これを実際に実行する場合は、全角スペースを削除してください。

 なお、EXEC コマンドは、第二引数として「TRUE」を指定してください。そうしておくと、sub.mac の実行が終わるまで、次のコマンドには進みません。

無題 - たわしと

2023/08/20 (Sun) 22:00:28

 匿名N さん、こんばんは。

| すみません、UWSCで出来ることは殆どKMmacroでも可能でしょうか?

 私自身は UWSC を使ったことがありませんので、この点についてはわかりかねます。ただ、聞くところによると、このソフトはかなりの多機能とのことですから、「KMmacro で全部できるか」といわれると、ちょっと自信はありません。

| あと、文字認識、数値認識は他のツールでも補えるかも知れません。

 「エクセルVBA等を組み合わせると」というのはよくわかりませんが、KMmacro で使えるとしたら、コマンドラインで実行可能な OCR ソフトでしょうか。手順としては、
(1) KMmacro で、認識させたい画像をファイルに保存。
(2) KMmacro の EXEC コマンドで、「OCR ソフトを起動し、画像ファイルを読み込ませ、結果をテキストファイルに出力させる」コマンドラインを実行する。
(3) 出力されたテキストファイルの内容を、KMmacro の OPEN コマンド・READ コマンドを使って変数に読み込む。
といった具合です。
 ただ、私は具体的にどんな OCR ソフトがあるかまでは知りませんので、これ以上のコメントは控えさせていただきます。

 あ、でも同じことは、UWSC でもできるんだろうな。慣れている方を使われた方がいいかもしれません。

| UWSCのほうは新規Verアップが不可能の様ですので、
| こちらのツールを期待しております。

 期待させてしまって申し訳ないのですが、添付の「はじめに.txt」にも書きましたが、このソフトは古ーい言語で書いてあるため、なんと Windows XP マシン上でないと開発できません。そのため、開発の方も、「いつ開発できなくなるかわかりません」というのが現状です。
 作者の気が向いたら、もしかしたら、Ver アップがあるかもしれない……くらいに思っていただければと。

たわしと

Re: 無題 - 匿名N

2023/08/21 (Mon) 08:34:14

たわしとさん、色々と有難う御座います!
KMmacroのVerアップ履歴を見ると、GetGraphPixel 関数追加 
GetPixel 関数の処理を変更。これにより、Chrome などの GetPixel API に対応していないプログラムなどの色も取得できるようになった。

と有りましたので、現時点ではUWSCの認識よりも↑なのかと思われます。
UWSCは、Verアップは2018年で終了しております。

UWSCで構文を書いて、自動クリックをさせようとすると、構文自体は間違っていないのに、何故か自動クリックが途中で止まっている など様々な事が起こります。

理由としては、

WINDOWS Defender やアンチウイルスソフトがUWSCをウイルスと誤検知して、
これはあかん!と途中で自動クリックそのものを止める 

古いパソコン・OSだと色の認識が出来なくなる
『友人が途中までは動くんだけどと言ってました。』

なので、UWSCに代わるモノを探しておりました。
色々と弄ってみます。

無題 - 匿名N

2023/08/20 (Sun) 09:56:05

たわしとさん、初めまして!
質問です。

・UWSCは指定したデスクトップ画面上の座標に表示された画像を認識して、クリックしますが、このKMmacroでも画像認識 → クリックは可能でしょうか?

・指定した座標に表示された文字認識してクリック 
・指定した座標に表示された数値を認識してクリック
・文字、数値を認識した後、独自の計算式を用いて、
その計算式から出された数値をコピーして、それを有る箇所に貼り付ける
・計算式はエクセルVBAの関数を使用する

こういったことも可能でしょうか?

Re: 無題 - たわしと

2023/08/20 (Sun) 10:57:17

 匿名N さん、こんばんは。

| ・UWSCは指定したデスクトップ画面上の座標に表示された画像を認識して、クリックしますが、このKMmacroでも画像認識 → クリックは可能でしょうか?

 残念ながら、文字や数値の認識はできません。
 画像の「比較」はできるので、例えば、「"Please Wait"という(定型的な)文字が消えるまで待つ」といった処理をしたいのなら、「Please Wait」の部分を画像保存しておき、保存した画像と現在の画像を比較して判断する、といった方法があります。が、画面にどんな文字・数字があるか、を判断するとなると、これでは難しいですね。

たわしと

Re: 無題 - 匿名N

2023/08/20 (Sun) 11:10:09

御回答を頂き、有難う御座います!
UWSCでも、確か文字認識・数値認識は単体では出来なかったと記憶しております。
エクセルVBA等を組み合わせると可能だったと認識しております。

以前に、UWSCでPlease Wait と言うような文字が表示されたらその画像を認識してクリックさせるというような
事は出来ました。

すみません、UWSCで出来ることは殆どKMmacroでも可能でしょうか?

Re: Re: 無題 - 匿名N

2023/08/20 (Sun) 13:56:37

UWSCのほうは新規Verアップが不可能の様ですので、
こちらのツールを期待しております。
あと、文字認識、数値認識は他のツールでも補えるかも知れません。

KMmacro - 匿名Y

2023/07/29 (Sat) 18:18:40

KMmacroで実行したいMACファイルを作り、それをショートカットキーで実行したいんですが可能でしょうか。

例:Zキーを押したら指定したMACファイルが実行される

Re: KMmacro - たわしと

2023/07/29 (Sat) 22:47:53

 匿名Y さん、こんばんは。

| KMmacroで実行したいMACファイルを作り、それをショートカットキーで実行したいんですが可能でしょうか。
|
| 例:Zキーを押したら指定したMACファイルが実行される

 何かのキーを押したら指定したマクロを実行したい場合は、KMmacro を「常駐モード」で実行します。
 常駐モードについては、詳しくは KMMacro.txtの「◇ 常駐モード」の項を参照してください。

 なお、通常は KMmacro.hot ファイルに実行したいマクロを記述するのですが、別途用意した MAC ファイルの内容を実行したい場合は、INCLUDE コマンドを使って、そのファイルを読み込んでしまうことも可能です。たとえば、こんな感じで。

------------ KMmacro.hot ------------
hotkey=Z : test.mac というファイルのマクロを実行します
include test.mac

-------------- ここまで --------------

 INCLUDE コマンドで test.mac というファイルの内容を、include コマンドの位置に読み込んでいます。なお、読み込むファイルは、KMmacro.exe と同じフォルダに入れておいてください。

Re: 返信 - 匿名Y

2023/07/30 (Sun) 09:30:26

返信ありがとうございます。最初は出来なかったのでなぜかと思いいろいろ試してみたところ、MACファイルのファイル名が漢字になっていたので出来ないということがわかりました。ローマ字に変えたらちゃんと動作しました。わざわざしっかり説明してくださり、本当にありがとうございました。

Re: KMmacro - たわしと

2023/07/31 (Mon) 08:59:11

 匿名Y さん、こんばんは。

| 最初は出来なかったのでなぜかと思いいろいろ試してみたところ、MACファイルのファイル名が漢字になっていたので出来ないということがわかりました。

 ああ、なるほど……KMmacro.txt にもちょっとだけ書きましたが、KMmacro は Delphi 3.1 という古い言語で作っているので、新しい(今となっては別に新しくもないけど)漢字コードである unicode には対応できていないんです(Shift-JIS コードなら、おそらくだいじょうぶ)。message コマンドなどで文字化けするのは気がついていましたが、読み込むファイル名に漢字がある場合もうまくいかないのは知りませんでした。情報、ありがとうございます。

ご返信ありがとうございます たいちi

2022/10/18 (Tue) 12:46:12

ありがとうございます、上記の方法を実践し判定文字を変更したらいけました!


追加でいくつか質問があるのですが

クリップボードにコピーされた文字列に応じて処理を変える事は可能ですか?

例えば、"aiueo"がクリップボードにコピーされていた場合、aiueo.macを実行し、"abcde"の場合はabcde.macを実行するような感じです!

Re: ご返信ありがとうございます - たわしと

2022/10/18 (Tue) 19:21:03

 たいちi さん、こんばんは。

| クリップボードにコピーされた文字列に応じて処理を変える事は可能ですか?

・GETCLIPBRD 変数
 クリップボードの内容を変数に取得します。

というコマンドがありますので、これを使います。こんな感じです。

getclipbrd %0

if (= %0 "aiueo") then
; "aiueo" だった場合の処理(略)
elseif (= %0 "abcde") then
; "abcde" だった場合の処理
else
; それ以外だった場合の処理
endif


Copyright © 1999- FC2, inc All Rights Reserved.