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 以降も参照
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] 全部同じラベルに飛ばしといて 押されたボタンの名前で分岐すれば
661 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 12:26:20 ID:Vao1bqW80] タブファイラのX-FinderやTTBaseのUpperDirPluginにウィンドウの余白でクリックとかで上階層に移動するのがあるけど あれこれツール増やすのもあれなのでAutoHotKeyでやろうと思ったのだが ウィンドウの余白の検出はどうすればいいんでしょう・・? とりあえずウィンドウの色で切り替えてやってみた・・ ; 1/2 ;ホイールクリックでウィンドウの余白なら上階層へ移動・アイコンの上ではダブルクリック #Persistent SetTimer,BlankClick,100 return BlankClick: { MouseGetPos,posx,posy,WindowClass,ClassNN,1 IfInString,ClassNN,SysListView32 ; ファイルを開く・・すれば大体SysListView321になるような { pgx:=(posx-10) ; カーソル直下だと文字の隙間とかでうまくないので pgy:=(posy-10) ; カーソルから(-10,-10)〜(+10,+10)を斜めにてきとーに走査 BlankState:=0 ; 0のままなら余白 Loop,20 { PixelGetColor,undercolor,%pgx%,%pgy% if(undercolor=="0xFFFFFF") ; ウィンドウの色を変えてると変えないと・ { pgx++ pgy++ } else { BlankState:=1 ; 別の色にかかったとき適当になんか入れる break
662 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 12:27:00 ID:Vao1bqW80] ; 2/2 } } If(BlankState==0) ; 余白のとき { SetMButtonMode:=11 ; Hotkeyの切り替え用 11はBackspace Hotkey,MButton,On ; ホイールクリックのホットキーを有効に } else { SetMButtonMode:=1 ; Hotkeyの切り替え用 1はダブルクリック Hotkey,MButton,On } } else { Hotkey,MButton,Off ; ホイールクリックのホットキーを有効に } MButton:: { If(SetMButtonMode==1) Click,LEFT,,,,2, else If(SetMButtonMode==11) Send,{BACKSPACE} else return }
663 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 16:58:25 ID:de6Gu0Xr0] #IfWinActiveでやれば?
664 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 22:20:16 ID:3BKEexRx0] その座標をクリックしてみれば、余白だったとき選択項目(フォーカスじゃなく)がゼロ個になるのでは
665 名前:661 mailto:sage [2008/06/05(木) 23:58:37 ID:Vao1bqW80] MButtonの前の } が1個抜けてた・・ >>663 操作対象がClassNNの時に#IfWinActiveをどのように使うのでしょうか? >>664 なんらかが選択された状態で余白をクリックしたとき、選択数がゼロ個になるのでは?ということでしょうか ゼロ個になると思いますが・・そういうことではないとか?
666 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 00:52:21 ID:lKgCTuVw0] >>665 エクスプローラーの余白ダブルクリックで上階層と理解して最小限でやってみた。 フォルダ選択で1 個のオブジェクトを選択、ファイル選択でファイル情報、余白選択でX個のオブジェクトとステータスバーに表示される。 現状他のホットキー押して左クリックでも発動するけど気になるなら適当に直して下さい。 ~LButton:: StatusBarGetText, State,Part1,ahk_class CabinetWClass If (A_TimeSincePriorHotkey<200 && State<>1 個のオブジェクトを選択) { IfInString,State,個のオブジェクト Send,{BackSpace} } Return
667 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 01:54:43 ID:UApCHu8G0] AutHotkeyでスクリプトを書き始めました。 デスクトップでダブルクリックした時に、ホットキー(Alt+Numpad1)を実行する スクリプトを試行錯誤していて、 ahk_class Progman での条件判定だとうまくいかなかったところ、>>666 のスクリプトを元に、こんな 風にしてみた。 ~LButton:: MouseGetPos, MouseX, MouseY PixelGetColor, color, %MouseX%, %MouseY% If(A_TimeSincePriorHotkey<300 && color=0x984E00){ Send,!{Numpad1} } return ウチのXPのデスクトップは0x984E00でいいみたいなんだけど、 どんな環境でも、デスクトップ上のダブルクリックを判定できる ロジックってどんなのがありますか?
668 名前:665 mailto:sage [2008/06/06(金) 09:59:38 ID:89UJiJcz0] >>666 StatusBarGetTextを使う手がありましたか ExplorerとBrouseuiはこれ参考にシンプルにできるのがわかりましたが 無数のアプリにある ファイル-開く したときの ahk_class #32770 SysListView321 は対応できないです >>667 MouseGetPosで拾えるウィンドウIDを WinGetで調べたデスクトップProgmanのウィンドウIDと比較してみるとか 以下IDのテスト用 ~LButton:: MouseGetPos,MouseX,MouseY,WindowID,ClassNN,1 WinGet,DesktopID,,ahk_class Progman ;If(A_TimeSincePriorHotkey<300 && DesktopID==WindowID) ;Send,!{Numpad1} If(A_TimeSincePriorHotkey<300) MsgBox,DesktopID %DesktopID% , WindowID %WindowID% return
669 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 10:48:46 ID:P8qHdnIt0] >>668 問題はデスクトップかどうかの判定じゃないと思うのだが。 >667が言ってるのは多分あんたがつまづいてるとこと同じ
670 名前:665 mailto:sage [2008/06/06(金) 19:45:37 ID:89UJiJcz0] >>669 うあそういうことか >>667 自レスも含みますが>666であったファイルの選択の状態を取得する他の方法を探したところ ControlGetが使えそうなのでそれでやってみたテスト ~LButton:: MouseGetPos,MouseX,MouseY,WindowID,ClassNN,1 ; カーソル下の情報を取得(ClassNN以下いらないような WinGet,DesktopID,,ahk_class Progman ; デスクトップのウィンドウIDを取得 ControlGet,StateListView,List,Selected,%ClassNN%,ahk_id %WindowID% ; StateListViewにSysListView32の選択項目名を入れる If(A_TimeSincePriorHotkey<300 && DesktopID==WindowID && StateListView=="") ; デスクトップ上である&選択項目がない Send,!{Numpad1} return アイコンのないところでダブルクリックをしたとき、イベントを乗っ取らないダブルクリックなので、 丁度よく最初のクリックの時点でデスクトップがアクティブになって選択状態が外れる 同じ方法でエクスプローラ・Openダイアログ等の余白をダブルクリックで上階層移動もできる 選択項目を利用するので MButton:: 等では途中に左クリック入れるとかしないとそのままではできない・・
671 名前:667 mailto:sage [2008/06/07(土) 01:12:12 ID:93cVi9ld0] >>670 すごい!デスクトップの色に関係なく動きました! (ロジックに色判定がないからあたりまえだけど... ) ControlGetを含め、今回出てきた関数を少しずつ把握していこうと思います。 色やステータスバーではなく、コントロールのIDを参照していくのがキモなんですね。 流れをぶった切った質問になっちゃったと思いましたが、意外な関連があり、新鮮な 驚きです。 >>669 もありがとうー。
672 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/08(日) 17:38:22 ID:moLBDXbX0] Autohotkeyは日付の扱いは苦手なようなのですが、 「2008年1月1日の0時から10000秒後の時刻を求めたい」 みたいな感じのものを容易に計算できますでしょうか。 vbsならDateAdd("s", 10000"2008/01/01")で終わりなのですが。
673 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/08(日) 19:25:46 ID:jZi2GVYs0] EnvAdd
674 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/08(日) 20:50:51 ID:moLBDXbX0] >>673 日付計算のオプション合ったんですね。ありがとうございます。
675 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/09(月) 15:53:58 ID:R3Wd7FZq0] ControlGetのSelectedでエディットコントロールの選択内容を取得したいのですが、 複数行のテキストを全て選択してる状態だとOutputVarが空になってしまいます。 なんとか正常に取得する方法はないのでしょうか?
676 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/09(月) 16:42:03 ID:beY3nkeJ0] 空でエラーレベルも正常なら ControlGetTextで再取得するとか
677 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/09(月) 18:09:39 ID:R3Wd7FZq0] ControlGetText忘れてましたorz ErrorLevelも失敗の1が帰ってきますが、その場合はとりあえず ControlGetTextで取得してPixelGetColorとかで選択状態を判別する事にします。 ご返答ありがとうございました。
678 名前:名無しさん@お腹いっぱい。 mailto:age [2008/06/09(月) 21:10:27 ID:ctvGfYpS0] FileInstallでファイルを取り込みたいんですが、 取り込みはどうやら成功しているらしい(.ahk状態で実行して正常に実行可能、コンパイルエラーしない かつ、Ahk2ExeでコンパイルしてEXE化も正常に出来る)んですが、 いざ出来上がったEXEを実行すると、取り込んだファイル全てが Could not extract file: っていうダイアログが出てきて取り出せません・・・。 コードはこれです ;driverの中身全部を取り込み ;MsgBox, %A_WorkingDir% FileInstall, driver\setupdrv.exe, \dest\setupdrv.exe, 1 FileInstall, driver\vnccom.sys, \dest\vnccom.sys, 1 FileInstall, driver\vncdrv.dll, \dest\vncdrv.dll, 1 FileInstall, driver\vncdrv.inf, \dest\vncdrv.inf, 1 FileInstall, driver\vncdrv.sys, \dest\vncdrv.sys, 1 FileInstall, driver\vnchelp.dll, \dest\vnchelp.dll, 1 %A_WorkingDir%からの相対パスで指定したいので、MsgBoxで出力してみると 最後の \ までは 入ってませんでしたので、 \dest とdestの前に\をつけてみました。最初は\なしでやってたの ですが、どうしてもうまく動作しないので・・・。何がいけないんでしょうか?
679 名前:名無しさん@お腹いっぱい。 mailto:age [2008/06/10(火) 21:53:49 ID:SOxaqh3l0] すみません、文字列の扱いについてお聞きしたいのですが、 どういうときに " "をつけて囲んで文字列と認識させる必要があるのでしょうか? " " で囲まずにMsgBoxで出しても囲んでMsgBoxで出しても同じ結果が返ってくるかと 思いきや、囲んでないと何も出てこない時もあり、混乱しています。 普通C言語やJavaでは文字列は必ず " " で囲む物ですが、AHKではその辺 どうなってるのでしょうか?例えば MsgBox, 文字列 だと「文字列」が出力され、 strValue := 文字列 MsgBox, %strValue% だと空文字・・いやnullなのかな?どっちか分かりませんが「文字列」が出力されずに 何も出てきません・・・。
680 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/10(火) 22:02:45 ID:fQ25LVyb0] >>679 × strValue := 文字列 ○ strValue = 文字列 :=は、数値の計算結果を代入するときとかに使う。 よって右が文字の場合は、計算のしようが無いので空白になる
681 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/10(火) 22:35:38 ID:BhGK1USa0] := 使いたい時こそ " "で囲め × strValue := 文字列 ○ strValue := "文字列"
682 名前:679 mailto:age [2008/06/11(水) 00:28:19 ID:fVOKMAhU0] レスありがとうございます。 なるほど、分かりました〜。
683 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/11(水) 01:01:13 ID:Vk8WnOSz0] str=hoge (変数strの中にhogeという文字列がある)として、 a=hoge a:="hoge" a:=str a=%str% 以上のaの中はすべて文字列hogeである また、次のif文もすべて同じ if a=hoge if a=%str% if (a="hoge") if (a=str)
684 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/11(水) 02:12:24 ID:6MnSS32m0] 横から見ているだけでも役に立つスレだ
685 名前:679 mailto:age [2008/06/11(水) 07:55:51 ID:fVOKMAhU0] >>683 おお〜、ありがとうございます〜・・・ なるほど・・・道理で素人の私が混乱するわけですよ・・・ 色々な書き方があるんですねぇ・・・。 if(a == "hoge") みたいな、 =(等しいか?)の変わりに ==(等しいか?)を使っても全く同じですか? だとしたらどうしてこんな演算子があるんだろうかと・・・。 それと自分で試行錯誤して理解したのですが Loop, 5 { でブロック開始しないとLoopは正常に処理されない Loop, 5 { で開始するとなんかmissing "{" とかエラーが出て・・・。 でもif文は if(a == "hoge") { で開始しても if(a == "hoge")
686 名前:679 mailto:age [2008/06/11(水) 07:58:36 ID:fVOKMAhU0] 途中で書き込んでしまいました。 でもif文は if(a == "hoge") { で開始しても if(a == "hoge") { で開始してもどちらも問題なく動きます。 それとかif(a == str) { と% % で囲まずに変数名指定するだけで中身を見てくれるのに IfWinExist, str { とかだと うまく動作せずに、 IfWinExist, %str% としないとだめのようです。 そしてこの構文も IfWinExist, %str% { ってやるとエラーが出て IfWinExist, %str% { ってやると正常に動作するんですよ・・。正直言語仕様を理解するのが凄く大変です・・・。 どうしてこんなにトリッキーなんだろう・・。普通のJavaやCと同じような感じにしてくれれば・・・
687 名前:TpMOPuLyPJNoLl mailto:qzfykuue@vcgqowhp.com [2008/06/11(水) 08:02:18 ID:5Nax1wDx0] comment2, <a href="www.titaniuexport.kiev.ua ">titanium sheets</a>, [url="www.titaniuexport.kiev.ua "]titanium sheets[/url], www.titaniuexport.kiev.ua titanium sheets, >:PPP,
688 名前:yOUAjPuxjrUJV mailto:uvcgwhvk@hgdeslns.com [2008/06/11(水) 08:13:50 ID:+P08aPt30] comment6, <a href="doorppcpc.com/dinosaurs/coloring-pictures-of-dinosaurs.html ">coloring pictures of dinosaurs </a>, doorppcpc.com/dinosaurs/coloring-pictures-of-dinosaurs.html coloring pictures of dinosaurs , atbow, <a href="doorppcpc.com/dinosaurs/when-dinosaurs-went-extingged.html ">when dinosaurs went extingged </a>, doorppcpc.com/dinosaurs/when-dinosaurs-went-extingged.html when dinosaurs went extingged , =[[, <a href="doorppcpc.com/medicine/humphries-medicine.html ">humphries medicine </a>, doorppcpc.com/medicine/humphries-medicine.html humphries medicine , lsj,
689 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/11(水) 09:13:53 ID:FV4NCQQL0] >>686 始めは %str% しか使えなかったんだよ わかりにくいからって後から従来言語互換を追加していった結果カオスになった。 ちなみに if(a == "hoge") だと厳密な文字列チェック(大文字小文字区別) if(a = "hoge") はStringCaseSense依存、デフォだと Hoge、HOGE でもOK
690 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/11(水) 09:52:21 ID:1HOSiKnd0] 後方互換をちゃんと取ってるのはいいけど、古い仕様はobsoleteで非推奨 ってちゃんとドキュメントに書いてくれたらいいのに
691 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/11(水) 13:47:40 ID:uoudNQeM0] そこら辺たしかになんとかして欲しいな。 時々しかスクリプト書かないので 一度覚えてもすぐ忘れて間違えてしまう。
692 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/11(水) 14:20:51 ID:OcZxtXTQ0] >>691 わかる。最初AHKでと思うんだけど、すぐに面倒になってHotKey以外の部分は UWSCで書き出す自分…
693 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/11(水) 15:16:17 ID:JuWezgpD0] 逆に俺はAHKに慣れすぎてたまにvbsとかjsかくと無意識に変数を%で囲ったりしてる
694 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/11(水) 16:52:35 ID:rC/xuCxH0] 俺も変数の使い方の部分で1週間ぐらい悩んだな 今でもたまに間違うし
695 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/11(水) 17:20:20 ID:GfcCYN010] 覚えるのもあほらしいから 毎回何パターンか試して動いたらおkってことにしてるお
696 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/11(水) 21:16:10 ID:6MnSS32m0] 俺は、%で囲う作業すら面倒になったので、 Win+Vを押すと、クリップボードの内容に%〜%をつけて出力するようにした string=%Clipboard% string=`%%string%`%
697 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/11(水) 22:11:00 ID:P7T3f9Wt0] お前ら丸暗記しようとするから混乱するんだよ 値で扱うか、式で扱うかだけだよ 値で扱う物は文字列は値となるので、変数を使いたい場合に%%で展開しなければならない。 式で扱う物は文字列は変数になってしまうので、文字列を値で扱う為には""で囲まなければならない。 (値) : (式) コマンド : 関数 = : := if : if() さらに大まかに分けると、:=と()内は式が使えるとだけ覚えればいい
698 名前:名無しさん@お腹いっぱい。 [2008/06/12(木) 10:10:17 ID:LFiheMSR0] こんにちは。最近AutoHotKeyを使い始めました。 PDF-XChange Viewer にて、以下のように スペースキーを右矢印 シフト+スペースキーを左矢印 に置き換えようとしたのですが、 シフト+スペースキーが効きません。 ; for PDF-XChange Viewer #IfWinActive ahk_class DSUI:PDFXCViewer +Space::Left Space::Right #IfWinActive AutoHotKeyのKey history and script infoでみたいたところ、 Left以外に最初に押したシフトが押されたままになってしまっています。 ところが、PDF-XChange Viewerでは、シフト+右矢印は無効になります。 (右矢印のみは問題ない) シフト+スペースを押したときに、右矢印のみを押すことはできないでしょうか? つまり、シフト+スペース時に、シフトを無効にしたいのですが・・・
699 名前:698 [2008/06/12(木) 10:29:25 ID:LFiheMSR0] これでいけました! ; for PDF-XChange Viewer #IfWinActive ahk_class DSUI:PDFXCViewer +Space:: Send {Left} return Space::Right #IfWinActive お騒がせしました。ご協力いただきありがとうございました。
700 名前:698 [2008/06/12(木) 10:30:33 ID:LFiheMSR0] あ、returnは余計でしたね。一行でいけるのか +Space::Send {Left}
701 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/12(木) 18:08:31 ID:FoxozYwL0] マウスをドラッグ中にカーソルを変更したいのですが、 AHKスクリプト内で、マウスカーソルを変更する方法はありますか? 現在のカーソルの種類を読み出すコマンドはあるようですが、 指定する方法は見つけられない状態でして・・・