[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 14:54 / Filesize : 298 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

AutoHotkey Thread 2



1 名前:名無しさん@お腹いっぱい。 [2005/10/21(金) 04:31:53 ID:qy14hWPT0]
If You = beginner
 Read, Template, >>2-6

Previous Thread::
AutoHotKey Thread
pc7.2ch.net/test/read.cgi/software/1098531338/

If Res > 950
 Please, Build, NextThread

614 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/16(木) 00:26:15 ID:n0WmmFt40]
>>612
すごいスマートです。
ifEqualを使えばよかったんですね。
ありがとうございます。

615 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/16(木) 00:28:52 ID:n0WmmFt40]
流行らせるページを再読したら
>IfEqualのようなコマンド名の形式の場合、更にカンマで区切って条件に一致した場合に実行するコマンドを記述できる。
しっかり書いてありました。お騒がせしました。

616 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/16(木) 00:49:17 ID:+vsjFQ220]
ただし、コマンドしか使えないみたいなので気を付けて。

Another command can only appear on the same line as the IF statement if you use the command-name style. In other words, these are valid:
IfEqual, x, 1, Sleep, 1
IfGreater, x, 1, EnvAdd, x, 2 ←EnvAddはコマンドなのでこれは正しい記述。

But these are not valid:
if x = 1 Sleep 1
IfGreater, x, 1, x += 2 ←これは式なのでNGらしい。

if文まわりはややこしい・・・

617 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/16(木) 03:28:29 ID:+IJnHcux0]
ややこしくなるから
if(式){
}
その他のIFコマンド
{
}
以外は使わない方がいいよ

618 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/16(木) 08:32:10 ID:xM7XPfwl0]
システム以外のマウスカーソルの情報を取得する方法ってありますか?
A_CursorでUnknownになってしまうようなカーソルを知りたいのです

619 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/17(金) 17:44:33 ID:FiSk8Qjk0]
Hotkey sでループをスタートさせて、無限ループになってしまった場合に
Hotkey hで止めたいのだけれど、どうすれば良いのでしょうか?助言おねがい。

s::
Loop
{
〜処理〜

if abc = 1
break
}
return

h::ExitApp

620 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/17(金) 17:47:47 ID:wtxnAtBP0]
>>619
何故その記述では駄目なのか、ってことを書かなきゃ助言しようがない

621 名前:名無しさん@お腹いっぱい。 [2006/03/17(金) 18:12:51 ID:zTH699bB0]
それで動くかどうか検証めんどいからしないけど
無理だっていうならループ内でsが押されてる状態かを毎回判断すればいい

622 名前:619 mailto:sage [2006/03/17(金) 18:38:40 ID:FiSk8Qjk0]
Sleepいれてみたら止めることができました。
くだらないことでスレ消費してごめんなさい。
レスありでした>620、621

s::
Loop
{
〜処理〜
Sleep, 0      <-ここ
if abc = 1
break
}
return

h::ExitApp




623 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/17(金) 18:49:03 ID:FiSk8Qjk0]
またきました。sとhでスクリプトを終了させないままスタート/ストップを繰り返すために
以下のようにしたんですが、もっと上手いやり方とかありますか?添削おねがいします。

s::
loopflg = 1
Loop
{
〜処理〜
Sleep, 0
if abc = 1
break
}
abc =
loopflg =
return


h::
if loopflg = 1
abc = 1
return


624 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/17(金) 19:03:44 ID:LwsXg2Qc0]
一時的なデバッグで永久ループから脱出したいって話じゃなかったのか?
一旦リセットしたいなら
h::Reload

625 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/17(金) 19:08:49 ID:qaI2qrDX0]
>623
GetKeyStateじゃだめなの?

626 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/17(金) 20:28:40 ID:68vIds2k0]
KeyWait
ってのもあるでよ

627 名前:623 mailto:sage [2006/03/17(金) 21:47:02 ID:hFQNB0xp0]
>624
最高。今回の目的にバッチリ適合です。
デバッグが楽になったのも思わぬ収穫^^
s::
Loop
{
〜処理〜
Sleep, 0
if abc = 1
break
}
return

h::reload

628 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/17(金) 21:47:42 ID:hFQNB0xp0]
>625のもやってみた。

s::
Loop
{
〜処理〜
Sleep, 0
if abc = 1
break
GetKeyState, state, h, P
if state = D
break
}
return

これも目的の動作はしたけど、今回は>624案を採用。
>626のはLoopを抜ける時どう使うのか分からず・・・orz
皆様レスありでした。


629 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/17(金) 22:09:21 ID:Op8Q/jkU0]
DonationCOdeでなんかおもしろそうなんが出てた

630 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/17(金) 23:10:59 ID:SD1TlI3h0]
>>628
便利! ワンキーでできないかな?

s::
cnt++
Loop
{
Sleep, 0
If cnt > 1
{
Exit
}
}
cnt--
Return

これは駄目みたい…。

631 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/17(金) 23:41:10 ID:qaI2qrDX0]
>>630
これでいけるっぽい。

#MaxThreadsPerHotkey 1
s up::
if state = D
 state =
else
 Loop
 {
  〜処理〜
  Sleep, 0
  if abc = 1
   break
  GetKeyState, state, s, P
  if state = D
   break
 }
return



ところでデバックってなんだ?

632 名前:630 mailto:sage [2006/03/18(土) 02:14:02 ID:C4FDHepp0]
>>631
おおお、素晴らしい。感謝です。
答えを出してもらいながら申し訳ないが、例えば、
Gui, Add, Edit, Gtest ←これ
みたいなサブルーチンの中に、今までのサンプルみたく無限ループがあったとして、
同じサブルーチンをもう一回呼び出したときにループを終了させたいときには、
GetKeyStateだと煩雑になる予感。
こういう場合にも、ビシッとループを終了できないかな?



633 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/18(土) 06:53:17 ID:tezGoIoS0]
>630
英語HelpのFAQにある
How can a repeating action be stopped without exiting the script?
って項にあるサンプル使うとワンキーでLoopのスタート/ストップできた。
多重ループで使ってみたいのだけども、もっとエレガントになるかな?

#MaxThreadsPerHotkey 3
s::
#MaxThreadsPerHotkey 1
if KeepLoopRunning = y
{
  KeepLoopRunning =
  return
}
KeepLoopRunning = y
Loop
{
  〜処理〜
  Sleep, 0
  Loop
  {
    〜処理〜
    Sleep, 0
    if KeepLoopRunning =
      break
  }
  if KeepLoopRunning =
    break
}KeepLoopRunning =
return

・・・全角スペースいれてます

634 名前:名無しさん@お腹いっぱい。 [2006/03/18(土) 15:20:28 ID:Yl3U5BIi0]
スレッド優先度ってマイナスの値入れちゃっても大丈夫ですか?

635 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/18(土) 16:25:48 ID:TCBHEo+A0]
つhelp

636 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/18(土) 17:51:05 ID:Yl3U5BIi0]
>>635
ありがとう、もう一度読み直してみたら書いてありました。

637 名前:630 mailto:sage [2006/03/19(日) 00:46:48 ID:5zHaODEE0]
>>633
サンクス! レス遅くなって申し訳ない。
英語Helpにそれらしいのがあったとは…。読み足りてなかったです。
ホットキー(今回の場合 s::)だと凄いいい感じに動いてるんだけど、
それを Gui, Add, Edit, Gtest とかのサブルーチン(ここでは test:)に置き換ると、
3回目のキー押下時にどうもミスります。
…よく分からないんで、ちょっと考えてみます。

638 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/19(日) 02:23:42 ID:4wBY8TSi0]
>>637
そういうのはTimer使った方が楽じゃない?
用途間違えてるかもしれないけど。


Gui, Add, Edit, Gtest
GUI, Show
return

test:
 if TimerOn = 1
 {
  SetTimer, Timertest, Off
  TimerOn =
 }
 else
 {
  SetTimer, Timertest, 55
  TimerOn = 1
 }
return

Timertest:
 count++
 if count > 100
  count =0
 tooltip, てすと %count%
return

639 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/19(日) 11:12:31 ID:5zHaODEE0]
>>638
ありがとう! まさに求めてたものです。
具体的には、スレッド実行中に新しいスレッドが呼び出されたとき、
後のスレッドは前のスレッドが終了するまで後回しにされるか無視される仕様からか、
スレッドの処理がスルーされるのが少し困ってたんです。
これで、前のスレッドを途中で停止して後のスレッドを実行する、
みたいなことができるぽいです。他にも色々と効用ありますし。
感謝感激、みんなありがとう〜!

640 名前:名無しさん@お腹いっぱい。 [2006/03/21(火) 04:23:15 ID:y745q5bd0]
カナロックONの時は
Joy1::Send, 3 ; ジョイパット1キーで"あ" を入力
Joy2::Send, e ; "い" を入力 …
カナロックOFFの時は
Joy1::Send, a ; "A" を入力
Joy2::Send, b ; "B" を入力 …

となるようにしたいのですがカナロック状態の取得の仕方が分かりません
GetKeyState, OutputVar, vk15, T
は試してみたのですが常に OutputVar = D となってしまうようです。
流行らせるページのアップローダにあったIME_Func.ahkも試しましたが
IME OFFの時などいくつかの条件ではうまく判別することが出来ませんでした。

外部ツールやDLLを利用する方法でもよいので、もしあれば教えてください。


641 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/21(火) 19:01:49 ID:7BWRBHrs0]
文字列をURLで使える
%E5とかに変換する方法ありまっか?
Yahooの検索で日本語がうまくいきまへん
Proxomitronでも頑張ったんだがなんか無限ループとかで挫折。

642 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/23(木) 07:02:24 ID:8KPbtYSZ0]
1バイトずつチェックして変換するしかないんじゃない?
日本語で検索できないのは、リクエストの文字コード指定が悪い所為のような気がするけど。



643 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/23(木) 11:56:27 ID:37jAp6/q0]
>>641
おみとろん使えるなら$ESCでダメか?
とスレ違いレスをしてみる

644 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/23(木) 13:58:33 ID:Jwp33SJ00]
>>642
うん、基本そうなんだろうけど
Proxomitronでがちがちにフィルターしてるから何が何だかわからなくて
そちらでやるのをあきらめて最初からあの文字列でINPUTから
リクエストできればいいかなあとか思ってしもうた。
>>643
どうもフィルターの相性なのか思ったとおりにならなくてお手上げ中。
も少しがんがってみる。

645 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/23(木) 22:28:27 ID:ZyneQEvmP]
このソフトでパスワード入力ソフトの代わりはできますか?

646 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/23(木) 22:35:45 ID:oGkLYudX0]
>>645
出来るとは思うけど、素直に既存のソフトを使った方が良いよ。

647 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/24(金) 03:15:07 ID:Se2Qk5Yk0]
CapslockにCtrlを割り当てたくて
Capslock::Ctrl ; Make Capslock become a Control key.
を試してみたのですが,
Capslockを離した後もCtrlを押したまんまの状態になります
どうすればよいでしょうか?

648 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/24(金) 07:17:30 ID:yvNeSmEP0]
キーの履歴を開いてみたらCapslockは押し下げだけ感知して離すのは無視されてるみたい。
どうしてもAHKでCapslockが使いたいのなら押されてから数秒たったらCtrl Upを送信するようにするとか
InputでCapslockの次に押されたキーを読んでみるとか方法が無いことも無いんだろうけど
とりあえず他のソフトで出来るかどうか試してみては?

649 名前:647 mailto:sage [2006/03/24(金) 08:37:38 ID:Se2Qk5Yk0]
CapsLockにCtrlを割り当てるとCapsLock Upが返ってこないですね
exeにしてどこでもすぐ使えるようにしたかったのですが……
とりあえずレジストリをいじって解決しました

650 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/24(金) 12:30:27 ID:PCVDLk5L0]
流行らせるページのどっかに記述あったと思うけど
Locks系は日本語環境だと正しく取得できない。
OSがドライバレベルでなんかやってる。(ダブルバイト環境共通なのかどうかは知らん)

過去ログでも何度も話題になってる。次スレではテンプレに入れたほうがいいかもね。


651 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/24(金) 12:57:57 ID:TXwdyAWL0]
うちだとCapslockで
CTRL+C,Vが送られるお。なんだこれって感じ。

652 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/24(金) 12:58:20 ID:vTkQnhytP]
>>646
これでできれば、常駐ソフトを減らせるなーと思いまして



653 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/24(金) 20:28:16 ID:zPGcV7l50]
人の作ったahkファイルを、自分のAutohotkey.iniにIncludeで組み込もうとするとき、
モノによってはAutohotkey.iniの#Persistent内にあるSet timerが無効になるんですが、これはどの辺が原因なんでしょう。

流行らせるページにあるのだと、mbstring.ahkはOKだけどInlineCalc.ahkはだめです。

654 名前:名無しさん@お腹いっぱい。 [2006/03/26(日) 00:23:53 ID:b3Nu7QpN0]
>653
もしかしてAuto-executeセクション中にIncludeしてないですか?

655 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/26(日) 00:59:36 ID:pjcfpT8Y0]
>>654
思いっきりしてました。

AHKのルールあまりよくわかってないんですが、こういう使い方ってNG?
AHK2つ常駐させるのがいやで一つにまとめたいっていう場合、Autohotokey.ini内にIncludeで組み込むって言うのは間違った使い方なんでしょうか。

656 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/26(日) 01:53:48 ID:b3Nu7QpN0]
>655
とりあえずInlineCalc.ahkに関しては引数が重複してなければAuto-executeセクション外に
インクルードすれば使えるかもしれないけど、インクルードした後の動作を予測することなしに
よそから拾ってきたスクリプトを次々とインクルードして使うのはおすすめしません。

657 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/26(日) 02:04:38 ID:pjcfpT8Y0]
>>656
そうですか。わかりました。
拾ってきたスクリプト解析して、自力で組み込めるよう努力します。

658 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/28(火) 18:01:18 ID:p3mE1UoC0]
*z::f
でzをfキーへ入れ替えが出来る事がわかったけど
これを瞬時に元に戻したり又入れ替えた状態にするには?
ALT+1でデフォルトのキー配列、ALT+2でキー入れ替えた配列にしたいです

659 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/28(火) 19:15:37 ID:aI6rP75+0]
HotkeyコマンドでONとOFFを切り替えらられるよ

660 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/28(火) 19:44:21 ID:n+gx7BbI0]
読み出したスクリプトに!1::ExitAppを加える事で解決出来ました。また質問ですが
MButton::3でホイールボタンを3、SHIFT押しながらホイールボタンを4に割り当てたいのですが
SHIT押しながらホイールボタン押すとSHIT+3となり#が入力されてしまいます
どの様な記述になるのでしょうか

661 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/28(火) 22:03:17 ID:5UHM2kOF0]
>>660
もうちょい本家ヘルプなり流行らせるページなりを読んだ方が良いと思う。

662 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/28(火) 22:09:38 ID:2DzjvSSI0]
一部vbsを使い、Autohotkeyで以下のようなサウンドプレイヤーの作成に挑戦してみました。

1.選択ファイルのパスをコピーして
2.そのパスをvbsに渡して、GetDetailsOfで曲の長さを取得
3.テキストファイルにファイルのパスと曲の長さを書きだして、プレイリスト作成
4.AHKでプレイリスト読み込んで、「SetTimer,再生実行サブ,曲の長さ」でリストのファイルを連続再生
5.変数に演奏中のトラックナンバーを保存し、ホットキーで曲の移動も可

という感じで作りましたが、見てわかるとおりソースがスマートじゃありません(動作は期待通りのモノですが)。
AHKでやるのが間違っているというのは十分わかっているんですが、そこにこだわりたいんです。
軽いし。

何かスマートになるアドバイス合ったらお願いします。
2,3がvbsなので、このへんをAHKでできればいいんですが。



663 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/30(木) 11:37:20 ID:+DAoRlgo0]
>>661
色々試したんだけど結局できません
とりあえずkeylay21で凌いでますがkeylay入れてあるとマウスドライバが書き換えられる
みたいでなんかいまいち 4000円も出すんじゃなかったと

LCtrl::LShift
LShift::LCtrl
MButton::3
^MButton::4

SHITとCTRLを入れ替えてある状態で、CTRL(指はシフトキー)押しながらホイールボタンで4を
入力させたいのですがAHKじゃ無理なのでしょうか?
出来るか出来ないかだけでも教えてくださいorz
出来るのであればもう少しカンバッテみます

664 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/30(木) 13:24:47 ID:MvBpnK9rP]
終了時にウィルススキャンしてから終わるってできますか?

665 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/30(木) 15:46:07 ID:DTOCa6Mj0]
>>664
lukewarm.s101.xrea.com/commands/OnExit.htm


666 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/30(木) 17:11:11 ID:MvBpnK9rP]
これでシャットダウン時にウィルススキャンをしてから終了ってできるのですか?

667 名前:名無しさん@お腹いっぱい。 [2006/03/30(木) 18:23:58 ID:F2a/hdHF0]
自分で努力しないと出来ません

668 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/30(木) 22:12:23 ID:MvBpnK9rP]
なるほど。
足りなかったのは努力なんですね。
ありがとうございますた。

669 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/31(金) 02:40:28 ID:/UqiJYW50]
子ウィンドのハンドルがうまく取得できないのは仕様?
MouseGetPosでマウス下の領域のウィンドハンドル取得しようとしても、ウィンド全体のが帰ってくる

670 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/31(金) 10:32:28 ID:3DbFmw7g0]
MDIの子ウィンドウはウィンドウハンドルとしては取れない。
MouseGetPos, X, Y, Win, Control ,1
で、コントロールとしては取得可能

あくまでハンドルとして取りたい場合は↓の getMousePosWindowEx() あたりを参照
d.hatena.ne.jp/eamat/20050827/1125092895

671 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/31(金) 17:46:40 ID:GXqhKwVq0]
>>660
MButton::Send, 3
+MButton::Send, 4

>>663
;****** Script01.ahk ******
OnExit, ExitSub
Run, C:\Program Files\AutoHotkey\Autohotkey Script02.ahk,,,PID

esc::exitapp
LCtrl::LShift
LShift::LCtrl

ExitSub:
DetectHiddenWindows On
PostMessage, 0x5555,,,,ahk_pid %pid%
Exitapp

;****** Script02.ahk ******
OnMessage(0x5555, "MsgMonitor")

MButton::Send, 3
^MButton::Send, 4

MsgMonitor(){
Exitapp
}
同一プロセスだとうまく動かないので2つのスクリプトに分けた。
Script01を実行すればScript02が立ち上がって、Script01が終了すればScript02も終了する。
うちでは一応それなりに動作しているように見えるけど、うまくいかなかったらごめん。
(ところで、秀丸エディタって修飾キー絡むとうまくうごかないのね・・・
秀丸上で試してたからうまく動かないので悩んだ。)

672 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/03(月) 21:26:55 ID:Am8bhY3i0]
>>671様ありがとうございます!
何がなにややらな状態ですがとりあえず動いてます
こんなきっかけが欲しかった所です
このスクリプト一行一行勉強してみます



673 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/05(水) 18:18:18 ID:+pF9h+il0]
>>662そういうこだわり好きだぜ。

FileSelectFile, SelectedFiles, M3, ,Open, Media Files (*.mp3;*.wav)
Loop, parse, SelectedFiles, `n
{
if(A_Index = 1){
CurrentDir=%A_LoopField%.
}else{
SoundPlay, %CurrentDir%\%A_LoopField%, wait
}
}
exitapp
#down::SoundPlay, NULL ;存在しないファイルを指定。(たったこれだけのことを思いつくのにどれだけ掛かったことか・・)


win+↓キーで次の曲に飛ぶ。応用すれば自由に移動可能ではないかと。
色々試して無理だコリャとか思っていたら、あっけないほど簡単な解決策だったりする罠。
頭が固くなってきてるなぁ・・orz
しっかし、たったこれだけで簡易メディアプレイヤーが出来てしまうなんてスゴス。

674 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/05(水) 22:18:22 ID:plvj6RC00]
ぬる℃家さんのHPの移転先どこ?

675 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/06(木) 04:56:20 ID:F1AUl6YU0]
避難所じゃない?

676 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/06(木) 12:14:18 ID:GSZU7GaA0]
>>673
662です。すばらしい。非常に参考になります。
プレイリストをGui表示したりすれば、かなりまともなメディアプレーヤーになりそうですね。

にしても、言われてみれば簡単だ。俺も頭固いな…。

677 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/06(木) 12:29:38 ID:V0dMBBJV0]
単純にファイル渡しでもファイラーから
フォーカスを奪わずに試聴できるね

678 名前:674 mailto:sage [2006/04/06(木) 21:38:00 ID:7OM6hwZV0]
>>675
thx

679 名前:673 mailto:sage [2006/04/07(金) 16:28:37 ID:oc5/fhnE0]
SoundPlayで長い曲再生すると戻ってこなくなる?

>>673のスクリプトでアルバムを聞いてて気付いたんだけど、
なぜか、最後まで再生し終わってスクリプトが固まった。
よく考えてみたら最後の曲だけ長くて8分あるので
試しに別の7分ちょいの曲と6分ぐらいの曲を連続で再生してみたら、7分の曲再生し終わった時点で固まって
次の曲再生されなかった。
うちだけ?

680 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/07(金) 16:46:09 ID:rSUBoxot0]
試してみようと長めの曲投げてみたら再生しなかったな
VBRとかもあんのかな。

681 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/07(金) 23:26:51 ID:EWcuZxfA0]
30分のネトラジ(wma)投げたけど、問題なかったな
とりあえず最初に依頼したので、完成品を貼っておきます

#p:: ;選択したファイルでプレイリスト作成&再生
OverWrite = True ;上書き
StopFlag = Flase
Gosub,MakePlaylist
TrackNumber=1
GoSub,Player
Return

!#p:: ;選択したファイルをプレイリストに追加&再生
OverWrite = False ;追加
StopFlag = False
Gosub,MakePlaylist
GoSub,Player
Return

#PgDn:: ;次の曲再生
SoundPlay, NULL
Return

#PgUp:: ;前の曲再生
TrackNumber--
TrackNumber--
SoundPlay, NULL
Return

#End:: ;再生を停止
StopFlag = True
SoundPlay, NULL
return

682 名前:続き2/3 mailto:sage [2006/04/07(金) 23:27:54 ID:EWcuZxfA0]
MakePlaylist:
ClipSaved := ClipboardAll ;クリップボードの中身を一時待避
Clipboard = ;とりあえずクリップボードを空にして
Send, ^c ;Ctrl+C
ClipWait,1 ;クリップボードが読み取れるようになるのを待つ(最大1秒)

i = 1
Loop, Parse, Clipboard , `n, `r ;クリップボード内のものを改行区切りに分解して
{
SplitPath, A_LoopField , FileName , Dir , Extension ,, Drive ;パスかどうか判定

StringLen, length, drive ;ドライブ文字の長さを見て
ifEqual, length, 0, continue ;パスっぽくなかったらやめる

if ( Extension != "mp3" && Extension != "wav" && Extension != "wma" && Extension != "ogg" ) ;拡張子が音楽ファイルじゃないならやめる
continue

if i = 1 ;テキストファイルにファイルのパスを書き込み
OutputText = %A_LoopField%
else
OutputText = %OutputText%`n%A_LoopField%
i++
}

If OverWrite = True
FileDelete , %CurrentDir%\Playlist.txt

FileAppend , %OutputText%, %CurrentDir%\Playlist.txt

Clipboard = %ClipSaved%
Return



683 名前:最後3/3 mailto:sage [2006/04/07(金) 23:28:46 ID:EWcuZxfA0]
Player:
Loop
{
FileReadLine, OutputVar, %CurrentDir%\playlist.txt, %TrackNumber%
If ErrorLevel = 1 ;リストの最後まで行ったら
{
TrackNumber = 1 ;最初に戻る
FileReadLine, OutputVar, %CurrentDir%\playlist.txt, %TrackNumber%
}

SplitPath, OutputVar , FileName

ToolTip, %TrackNumber% - %FileName% ;再生するファイルをツールチップ表示
SetTimer, RemoveToolTip, 1000

Soundplay,%OutputVar% , wait

IfEqual,StopFlag,True,Break ;ループ抜ける

TrackNumber++

}

return

RemoveToolTip: ;ツールチップ削除
SetTimer, RemoveToolTip, Off
ToolTip
return

684 名前:673 mailto:sage [2006/04/08(土) 05:37:18 ID:EzpMT1rj0]
>>681
気軽に再生出来てなかなかいいっすねこれ。なんつっても軽いし。

ところで、長い曲(が原因か判らないけど)で固まる問題ですけど、>>681-683のスクリプトでもやっぱり再現した・・・
MCI内部で呼んでるみたいなんで試しにMCI直で呼んでみたけど、やっぱり同じ状態になったので、
MCI自体の問題なのかも。

>>680
VBRって言われてみれば確かにVBRのファイルなんですよねこれ。
VBRで長いmp3だとおかしくなるのかな?


検証するのに何度も同じ曲聞かなきゃなんないから疲れるょ・・
AHKが悪い訳じゃないことが解っただけでも良かったけど・・

685 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/08(土) 12:30:36 ID:Co4Tuedv0]
WでRClick, AでCtrl+RClick, DでAlt+RClickをやりたいんですが
下のコードだとDを押してDを離してもRClickは解除されるもののAltが押しっぱなしの状態になってしまいます。
どうすればいいんでしょうか?
w::
   Send,{RButton Down}
   return

w up::
   Send,{RButton Up}
   return

a::
   Send,{Ctrl Down}
   Send,{RButton Down}
   return

a up::
   Send,{RButton Up}
   Send,{Ctrl Up}
   return

d::
   Send,{Alt Down}
   Send,{RButton Down}
   return

d up::
   Send,{RButton Up}
   Send,{Alt Up}
   return



686 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/08(土) 20:49:49 ID:1SgxTDCT0]
流行らせるページにある「システムモニタ用関数群」を有難く使わせてもらっています。
これでだいたい取得したい情報は得られたのですが、
CPUの周波数だけまだ解決せず。

非常に厚かましいのですが
どなたか作っていただけないでしょうか?

687 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/09(日) 15:27:27 ID:vc/jqxTR0]
流行らせるページが見られない

688 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/09(日) 16:14:16 ID:fCMts/FM0]
ほんとだwww.xrea.comじたいが見れなくなってる。

689 名前:673 mailto:sage [2006/04/10(月) 04:43:55 ID:kIM2G0lg0]
MCI使用したプレイヤー(HSP製)DLして問題のあるファイルを再生してみたら、
時間表示はおかしいけど、固まることなくちゃんと連続再生された。
試しにVC++でMCI使って再生するコード書いてみたら
やっぱり固まることなく連続再生できたし・・。

AHKでmciSendString直に呼んで色々試したところでは、
どうも再生は正常に終わっているけど、デバイスが閉じられくなるみたい、
問題のファイル再生終了後にclose投げるとそのまま制御が戻ってこなくなることが解った。
SoundPlayでも同じようなことが起きてるのかも。

とりあえず、AHKでSoundPlayコマンド(MCI関連)を扱うと
VBRのmp3で問題が起きる可能性があるということでFA。
マンドクセシ モーイイヤ・・('A`)

690 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/10(月) 06:02:52 ID:WS1IiKh80]


madとか123とかをHideで使っちゃうというほうがいいのかね
DLLならBassとか

691 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/10(月) 06:32:16 ID:gsoxib5w0]
>>687-688
ttp://www.value-domain.com/info.php?action=press&no=20060408-1


692 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/14(金) 00:58:50 ID:Ud8vzZeZ0]
クリップボードの内容を一時的にする場合に、

TempClipboard:=ClipboardAll
Clipboard=
;適当に処理して
Clipboard:=TempClipboard ;元に戻す

としたとき、元々クリップボードの中にテキストや画像データが入ってる分には問題ないのですが、
パスやURLがショートカット形式(ファイルをコピーしたときや、ネットのリンクを右クリ→ショートカットのコピーしたとき)
になぜかクリップボードが復元されません。

この辺は仕様でしょうか。



693 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/14(金) 00:59:53 ID:Ud8vzZeZ0]
一行目
一時的にする→一時的に退避する

失礼


694 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/14(金) 01:25:59 ID:94xmBBMO0]
MsgBox, %ClipBoard%
をいろんな個所に挟んで中身を確かめながら実験すると良いかも。

695 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/14(金) 09:14:35 ID:UFI/YkYK0]
>>692
FileAppendでファイルに落としてバイナリみると解るけど、復元出来ないんじゃなくて、
ClipboardAllコマンドでクリップボードを正常に参照出来てないと観た方が良さそう。
つまり、変数やファイルにクリップボード内のデータを待避する時点でデータがすでにおかくなっている。
でもClipboardコマンドだととれているから仕様と言うよりもClipboardAllコマンドのバグじゃないかなぁ?
仕様だったら普通最低でもClipboardコマンドと同じテキストデータがとれるようにすると思うんだよね。

696 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/16(日) 09:51:06 ID:Kql6t2Dr0]
初歩的な質問していいですか。
EDITコマンドで*.ahkスクリプを好きなエディタで開けません。(notepadで開く)
*.iniだとちゃんと秀丸で開くのに・・・
*.ahkも*.iniもシェル関連付けはされています
どうすれば*.ahkも秀丸で開けますか?

697 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/16(日) 10:24:38 ID:AQ9bKtsX0]
ダブルクオーテーションを外して試してみて
漏れはそれで上手く行ったことがある。
何故か
c:\hogehoge\hoge.ahkをエディットしようとすると
c:\hogehoge\hoge.ah っていうパスが送られちゃって悩んでたんだが。

698 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/16(日) 10:54:34 ID:Kql6t2Dr0]
>>697
ありがとうございます。でもダメですOTZ
スクリプト自体はうまく動作しているようですが・・・。
インストーラなしのzipファイルでインストールしたのがまずいのかな。
ヘルプの
”関連付けで「Edit」コマンドが設定されていれば、そのコマンドで開く。なければ、notepad.exeで開く。”
というのがイマイチ分かりません。AHKで開くエディタを指定できるんでしょうか。

699 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/16(日) 11:18:46 ID:87jJ7KHW0]
俺の場合は「Edit Script」に設定したらできた。

700 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/16(日) 11:42:05 ID:Kql6t2Dr0]
>>699レスサンクスです
皆さんは問題なく出来てるようですね。やっぱり俺だけですね・・
とりあえず・・・Run,〜\Hidemaru.exe 〜\AutoHotkey.ahk
で開いてます。全然スマートじゃないなw

701 名前:名無しさん@お腹いっぱい。 [2006/04/16(日) 17:45:25 ID:IfQvUwVz0]
>>700
AHKファイルの関連付けを、ちゃんとしてる?

 フォルダオプション > ファイルタイプ > AHK を選択

 "拡張子AHKの詳細"項目内の詳細設定ボタンを押す。

 アクションのEditを選択して編集ボタンを押す。

 そこで自分の好きなエディタを指定する。

"関連付けで「Edit」コマンドが設定されていれば、そのコマンドで開く"というのはこの設定のことを言ってる。

702 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/16(日) 17:48:41 ID:4CFKB+jz0]
デフォルト項目じゃなくてコンテクストメニューの「Edit」項目を変えてやらないといかんよ
レジストリの↓の値ね
HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Edit\Command

たぶん前スレでも貼ったような気がするが、UIで対話的にエディタ変更してみるahk。

RegRead, OldData, HKCR, AutoHotkeyScript\Shell\Edit\Command
MsgBox,36,AutoHotkey Scriot Editor Changer,現在ahkのEditに設定されている値`n`n %OldData% `n`n別のエディタを指定しますか?
IfMsgBox,No, ExitApp
SplitPath,OldData,,EditorDir
FileSelectFile,MyEditor,3,%EditorDir%,ahkを編集するエディタを選択,*.exe
IfNotExist, %MyEditor%, ExitApp
RegWrite, REG_SZ, HKCR, AutoHotkeyScript\Shell\Edit\Command,,%MyEditor% `%1
RegRead, NewData, HKCR, AutoHotkeyScript\Shell\Edit\Command
MsgBox,64,AutoHotkey Scriot Editor Changer, %OldData% を`n`n%NewData% `n`n へ変更しました。




703 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/16(日) 20:15:21 ID:Kql6t2Dr0]
>>701>>702
丁寧にホントにありがとう!遂にできましたよ。
Helpの意味がようやく分かりました

704 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/21(金) 18:58:48 ID:6cXk1jHT0]
Ctrl+Vでペーストできないソフトにクリップボードの内容を送るにはどうしたらよいのでしょうか?
試したのは↓なんですが、当然できませんでしたw
Send, clipboard

クリップボードと同じ内容のテキストのキーストロークを発生させればいいと思うんですが・・
どなたかご教授下さい

705 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/21(金) 19:38:49 ID:IoLpMntm0]
一生そこで止まっててください。

706 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/21(金) 21:55:03 ID:6cXk1jHT0]
残念ながら出来ましたよwスマソw

707 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/22(土) 21:15:53 ID:EvYvrKQ80]
AutoHotkeyでネットワークプログラムを作るにはどうすればいいですか?
DLLの関数を呼び出すんであろうということは分かるのですが具体的なやり方が分かりません。

708 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/22(土) 21:39:51 ID:KJrxOsM90]
何がしたいのよ

709 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/24(月) 22:48:18 ID:+AskqZAV0]
mayuから乗り換えたいのですが、

Space押しながら別のキーを押すとShift扱い
Spaceをすぐに離したらSpace
で、できればSpaceを押して一定時間経過後に離すときは無効
みたいなことってできますか?

710 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/24(月) 23:06:32 ID:gA3K0rDg0]
>>709
AutoHotkeyを流行らせるアップローダの029.zip
一定時間経過後に〜の方も少し弄ればできる。

711 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/24(月) 23:19:44 ID:+AskqZAV0]
>>710
ありがとうございます!
SandSって言うんですね!
ちょっと弄ってみます!


712 名前:名無しさん@お腹いっぱい。 [2006/04/29(土) 18:55:41 ID:58FQTls70]
zキーを押してる間zキーを10秒毎に2秒間押す、といったコマンドがやりたいのですが
どなたかご存知ありませんか?



713 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/29(土) 19:57:56 ID:1hoqMcVM0]
タイマ、スリープ
どんな方法でも実現できるじゃん

714 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/29(土) 22:47:12 ID:ujA9YEAp0]
キーボードでボリュームを操作する方法を探していて
>>71に書かれて内容を試してみましたが
タスクバーにAutoHotkey.iniと表示されるだけで、GUIが表示されません
助言お願いします







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<298KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef