1 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/28(月) 15:48:16 ID:LAzeYh1N0] (テンプレ>>1 ) ■公式 www.autohotkey.com/ ■解説 AutoHotkeyを流行らせるページ lukewarm.s101.xrea.com/ ■過去スレ 1 pc7.2ch.net/test/read.cgi/software/1098531338/ 2 pc7.2ch.net/test/read.cgi/software/1129836713/ 3 pc11.2ch.net/test/read.cgi/software/1157043396/ 4 pc11.2ch.net/test/read.cgi/software/1184556627/ 関連リンク>>2 以降も参照
560 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/14(水) 10:39:48 ID:VPcXWzWx0] >>559 昔まったく同じ質問があったらしい。 うまくいかない時とかもそうだけど、何度も呼び出すならLoadLibraryしたほうがいいよ #Persistent OnExit, ExitSub hModule := DllCall("LoadLibrary", str, "getcpust.dll") if hModule=0 { ExitApp } SetTimer, GetCpust, 500 return GetCpust: Ret:=DllCall("getcpust\GetCpuStatus", "Int*", cpust, "cdeclInt") ToolTip, 返値 %Ret%`ncpust %cpust%`nErrorLevel %ErrorLevel% return ExitSub: DllCall("FreeLibrary", UInt, hModule) ExitApp
561 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/14(水) 10:52:50 ID:ZOd/0zb80] >>560 どうもありがとうございます!正常に動きました。
562 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/14(水) 21:53:23 ID:qEVMeKsk0] Sendでクリップボードの中身を書き出そうとした時に 2バイト文字が含まれてると正常に書き出せなくない?
563 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/14(水) 23:10:25 ID:P1pe7NoV0] つ Send,^v
564 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/16(金) 10:48:47 ID:PH/VxX9w0] ClassNNの指定方法について質問です。 AutoHotkey付属のAU3_Spy.exeをつかって、 ClassNNを取得するところまでは理解できました。 たとえば下記の例はブラウザのSleipnirですが、マウスカーソルが FenrirEmbeddedToolBar1の上にあるときのみ、カッコ内のスクリプトを 実行する場合、どのように記載すればよいでしょうか。 >>>>>>>>>>( Window Title & Class )<<<<<<<<<<< Sleipnir - [WinGet] >>>>>>>>>( Now Under Mouse Cursor )<<<<<<<< ClassNN: FenrirEmbeddedToolBar1 #IfWinActive ,***** ←たぶんここに何かを記載する 〜実行したいコマンド〜 #IfWinActive
565 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/16(金) 14:47:34 ID:c9i3EJxT0] #IfWinActive, Sleipnirのクラス ***:: MouseGetPos, , , , OutputVarControl , If Outputvarcontrol = FenrirEmbeddedToolBar1 {実行コマンド} こうかな、わかりません><
566 名前:名無しさん@お腹いっぱい。 [2008/05/17(土) 12:51:31 ID:cUZz5sdV0] 特定のウィンドウではキー変更せず それ以外ではキーを変更するにはどうすればよいでしょうか? 下のようにしてみましたが、NotepadでCtrl+Aすると #MaxHotkeysPerInterval に達してしまいます。 「~」をつけると逆にNotepad以外でもCtrl+Aが入ってしまいます。 ^a:: IfWinActive, ahk_class Notepad Send, ^a Else Send, b Return
567 名前:564 mailto:sage [2008/05/17(土) 13:02:38 ID:l+1Pu63/0] >>565 ありがとうございます。おかげさまでヒントになり、解決しました。 MouseGetPos, , , , OutputVarControl , If Outputvarcontrol<>【指定したいClassNN】 return ;違うなら無効ということで、戻る 〜以下やりたいこと これで認識できました。
568 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/17(土) 14:13:34 ID:hJizOrmY0] >>566 #IfWinNotActiveじゃだめかい
569 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/17(土) 15:41:23 ID:cUZz5sdV0] >>568 ありがとうございます。それでできましたが、 除外したいウィンドウが複数ある場合はどうしたらいいのでしょうか? 単純に #IfWinNotActive を複数書くと どちらも無効になってしまうようなのですが・・・
570 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/17(土) 18:26:03 ID:L03/NFhv0] >単純に #IfWinNotActive を複数書くと これがよくわからんが #IfWinNotActive window1 { #IfWinNotActive window2 { #IfWinNotActive window3 { なんとか }}} 論理条件だとこうなりそうだがこれだとダメなのか?
571 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/17(土) 20:32:11 ID:/leBUyky0] つウィンドウグループ
572 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/17(土) 22:51:18 ID:cUZz5sdV0] >>570 入れ子にせずに独立に2つ書いてたんですが、 入れ子にしてみるとあとに書いたものしか有効になってないようです。 >>571 こういうのがあるんですね。 ちょっとやってみます。
573 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/18(日) 01:15:23 ID:jn7VlSlu0] ショートカットキーで特定のアプリ(Firefoxとか)に対して タスクトレイに最小化/最大化をトグルするということはできますか? よろしくお願いします。
574 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/18(日) 03:25:19 ID:1OtJdJTx0] Access97のモジュールウィンドウでマウスホイールによるスクロールはできないでしょうか? Visual Basic 6.0 IDE でマウス ホイール イベントが機能しない ttp://support.microsoft.com/kb/837910/ja を試してみたのですがAccess2000以降でないと動かないようなので、とりあえずキーを送るだけのものを書いてみたのですが どうもいまいちな気がしますので。 #IfWinActive ahk_class OMain *WheelDown:: Send,{DOWN 2} return *WheelUp:: Send,{UP 2} return #IfWinActive
575 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/18(日) 03:29:23 ID:1OtJdJTx0] ちなみにWheel Redirectorやかざぐるマウスでは動きませんでした。
576 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/18(日) 04:36:47 ID:87P/lABM0] >>574 別にその解決法でいいと思うけど、どうしても気になるなら WM_SCROLLかWM_VSCROLLメッセージをコントロールに送れば良いんじゃね? 「どこでもホイール」がそんなことやってたような。 Access97は触ったことないので上手くいくか分からないけども。
577 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/18(日) 09:29:46 ID:1OtJdJTx0] >>576 ありがとうございます。 しかしどこでもホイールも試してみましたが動きませんでした。 Access2000以降でないとWM_MOUSEWHEELでホイールメッセージを検出できないようです。(よくわかっていませんが) このあたり ttp://www.asahi-net.or.jp/~uk8t-ktu/wincode/global/0010.htm を参考にすればできそうな気もしますが、AHKはまだ使い始めなのでどう書けばいいのかさっぱりな状態です。
578 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/18(日) 11:25:55 ID:HJA6d0Re0] >>573 タスクトレイにFirefoxがあるなら最大化、無ければ最小化でいいんじゃないか? タスクトレイのものを操作するサンプルは流行らせるページにあったはず
579 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/18(日) 12:00:49 ID:ab0+UOCY0] >>577 多分 WM_VSCROLLでスクロールコマンド投げる時にスクロールバーのハンドルを 指定してやらんといかんのじゃないかな。 検証してやりたいけどAccess97はもう持ってないので、この辺り使って自分で試行錯誤してくれ 表示ペインとスクロールバーのクラス名や関係性は Winspectorとかで調べると分かりやすいと思う ttp://lukewarm.s101.xrea.com/up/file/085.zip
580 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/18(日) 12:28:21 ID:q+GwzdQJ0] >>572 Regular Expressions を使うといいんじゃないかな? SetTitleMatchMode RegEx #IfWinNotActive ahk_class (window1|window2|window3)
581 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/18(日) 13:50:53 ID:7i8b10K90] 1つのPCで、複数のAHKスクリプトを動かす際、 ホットキーの優先順位を決めることは可能でしょうか。 PCを起動している間、必ず常駐させるスクリプトが1つある状況で、 たまに使いたいスクリプトをあとから実行して2つ存在させると、 同じ定義下にあるホットキーを入れた際、発動するスクリプトが 不定期に入れ替わるようです。 2つ目のスクリプトが起動している間は、1つ目のホットキーを 無効にさせたいのですが、ネットワークでいう「メトリック」みたいな 動きは、どのように作るのがベストベストでしょうか。
582 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/18(日) 14:08:37 ID:1OtJdJTx0] >>579 ありがとうございます。 ちょっと今Accessの勉強をしないとまずいので暇を見てやってみることにします。 ハンドルやクラス名の取得はClsinfoというのを使っていたんですがWinspectorは細かく調べられていいですね。 かざぐるマウスとかで簡単にいけると思ったんですが甘かった..
583 名前:574 mailto:sage [2008/05/19(月) 19:51:51 ID:xrRjgNKk0] 579でいただいたスクリプトを適当に書き換えてAccess97でもマウスホイールによるスクロールができるようになったので 一応報告しておきます。場当たり的修正なので汎用性は0です。WheelScrool.ahkは93行辺りで変数を初期化しているよう なので38行辺りの設定が無効になっているような感じです。 --- WheelScrool.ahk~ Sat Nov 03 00:14:08 2007 +++ WheelScrool.ahk Mon May 19 00:41:40 2008 @@ -137,6 +137,11 @@ scmode = 0 } + if (ccls = "OModule") ; 追加 + { + scmode = null + } + if (!scmode) MOUSEWHELL(ctrl,mx,my,"",AcclSpeed,AcclTOut) Else SCROLL(ctrl,mode,shwnd,"",ScrlCount,AcclSpeed,AcclTOut) @@ -283,6 +288,8 @@ ACount := ScrlCnt Else ACount += ScrlCnt * ASpeed + + ACount = 3 ; 追加 ;wParam: 方向 if (dir = "") AutoHotkey.iniには以下で #IfWinActive ahk_class OMain #Include, %A_ScriptDir%\Extras\Scripts\WheelScrool.ahk Gosub,WheelInit #IfWinActive
584 名前:574 mailto:sage [2008/05/19(月) 21:58:09 ID:xrRjgNKk0] 失礼。これだけでいいみたいです。これなら汎用性もありそうです。 --- WheelScrool.ahk~ Sat Nov 03 00:14:08 2007 +++ WheelScrool.ahk Mon May 19 21:53:35 2008 @@ -94,6 +94,7 @@ ,VDisavledList, VScroolList, MdiActivateList ,BypassCtlList, NullShwndTabooList, HDisavledList + Gosub,WheelInit CoordMode,Mouse,Screen MouseGetPos,mx,my,hwnd,ctrl,3 WinGetClass,wcls, ahk_id %hwnd%
585 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 00:01:32 ID:z9u7+QjX0] >>583 >WheelScrool.ahkは93行辺りで変数を初期化しているよう >なので38行辺りの設定が無効になっているような感じです。 そこは関数内でglobal変数を直に使えるよう再宣言してるだけで初期化はされない筈… 一応うちではちゃんと動いてるんだけど、値引き継がれない? XP SP2 / AHK Version 1.0.47.06
586 名前:585 mailto:sage [2008/05/20(火) 02:08:31 ID:z9u7+QjX0] ああ解った、AutoHotkey.ini側の記述の問題だわ AHK常駐時に初期化する前提だから AutoExecute部(ファイル先頭)に書かないとダメ ;--- AutoHotkey.ini --- #Include, %A_ScriptDir%\Extras\Scripts\WheelScrool.ahk Gosub,WheelInit あくまで#IfWinActiveでAccessにのみ適用したいなら WheelScrool.ahkの Hotkeyの前後に入れる ;--- WheelScrool.ahk : Line 77 --- #IfWinActive ahk_class OMain +WheelDown:: WheelRedirect(1) +WheelUp:: WheelRedirect(1) WheelDown:: WheelRedirect() WheelUp:: WheelRedirect() #IfWinActive ttp://lukewarm.s101.xrea.com/up/file/085.zip HDD漁ったらロジクールのチルトでの横スクロールのテストとかした時に作った新しいのがあったんで 上げ直しときます。互換リストにOModule追加してみたんで良かったらコメント外して使って見て下さい。 (ちなみに >583 scmode = null は 0でなく "null"という文字列が代入されてる模様)
587 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 20:13:17 ID:zd0pXxS10] AutoHotkeyで取り扱いたいファイルのハッシュ値を計算するための、簡単な方法はないでしょうか。 @IT:Windows TIPS -- Tips:ハッシュ値を利用してファイルの同一性をチェックする www.atmarkit.co.jp/fwin2k/win2ktips/597fciv/fciv.html 上記で解説しているマイクロソフト製の「fciv.exe」をRunで渡してみました。 cmd=fciv.exe "%hashfile%" -xml hash.txt runwait %cmd%,,Hide,pid が、fciv.exe側が日本語のファイル名に対応していないようで、 ほとんどのファイルが、見つからない旨のエラーになってしまいます。 (コマンドラインで渡してもダメだったのでAHkのダメ文字ではないようです) 日本ではfasthash.dllというのが有名のようですが、 dllを使うには、どのように記述すればよいでしょうか。 FastHash.dll hp.vector.co.jp/authors/VA033110/fasthashdll.htm
588 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 21:11:57 ID:+6tZiYR+0] >>587 日本語のファイル名に対応していないなら、一時的にAHKでリネームすればいいじゃない。
589 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 22:00:36 ID:jzwbJ8Aa0] >>586 わざわざありがとうございます。 かざぐるマウスと併用できるようなのと加速が意外と便利なのでAccess以外にも適用させて使おうと思います。 というかマウスジェスチャーや音量の調節も出来るようだし、AHKがあればかざぐるマウスはいらなそうです。 AHKになさそうなのは設定ダイアログをだしていてもメインウィンドウを動かせる機能ぐらいじゃないかと思います。
590 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 18:01:23 ID:+Xi75qRh0] PCのビープ音を鳴らす「Soundbeep」って、状況把握に便利なんですが、 鳴らしている間はスクリプトが完全に止まってしまいますよね。 ビープは鳴らすけど、スクリプト自体は止まらせない方法ってありますか?
591 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 18:02:57 ID:P1fIW2PZ0] 別のスクリプトに書いてRun
592 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 19:29:17 ID:08CXmI6t0] >>590 SetTimer,Beep,10 Return Beep: soundbeep Settimer,beep,off return
593 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 21:46:37 ID:+Xi75qRh0] >>591-592 ありがとうございます。うまくいきました。
594 名前:名無しさん@お腹いっぱい。 [2008/05/22(木) 02:08:12 ID:Bhfqc5ef0] WinXPのエクスプローラーでアドレスバーを非表示にしているとき ツリービューとフォルダビューの間をTabで行き来しようとすると ツリービュー→フォルダビューはTab1回でいけますが フォルダビュー→ツリービューはツリービューを閉じるための×印に 一旦フォーカスがあたるため2回Tabを押さないといけません。 これを1回で行うためにフォルダビューにフォーカスがあるときは Tabが2回送られるように下のようにしたのですが、 なぜか×印がフォーカスされてしまいます。 どうすればよいでしょうか? #IfWinActive, ahk_class ExploreWClass ~Tab:: ControlGetFocus, ClassNN if ErrorLevel = 0 if ClassNN = SysListView321 Send, {Tab}
595 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/22(木) 14:35:58 ID:UGRCaXb90] tab送りじゃなくてControlにFocusを合わせるようにすれば?
596 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/22(木) 23:25:56 ID:Bhfqc5ef0] >>595 なるほど ↓でいけました。ありがとうございます。 #IfWinActive, ahk_class ExploreWClass Tab:: ControlGetFocus, ClassNN If ClassNN = SysListView321 ControlFocus, SysTreeView321 If ClassNN = SysTreeView321 ControlFocus, SysListView321
597 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/23(金) 10:45:11 ID:NPhBXbgz0] デバッグをするため、ウインドウのClassNNが特定の値になっているときに、 ToolTipメッセージをマウスカーソル付近に連続で表示させる動作をさせています。 しかし、マウスカーソルがToolTip自身に乗っかってしまうと、 ClassNNが「特定の値」ではなく、空白になってしまいます。 ClassNNが空白のエリアを除外させたところ、 ToolTip以外の、本当にClassNNが空白の場所との区別ができなくなりました。 ToolTipを表示させる際、ToolTipのClassNNを指定することは可能でしょうか。
598 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/23(金) 23:56:26 ID:/hthvnSA0] 互換シェル使っててLWinをモディファイアに いろんなソフト起動させてるんだけど LWinをちょんと押すだけのときにシェルメニュー 表示とか割り当てたい でもLWinをモディファイアにしてるバインドと ぶつかっちゃうんだけどどうしたら解決できるか わかる人いますか?
599 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/24(土) 00:14:55 ID:jR+OEghm0] LoopでGetKeyState取得して キーが離されるまでのループ回数で分岐とか KeyWaitで時間指定して それを越えたときのKeyStateで分岐とか
600 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/24(土) 01:51:22 ID:kkBoRCJr0] GUI画面にテキストを表示させた際、操作者がGUIの内容を更新する操作をしたとき、 表示したテキストを別のテキストに置き換えて再描画したいです。 普通に同じ座標にAddで追加すると、前のテキストと重なって表示されてしまいます。 GUI画面を破棄するDestroyを入れるとできますが、画面の全部を作り直すため、 かなりチラついてしまいます。 症状確認用テストスクリプト Test: loop { Gui, Destroy Gui, Add, Text,,■■■TESTです■■■→%A_Index% Gui, Show,,GUIテスト sleep,100 } これだと、ものすごくチラついてしまいます。 また、Gui, Destroyをはずすと、最初に表示された内容から変わってくれません。 おそらく、何かやり方があるとは思うのですが、GUI画面の一部の項目を 書き換えて再描画するには、どのように書けばいいのでしょうか。
601 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/24(土) 02:35:35 ID:kLdoO1vi0] Gui, Add, Text, vMyText でテキストを変数MyTextに指定 GuiControl,, MyText, 実際に表示する内容 で書き換える 流行らせるページリファレンスのGUI OSDサンプルとか見れ
602 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/24(土) 14:17:41 ID:kkBoRCJr0] >>601 ありがとうございます。うまくいきました。 100倍くらい速くなりました。
603 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/25(日) 07:38:54 ID:7/PfvJsA0] 初心者で申し訳ないんですが、 右Alt+jでテンキー1にしたいんですが、 >!j::Numpad1 だと効きません。 j::Numpad1だと問題なく動くんですが、修飾キーをつけたとたん動かなくなります。 Winキー以外のShiftやCtrlでも効きません。何が間違ってるんでしょうか?
604 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/25(日) 08:14:16 ID:k6NKzcvt0] 98とかME使ってんじゃね
605 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/25(日) 15:56:56 ID:7/PfvJsA0] >>604 流石にそれはないですw俺の環境だけかな? ノートでNumLockしたくないから、右Altや右Ctrl押してるときだけ有効っぽくしたいんだけど。 あふとかフォトショ使うときに楽になるかなと思ったんだけど。 なぜこんなに難しいんだろ。
606 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/25(日) 16:43:04 ID:pwVrvVFl0] >>603 なぜ動かないかはわからんが、 !j:: Send,{Numpad1} return で動く。たぶん「仕様」ってやつでは?
607 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/25(日) 17:01:33 ID:DsBFwt0y0] すいません。WheelScroll.ahkですが Vieasというイメージビューアソフトのマウスホイールでの画像の拡大・縮小が無効になってしまうので #IfWinNotActive ahk_class Vieas_vwin_class WheelDown:: WheelRedirect() WheelUp:: WheelRedirect() ;Shiftホイールで横スクロール +WheelDown:: WheelRedirect(1) +WheelUp:: WheelRedirect(1) #IfWinActive と書き換えてみたのですが、これだとVieasのウィンドウがアクティブになっているときに下のウィンドウが マウスホイールでスクロールできません。 マウスホイールが通常動作するクラスを指定するというようなことはできないでしょうか?
608 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/25(日) 17:03:41 ID:7/PfvJsA0] >>606 おおっ >!j::Send,{Numpad1}と >^/::Send,{NumpadEnter} で右Altや右Crtlでいけました。有難うございます。 仕様と思います。AHKさいこー。
609 名前:603 mailto:sage [2008/05/25(日) 18:20:04 ID:7/PfvJsA0] モバイルノートに右Altが無かったし、右Ctrlじゃキーが押しにくいので結局、無変換+でやることにした。 言語の設定で無変換を無効化して無問題。 以下、簡単だし別に使う人もいないだろうけど報告まで。 ~vk1Dsc07B & j::Send,{Numpad1} vk1Dsc07B & k::Send,{Numpad2} vk1Dsc07B & l::Send,{Numpad3} vk1Dsc07B & u::Send,{Numpad4} vk1Dsc07B & i::Send,{Numpad5} vk1Dsc07B & o::Send,{Numpad6} vk1Dsc07B & 7::Send,{Numpad7} vk1Dsc07B & 8::Send,{Numpad8} vk1Dsc07B & 9::Send,{Numpad9} vk1Dsc07B & m::Send,{Numpad0} vk1Dsc07B & .::Send,{NumpadDot} vk1Dsc07B & @::Send,{NumpadEnter} vk1Dsc07B & /::Send,{NumpadDiv} vk1Dsc07B & sc028::Send,{NumpadMult} vk1Dsc07B & `;::Send,{NumpadAdd} vk1Dsc07B & -::Send,{NumpadSub} 右Altや無変換でいろいろホットキーを追加してみよっと。
610 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/25(日) 21:29:11 ID:PNVW0ixZ0] >>607 VieasのメインウィンドウだとControlが存在せずハンドルが取れてなかったみたい。 コントロールが取れない時はウィンドウハンドルを指定してWHEEL投げるように修正かけました。 ttp://lukewarm.s101.xrea.com/up/file/085.zip
611 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/25(日) 23:50:21 ID:DsBFwt0y0] >>610 ありがとうございます。動作確認しました。 やっぱりAHKいいですね。アプリケーションを問わずに操作できるのがいい。 自分もいろいろ書けるようになるといいんですけどね。
612 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/26(月) 23:03:49 ID:xhUv6vGn0] Guiの質問です。 例 Gui, Add, Picture,Section,*** で作成すると、ClassNNに「Static**」という名称が割り当てられますが、 作成したGuiのClassNNを、特定の文字列で指定することは可能でしょうか。
613 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/27(火) 01:11:05 ID:0qIAl9sc0] Excelで平成20年1月1日を ^#Dとホットキーを使った場合に 2008/01/01 とするにはどうしたらいいでしょうか? #IfWinActive ahk_class XLMAIN ^#D:: このあとどのように記載したらいいか教えてください. よろしくお願いいたします.
614 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/27(火) 01:33:15 ID:10H1JCGL0] 2chで使われているような「1201502896」の形式の日付を、 YYYYMMDD形式に変換するには、どのような解決方法が ありますでしょうか。
615 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/27(火) 01:44:23 ID:mvWayqr00] >>613 Ctrl+CをSendしてStringReplaceしてから はっつければいいんでは? >>614 19700101000000 にその数値を秒数で足せば良いんじゃないかな?
616 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/27(火) 03:35:18 ID:4BLlhUiO0] 窓キーと3を押すのをトリガーにしようとして # & 3::hogehoge と書いたらキーボードの3が効かなくなりました。 そこで、 #3::hogehogeと書き直したら直りました。 これは既知の現象ですか?
617 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/27(火) 03:40:10 ID:4BLlhUiO0] >>616 間違えた。 窓キーと2をトリガーにしようとして # & 2と書いたら3のキーが効かなくなった、というのが正しいです。
618 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/27(火) 03:46:50 ID:Ci2ft8P00] >>616 一つ目のキー自体のもともとの機能は無効化される。 一つ目のキーにチルダ(~)をつければ、そのキーは無効化されず、普通に入力される。 一つにつけておけば、一つ目のキーが同じほかのホットキーでは指定されていなくても、そのキーは無効化されなくなる。 #はShift+3の#と勘違いされただけ。使い方が間違っている。Win & 3て書かないと。
619 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/27(火) 04:03:06 ID:4BLlhUiO0] >>617 連投済まん。 Hotkeys (Mouse, Joystick and Keyboard Shortcuts)のヘルプにあったこれが答えかも。 lose its original/native function when it is pressed by itself #がある3のキーが効かなくなることが説明できますね。 人騒がせで済みませんでした。夜中にパニックに陥っていたもので。。。(汗
620 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/27(火) 04:04:31 ID:4BLlhUiO0] >>618 おっ!書き込んでから発見しました。 こんな夜中にありがとうございます。
621 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/27(火) 12:14:58 ID:10H1JCGL0] >>615 ありがとうございます。変換できました。
622 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/27(火) 13:47:20 ID:3gCvGmfE0] >>613 ^#D:: Send,^1!c{End}!tyyyy/mm/dd{Enter} んでも IME ONだと失敗するし、素直にExcelマクロで Selection.NumberFormatLocal = "yyyy/mm/dd" したほうがスマートだと思うが。
623 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/27(火) 13:53:59 ID:3gCvGmfE0] ↑はExcel2002の場合ね、他のバージョンだとアクセラレータキー違うかもしれんし上手く動くかわからん。 Winキー発動はできんけどやっぱマクロ作ってでショートカットキー割り当てたほうがいいと思う。
624 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/27(火) 19:03:51 ID:10H1JCGL0] ・文字列 string を1行ずつループで回す ・取り出した1行にタブが含まれていたら、タブを別の文字「%okikaemoji%」に置き換える ・結果をstringに戻す ・ループをbreakで終了する という動作を下記の4通りで試しましたが、どれもタブが置き換わってくれません。 1案 value=`t StringReplace, string, A_LoopField,%value%,%okikaemoji%,all 2案 value=%A_Tab% StringReplace, string, A_LoopField,%value%,%okikaemoji%,all 3案 StringReplace, string, A_LoopField,%A_Tab%,%okikaemoji%,all 4案 StringReplace, string, A_LoopField,`t,%okikaemoji%,all どのように書いたら動いてくれるでしょうか。
625 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/27(火) 20:49:16 ID:mvWayqr00] AutoTrimをOffにする
626 名前:613 mailto:sage [2008/05/28(水) 05:54:16 ID:vTCC4uvQ0] 皆さん お返事遅くてごめんなさい >>615 ありがとうございます >>622 >>623 マクロは考えてなかったです. AHKにこだわりすぎました EXCELマクロでやらせていただきます. ありがとうございます.
627 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 14:00:51 ID:b2k6dMVD0] CTRLのダブルタップを lukewarm.s101.xrea.com/myscripts/index.html を参考にしてやってみたんですが、CTRLを少し押し続けた場合も 起動してしまいます。キーリピートのせいだと思うんですが。 >>389 も同様でした。 回避策はありますか?
628 名前:627 mailto:sage [2008/05/29(木) 15:45:51 ID:b2k6dMVD0] キーリピートの設定を遅くしたらましになったんですが、 他のキーは普通にリピートして欲しいです。 CTRLだけリピートを殺すといった事ができるといいんですが。
629 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 16:59:33 ID:SXLiQ+Fi0] そもそもCtrlキーにリピートがあるのか?
630 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 17:39:08 ID:lv3ZoJSv0] >>628 lukewarm.s101.xrea.com/commands/KeyWait.html ここにサンプルある。2カ所KeyWait入ってるけど上は要らんようなキガス ~CTRL:: if(A_PriorHotkey <> A_ThisHotkey){ return } if(A_TimeSincePriorHotkey > 400){ KeyWait, Ctrl return } tooltip, double tap! return
631 名前:627 mailto:sage [2008/05/29(木) 17:55:57 ID:b2k6dMVD0] >>630 ありがとうございます。 書いてくださった方法でばっちりダブルタップでき、長押しも回避できました。
632 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 20:08:14 ID:yj8hQgNw0] DllCallでLCMapStringを使って文字列を操作したいのですが 引数の型がまったくわからず、どうやってもErrorLevelが-2になってしまいます どう書けばよいのかお教え願えないでしょうか?
633 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 20:47:51 ID:QxYMGk4z0] 非アクティブのiTunesの停止、再生をしたくて↓のようにしてみたんですが 動きません。 #i:: DetectHiddenWindows,On ControlSend,WinTitle,{Space},iTunes return 下のようにクラス指定しても無理でした。 ControlSend,,{Space},ahk_class iTunes 試してみたら、そもそもアクティブにしてもだめだったんですが、打開策はありますか?
634 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 08:25:01 ID:KE70yWJA0] ホットキー以外で初めて書いてみて動作はきちんとするけど、 もっとスマートに書けるんでしょうか? メモリが2,000か6,000K(1:4の割合で変化) CPUが0〜4パー で動いてるんだけど、低スペックってのもあるw(P3-1G)。 プログラミングしたことないんで不安です。 ;EBWinが非アクティブになったら終了。 #Persistent SetTimer , EBWC , 250 return EBWC: WinWait , ahk_class EB_POCKET if ErrorLevel = 0 { WinWaitNotActive , ahk_class EB_POCKET if ErrorLevel = 0 { Process, Close, EBWin.exe } } else return
635 名前:634 mailto:sage [2008/05/31(土) 09:24:36 ID:KE70yWJA0] 自己解決しました、これでAHKの常時起動しなくて済みます。 スレ汚しごめんなさい。 それとも、まだやりようがあるのかな?・・・わからん。 ;EBWinミニウインドー起動が非アクティブになったら終了。 #NoTrayIcon Run, EBWin.exe -m , C:\Program Files\EBWin WinWaitActive , ahk_class EB_POCKET WinWaitNotActive , ahk_class EB_POCKET if ErrorLevel = 0 Process, Close, EBWin.exe else return
636 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 16:10:10 ID:ErfB/+jr0] >>634 >メモリが2,000か6,000K(1:4の割合で変化) の意味が全くわからない そしてスクリプトで何をしようとしてるのか解説が一切ないので、 なにをやってるのかわからない 結論:いくらチラ裏とはいえ、他人にわかるように書きましょう
637 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 16:21:21 ID:nD99XO9q0] >>636 正直それはおまえさんの読解力の問題な気が…
638 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 17:51:19 ID:17jzD8JC0] 繭からやっと移行できたと思ったら これSynergy経由じゃ動かないのかorz
639 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 19:17:34 ID:nD99XO9q0] >>638 動いたり動かなかったり。 >>4 の無変換+ijklの矢印割り当てくらいなら動いたりするけど、 {Blind}の部分が効かなかったりとか。
640 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/01(日) 00:07:10 ID:ErfB/+jr0] プログラムを実行させるとフォーカスを強制的に フォアグラウンドにしてしまうアプリがあります。 そのアプリをahkからタイマーで呼び出されたのち、呼び出す直前に 作業していた元のウインドウに戻すにはどうしたらいいでしょうか。 その動作を手動で再現させる場合、アプリ呼出し後にALT+TABを押すと 確実に戻れるので、それをAHKで再現できれば解決しそうなのですが。 Run,問題のプログラム.EXE sleep,2000 send,{ALT DOWN} sleep,1000 send,!{Tab down} sleep,1000 send,!{Tab up} send,{ALT UP} 安全牌で、sleepで余裕を入れてるのですが、タイミングが 合わないことが多く、半分くらいしか成功しません。
641 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/01(日) 00:32:29 ID:f367mMfv0] >>640 SleepのタイミングについてはPCスペックや同時に動いてるアプリとの兼合いもあるので 自力で調整値を探すしかない。 だが、ALT+TAB使うより Activeウィンドウ操作系のコマンド使ったほうが成功率は上がると思われ WinGet, hwnd,ID,A Run,問題のプログラム.EXE WinWaitActive,問題のプログラムのタイトル Sleep,任意の待ち時間 WinActivate,ahk_id %hwnd%
642 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 12:52:34 ID:+6qJMD7A0] 質問です。 マウスホイールを下に回した場合batu.bmpを探してそこをクリックしたいのですが、全くできません。 拾い物のスクリプトから考えたのですが・・ご教授お願いします。アプリ名はaaaaに置き換えてます。 Loop { Sleep,10 IfWinActive,aaaa { GetKeyState,mbtn,WheelDown,P if (mbtn="D") { Loop { ImageSearch , OutputVarX, OutputVarY, 0, 0, A_ScreenWidth, A_ScreenHeight, batu.bmp Sleep,100 Send,{LButton} GetKeyState,mbtn,WheelDown,P if (mbtn="U") { break } } } } } #z::Reload #x::Pause #e::ExitApp #r::return #u::return #f::return #m::return #IfWinActive aaaa vk1Dsc07B::Send,@
643 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 13:34:40 ID:0QKb9v/r0] 探した座標使ってないじゃん MouseClick使え
644 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 13:55:40 ID:Yyr2zU0/0] なにそのLoop
645 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 17:51:59 ID:T5SyNYp+0] Loop,fileなどで読んだファイル名にUnicode文字が含まれると、 「A_LoopFileName」などの変数で、ファイル名のUnicode部分が ハテナに置き換わってしまいます。 結果、ループの中に居るのに対象ファイルが 見つからない事態になってしまいます。 そこで、ループ中にA_LoopFileNameの実体を読んで、エラーなら、 FileMoveで A_LoopFileName → Unicode部分を削除したA_LoopFileName とリネームを試みたのですが、Renameする時点で元ファイルが 見つからず、できませんでした。よい解決法はないでしょうか。 なお、対象となるファイルは自分で作成したものではないため、 事前にリネームするのは厳しいという状況です。
646 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 18:48:58 ID:K9ohG56c0] 「IMEが変換中」という状態を取得したいのだけど、できない。。 誰か俺が調べた限りの情報出すから助けて。 1.AHKのSendMessageを使用する 2.使用する(と思われる)API/WM_IME_COMPOSITION kumei.ne.jp/c_lang/sdk3/sdk_281.htm www.winapi-database.com/Message/WM/WM_IME_COMPOSITION.html おまけ.IMEの参考 lukewarm.s101.xrea.com/up/file/029.zip つってもこれだけなんだけどね。 もうだめぽ・・・
647 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 18:50:10 ID:K9ohG56c0] あ、直リンしちゃった。。ごめんちゃい。
648 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 20:33:23 ID:0QKb9v/r0] >>645 TransformのUnicode, String を使えばどうにかならんかね?
649 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 21:06:24 ID:B0W6ZYcf0] >>646 俺もいろいろ調べたんだけど、 AHKからは他プロセスの入力コンテキストハンドラ hIMC を取得できない (ImmGetContext が NULL しか返さない) ので、うまくいかないみたい。 ttp://www.zero.co.jp/develop/free/o1/index.html こんな情報があるけど、俺には使いこなせない orz
650 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 21:25:10 ID:T5SyNYp+0] >>648 ありがとうございます。 さっそく試してみたところ、transformに渡す対象文字「string」の 内容自体がすでに「?」に変わってしまっているようです。 結果をファイルに書き出して確認したところ、壊れた結果でした。
651 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 22:59:30 ID:uDIyl+SM0] >>645 過去ログ>538-550あたりを読むと幸せになれるかも。試してないからわからんけど
652 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 00:24:59 ID:8JqjvJlr0] AttachThreadInputしてみたら?
653 名前:646 mailto:sage [2008/06/03(火) 02:00:34 ID:mB5Ni4140] >>649 のくれたリンクからファイル落としたんだけど、その中に >各々のアプリケーションのスレッドはスレッドにアタッチされた複数のIME ウィンドウを持つようになった って書いてあったので、GetWindowThreadProcessIdとSpy++使って調べてみました。 試しにメモ帳では、「メモ帳」と「メモ帳の入力域」は同じプロセスID・スレッドIDなんだけど、 問題はアクティブウィンドウではなく、IMEのプロセスID・スレッドIDが必要ってことなのかな? うーん、わかりそうでわからん。。もうなんか今日は1日中これやってるよ。。 こんなにはまるつもりなかったのにな・・・
654 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 02:36:34 ID:5lSXhWR10] >>653 やっぱり解らないが、 グローバルフックを使うプログラムではDLLを作る必要があるそうな。 ttp://hp.vector.co.jp/authors/VA016117/hook.html
655 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 04:35:08 ID:gzAwAjm60] タスクトレイに出たアイコンを左シングルクリックしたとき、 特定のルーチンへ飛ばすことは可能ですか? 右クリックの項目はMenuで表示・追加できますが、 そもそも左クリックの設定は、あるのでしょうか。
656 名前:名無しさん@お腹いっぱい。 mailto:age [2008/06/03(火) 22:54:44 ID:w/zWe+Un0] AutoHotKeyって標準出力を変数に格納して使う事は出来ないんでしょうか? コマンドプロンプトに打ち込んだコマンドの標準出力を得るみたいな。 調べてみたところどうにも扱えないっぽいので、仕方なく一時的に作業ファイル・・・ つまり cmd > temp.dat みたいに吐いて、 FileReadLineで一行欲しい部分を読み込んで 対処したのですが、いちいち一時ファイル作るのも大げさかな?と。 その後FileDelete, temp.dat しないといけないし・・・。
657 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 23:48:20 ID:Qr7ynoy00] >>656 >>473
658 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 23:55:26 ID:DsQzXGtM0] うわ、その時お世話になった467ですが cmdret.dllもよかったけど、流行らせるページの管理人さんが作ったMy Scriptsにある 「プロセスを起動して標準出力を読み書き」の方が外部dllが要らない分使い易いかも
659 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 00:47:46 ID:IKCvfirm0] ボタンを多数置くときの、飛び先について質問です。 下記のコードで、ボタンを10個設置します。 Loop,10 { button_no=B%A_Index% Gui, Add, Button,G%button_no%,ボタン%A_INDEX% } ボタンが押されたときの飛び先ですが、 B1: B2: B3: B4: B5: B6: B7: B8: B9: B10: ボタンが押された際に行う処理 ↑ 10個までならなんとかなりますが、 あまり増えるとソースの可読性が悪くなってしまうので、 この「B1:〜B10:」を1つにまとめて書く方法は無いでしょうか。 参考にしたページ:流行らせるページのGオプション lukewarm.s101.xrea.com/commands/Gui_Add.html
660 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 08:45:15 ID:de6Gu0Xr0] 全部同じラベルに飛ばしといて 押されたボタンの名前で分岐すれば