質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.40%
AutoHotkey

AutoHotkeyは、Windowsでの連続した操作をショートカットキー(ホットキー)として自動化設定できるソフトウェアです。さまざまなコマンドが用意され、GUIのプログラム作成もできます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

367閲覧

PCから音がなる→現在のカーソル位置でクリック が実現できない。

mokopi

総合スコア38

AutoHotkey

AutoHotkeyは、Windowsでの連続した操作をショートカットキー(ホットキー)として自動化設定できるソフトウェアです。さまざまなコマンドが用意され、GUIのプログラム作成もできます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2024/07/26 04:13

編集2024/07/27 06:26

実現したいこと

PCから音がなる→現在のカーソル位置でクリックを実現したいです。

発生している問題・分からないこと

chat gptを使い、手順通りに2ファイルを作ったが、実行されない。

該当のソースコード

Pythonスクリプト

1import sounddevice as sd 2import numpy as np 3import time 4 5# 音を検知するためのコールバック関数 6def callback(indata, frames, time, status): 7 volume_norm = np.linalg.norm(indata) * 10 8 if volume_norm > 0.5: # しきい値を設定 9 with open("trigger.txt", "w") as f: 10 f.write("sound detected") 11 12# 音の検知を開始 13with sd.InputStream(callback=callback): 14 print("Listening...") 15 while True: 16 time.sleep(1) 17

AutoHotkeyスクリプト

1; 定期的にトリガーファイルをチェック 2SetTimer, CheckTriggerFile, 1000 3return 4 5CheckTriggerFile: 6if FileExist("trigger.txt") 7{ 8 ; ファイルが存在する場合、クリックを実行 9 Click 10 ; トリガーファイルを削除 11 FileDelete, trigger.txt 12} 13return 14

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

chat gptを使い、手順通りに2ファイルを作ったが、実行されない。

※画像添付

イメージ説明

イメージ説明

イメージ説明

イメージ説明

詳細情報ーーーーーーーー
こちら、python、Autohotkey ともに今回初めて使います。
プログラミングも、初心者レベルです。

結論からいうと、trigger.txtには書き込まれました。

実行方法含めて、正しいのかわからないので、流れを書きます。

デスクトップに
sound_detect
click_on_sound
この二つのファイルを置いてます。
sound・・・ → click・・・・
の順番で、ダブルクリックで実行

sound・・・を実行するとウインドウが開き、Listeningと表示されます。

click・・・を実行すると、一瞬だけカーソルが砂時計になり、その後はなにも起きません。

この後、音声を流すと(動画を再生)、trigger.txtがデスクトップに表示されます。
開くと、sound detected と記載されてます。
→●訂正です。再確認すると、音声を流す前(click_on_soundのファイルを開いた直後)に
trgger.txtのファイルが表示されてました。
かつ、開くと、sound detectedとすでに表記されてました。
(音声を流す前です)

※動画を、画面クリックで再生し、カーソルは動画の画面上に置いたままにしているので、
クリックされたならば、動画が一時停止するはず。
でも、一時停止しない。だからクリックされてない。
という判断です。

●追加1
ahkファイルを、以下のように変更しました。
if FileExist("C:\Users\ユーザー名\デスクトップ\trigger.txt")
しかし、変化はないようです。

●追加2
ahkファイルを実行すると、タスクバーにHのアイコンがでる。
と、ネット検索でしったのですが、今回、そのHのアイコンは表示されてません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakaiY

2024/07/26 04:43 編集

問題はどちらで発生していますか? 実施していないのであれば、切り分けのために以下を確認してみてください。 ・音が鳴っても trigger.txt に何も書き込まれない ・trigger.txt に何か書き込んでも、クリックされない。
mokopi

2024/07/26 05:03

コメント、ありがとうございます。 ちなみにこちら、python、Autohotkey ともに今回初めて使います。 プログラミングも、初心者レベルです。 結論からいうと、trigger.txtには書き込まれました。 実行方法含めて、正しいのかわからないので、流れを書きます。 デスクトップに sound_detect click_on_sound この二つのファイルを置いてます。 sound・・・ → click・・・・ の順番で、ダブルクリックで実行 sound・・・を実行するとウインドウが開き、Listeningと表示されます。 click・・・を実行すると、一瞬だけカーソルが砂時計になり、その後はなにも起きません。 この後、音声を流すと(動画を再生)、trigger.txtがデスクトップに表示されます。 開くと、sound detected と記載されてます。 ※動画を、画面クリックで再生し、カーソルは動画の画面上に置いたままにしているので、 クリックされたならば、動画が一時停止するはず。 でも、一時停止しない。だからクリックされてない。 という判断です。
TakaiY

2024/07/26 05:39

ここは、質問に対するコメントを書くところですので、詳細の情報については、質問を編集して追記したほうがいいですよ。
TakaiY

2024/07/26 05:40

前のコメントについてはわかりました。 結局、質問者さんはどこに問題があるとお考えですか?
mokopi

2024/07/26 06:14

質問編集の件、了解です。 助言、ありがとうございます。 ・僕の実行方法がそもそも違う ・コードの内容が違う このどちらかだと考えてます。
guest

回答1

0

コメントなどを見ると、ファイルはできているので、python側はちゃんと動いています。

ファイルがあるのに、動かないのはautohotkey側です。
スクリプトは単純なものですから、疑わしいのはパスです。
http://ahkwiki.net/FileExist

相対パスを指定した場合、A_WorkingDirからの相対パスとみなされる。

なのでそのあたりをちゃんとすればいいでしょう。 相対パスがわからないのであれば、絶対パスにしましょう。

絶対パスっていうのは「C:\User...」のように ウィンドウズであれば「C:」などで始まる表現です。

ちなみに、autohotokeyのスクリプトは、ファイルの中身でなく存在のみ見ています。また、動くとそのファイルは消えます。


自分のところでは動くのになぁ、と思っていたのですが、AHKはVersion2になってスクリプトの書式が大きく変ったのを思いだした。(自分の環境はv1のままにしてある)

同じスクリプトをAHK V2 に書き換えるといいかもしれません。
試しに、ChatGPTに書き換えてもらいました。 ★ パスは元のままですので書き換えてください。

text

1Sure, here's your AutoHotkey script converted to version 2 syntax:

ahk

1SetTimer CheckTriggerFile, 1000 2return 3 4CheckTriggerFile() { 5 if (FileExist("trigger.txt")) { 6 ; ファイルが存在する場合、クリックを実行 7 Click 8 ; トリガーファイルを削除 9 FileDelete "trigger.txt" 10 } 11}

投稿2024/07/26 07:34

編集2024/07/27 06:52
TakaiY

総合スコア13337

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mokopi

2024/07/26 08:54

ご回答、ありがとうございます。 パスの設定とは、どのようにすればよいのでしょうか? ちなみに、AutoHotkeyの場所は、 C:\Program Files\AutoHotkey となっています。 ※先ほどしたのですが、ahkファイルを実行して、タスクトレイにHのアイコンが出るとあるのですが、 そのアイコンはでてきません。
TakaiY

2024/07/26 15:03

「if FileExist("trigger.txt")」この、ファイルの指定は相対パスです。 PCにはものすごく沢山のフォルダがありますが、このプログラムはその中の特定のフォルダにある trigger.txt があるかどうかを判定するようになっています。 その、「どこか」が 「A_WorkingDir」という変数に入っています。 それどこだよ?と思いますよね? それが「trigger.txt」が置いてあるところと同じであれば、autohotkeyはみつけることができて、動きます。同じでなければ、たとえそのファイルが作られていたとしてもみつけることはできず動きません。 そういうことのないようにする方法の1つが、絶対パスを使うことです。 「if FileExist("C:\????\????\....\trigger.txt")」のような形で、trigger.txtのある場所を含めて指定することを絶対パスでの指定と言います。
mokopi

2024/07/26 20:26

ご返答、ありがとうございます。 先ほど、ahkファイルを、以下のように変更しました。 if FileExist("C:\Users\ユーザー名\デスクトップ\trigger.txt") しかし、変化はないようです。
mokopi

2024/07/26 20:30

また、ahkファイルを実行すると、タスクバーにHのアイコンがでる。 と、ネット検索でしったのですが、今回、そのHのアイコンは表示されてません。
TakaiY

2024/07/27 06:56

> そのHのアイコンは表示されてません。 ということは、スクリプトそのものに問題がありそうと思ったところで、V1ーV2の違いのことに気づきました。 質問のスクリプトはV1ですが、今入れたのであればAHKはV2でしょう。 シンタックスが大きく変っているので、V1のものはそのままでは動きません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.40%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問