■ このスレッドは過去ログ倉庫に格納されています
AutoHotkey スレッド part20
- 1 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:43:46.23 ID:/POZTSd60.net
- ■配布元
http://ahkscript.org/download/
2014年1月からAHKLのLが取れて正式にAHKの主流扱いになりました。
新規利用者には日本語の扱いで不具合の無いユニコード版の利用を推奨。
「Autohotkey」でググると旧版(2009年09月25日 Ver104805)の公式ページ
http://www.autohotkey.com/ がTopに来るので注意。
■前スレ
AutoHotkey スレッド part19
http://anago.2ch.net/test/read.cgi/software/1411360229/
■日本語解説等
AutoHotkey Wik
http://ahkwiki.net
AutoHotkeyを流行らせるページ(ミラー)
http://ahk.xrea.jp/ (不調時は http://hdd.s300.xrea.com/ahk/ )
AutoHotkeyJp(過去ログdatあり)
http://sites.google.com/site/autohotkeyjp/
Autohotkey日本語ヘルプ(chmファイル)
http://www6.atwiki.jp/eamat/
Autohotkey専用うpろだ
http://ux.getuploader.com/autohotkeyl/
簡易スクリプト掲示板
http://pastebin.com/
■派生版
IronAhk (.NET製、クロスプラットフォーム)
http://www.ironahk.net/
AutoHotkey.dll (真のマルチスレッド対応など, AHKLの派生)
http://www.autohotkey.com/board/topic/39588-autohotkeydll/
- 2 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:44:21.94 ID:/POZTSd60.net
- ■重要事項
オリジナルである、旧 "AutoHotKey" の開発は2009年9月で終了している。
現在は、そこからフォークした "AutoHotkey_L" が主流となり、2014年1月からは後のLが取れ
正式にAutohotkeyとして扱われるようになりました。
よって古いスクリプト(主にDllCall()を利用しているスクリプト)は最新Verで動作しないものがあり、
その場合はスクリプトの修正が必用です。
旧版のAHKとの変更点多数。新しい仕様や互換性についてはドキュメントを良く読むこと。
→http://ahkscript.org/docs/AHKL_Features.htm
→http://ahkwiki.net/Addition_L
※新規利用者には最新版を推奨しますが、旧AHK(2009年9月までのVer)の利用者は新AHKへの移行に際して
少なからず改修が必要となります。特に、旧流行らせるページの配布物(MouseGesture等)の多くは
そのままでは動作しません。安定利用できている環境を崩して移行するかどうかは各人の判断による。
MouseGestureについては有志の方が最新AHK対応版(MouseGestureL.ahk)を配布しているのでそれを
利用するのもありです。
http://hp.vector.co.jp/authors/VA018351/mglahk.html
http://code.google.com/p/mousegesturel/
※ACC.ahkとCOM.ahkはフォーラムのリンク先にファイルが存在しませんので下記から入手してください。
http://ux.getuploader.com/autohotkeyl/download/24/ACC%2BCOM.zip
■質問に際して
OSの種類(XP/Vista/7)や32/64ビット版の違い、利用するAutoHotkeyのバージョンを明記すること。
また、操作したいソフト・やりたい処理などは具体的に書いた方がレスが付きやすい傾向にある。
2chの仕様の関係で、このスレではインデントに全角スペースを使ってコードを貼り付ける事があるので、
レスをコピペして利用する場合は行頭の全角スペースをタブ等に置換してから利用すること。
- 3 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:44:58.81 ID:/POZTSd60.net
- ■過去スレ
@http://pc7.2ch.net/test/read.cgi/software/1098531338/ Attp://pc7.2ch.net/test/read.cgi/software/1129836713/
Bttp://pc11.2ch.net/test/read.cgi/software/1157043396/ Cttp://pc11.2ch.net/test/read.cgi/software/1184556627/
Dttp://pc11.2ch.net/test/read.cgi/software/1201502896/ Ettp://pc11.2ch.net/test/read.cgi/software/1219130051/
Fttp://pc12.2ch.net/test/read.cgi/software/1230694774/ Gttp://pc12.2ch.net/test/read.cgi/software/1243005818/
Http://pc12.2ch.net/test/read.cgi/software/1253888736/ Ittp://pc12.2ch.net/test/read.cgi/software/1265518996/
Jttp://hibari.2ch.net/test/read.cgi/software/1280482227/ Kttp://hibari.2ch.net/test/read.cgi/software/1296446228/
Lttp://anago.2ch.net/test/read.cgi/software/1317156599/ Mhttp://anago.2ch.net/test/read.cgi/software/1333372506/
Nhttp://anago.2ch.net/test/read.cgi/software/1349735581/ Ohttp://anago.2ch.net/test/read.cgi/software/1367725658/
Phttp://anago.2ch.net/test/read.cgi/software/1383384464/ Qhttp://anago.2ch.net/test/read.cgi/software/1398655195/
Rhttp://anago.2ch.net/test/read.cgi/software/1411360229/
以下FAQ等
■実行環境
Q1:スクリプトに書いた日本語が文字化けしちゃうんだけど...
A1:スクリプトファイルを「UTF-8」の「BOM」付きで保存する。(AHKLの場合)
Q2:初めて使うけどどれを使えばいいの?
A2:AHKLのユニコード版を推奨。
旧流行らせるページの配布物をそのまま使う場合は本家をそのまま利用する事。
64ビットOSでAHKL32ビット版の使用は制約が多いので、64ビット版を強く推奨。
- 4 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:45:32.13 ID:/POZTSd60.net
- ■ リマップ・ホットキー割り当て
Q1:[CapsLock(英数)][ひらがな][全角/半角]キーの割り当てがうまくいかないよ
A1:OSのローカライズ段階で発生してる問題なので日本語環境だとLock系キーの動作は不定。
OS側がキーUp/Down情報を正しく返してこないのでAHKのみで対処は無理です。
レジストリ変更等で別キーへ再配置を行い、AHKで割り当てを行うという二段構えが必要。
例) ChangeKeyを使って[ひらがな]を[F13]にする
AutoHotkeyで任意のキーをF13にリマップする(例えばF12をF13にリマップし、スクリプトを実行)。
F12::F13
Changekeyを起動する。( http://www.forest.impress.co.jp/library/software/changekey/ )
「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。
F12を押すとスキャンコード(0x0064はF13)が表示されるので覚えておき「終了」をクリック。
「ひらがな」キーをクリックすると「【ひらがな】キーをどのキーに変更しますか?」という
ウィンドウが表示されるので右上の「Scan code」をクリック。
覚えておいたスキャンコード(0064)を入力し、「OK」ボタンをクリック。
「登録」をクリックし、Windowsを再起動する。
Q2:「^1::Esc」とリマップ定義したけど [Ctrl]+[1] を押したらスタートメニューが出ちゃうけどどうすればいいの?
A2:リマップは修飾キー(Ctrl,Shift,Alt,Win)の押下状態を引き継いでキー発行するので、[Ctrl]+[Esc] がキー送信されるため。
これを避けるには、「Send」コマンドを利用して明示的に修飾キーなしのキーを発行をすればよい。
^1::Send, {Esc}
Q3:[Shift], [Ctrl], [Alt], [Win]以外を修飾キーとしてキー割り当てしたいよ
A3:コンビネーションキーの機能で実現ができる。
例) 無変換 + IKJLキーをそれぞれ「↑↓←→」に割り当てたい場合は以下のように記述する。
sc07B & I::Send, {Blind}{Up}
sc07B & K::Send, {Blind}{Down}
sc07B & J::Send, {Blind}{Left}
sc07B & L::Send, {Blind}{Right}
- 5 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:46:53.52 ID:/POZTSd60.net
- Q4:「XX hotkeys have been received in the last XXXXms.」って怒られるんだけど、、、(XXは環境による)
A4:多分自分自身のキーを送って無限ループになっている。 例) 「a::Send, a 」
先頭に $ を付ければ回避できる(NT系のみ)。 例) 「$a::Send, a」
#UseHookで全部にキーボードフックを適応する方法でも可。
Q5:キーリマップを使うとキー押下中に連打するけど、マウスボタンの場合は連打しない…
A5:マウスはキーリピートしないので、Loopなどを使って自前でリピートさせてください。
Q6:ジョイスティックのリマップがうまくいきません!!助けて
A6:ジョイスティックではリマップできない。「Send」コマンドでキー発行する必要がある。
× Joy1::Esc
○ Joy1::Send, {Esc}
Q7:ジョイスティックの上下左右に割り当てたいけど、JoyLeft,JoyUpってホットキーは無いの?
A7:無い。AHKのジョイスティックサポートはかなり貧弱なのでプログラマブルにやる必要がある。
Q8:ジョイスティックのボタン1とボタン2の入れ替えなどはどうやってやるの?
A8:AutoHotkeyではできない。
- 6 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:47:31.55 ID:/POZTSd60.net
- Q9:[Ctrl][Shift][Alt]が押されっぱなしになる時がある。これってAHKのせい?
A9:AHKが原因の場合とそうでないときがある
○AHKが原因の場合
AHKには、以下のような修飾キー付きのホットキーで修飾キー無しでキーを発効する場合、
一時的に修飾キー押下を解除して、発効後に押下状態を再度設定する機構がある。
しかしこのように発効するキーストロークが多い場合は、Sendコマンドが完了する前に
物理キーが押下解除されてしまっている場合がある。この齟齬が押しっぱなしの原因となる。
例) ^W::Send, {w 30}
これを回避するためには、以下の方法をとればよい:
・キー押下状態を常に監視するキーボードフックを導入する(#InstallKeybdHook)
・キー発効のコマンドを SendInput, SendPlay にする(SendModeで一括指定でもよい)
・上記二つが出来ない場合は、SetKeyDelay, 0 等としてキー発効をなるべく早く行うか、
#HotkeyModifierTimeout で修飾キー押下のタイムアウト値を長めに設定をする。
なお、他のキー発効を行うツール(クリップボードユーティリティやマウスジェスチャツールなど)が、
発効する修飾キーが原因となる場合もあるが、フックの導入でほぼ解決出来ると思われる。
○AHK以外が原因の場合:
環境により異なるので何とも言えないが、以下のような環境の場合発生する事が報告されている。
・ Logicool(Logitec)のマウスユーティリティSetPoint(verによっては問題ない事もあるとか)
・VirtualPC, WMWare, 窓使いの憂鬱 等のキーボードフィルタドライバを用いるアプリケーションを使っている
- 7 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:48:07.29 ID:/POZTSd60.net
- ■ IME関連
Q1:IMEのOn/Offの切り替えや、状態を得るにはどうすればいいの?
A1:http://www6.atwiki.jp/eamat/pages/17.html の「IME.ahk」を使いましょう。
Q2:IMEが現在文字を入力している、または変換中であるかどうかを得ることはできる?
A2:↑のIME.ahkで一部可能(IEやFirefox,MS-Wordのようにインライン化しているアプリでは無理)
■ その他
Q1:「a=abc」と「a:="abc"」って違いがある? / 「If a=1」と「If (a=1)」って違いがある?
A1:意味としては違いは無い。単体では、コマンド形式(共に前者)の方が「式」形式(同後者)より*少し*速い。
複数条件の場合、IfのネストよりはAND(&&)条件で「式」を並べた方が速い。
が、バッチでかなりの回数(数万↑〜)回したりする場合以外は、体感出来るほどの差はない。
Q2:テキストエディタでキーワードの色づけなどをしたいんだけど。
A2:wikiに各種エディタの定義ファイル及びキーワード一覧あり。( http://ahkwiki.net/Tools )
Q3:GUI作るのめんどくせ〜〜
A3:海外の有志が作ったツールを使うと楽。
SmartGUI Creator ( http://www.autohotkey.com/board/topic/738-smartgui-creator/ )
GUI Creator ( http://ahkscript.org/boards/viewtopic.php?f=6&t=303 )
Q4:AHKってマルチスレッドじゃないの?
タイマーやMsgBox, WinWait, KeyWaitを使ってるけど思った通りに動かない。
A4:「擬似マルチスレッド」です。最後に割り込んだスレッドが終わるまで元スレッドは動きません。
MsgBox、WinWait、KeyWait、Process,WaitClose などをタイマーで複数動かす時は注意。
> 要は処理系統が複数同時に走らないってこと。図にするとこんな感じ。
> → 実行中、 …:割り込み終了待ち
> 元スレッド →→→→→→……………………………………→→→→
> ★割込 ↑再開
> 割り込みスレ →→→→…………→→→→→→END
> ◆割込 ↑再開
> 更に割り込み →→→END
- 8 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:50:43.70 ID:/POZTSd60.net
- Q5:AHK、AHKLx86、AHKLx64の共存は出来る?
A5:それぞれを違うフォルダ(ディレクトリ)にインストールすれば共存できます。
但し、インストーラーを使って最後にインストールしたAutohotkey(Normal or x86 or x64)
に対してahkファイルの関連付けが行われますので、レジストリエディタ(Regedit.exe)や
FileTypesMan等のツールを使って関連付を変更してください。
ahkファイルをAHK Normal、ahlファイルをAHKLx86、ah6ファイルをAHKLx64といったように
別々の拡張子に関連付けが可能です。
それぞれに関連付けしたファイルに対してドラッグアンドドロップを有効にするにはレジストリの
[HKEY_CLASSES_ROOT\ファイルタイプの名前\ShellEx\DropHandler]
の (規定) のデータを {86C86720-42A0-1069-A2E8-08002B30309D} にする。
Q6:Windows Vista(以降)で管理者権限のウィンドウ操作やSendPlayが効かないんだけど?
A6:OSのセキュリティ機能であるユーザーアカウント制御(UAC)にブロックされている。
■回避策
1:管理者として実行
Autohotkey.exeを右クリックしてプロパティを開き、「互換性」→「管理者としてこのプログラムを実行する」にチェック。
スクリプトに記載する方法もある( http://www.autohotkey.com/board/topic/94126-ahk-problem-with-uac-and-privileges/ )
2:対策パッチ
実行ファイルのマニフェスト書き換え、自己署名証明書のインストールが行われる。
※AutoHotkey.exeはProgram Files以下に置く必要がある。
http://www.autohotkey.com/board/topic/70449-enable-interaction-with-administrative-programs/
3:UAC停止 ※注意!! 必ずHIPS機能がある他のセキュリティ対策ソフトを導入してください。
「コントロールパネル」→「ユーザーアカウント」
Vista:「ユーザーアカウント制御の有効化または無効化」→ チェックボックスをオフ。
7/8/8.1:「ユーザーアカウント制御設定の変更」→ スライドバーを一番下に。
※Windows 8/8.1では上記に加えレジストリを変更する必要があります。(注意:Windowsストアアプリが実行できなくなる)
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System
「EbableLUA」の値を「0」に変更。
- 9 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:51:41.08 ID:/POZTSd60.net
- ■AutoHotkeyの系譜
┌ AHK64(統合)
│
AutoIt .│ ┌ AHK_U(統合)
│ │ │
AutoHotkey(1.0) ─ Autohotkey_L ┬ Autohotkey(1.1) ←いまここ
│ │ │
└ IronAHK× │ └ Autohotkey v2(α版)
│ │
└ AutoHotkey.dll .├ AutoHotkey_H v2
│ │ │
│ └ AutoHotkey_H
│
└ AutoHotkey_N×
■メインストリーム
AutoHotkey 1.0(開発終了)
http://www.autohotkey.com/
Autohotkey 1.1 (Autohotkey_L)
http://ahkscript.org/
■開発中
Autohotkey v2(下位互換性を排除して操作利便性の向上)
http://ahkscript.org/v2/
- 10 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:52:16.58 ID:/POZTSd60.net
- ■派生版
IronAhk(.NET製、クロスプラットフォーム。開発終了)
http://www.ironahk.net/
AutoHotkey.dll(真のマルチスレッド対応)
http://www.autohotkey.com/board/topic/39588-autohotkeydll/
AutoHotkey_N(開発終了)
AutoHotkey_H
http://www.autohotkey.net/~HotKeyIt/AutoHotkey/files/AutoHotkey-txt.html
■統合
AHK_U(Unicode版)
http://www.autohotkey.com/board/topic/46563-unicode-version-of-autohotkey/
AHK64(64bit版)
http://www.autohotkey.com/board/topic/53878-autohotkey64-64-bit-autohotkey-l-updated-62410/
■スクリプト作成支援ツール
AutoHotKey専用エディター ※必須ではありあせん。
SciTE4AutoHotkey
http://fincs.ahk4.net/scite4ahk/
GUI作成ツール
SmartGUI Creator
http://www.autohotkey.com/board/topic/738-smartgui-creator/
GUI Creator
http://ahkscript.org/boards/viewtopic.php?f=6&t=303
- 11 :名無しさん@お腹いっぱい。:2015/01/28(水) 18:08:13.16 ID:/+bq3MWi0.net
- ● 分からない理由 ●
1. 過去ログを読まない。
2. 読んでても肝心な所が見えてない。
3. 検索能力が低い。
4. そもそも検索する気がない。
5. 類推という概念がない。
6. それ以前に普通に頭が悪い。
<わからない11大理由>
1.読まない …現行スレ、テンプレ、取説などを読まない。読む気などさらさらない。
2.調べない …過去スレ、ググるなど最低限の内容も自分で調べようとしない。
3.試さない …めんどくさいなどの理由で実行しない。する気もない。
4.覚えない …人から聞いて、楽して得た答えは身に付かないから、すぐに忘れる。
5.説明できない …何に困っているのか、第三者に正確に伝わる文章が書けない。
6.理解力が足りない …理解力以前の問題で理解しようとしない。
7.人を利用することしか頭にない …甘え根性でその場を乗り切ろうとする。
8.感謝しない …教えてもらって当たり前。事がすんだらさようなら。
9.逆切れする …自分の思うようにならないと逆切れする。
10.開き直る …自分の思うようにならないと開き直る。
11.2ちゃんねるをお客様相談室だと思っている。
- 12 :名無しさん@お腹いっぱい。:2015/01/28(水) 18:08:41.51 ID:/+bq3MWi0.net
- ★教えて君五大要素★
1 読まない (文盲)
2 調べない (能なし)
3 試さない (発想力欠如のアホ)
4 理解力が足りない (馬鹿)
5 人を利用することしか頭にない (死ね)
YES → 【見つかった?】 ─ YES → じゃあ聞くな死ね
/ \
【探した?】 NO → なら、ねぇよ
\
NO → 死ね
■回答できるレベルの人へお願い■
このスレは親切な人が多いと思うけど、もう日記に対する検証&レスは、
たとえ対処法をわかっている人がいても、レスは一切やめにしてくれないか?
こいつがやってることは
「適当にコード作ってみたけど動かない。動かない原因を調べるのも面倒だし、
学習する気もない。どうせここに書けばおまえらが修正するだろうから誰か直して」
ってことだ。しかも、一度だけならまだしも、何度も繰り返している。
これまでに、このスレではこの手の質問者は居なかったと記憶する。
いつまでもこんなクズにつきあう必要はない。
汎用性のないコードでスレが汚されるのは、結果的に良質な情報が
埋もれる原因になって迷惑だし、横から見ていても参考にならないし、
なによりも見ていて不快でしかない。
- 13 :名無しさん@お腹いっぱい。:2015/01/28(水) 18:09:09.25 ID:/+bq3MWi0.net
- スレをひと通り読めば分かると思うんだが、
「○○という処理をするにはどういうコードを書いたらできますか?」 ではダメなんだよ
↓
「○○という処理をすることを目的に、このようなスクリプトを組みましたがうまく動きません
どこを修正すればいいですか?」 という聞き方にしてみればいいじゃん
もっと言えば、「動かない」だけではなく、「××といった想定外の動作になります」ならベター
スクリプトをロクに書かずに答を教えてくれ、では単なるクレクレとみなされるということ
なぜそれが嫌がられるかと言えば、自分で学ぼうとも調べようともせずに、またクレクレするだろうと
思われるからさ
- 14 :名無しさん@お腹いっぱい。:2015/01/28(水) 20:29:16.25 ID:X/kNxoKN0.net
- テキストファイル操作の内、ファイルの中身を消して新規書き込みをしたいんですが、
FileAppendで最初の引数を空にして書き込んでから、
さらに同じファイルに対してもう一度FileAppendして上書き、
っていう手順踏まなきゃだめなんですか?
一発で、ファイルの中身を消す→新規書き込み、をしたいんですが
何か方法ありますか
- 15 :名無しさん@お腹いっぱい。:2015/01/28(水) 21:01:06.60 ID:Pp0/wm8q0.net
- >>14
FileOpen()のWrite使えばええやん?
- 16 :名無しさん@お腹いっぱい。:2015/01/28(水) 21:21:36.88 ID:X/kNxoKN0.net
- >>15
なるほど、って思って使ってみたんですが、
何かファイルの中身がなくなるだけで書き込みの方ができません
なんか使い方勘違いしてますか?
file := FileOpen("C:\Hour.txt" , "w")
file.Write(%A_Hour%)
- 17 :名無しさん@お腹いっぱい。:2015/01/28(水) 21:34:02.84 ID:Pp0/wm8q0.net
- >>16
最後にfile.Close()
- 18 :名無しさん@お腹いっぱい。:2015/01/28(水) 21:35:06.70 ID:nOerFSIe0.net
- %A_Hour%→A_Hour
- 19 :名無しさん@お腹いっぱい。:2015/01/28(水) 21:40:43.96 ID:X/kNxoKN0.net
- >>17
>>18
できました!ありがと3です
- 20 :名無しさん@お腹いっぱい。:2015/01/29(木) 20:12:22.89 ID:fr5eZeEy0.net
- なかなか埋まらなかった前スレが、ネタレスのお陰でやっと埋まったようだなw
- 21 :名無しさん@お腹いっぱい。:2015/01/29(木) 21:22:56.97 ID:WtZquUFY0.net
- AHKってマウスボタンの4個目以降はホットキーとして使えないであってあるよね?
今まで本家にそういう要望はなかったんだろうか・・・カスタムしたい
- 22 :名無しさん@お腹いっぱい。:2015/01/29(木) 21:38:06.85 ID:mH9Fj39D0.net
- >>21
OSがサポートしているのがXButton2まで
サイドボタン3個目以降はマウス側でF13等に割り当ててからホットキーにする
- 23 :名無しさん@お腹いっぱい。:2015/01/29(木) 22:00:30.37 ID:WtZquUFY0.net
- >>22 了解、ありがとう助かった
- 24 :前スレ994:2015/01/29(木) 22:52:24.16 ID:bBH6jDc40.net
- 終わり間際の前スレで質問してしまった…
995(アンカー付けるとこのスレのその番号に迷惑かけるのでアンカーは無しで)
どっちも検索で見付かった、キーに最大化を割り当てるやり方とかで、キーを押すんじゃなく起動したソフトは全部最大化させたいのでキーや元の大きさに戻すとかの部分は消してみたのがあれでして…
996
まとめてというか、別々で全部と言えば良いでしょうか
はい、よくわかってないので何がなにやら
997
それは…きっと何かが起きるのでは無いでしょうか…(笑)
- 25 :名無しさん@お腹いっぱい。:2015/01/29(木) 23:22:55.53 ID:fr5eZeEy0.net
- >>24
悪いことは言わないから、「Maximize Assistant」という常駐ソフト使った方が良いよ。
ウインドウ(ソフト)一つに付き一つずつ設定していくか、設定次第では一つ設定するだけで全てのウインドウに適用できるかも知れない。
- 26 :名無しさん@お腹いっぱい。:2015/01/30(金) 00:52:30.78 ID:FiR08TSa0.net
- 前スレ終了の流れ
とりあえず厚顔無恥なクソやろう共と単純にわかってなくて支離滅裂になってる子を
同列にくさすのはやめようや
>>24
コピペはる前にコマンド説明くらいは読もう、で段階踏んで実行してみる
まずはアクティブウィンドウズでwinMaxmizeできるようになる
そしたらWinGet,outputver,list ですべてのウィンドウのIDリスト取得して
ループでぐるぐる回して一個ずつWinMaxmize
http://ahkwiki.net/WinMaximize
http://ahkwiki.net/WinGet
まあ>25の言うとおりアプリで何とかできるならそのほうがいいかもね
- 27 :名無しさん@お腹いっぱい。:2015/01/30(金) 06:50:20.24 ID:26CQmxX20.net
- 普通の権限で起動したAHKから管理者権限で起動するにはRun,*RunAsを使えば良いですが、管理者権限で起動したAHKから普通の権限で起動させるには、MouseGestureLのようにRunAsでユーザー名とパスワードを使わなければならないんでしょうか
- 28 :名無しさん@お腹いっぱい。:2015/01/30(金) 08:00:26.46 ID:jZoxhTfl0.net
- >>24
前スレで「起動したソフト全てを常時最大化したく」って書いてたけど最小化を無効化したいってこと?
そうすると>>26に加えてタイマーで監視する必要もある
>>27
逆に聞くけど、それ以外にどんな方法(機能)を望んでいるんだw
- 29 :名無しさん@お腹いっぱい。:2015/01/30(金) 14:48:47.46 ID:FkIw8rOi0.net
- >>28
昇格させたウィンドウで使えなくなるので管理者権限にしたいのですが、スクリプトを共有してるのでそういう情報は書き込みたくないなと
起動毎に環境変数に入力しかないかなあ
- 30 :名無しさん@お腹いっぱい。:2015/01/30(金) 15:53:31.32 ID:NIBcyWF10.net
- 質問です。半角全角をEscにしてカタカナひらがなをEscにする設定を教えてください。
以下のコードでは片方ずつなら設定されますが両方同時には設定できませんでした。
#SingleInstance force
#InstallKeybdHook
#InputLevel 1
SendMode Input
SetKeyDelay, -1
SetMouseDelay, -1
SetBatchLines, -1
#UseHook On
*sc029::Esc
*sc070::sc029
#UseHook Off
- 31 :名無しさん@お腹いっぱい。:2015/01/30(金) 17:09:47.11 ID:qoVrIGAM0.net
- >>27 >>29
>管理者権限で起動したAHKから普通の権限で起動させるには
>昇格させたウィンドウで使えなくなるので管理者権限にしたい
管理者権限のある人だけ常に管理者として実行するってことか?
Autohotkey.exe→互換性→特権レベル にチェック
>>30
フックを使うとAHKが発行したキーイベントではホットキーは反応しない
#UseHook
*sc029::
*sc070::Esc
- 32 :名無しさん@お腹いっぱい。:2015/01/30(金) 17:25:29.85 ID:WEbmw/5q0.net
- >>31
以下のようにコメントアウトしてインプットレベルをデフォルトに戻すと動作するようになりました
ありがとうございました
;#InputLevel 1
- 33 :24:2015/01/30(金) 19:54:10.13 ID:bICDVRkA0.net
- レスありがとうございます。
>>25
以前最大化専用ソフトを検索してvectorだったかで数個入れたのはwin8に対応していなくて使えず、他のソフトを使わずAHKで出来るならベストだなと思ったので。
>>26
書いてあったページ他で説明は読んだのですがこれにはこれが必要とかこれはこうする為にあるとか、詳しく、はっきりと書かれてる所が無くて不要部分を削ってみたり - にしてみたりしました。
貼って頂いた上のページは読んでいたのですが、簡素過ぎて初心者には全然分かりませんでした。
下のwingetの方は詳しく書いてますね。
逆に難解ですがコマンドの意味などがわかるのでよく読んでみます。
アプリでなんとか出来るならその方が良いってレベルの難しい事なんですか?
AHKの得意分野かと思って(特定のアクションが起きたら指定した事をやらせる)実現しやすい事だと思っていました。
書いて頂いた事をコードにしてやってみます(ループなんかは全く使い方理解出来て無くて一生ループしそうで怖いのですが)。
ありがとうございました。
>>28
起動後って事ですよね。
いえ、起動時に最大化だけしてくれれば一応それで充分です。
紛らわしい書き方してすみません。
- 34 :名無しさん@お腹いっぱい。:2015/01/30(金) 20:37:22.97 ID:FiR08TSa0.net
- いや、AHKの得意分野だし実現しやすい内容だよ
ただ君がそこにたどり着ける気がしないだけで
とりあえずここで長文全レスしてても事態は進展しないので
リファレンスのイントロダクションからその他解説まで順に読め
http://ahkwiki.net/Reference
- 35 :24:2015/01/30(金) 23:41:55.74 ID:bICDVRkA0.net
- >>34
やっぱりそうなんですね。
土日で読んでみます。
何度もありがとうございました。
- 36 :名無しさん@お腹いっぱい。:2015/01/31(土) 07:57:23.98 ID:iw/y08fB0.net
- >>31
・管理者権限で起動したウィンドウにフォーカス当たってるとAHKが効かない
→AHKを管理者で起動すれば効くらしい
→AHKを昇格させるとRunで起動するソフトも管理者に
→MGLで対策用の関数があったがRunAs使うためユーザー名とパスワードが必要
⇒ユーザー名とパスワードを入力しない方法があったりしないかな
知りたかったのは管理者として実行しない方法なのでAHKを管理者として実行する方法ではないです
- 37 :名無しさん@お腹いっぱい。:2015/01/31(土) 08:53:02.18 ID:gTibSzyx0.net
- 試せる環境ないので実現可能なのかわからないけど
AHKコマンドでRunAs実行じゃなく、RunAs.exeを一般ユーザ権限オプションで実行するのは?
Run, RunAs.exe /trustlevel:0x20000 〜
http://www.k-tanaka.net/cmd/runas.php
- 38 :名無しさん@お腹いっぱい。:2015/01/31(土) 10:43:58.59 ID:u0ve/ASt0.net
- >>33
ttp://ahkwiki.net/Run
最大化して起動したいだけならこんなコマンドもあるぞ
- 39 :名無しさん@お腹いっぱい。:2015/01/31(土) 13:02:34.52 ID:iw/y08fB0.net
- >>37
ありがとうございます、やってみました
cmdを起動させたら「管理者: cmd (○○\○○として制限された特権で実行中)」とタイトルに出ました
どうやら少し違うようです
- 40 :名無しさん@お腹いっぱい。:2015/01/31(土) 19:06:40.39 ID:uuQmSKf30.net
- http://lukewarm.s101.xrea.com/test/read.cgi/bbs/1146398137/65
thumbremapの64bit化に挑戦しています
TP_DW=0x01000000
NumPut(TP_DW | 10 ,ibuf+4*0) ; TP_DeviceHandle,
NumPut(TP_DW | 729 ,ibuf+4*1) ; TP_PacketFingerInfo,
(中略)
DllCall("DeviceIoControl",UInt,hDev,UInt,0x80006004,UInt,ibuf,UInt,ilen,UInt,obuf,UInt,olen,UIntP,bytes,UInt,0)
この
0x01000000 | 729や 0x80006004という値はどうやって得られたものなのでしょうか?
- 41 :名無しさん@お腹いっぱい。:2015/01/31(土) 23:35:01.26 ID:3bXCUNEB0.net
- 彼が書いたはコメント少な目な最小コードなので、
API仕様読むとか、ヘッダファイル見るとか色々しないと分からない。
特にビットORで合算したものは難儀だね
- 42 :名無しさん@お腹いっぱい。:2015/02/03(火) 18:27:29.87 ID:iECdrNEu0.net
- URLDownloadToFileを使用するときにURLエンコードをしたいのですが、AutoHotKeyでは用意されていないので他のバッチコマンドなどを使用しなくてはいけないのでしょうか?
- 43 :名無しさん@お腹いっぱい。:2015/02/03(火) 19:51:33.78 ID:Vc7kHo7G0.net
- >>42
URIエンコード・デコード関数
http://www.autohotkey.com/board/topic/75390-ahk-l-unicode-uri-encode-url-encode-function/?p=480216
- 44 :名無しさん@お腹いっぱい。:2015/02/04(水) 15:25:45.79 ID:+gTLM4Q40.net
- altダブルクリックのホットキー登録ができれば教えていただけないでしょうか?
その際、他のalt組み合わせのホットキーに影響が内容にしたいです。
- 45 :名無しさん@お腹いっぱい。:2015/02/04(水) 15:37:43.24 ID:b+uyoQlk0.net
- 下記の2次元の配列を作っています
DIM_1_1, DIM_5_6など。たとえば、DIM_%x%_%y%など
これらは、一般的な表記、DIM(x,y)に対応するようにしているのですが、可変長にしており
DIM_10_5までかもしれないし、DIM_5_20までかもしれません
また、DIM_10_5には代入していてもDIM_5_5には代入していないかもしれません
で、途中でこれらの配列の中身をすべてクリアしたいのです
一般的にはFORループを使って全部の要素を回るのでしょうが、AHKの場合単純に出来る方法ってありませんか
AHKでは多分、データ領域に使用している変数名とか保管しているのだと思うのですが
例えば、DIM_から始まる変数を一斉削除とか
x、yのMAXを憶えておいてループで回るしか方法はないのでしょうか
- 46 :名無しさん@お腹いっぱい。:2015/02/04(水) 18:40:22.63 ID:UWZMQSET0.net
- >>45
変数ではなく配列・オブジェクトを使用する
DIM := Array()
; DIM := []
MsgBox % DIM[1, 1] := "a"
MsgBox % DIM[1, 2] := "b"
MsgBox % DIM[5, 1] := "c"
MsgBox % DIM[5, 2] := "d"
DIM := Array() ; 空にする
; DIM := []
MsgBox % DIM[1, 1]
MsgBox % DIM[1, 2]
MsgBox % DIM[5, 1]
MsgBox % DIM[5, 2]
Return
- 47 :名無しさん@お腹いっぱい。:2015/02/04(水) 19:25:47.48 ID:b+uyoQlk0.net
- >>46
ありがとうございました。それを使えば簡単にできたのですね
それは使ったことがなかったので、これを機に使ってみようと思います
- 48 :名無しさん@お腹いっぱい。:2015/02/04(水) 19:35:51.80 ID:VOPHjqx/0.net
- ↑
質問者じゃないけど、
DIM := Array() と DIM := Object()
の違いが分からないので教えてつかぁさい。
「Array()」の説明が何処に書いてありますか?
「ComObjArray()」の説明なら見つかったんですが・・・
- 49 :名無しさん@お腹いっぱい。:2015/02/04(水) 19:38:06.18 ID:VOPHjqx/0.net
- >>48
吸いません。
>>48は>>46へのレスです。
- 50 :名無しさん@お腹いっぱい。:2015/02/04(水) 19:49:05.98 ID:6e7nMhHj0.net
- >>48
http://ahkscript.org/docs/commands/
- 51 :名無しさん@お腹いっぱい。:2015/02/04(水) 20:17:19.44 ID:VOPHjqx/0.net
- >>50
解説ページありがとうございます。
日本語じゃないのが辛いとこですが、じっくり読んでみます。
- 52 :名無しさん@お腹いっぱい。:2015/02/04(水) 20:23:12.28 ID:UWZMQSET0.net
- >>48
どちらもオブジェクト扱いで
配列:インデックスでアクセス
連想配列:文字列をキーにしてアクセス
空のオブジェクト宣言する場合は Array() と Object() どちらでも同じだが
割り当てを同時にする場合や Array := [Item1, Item2, ..., ItemN]
誤読をさける為にも空であっても使い分けたほうがいい
http://ahkscript.org/docs/Objects.htm
- 53 :名無しさん@お腹いっぱい。:2015/02/04(水) 22:21:58.91 ID:VOPHjqx/0.net
- >>52
レスありがとうございます。
う〜ん、使い分けするの難しそう・・・寝ます。
- 54 :名無しさん@お腹いっぱい。:2015/02/05(木) 13:14:04.85 ID:Swi5zNAI0.net
- 関数内から呼び出した関数に変数を渡すにはどうすればいいのでしょうか?
SetX(){
global trigger = A_ThisHotKey
}
!a::
SetX()
gosub msgtest
return
msgtest:
msgbox,%Trigger%
return
のようにGosubを使えばよいというのは分かったのですが
!a::
SetX()
msgtest()
return
msgtest(){
msgbox,%Trigger%
}
return
このような場合msgtest()に%Trigger%を渡すにはどうすればいいのかが分かりません
- 55 :名無しさん@お腹いっぱい。:2015/02/05(木) 13:55:23.76 ID:FjihlSDJ0.net
- msgtest(){
global Trigger
msgbox,%Trigger%
}
- 56 :名無しさん@お腹いっぱい。:2015/02/05(木) 14:07:05.56 ID:Lyo+BX4h0.net
- >>41
ヘッダファイル見なおしたら読解が少し進みました
ありがとうございました
- 57 :名無しさん@お腹いっぱい。:2015/02/05(木) 14:09:14.80 ID:Swi5zNAI0.net
- >>55
ああ、なるほど・・・
globalってそういうふうに使うんですね
よく分かりました。ありがとうございます
- 58 :名無しさん@お腹いっぱい。:2015/02/05(木) 14:53:23.38 ID:QwBMHot70.net
- DllCallのCreateFileが上手く動きません。
どこでもいいので空のtxtが生成されるスクリプトのサンプルをどなたか教えてください。
それとアドレスの親フォルダの指定
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
hFile := DllCall("CreateFile", str, "FileName.txt", Uint, GENERIC_WRITE, Uint, 0, UInt, 0, UInt, CREATE_ALWAYS, Uint, 0, UInt, 0)
- 59 :名無しさん@お腹いっぱい。:2015/02/05(木) 15:02:27.18 ID:QwBMHot70.net
- それとAHKで親フォルダ、などの相対アドレスの指定の仕方についてまとめてあるところって
ないですか?\ を使った表現と/を使った表現の使い分けがよくわかりません
- 60 :名無しさん@お腹いっぱい。:2015/02/06(金) 17:17:08.51 ID:SzO0EcHO0.net
- アクティブウィンドウにキャレットがあるかないかを判断することはできるでしょうか?
キーボード入力できる状態かを判断して処理をするときに使いたいです。
- 61 :名無しさん@お腹いっぱい。:2015/02/06(金) 18:41:13.20 ID:KwnAyWU00.net
- >>60
ぐぐれ
autohotkey キャレット
- 62 :名無しさん@お腹いっぱい。:2015/02/06(金) 19:46:08.56 ID:jqrxqYRE0.net
- >>58
ttp://ahkwiki.net/FileAppend
読む
>>59
・ディレクトリの区切りは/ではなく\
・\を\\とエスケープする必要はない
・ワイルドカードはコマンドによって使えたり使えなかったり
・相対パスで指定した場合、%A_WorkingDir%を基準としたパスになる(それ以外は普通の相対パスと同じ)
・?\ を使った表現と/を使った表現の使い分けとかはない
- 63 :名無しさん@お腹いっぱい。:2015/02/07(土) 10:58:23.49 ID:PcAcqUqK0.net
- http://www.scythe.co.jp/input-device/rakuraku-keyboard3.html
これ使ってる人いないですかね? tab shift ctrlの更に左側にカスタマイズできるキーがあってかなり便利そうなんだけど
ここにF12以降のファンクションキーとか割り当ててやったらかなり色々やれそうだけど、割り当てできないとか
そもそも同時押しできないとかだったら意味ないけど
- 64 :名無しさん@お腹いっぱい。:2015/02/07(土) 11:08:03.57 ID:7n9GrLO+0.net
- 安いテンキーにいろいろ割り当てて左側においたほうが便利そう
- 65 :名無しさん@お腹いっぱい。:2015/02/08(日) 00:00:41.54 ID:MpE2KH5A0.net
- キーを増やしてもあくまでスペースキーの無駄な長さは堅持するんだな
- 66 :名無しさん@お腹いっぱい。:2015/02/08(日) 14:29:27.38 ID:dwprUX2U0.net
- タッチ系のイベント(タップや各種タッチジェスチャーなど)をマウスやキーボードの任意のイベントに
変換したいのですがAHKで可能ですか?
- 67 :名無しさん@お腹いっぱい。:2015/02/10(火) 14:51:40.64 ID:ocJSTbwq0.net
- >>64
メインのキーボードに付いてるテンキーと、後付けの単品テンキーのキーコードって区別できるの?
- 68 :名無しさん@お腹いっぱい。:2015/02/10(火) 17:13:14.98 ID:B7K0g39b0.net
- ahkではできないね
- 69 :名無しさん@お腹いっぱい。:2015/02/10(火) 20:17:57.96 ID:wPE2f1vh0.net
- Win10で使ってる人ここ居る?
不具合ある?
- 70 :名無しさん@お腹いっぱい。:2015/02/10(火) 20:31:33.00 ID:uBA0tjnZ0.net
- >>69
聞く前に自分で調べろ
- 71 :名無しさん@お腹いっぱい。:2015/02/10(火) 21:31:23.86 ID:wPE2f1vh0.net
- "ここ"に限定したつもりだったんだが理解されないらしい
- 72 :名無しさん@お腹いっぱい。:2015/02/10(火) 21:41:33.04 ID:hASVzjNM0.net
- Win10ってまだ出てないだろ
- 73 :名無しさん@お腹いっぱい。:2015/02/12(木) 12:05:02.21 ID:3ZPK5N2h0.net
- 任意のウィンドウは非表示にしないで、そのアプリをツールバーから削除することはできるでしょうか?
Alt+Tabで出てくるアプリ一覧から消したいアプリをコントロールできればと思ってます。
- 74 :名無しさん@お腹いっぱい。:2015/02/12(木) 16:44:17.03 ID:LHu7oJqN0.net
- Alt+tabから非表示は知っているけど
ツールバーから削除はわからんね
- 75 :名無しさん@お腹いっぱい。:2015/02/12(木) 17:08:57.89 ID:3ZPK5N2h0.net
- >>74
ありがとうございます。助かります。
Alt+tabの消し方はどうすればよろしいでしょうか。
- 76 :名無しさん@お腹いっぱい。:2015/02/12(木) 17:35:06.63 ID:LHu7oJqN0.net
- WinSet, ExStyle, +0x00000080, ウィンタイトル
- 77 :名無しさん@お腹いっぱい。:2015/02/12(木) 21:53:45.32 ID:7pISx/9U0.net
- しかしスマホでahkファイル見ると文字クッキリしてほんと見易いな
普及価格帯のPCモニタがRetinaになるのっていつのことだろう
- 78 :名無しさん@お腹いっぱい。:2015/02/13(金) 15:13:55.26 ID:9Dlr7kMk0.net
- 1ウィンドウで複数分割できるエディタエリアがあるのですが、
分割したエディタエリアごとにコントロールが存在しますが、
このコントロールに対しての表示幅を設定させることはできるでしょうか?
ちなみにドラッグ・アンド・ドロップでリサイズできます。
- 79 :名無しさん@お腹いっぱい。:2015/02/13(金) 15:18:00.64 ID:nJaOh+nx0.net
- ドラッグアンドドロップさせればいいじゃん
- 80 :名無しさん@お腹いっぱい。:2015/02/13(金) 18:26:35.14 ID:ZkWQvUsm0.net
- どうせ答え聞き出したら、何も言わずに違う質問するんでしょ?
もう放置でいいよ
- 81 :名無しさん@お腹いっぱい。:2015/02/13(金) 18:41:53.10 ID:cMMQOGm10.net
- 回答しても返事が無いと話が終わったのか分からんし
聞き逃げは荒らしと同じだよな
- 82 :名無しさん@お腹いっぱい。:2015/02/13(金) 19:22:52.74 ID:ohimDlIQ0.net
- 返事してお礼してもらわんと怒り出すとかw
Q&Aでいいじゃね。はっきり言ってお礼とか読んでる分には邪魔なだけだな。いらんわ
- 83 :名無しさん@お腹いっぱい。:2015/02/13(金) 19:29:00.53 ID:cC4tqfrz0.net
- その返しまるごとそのまま前にも見たよ
もっとがんばりましょう
- 84 :名無しさん@お腹いっぱい。:2015/02/13(金) 19:40:29.58 ID:XavJxak10.net
- >>82
じゃあお前が答えてやりゃいいじゃん
- 85 :名無しさん@お腹いっぱい。:2015/02/13(金) 19:45:05.62 ID:ohimDlIQ0.net
- >>84
今まで何度か答えてるよ
お礼を要求するとかなあ。どうでもいいw
- 86 :名無しさん@お腹いっぱい。:2015/02/13(金) 19:51:08.69 ID:ZkWQvUsm0.net
- >>82
どこにも「お礼」とか「怒り出す」なんて書いていないよ?。
ああ、自分自身の体験談と感想を述べただけか。
自己紹介乙です。
- 87 :名無しさん@お腹いっぱい。:2015/02/13(金) 20:04:32.49 ID:ebVwDu0h0.net
- >>85
どうでもいいw、なら黙々と答えるかスルーしろよ
- 88 :名無しさん@お腹いっぱい。:2015/02/13(金) 20:38:11.81 ID:bEiShX/t0.net
- よく話が見えないだが、なんで急に
>どうせ答え聞き出したら、何も言わずに違う質問するんでしょ?
みたいな話になってんの?
明確な回答があったのに1日2日経っても返事がないとか、質問者が回答無視して違うレスしてるとかなら分かるんだけど
- 89 :名無しさん@お腹いっぱい。:2015/02/13(金) 21:00:57.42 ID:cC4tqfrz0.net
- 3年ROMれ
- 90 :名無しさん@お腹いっぱい。:2015/02/13(金) 23:10:20.91 ID:ee8zl+on0.net
- Guicontrolでいけるんでないの
やったことないけど
- 91 :名無しさん@お腹いっぱい。:2015/02/13(金) 23:54:23.89 ID:WR5uCBsq0.net
- 13 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2015/01/28(水) 18:09:09.25 ID:/+bq3MWi0
スレをひと通り読めば分かると思うんだが、
「○○という処理をするにはどういうコードを書いたらできますか?」 ではダメなんだよ
↓
「○○という処理をすることを目的に、このようなスクリプトを組みましたがうまく動きません
どこを修正すればいいですか?」 という聞き方にしてみればいいじゃん
もっと言えば、「動かない」だけではなく、「××といった想定外の動作になります」ならベター
スクリプトをロクに書かずに答を教えてくれ、では単なるクレクレとみなされるということ
なぜそれが嫌がられるかと言えば、自分で学ぼうとも調べようともせずに、またクレクレするだろうと
思われるからさ
- 92 :名無しさん@お腹いっぱい。:2015/02/13(金) 23:57:39.32 ID:bEiShX/t0.net
- >>89
いや3年位はこのスレ見てると思うけど唐突に>>80が難癖つけだしたようにしか見えんのだけど
- 93 :名無しさん@お腹いっぱい。:2015/02/14(土) 00:00:15.54 ID:aIDRYLzc0.net
- >>80も3年くらい居るんだろう
- 94 :名無しさん@お腹いっぱい。:2015/02/14(土) 00:04:57.74 ID:pCHjBVDR0.net
- くれくれ君からの流れだったのか
でも質問者のレスって別に完成したスクリプトくれじゃなくて
単なる質問でそれが分からなきゃコードの書き用もないことだと思うが
神経質すぎやしないかい
- 95 :名無しさん@お腹いっぱい。:2015/02/14(土) 00:33:51.21 ID:/bUlSFlq0.net
- ID:bEiShX/t0
>明確な回答があったのに1日2日経っても返事がないとか、質問者が回答無視して違うレスしてるとかなら分かるんだけど
似た書き方のやつがほぼ無返答でだったのが原因
- 96 :名無しさん@お腹いっぱい。:2015/02/14(土) 00:35:23.57 ID:+DziXdMA0.net
- また熱い週末が始まるのか
- 97 :名無しさん@お腹いっぱい。:2015/02/14(土) 01:03:08.93 ID:VYmByJ+W0.net
- >78がクレクレかどうかは知らんけど
D&D処理なんて対象ソフトに依存しそうな内容を
具体的なソフト名も出さずに質問されても答えようがないべ
せいぜいMouseClickDragでがんばれば?としか
- 98 :名無しさん@お腹いっぱい。:2015/02/15(日) 07:13:36.27 ID:f7IqpmGr0.net
- 教えるのは自由、教えないのも自由
教えることを強要されたり、教えないことを促される謂れはない
- 99 :名無しさん@お腹いっぱい。:2015/02/15(日) 07:24:38.37 ID:j6vuoi2+0.net
- 教えることを強要してる奴も、教えるななんて言ってる奴もいないだろ
責められてんのは聞きっぱなし厨だし
- 100 :名無しさん@お腹いっぱい。:2015/02/15(日) 10:53:40.24 ID:mbbbBWUW0.net
- 唐突感はたしかに有ったなw
しかしお礼を要求してるわけじゃないだろうに
解決策となったのかどうか結果を報告しろって言ってんじゃないの?
結果がわからんのなら答える意味ないじゃんよ
だったらどんなメチャクチャな回答しても一緒じゃん
質問者の結果報告は最低限のルールだと思うけどね
- 101 :名無しさん@お腹いっぱい。:2015/02/15(日) 21:57:31.50 ID:TEWcej010.net
- 修飾キーの押しっぱなし病の回避策って貴方はどうしてますか?
- 102 :名無しさん@お腹いっぱい。:2015/02/16(月) 01:36:55.02 ID:VR/mERUy0.net
- Qt製のアプリのコントロールを取得したいんですがいい方法ありませんか?
どうやらクロスプラットフォームを実現するためか自前でボタン等を描画しているようで…
とりあえず英語のフォーラムで似たような投稿を見かけて流れるように推されたツールを使ってみたんですが、
同アプリでもウインドウによって細かいとこまで取得できる例とペインレベルでしか取得できない例がありました
http://www.autohotkey.com/board/topic/96270-access-qt-framework-controls-qwidget-in-applications-like-vlc/
http://www.autohotkey.com/board/topic/77888-accessible-info-viewer-alpha-release-2012-09-20/
- 103 :名無しさん@お腹いっぱい。:2015/02/16(月) 03:34:06.41 ID:WPg1DaF/0.net
- >>102
具体的にアプリは何なの?
- 104 :名無しさん@お腹いっぱい。:2015/02/16(月) 06:43:06.07 ID:VR/mERUy0.net
- >>103
アプリはAnkiです
今のところアプリ内の機能に加えてショートカットキーやタブキーによるフォーカス移動を駆使することで
一応汚いながらも目的の操作を実現する目処は立っていますが、かなり偶然によるところも大きいので、
類例の問題に普遍的な定石があるかもしれないと思って質問させていただきました
- 105 :名無しさん@お腹いっぱい。:2015/02/16(月) 10:54:02.31 ID:yOFI9hS40.net
- エクスプローラで選択している複数のフォルダをexeファイルにドラッグアンドドロップしたのと同じ動作をコマンドで記述するにはどうしたらいいでしょうか?
^+e::
Send ^c
Sleep 100
Run,(プログラムのパス) "%Clipboard%"
こんな感じでやってみたんですが
選択したフォルダが1つだけならうまくいって、複数選択しているとだめでした
- 106 :名無しさん@お腹いっぱい。:2015/02/16(月) 11:47:44.11 ID:r9mzilPV0.net
- それやってからメモ帳かなんかにCtrl+Vしたら今クリップボードにどんな文字列が入ってるか分かるよ
- 107 :名無しさん@お腹いっぱい。:2015/02/16(月) 13:27:44.92 ID:yOFI9hS40.net
- 選択フォルダ内の全てフォルダを引数にして実行するのは
^+w::
Send ^c
Sleep 100
Loop,%Clipboard%\*,2,0
{
RunWait,(プログラムのパス) "%A_LoopFileLongPath%"
}
ってやってみたらいけました
>>105のクリップボードの中を見てみると
C:\〜
C:\〜
といった感じで選択したフォルダのフルパスが1行づつ並んでました
選択フォルダだけ実行したい場合はクリップボードの文字列を1行ずつ分解して実行してあげないとだめなんでしょうか?
- 108 :名無しさん@お腹いっぱい。:2015/02/16(月) 14:17:55.53 ID:iRVUMR9T0.net
- 複数パスをコピーしたら間に改行記号が入った状態になるから
Loop, parse, clipboard, `r`n
で適当な変数に、a_loopfieldを1つずつ""で括ってから半角スペースで区切ってぶち込んで
最後にその変数をプログラムのパスに渡せばいい
- 109 :名無しさん@お腹いっぱい。:2015/02/16(月) 18:20:35.97 ID:yOFI9hS40.net
- >>108
ありがとうございます
`r`nを取り除くのがうまくいかなくて変なやり方になりましたがいけました
^+b::
Send ^c
ccc:=
Sleep 100
Loop,Parse,Clipboard,`r`n,
{
StringLen,ddd,A_LoopField
if(ddd>5){
ccc=%ccc% "%A_LoopField%"
}
}
RunWait,(プログラムのパス) %ccc%
return
- 110 :名無しさん@お腹いっぱい。:2015/02/16(月) 19:11:20.66 ID:VR/mERUy0.net
- しばらく触れてなかったから適当だけどStringReplaceの方が短く書けるんじゃないかな
- 111 :名無しさん@お腹いっぱい。:2015/02/16(月) 19:50:23.69 ID:yOFI9hS40.net
- >>110
ありがとうございます
下のようにやってもいけました
StringReplace,ccc,clipboard,`r`n," ",All
ccc="%ccc%"
RunWait,(ソフトのパス) %ccc%
- 112 :名無しさん@お腹いっぱい。:2015/02/16(月) 20:07:41.77 ID:WPg1DaF/0.net
- >>109
Loop,Parseの区切りは1文字の列挙、文字列ではない
`r`nと書くのはよくある間違え
例;
Var = AAA`r`nBBB
Loop,Parse,Var,`r`n,
`rまたは`nで区切るという意味になるので
先に書かれている`rだけにヒットして
区切り文字は消えて AAA と `nBBB になる
Loop, Parse, Clipboard, `n, `r
Loop, Parse, Clipboard, `r, `n
- 113 :名無しさん@お腹いっぱい。:2015/02/16(月) 20:36:11.18 ID:8Qzd8VQF0.net
- その辺りの話は流行らせるページのどこらへんに書いてあるんでしょか
- 114 :名無しさん@お腹いっぱい。:2015/02/16(月) 21:01:24.52 ID:yOFI9hS40.net
- >>112
ありがとうございます
なんでうまくいかないのかもやもやしてました
^+n::
Send ^c
ddd:=
Sleep 100
Loop,Parse,Clipboard,`n,`r
{
ddd=%ddd% "%A_LoopField%"
}
RunWait,(プログラムのパス) %ddd%
- 115 :名無しさん@お腹いっぱい。:2015/02/16(月) 21:37:14.53 ID:iRVUMR9T0.net
- >>112
補足ありがと
wikiの
>特定の 文字列を区切りとしたい場合、StringReplaceで置換してから処理するとよい。
ってそういうことね
この場合>>112みたいに省略を使うか、「`r`n」をパスなんかじゃ絶対使わない「?」とかに置き換えてからloop, parse, clipboard, ? みたいにすればいいわけか
>>114
代入のとこは
ddd .= """" A_LoopField """ "
という風に書けるよ。一応
- 116 :名無しさん@お腹いっぱい。:2015/02/16(月) 21:59:01.76 ID:WPg1DaF/0.net
- >>112
訂正
区切り文字は消えて AAA 次に`nで (空) と BBB になる
>>113
コマンドの解説に書いてある
- 117 :名無しさん@お腹いっぱい。:2015/02/16(月) 22:04:57.04 ID:yOFI9hS40.net
- やっとフォルダの圧縮とフォルダ名のリネームを一緒にできるものができた
たったこれだけにずいぶん苦労した・・・
- 118 :名無しさん@お腹いっぱい。:2015/02/17(火) 02:56:42.46 ID:XBnrgtQm0.net
- >>117ではないんだけど別の方法考えてみた・・・こんな感じで良いんかな?
「送る」にショートカット置いとくと便利だよね。
選択したフォルダ(ファイル)をスクリプト(のショートカット)にD&Dする方法。
%0% に引数の数が、%1%、%2%、... にそれぞれ第1引数、第2引数、... と入っているので…
count = %0%
Loop, % count
{
args .= " " . """" . %A_Index% . """"
}
MsgBox, % count "`n|" . args . "|" ;"|"は変数argsの頭にスペースが入ってるかの確認用
;run, (アプリパス)%args% ;変数argsの頭にスペースが入ってるので(アプリパス)とargsの間にスペース不要
- 119 :名無しさん@お腹いっぱい。:2015/02/17(火) 07:57:10.27 ID:r71IVUyv0.net
- 別の方法を取るならRegEXでよくね?
StringReplaceにしてもわざわざLoopで回す必要ないと思うんだが
- 120 :名無しさん@お腹いっぱい。:2015/02/17(火) 09:11:24.12 ID:V+F5Z/kR0.net
- zip解凍したときにC:\baka\baka\cだったら自動でC:\baka\cにするにはどうすりゃいいんでしょ
- 121 :名無しさん@お腹いっぱい。:2015/02/17(火) 09:24:49.37 ID:r71IVUyv0.net
- \c以下をC:\bakaに移動してからC:\baka\baka削除
もしくは解凍前にlist取得しサブフォルダの有無で解凍時の展開先指定を分ける
それかNoahはArchon2みたいなフォルダ自動判断作成オプションのあるアーカイバに投げる
- 122 :名無しさん@お腹いっぱい。:2015/02/17(火) 15:08:42.29 ID:2V+Ampb20.net
- フォルダ監視という指定したフォルダ及びサブフォルダを監視して変更があったフォルダのパスを引数にしてプログラムの起動ができるソフトがあるんですが
exe化したAHKをこのソフトから実行させてます
送られてくるフォルダパスの階層や名前によって処理を分岐させたいです
ソフトに登録した監視フォルダ(ここまでのフォルダパスの長さが15だった) \ フォルダ(複数・名前バラバラ) \ 主に処理を行いたいフォルダ
aaa=%1% ;%1%がフォルダ監視から送られた変更のあったフォルダのパス
SplitPath,aaa,,bbb ;変更のあったフォルダの親フォルダのパスがbbbに入る
StringLen,ccc,bbb ;親フォルダのパスの長さをcccに入れる
if(ccc>16) ;変更フォルダが(主に処理を行いたいフォルダ)の場合
{ 実行したい処理1 }
else :変更フォルダが監視フォルダ直下の場合
{ 実行したい処理2 }
Exit
このように変更のあったフォルダパスの親フォルダの長さでフォルダの階層を判断して分岐するようにしてみたんですが
これだと単純な分岐しかできません
フォルダパスの階層や名前を利用して分岐させるいい方法はないでしょうか
- 123 :名無しさん@お腹いっぱい。:2015/02/17(火) 16:20:10.46 ID:r71IVUyv0.net
- "フォルダ(複数・名前バラバラ) \ 主に処理を行いたいフォルダ" を取得して
フォルダパスの階層や名前を利用して分岐させたらいんでないの?
取得方法はSubStr()なりStringRightなりRegExなりLoop, FilePatternなりお好きなように
名称固定の任意の特定フォルダで数が膨大じゃないのならフルパスで延々if羅列してくって手もある
if (aaa = "c:\監視フォルダ\フォルダ1\サブフォルダ1")
else (aaa = "c:\監視フォルダ\フォルダ1\サブフォルダ2")
else (aaa = "c:\監視フォルダ\フォルダ2\サブフォルダ1")
…
初心者さんだったら変に凝るよりこっちのほうが見やすいかもね
- 124 :名無しさん@お腹いっぱい。:2015/02/17(火) 16:20:39.81 ID:dz0ya1w00.net
- ・StrSplitなどで\を区切りに分割して上から調べる
・RegExMatchでフォルダパスを直接正規表現にかけて調べる
階層の数は\の数
おせっかいかもしれないけど変数名は有意味なものを心がけた方が後々楽だよ
- 125 :名無しさん@お腹いっぱい。:2015/02/17(火) 16:46:10.57 ID:8GvsVAqj0.net
- >>123
>else (aaa = "c:\... ×
else if (aaa = "c:\... ○
- 126 :名無しさん@お腹いっぱい。:2015/02/17(火) 22:26:42.28 ID:HOb71BM20.net
- ありがとうございました
StrSplitで分岐できるようになりました
aaa = %1%
bbb := StrSplit(aaa,"\")
bbb_index := bbb.MaxIndex()
if(bbb_index = 4)
{ 処理1
}else if(bbb_index = 3)
{ 処理2
}
=じゃないとうまく代入できなかったり、:=じゃないとうまくいかなかったりの違いがよくわかりませんでしたが
- 127 :名無しさん@お腹いっぱい。:2015/02/17(火) 22:33:27.00 ID:dz0ya1w00.net
- =の右辺はただの文字列として解釈されるから関数コールとして受け取ってもらえなくなる
bbb = bbb.MaxIndex() ⇔ bbb := "bbb.MaxIndex()"
まあ俺も最初躓いたとこ
- 128 :名無しさん@お腹いっぱい。:2015/02/18(水) 20:11:21.57 ID:lW/JiRbG0.net
- AutoHotKeyは、=の扱いがほんと腹立ったな、最初の頃は
ほかに間違えるとこはif分のところ
if( a = b ) と
if a = b
とか
- 129 :名無しさん@お腹いっぱい。:2015/02/18(水) 21:08:23.11 ID:gMlFSxgW0.net
- 式を前提とした代入が:=、文字列を前提した代入が=、
ifに関しても、括弧有りが式による比較、括弧無しが文字列比較、と分けられているのはややこしいというか無駄な仕様というか・・・
結局混乱するので全て式用の表記に統一しちゃってるわ
- 130 :名無しさん@お腹いっぱい。:2015/02/18(水) 21:34:32.32 ID:FYP9fX6k0.net
- 過去スレに有ったかと思うが、コマンドライン引数を代入する時に「:=」使っちゃうとハマる
- 131 :名無しさん@お腹いっぱい。:2015/02/18(水) 23:38:48.91 ID:9ijZhGRt0.net
- 式とリテラルの概念が分からないと混乱するよな
objectや関数を他言語と同様に扱えるのに
コマンドの引数の取り方のデフォルト仕様が式的ではないのが一番混乱させる原因だと思う
しかも中には%「半角スペース」使わなくても引数に式を取れるものとかあってさらにカオス
- 132 :名無しさん@お腹いっぱい。:2015/02/18(水) 23:43:05.07 ID:NRWxyKJQ0.net
- 一度覚えてしまえばそれだけなのでべつに
- 133 :名無しさん@お腹いっぱい。:2015/02/18(水) 23:44:16.56 ID:Sod5g+AB0.net
- 時間を空けるとリハビリで覚えなおしの模様
- 134 :名無しさん@お腹いっぱい。:2015/02/18(水) 23:53:02.74 ID:Sod5g+AB0.net
- そんなことよりホットストリングに全てのキーが使えるようにしてほしい
:*:ahk{Up}::とかで発動ができないのって必要な制限なんかね
- 135 :名無しさん@お腹いっぱい。:2015/02/19(木) 01:58:31.84 ID:rs7Tq1S30.net
- 今まで使ってなかったinputboxが便利でびっくりした
なおahkの文法はクソ
- 136 :名無しさん@お腹いっぱい。:2015/02/19(木) 02:04:42.17 ID:kSU91TvR0.net
- InputBoxでググらせてるで。Shift + スペースや
+Space::
InputBox, OutputVar, Google, , , , 100
If (ErrorLevel != 1) && (OutputVar != "")
Run, https://www.google.co.jp/search?q=%OutputVar%
Return
- 137 :名無しさん@お腹いっぱい。:2015/02/19(木) 09:21:14.15 ID:5m5ma5DE0.net
- >>136
Send,^c と組み合わせてDefaultに%Clipbord%指定すると更に便利やで
AHKの文法はBASICライクからオブジェクト系へ進化してきた過程があるので
リアルタイムにバージョンアップ追ってたに人間としてはできること増えてって楽しかった
後から入ってきた人がわけわか状態なのは認める
- 138 :名無しさん@お腹いっぱい。:2015/02/19(木) 10:25:03.91 ID:bUkt8qgu0.net
- ブラウザで文字列選択するとその文字で
googleでweb検索
everythingでファイル検索
指定場所にフォルダ作成
みたいなメニューでも出せたらちょっと便利そう
- 139 :名無しさん@お腹いっぱい。:2015/02/19(木) 15:40:08.83 ID:40fGOYxJ0.net
- わりと楽にできるからリファレンス読もう
- 140 :名無しさん@お腹いっぱい。:2015/02/19(木) 21:53:11.94 ID:V13vIi6l0.net
- マウスがデスクトップのみにいる場合って言うのを検出することってできますかね?
*Lbutton::
If winactive("ahk_class WorkerW")
だと色々巻き込んで困ってます
- 141 :名無しさん@お腹いっぱい。:2015/02/19(木) 22:35:04.88 ID:40fGOYxJ0.net
- マウスのことはMGLスレに行こう
- 142 :名無しさん@お腹いっぱい。:2015/02/19(木) 22:51:12.46 ID:V13vIi6l0.net
- ちゃうねん。MGLの話やないねん。
- 143 :名無しさん@お腹いっぱい。:2015/02/19(木) 22:55:57.30 ID:VHYgiOca0.net
- マウスに関する条件を設定するのだから
マウスに関するコマンドが必要だろうことは俺にでもわかる
- 144 :名無しさん@お腹いっぱい。:2015/02/19(木) 23:01:29.17 ID:V13vIi6l0.net
- それがそうでもないねん。
SPY走らせてもタイトル空欄なんだよね。空欄指定なんてできるの?
- 145 :名無しさん@お腹いっぱい。:2015/02/19(木) 23:16:33.94 ID:HJPdcuZ+0.net
- >>144
ところでデスクトップのclass名はWorkerWで合ってるのかい
- 146 :名無しさん@お腹いっぱい。:2015/02/19(木) 23:17:53.04 ID:V13vIi6l0.net
- ahk_class WorkerW
ahk_exe explorer.exe
SPY上では間違いなさげ。うーむ
- 147 :名無しさん@お腹いっぱい。:2015/02/19(木) 23:20:22.11 ID:bUkt8qgu0.net
- どこぞで拾ってきたWheelScroll.ahkというフォーカスなくてもマウスカーソルのあるソフトをスクロールできるっていうスクリプト
仕組み知らないで使ってたけど覗いてみたらMouseGetPosとか使ってマウスカーソルの位置調べてゴニョゴニョしてる感じだった
- 148 :名無しさん@お腹いっぱい。:2015/02/19(木) 23:31:16.92 ID:bUkt8qgu0.net
- wikiのMouseGetPosのページ
http://ahkwiki.net/MouseGetPos
ここ見たらMouseGet PosのOutputVarWinにマウスの下のウインドウバンドルが格納されるとか
んでもってahk_id %OutputVarWin%とでもすればそのウインドウを指定することができるって書いてた
これを利用すればマウスがデスクトップ上なのかの判断ができるんじゃないかな
やったことないからわかんないけど
- 149 :名無しさん@お腹いっぱい。:2015/02/19(木) 23:41:27.96 ID:pHWd2a9S0.net
- >>146
デスクトップのアクティブを判断するなら以下全部処理する必要がある
■デスクトップのクラス2種類
*Aero有効時に「デスクトップの表示」 → ahk_class WorkerW
*デスクトップアクティブ → ahk_class Progman
■スタートバー関連
ahk_class Button
ahk_class Shell_TrayWnd
ahk_class DV2ControlHost
- 150 :名無しさん@お腹いっぱい。:2015/02/19(木) 23:44:33.93 ID:kSU91TvR0.net
- 俺も適当に考えたけど
GetDesktopWindowからのWindowFromPointってのはどう
- 151 :名無しさん@お腹いっぱい。:2015/02/20(金) 14:07:49.03 ID:Xtz/WPbj0.net
- デスクトップフォルダを認識はできたが、”デスクトップ”そのものを一律処理は不可能っぽい
なんでこんな重要なもん歯抜けになってるんだろう
- 152 :名無しさん@お腹いっぱい。:2015/02/20(金) 15:59:43.47 ID:5BJcX8IP0.net
- >>149を全てではないが考慮して書いてみたけど、
一応デスクトップがアクティブで尚かつマウスがデスクトップ上
にいるかどうかは判断できてると思う。
(間違いや不足箇所有ったら各自修正して)
#Persistent
SetTimer, UnderMouseWindowTitle, 500
Return
UnderMouseWindowTitle:
MouseGetPos, , , HWND
WinGetTitle, Title, ahk_id %HWND%
WinGetClass, Class, ahk_id %HWND%
if winactive("ahk_class WorkerW") || winactive("ahk_class Progman") {
if (Class != "Shell_TrayWnd") && (Class = "WorkerW" || Class = "Progman" ) {
Tooltip, ○○○DeskTop Active○○○`n○○○Mouse On DeskTop○○○`n`nWindowTitle : %Title%`nWindowClass : %Class%
} else {
Tooltip, ○○○DeskTop Active○○○`nXXXMouse On Not DeskTopXXX
}
} else {
if (Class != "Shell_TrayWnd") && (Class = "WorkerW" || Class = "Progman" ) {
Tooltip, XXXDeskTop Not ActiveXXX`n○○○Mouse On DeskTop○○○
} else {
Tooltip, XXXDeskTop Not ActiveXXX`nXXXMouse On Not DeskTopXXX
}
}
Return
- 153 :名無しさん@お腹いっぱい。:2015/02/20(金) 16:12:19.46 ID:sLWcS7Kn0.net
- DstngshAWin.ahk
テンプレの専用うpろだにあげました。
ActiveWindowを指定した色で縁取りし強調するスクリプト。
かざぐるにあったというあれ(だと思う。ユーザーじゃないから分からないけど)
基幹部分をhttp://www.autohotkey.com/board/topic/29197-drawing-a-rectangle/の#7、Lexikosさんの投稿から拝借しました。
DllCall、構造体などほとんど理解せずに使っているので不具合があるかもしれません。その点をご理解のうえ、自己責任でご利用下さい。
おかしな部分があれば、ご指摘、修正してもらえると嬉しいです。
- 154 :名無しさん@お腹いっぱい。:2015/02/20(金) 16:14:15.07 ID:5BJcX8IP0.net
- >>140
>色々巻き込んで
今更だけど、具体的にどうなるのか?
後、スクリプトは省略しないで該当個所全て公開した方が解決早くなるよ。
- 155 :名無しさん@お腹いっぱい。:2015/02/20(金) 16:39:09.47 ID:c1cLUlZ70.net
- だからみんな相応のレスだけ返してるというのに
- 156 :名無しさん@お腹いっぱい。:2015/02/20(金) 17:43:54.17 ID:/C7hGgoB0.net
- >>140
勘違いレスかもしれんけど、これじゃあかんのけ?
GroupAdd, Desktop, ahk_class WorkerW
GroupAdd, Desktop, ahk_class Progman
GroupAdd, Desktop, ahk_class Shell_TrayWnd
GroupAdd, Desktop, ahk_class Button
GroupAdd, Desktop, ahk_class DV2ControlHost
#If MouseIsOverDesktop("ahk_group Desktop")
LButton::
msgbox, おk
return
MouseIsOverDesktop(WinTitle) {
MouseGetPos,,, Win
return WinExist(WinTitle . " ahk_id " . Win)
}return
#If
esc::exitapp
- 157 :名無しさん@お腹いっぱい。:2015/02/20(金) 19:04:20.74 ID:sLWcS7Kn0.net
- >>153
微妙に修正
・WM_ERASEBKGND()中、オーバーラップGui以外がブラシで黒塗りされるのを防ぐ条件追加
・MntAWin_DstngshAWin()中、activeWinの状況が変わってない時に無駄に幅/高さ計算をしないように記述の順を変えた
- 158 :名無しさん@お腹いっぱい。:2015/02/21(土) 02:53:05.19 ID:DTA7MJKs0.net
- いろいろ自動化させてくのが楽しくなってきた
- 159 :名無しさん@お腹いっぱい。:2015/02/21(土) 14:14:12.56 ID:kSgKqp7n0.net
- >>153
微修正
・#Include先で管理しやすいように起動switchを関数化
・スクリプト起動時に自動で強調表示を実行するかどうかの設定追加
・windowのmarginをコマンドで取得するように変更
・ダイアログ系のwindowがactiveな時にも縁取りのサイズ、位置が合うように調整
・誤字等修正
- 160 :名無しさん@お腹いっぱい。:2015/02/22(日) 18:19:55.09 ID:jyGGQ7Ij0.net
- Loop (ファイル検索)の条件を複数設定することってできますか?
Loop , C:\hoge\*.zip , 0 , 1
でhogeフォルダ内の拡張子がzipのファイルを探すというものに*.rarや*.lzhなど他の条件でもヒットさせたいです
Loop , C:\hoge\*.* , 0 , 1
{
check := 0 ;条件に合うかどうかに使う
if A_LoopFileExt=zip ;A_LoopFileExtは拡張子
{
check := 1
}else if A_LoopFileExt=rar
{
check := 1
}else
{
check :=0
}
if(aaa=1)
{
処理
}
}
こんな感じで一個一個if文で条件に合うかチェックするように並べていったんですがすごく長くなってしまって
- 161 :名無しさん@お腹いっぱい。:2015/02/22(日) 18:23:40.75 ID:CoGp3yp80.net
- if A_LoopFileExt not in zip,rar,lzh
Continue
- 162 :名無しさん@お腹いっぱい。:2015/02/22(日) 19:05:33.94 ID:jyGGQ7Ij0.net
- ありがとうございます
だいぶコンパクトになりました
Loop , C:\hoge\*.* , 0 , 1
{
if A_LoopFileExt not in zip,rar,lzh,7z,tar ;A_LoopFileExtは拡張子
{
Continue ;ループの残りの処理をスキップして次の回に進む。
}
処理
}
- 163 :名無しさん@お腹いっぱい。:2015/02/22(日) 20:14:43.60 ID:GECiWek60.net
- >>162
今回はそれで解決したようですが、複数比較でよくやる方法です
^s::
InputBox, chk
ext1=zip
ext2=rar
ext3=lzh
ok=
loop,3
{
if( chk=ext%A_INDEX% )
{
ok=1
break
}
}
if( ok )
MsgBox, あたり!
else
MsgBox, はずれ!
return
- 164 :名無しさん@お腹いっぱい。:2015/02/22(日) 20:18:18.71 ID:GECiWek60.net
- タブのところにスペースをたくさん入れたのですがつぶれて見づらくなってすいません
Janeなんだけど、タブ設定ってどこかにあるのかな
- 165 :名無しさん@お腹いっぱい。:2015/02/23(月) 09:02:21.73 ID:xf0ye1ay0.net
- >>163
質問者の意図はループ内判定をコンパクトにしたい、なので多重ループ薦めるのは違うと思う
つか毎回言われてるけどさ解決後の別提案はよりスマートさが求められるんだから
蛇足になるコードなら貼らないほうがいいかと
タブや複数スペースは省略されるのはhtmlの基本的な表示仕様
可視性重視なら全角スペース使う
あとどうせLoop使うなら後のメンテ考慮して回数固定Loopよりテーブル参照にするほうがベター
チェック項目増減で手直しが必要になった時にLoop回数直し忘れバグを回避できる
exttbl := "zip,rar,lzh"
Loop, Parse, exttbl, CSV
{
if (chk == A_LoopField) {
ok=1
break
}
}
- 166 :名無しさん@お腹いっぱい。:2015/02/23(月) 21:47:31.00 ID:qSCWuGR30.net
- >>164
専ブラよるかもだが
タブもスペースもポップアップ表示すれば普通に見えるから俺は気にしてないし
余計な整形しないでそのままエディタからコピペしてくれる方が
専ブラでレスコピペすればそのまま使えるから楽だったりする
- 167 :名無しさん@お腹いっぱい。:2015/02/23(月) 22:32:28.67 ID:S062+pLv0.net
- 圧縮ファイルを全部解凍してフォルダやファイルがいろんな階層に分かれている時に
図のようにフォルダを移動して空のフォルダは削除してくれるものを作ってます
http://i.imgur.com/LxIyzHm.jpg
これの処理手順を大雑把にまとめた図がこれです
http://i.imgur.com/9O7JVTr.jpg
フォルダの移動や削除があったらもう一回実行させるようにたいのですが
図の一番下のflagが1だったら一番上まで遡るというのはどう記述すればいいんでしょうか
あとここはこうしたほうがいいみたいなアドバイスあったら教えてください
- 168 :名無しさん@お腹いっぱい。:2015/02/23(月) 22:37:26.96 ID:qbnfPZSw0.net
- もうそこまで出来てるならそのまま作ればいいじゃないか……
IF分岐でいいじゃないか……
- 169 :名無しさん@お腹いっぱい。:2015/02/23(月) 22:44:02.88 ID:S062+pLv0.net
- 間違ってた
http://i.imgur.com/4SRQoJk.jpg
- 170 :名無しさん@お腹いっぱい。:2015/02/23(月) 22:50:53.72 ID:xf0ye1ay0.net
- whileループでいいんでね
gotoで強制的に飛ばす方向もあるけどおすすめはできない
- 171 :名無しさん@お腹いっぱい。:2015/02/23(月) 22:57:00.08 ID:kLXHiHRG0.net
- >>167
フラグ使う必要ない
処理をLoopしてマッチしなかったらBreakで抜けるだけでいい
- 172 :名無しさん@お腹いっぱい。:2015/02/23(月) 23:06:11.04 ID:jzF3IPgQ0.net
- すげー特殊な整理だな。何に使うんだそんなもん
てか、そんなフローチャートが書けるのになんでgotoやwhileの発想がないんだよ
- 173 :名無しさん@お腹いっぱい。:2015/02/23(月) 23:35:19.44 ID:S062+pLv0.net
- Whileというものを使うとこんな感じになりますかね
http://i.imgur.com/xfULiIc.jpg
- 174 :名無しさん@お腹いっぱい。:2015/02/23(月) 23:38:25.77 ID:YhL83HVM0.net
- むしろ再帰呼び出しを使ったほうがいいんじゃないかと思ったけど書くと伝えるのが面倒だなw
- 175 :名無しさん@お腹いっぱい。:2015/02/23(月) 23:59:02.41 ID:jzF3IPgQ0.net
- 端的には「○―ファイル」を見つけたらルートディレクトリに放り込む作業だと思うけど
これ例えば図示されているところのフォルダ2とフォルダ4が同名だったらどうすんの?
- 176 :名無しさん@お腹いっぱい。:2015/02/24(火) 00:03:54.74 ID:2ZBvdUPG0.net
- なんだこれ。「こうですか?わかりません(><)」かよ
- 177 :名無しさん@お腹いっぱい。:2015/02/24(火) 00:12:20.63 ID:SHiP5LLE0.net
- まあ悪いことは言わないから重複を削除するのはルートディレクトリだけにしとけ
階層化も空ディレクトリも大抵はちゃんとした意味付けがあるんだから
- 178 :名無しさん@お腹いっぱい。:2015/02/24(火) 01:17:54.21 ID:4mbI6FcF0.net
- >>167のやつ
うーん (2)とか付けたやつが残ってびみょい
FileSortEx("TestDir")
FileSortEx(dir, pdir = "") {
if (pdir == "")
pdir := dir
Loop % dir "\*", 2
{
dst := pdir "\" (dir == pdir ? A_LoopFileName : AddNumber(pdir, A_LoopFileName))
FileMoveDir, % A_LoopFileFullPath, % dst
%A_ThisFunc%(dst, pdir)
FileRemoveDir, % dst
}
}
AddNumber(dir, name) {
str := name
while (FileExist(dir "\" str))
str := name "(" A_Index +1 ")"
return str
}
- 179 :名無しさん@お腹いっぱい。:2015/02/24(火) 01:50:46.97 ID:iOoVODGH0.net
- フローチャートって未だに教えてる所あるのかな?
大昔は役に立ったのだろうけどなぁ
- 180 :名無しさん@お腹いっぱい。:2015/02/24(火) 02:52:01.29 ID:ljxVpbkU0.net
- >>170
ありがとうございました
- 181 :名無しさん@お腹いっぱい。:2015/02/25(水) 02:19:03.63 ID:zmRXvEXI0.net
- こんな感じで指定ディレクトリ以下のファイル/フォルダを正規表現リネームできないもんでしょうか
TargetDir = 指定ディレクトリ
SWord = 検索
RWord = 置換
Loop, %TargetDir%\*, 1
{
NewFileName := RegExReplace(A_LoopFileName, "%SWord%", "%RWord%")
FileMove, %TargetDir%\A_LoopFileName, %TargetDir%\NewFileName
}
return
- 182 :名無しさん@お腹いっぱい。:2015/02/25(水) 03:15:57.49 ID:tHX3bWHr0.net
- Wind7でAHK L 最新版を使ってます
最近includeのエラーが表示されるようになったんですがそういう人他にいませんか?
PC起動直後にスタートアップに登録したAHKスクリプトが自動で起動するようになってますが、起動直後にこのエラーがでてきます。原因わかりませんかね?
---------------------------
XXX.ahk
---------------------------
Error at line xxx
#Include file "XXX.ahk" cannot be opened.
The program will exit.
---------------------------
OK
---------------------------
こんな感じのエラー文が表示されます ただincludeで読み込んだファイルは問題なく動いていますしエラーもないです。
アクセス権限の設定かなにかですかね?
- 183 :名無しさん@お腹いっぱい。:2015/02/25(水) 03:24:39.55 ID:8mDVU2BC0.net
- >>181
サブフォルダも検索対象にする
ttp://ahkwiki.net/LoopFile
関数は式で変数は展開される”で囲うと文字になる
RegExReplace(A_LoopFileName, SWord, RWord)
- 184 :名無しさん@お腹いっぱい。:2015/02/25(水) 04:01:58.40 ID:8mDVU2BC0.net
- >>182
情報不足ですかね
スタートアップで問題発生、それ以外だと?
起動タイミングでもずらしたら?
- 185 :名無しさん@お腹いっぱい。:2015/02/25(水) 04:07:00.19 ID:zmRXvEXI0.net
- >>183
コマンドによってくくったりくくらなかったりめんどいですね……
FileMoveのとこでA_Loop~~~を%でくくらないといけなかったり
- 186 :名無しさん@お腹いっぱい。:2015/02/25(水) 04:23:37.96 ID:tHX3bWHr0.net
- >>184
それ以外だと起きないです
起動タイミングはもともとずらしていたんですがそれをやめてみてもやっぱりおきました
今色々見てますがどうにもなおりませんね
- 187 :名無しさん@お腹いっぱい。:2015/02/25(水) 06:23:33.08 ID:fwbH05yW0.net
- >>185
関数は式なので(変数を前提としているので)パーセントは不要
それ以外のコマンドは文字列を前提としているのでパーセントが必要
と覚えて覚えておけばいいよ
- 188 :名無しさん@お腹いっぱい。:2015/02/25(水) 08:17:45.30 ID:p0w6yd+10.net
- >>186
XXX.ahkのxxx行目に何が書いてあるのかの確認はしてみた?
起動時以外は起きないならとタカくくってると案外単純ミスだったりすることもあるかもよ
- 189 :名無しさん@お腹いっぱい。:2015/02/25(水) 08:40:26.71 ID:+Q2iDrRA0.net
- たぶん関数の意味も分かってないと思われる
カッコ付いてるのが関数
- 190 :名無しさん@お腹いっぱい。:2015/02/25(水) 14:38:21.16 ID:zmRXvEXI0.net
- >>187
なんとなーくわかったようなわかってないんだろうなぁというような感じです
>>183さん>>187さん>>189さんありがとうごさいました
- 191 :名無しさん@お腹いっぱい。:2015/02/25(水) 22:38:46.16 ID:tHX3bWHr0.net
- >>188
書いてあるのは確認しましたが今まで普通に動いていた普通のahkスクリプトです
ためしにDドライブ直下に中身を書き換えてinclude記述だけしたahkファイルとincludeされるahkファイルを一つづつ置いて
スクリプト起動してみましたがやっぱりこのエラーがでます HDDに障害がでてるのかもしれないので
正常な外付けにその2つのファイルを置いて同じことをしてみましたが同じエラーがおきました
- 192 :名無しさん@お腹いっぱい。:2015/02/25(水) 23:46:30.99 ID:SFRIynUs0.net
- 自分自身で解決したいのか、第三者の協力を仰ぎたいのかどっちなんだろう?
もし後者だとしたら情報少なすぎ。(エスパーでもしろってことかい?)
- 193 :名無しさん@お腹いっぱい。:2015/02/25(水) 23:54:45.78 ID:c3Q7mLsl0.net
- Menuで作ったコンテキストメニュー的なものをwindows標準の右クリックのコンテキストメニューに追加することってできますか?
- 194 :名無しさん@お腹いっぱい。:2015/02/25(水) 23:59:36.25 ID:c3Q7mLsl0.net
- あ…
Menuの表示させる位置をいじれば
同時に表示できないこともないのかな
- 195 :名無しさん@お腹いっぱい。:2015/02/26(木) 00:08:10.07 ID:NBAhg0g00.net
- >>193
メニュー専用ahkをレジ登録する方法ならこれ
http://ameblo.jp/ana78001/entry-11385138954.html
ahk起動中だけ動的にコンテキストに割り込む方法は知らん
- 196 :名無しさん@お腹いっぱい。:2015/02/26(木) 02:53:37.92 ID:KfMCblY+0.net
- >>192
エスパーってのがどういう意味かよくわかりませんがとりあえず
こういうことって結構起きてるのかどうか確認したかったのが一番ですが
とりあえずこういうことは普通おきることじゃないみたいなんでリカバリーかけましたわ
そしたら直りました どうもでした
- 197 :名無しさん@お腹いっぱい。:2015/02/26(木) 15:35:53.68 ID:hPfQF5nl0.net
- スレチかなぁとも思うのですが、質問させて下さい。
AHK でディスプレイの電源状態を取得したいと考えています。
以下のスクリプトはノート PC 等の内蔵ディスプレイには正常動作していますが、
HMDI で接続したディスプレイのオンオフ状態は取得しません。
これを何とかしたいと思っています。
hDisp := DllCall("CreateFile", "Str", "\\.\LCD", "UInt", 0xC0000000, "UInt", 3, "UInt", 0, "UInt", 3, "UInt", 0, "UInt", 0, "Ptr")
DllCall("GetDevicePowerState", "Ptr", hDisp, "IntP", stat)
DllCall("CloseHandle", "Ptr", hDisp, "Ptr")
Msgbox % stat ? "Display On" : "Display Off"
Microsoft MSDN を調べてみたりもしましたが、基本的に門外漢のため
有用な情報に辿りついていません。どなたかアドバイスいただけると幸いです。
- 198 :名無しさん@お腹いっぱい。:2015/02/26(木) 18:57:40.93 ID:XuDz4mCU0.net
- >>197
スレチじゃないが環境ぐらいは書こう。
以下Win7x64で動作確認、ハードウェアのスイッチは検出できない
; ディスプレイの電源状態を検出
; http://msdn.microsoft.com/en-us/library/aa373195(v=vs.85).aspx
; http://msdn.microsoft.com/en-us/library/aa372723(v=vs.85).aspx
; http://www.autohotkey.com/forum/topic67426.html
; https://code.google.com/p/automatedme/source/browse/AutoHotKey/Screen+Off+Event.ahk
OnExit, ExitSub
Gui, +LastFound
hRecipient := WinExist()
GUID_MONITOR_POWER_ON_GUID := "{02731015-4510-4526-99e6-e5a17ebd1aea}" ;GUID_MONITOR_POWER_ON
VarSetCapacity(GUID_MONITOR_POWER_ON, 16, 0)
DllCall("ole32\CLSIDFromString", "UInt", &GUID_MONITOR_POWER_ON_GUID, "UInt", &GUID_MONITOR_POWER_ON)
hMonitorNotify := DllCall("RegisterPowerSettingNotification", "UInt", hRecipient, "UInt", &GUID_MONITOR_POWER_ON, "UInt", 0)
OnMessage(0x0218, "WM_POWERBROADCAST") ;WM_POWERBROADCAST = 536 (0x218)
Return
ExitSub:
DllCall("UnregisterPowerSettingNotification", "UInt", hMonitorNotify) ; Unregisters the power setting notification.
ExitApp
...
- 199 :名無しさん@お腹いっぱい。:2015/02/26(木) 18:58:17.59 ID:XuDz4mCU0.net
- /*
lParam+16+4 is the address of POWERBROADCAST_SETTING's Data
member which is the current monitor state
GUID PowerSetting: size 16
DWORD DataLength: size 4
0x0 = The monitor is off.
0x1 = The monitor is on.
*/
WM_POWERBROADCAST(wParam, lParam, msg, hwnd) {
monitorState := NumGet(lParam + 16 + 4, "UChar")
if (monitorState == 0)
MsgBox OFF
else
MsgBox ON
}
F1:: ; モニターOFF
SendMessage, 0x112, 0xF170, 2,, Program Manager
Return
ESC::
ExitApp
- 200 :名無しさん@お腹いっぱい。:2015/02/27(金) 02:21:23.00 ID:S1w84vHl0.net
- imagesearch用の素材画像作りを楽にするために
欲しい部分の左上でボタン押す→右下でボタン押す
その部分で囲まれた画像をbmpで保存
こんなのがほしい
- 201 :名無しさん@お腹いっぱい。:2015/02/27(金) 07:06:24.64 ID:WfUIXhGZ0.net
- 枠ならGui,+/-Optionで作れる
- 202 :名無しさん@お腹いっぱい。:2015/02/27(金) 07:19:27.81 ID:gSDfUsc+0.net
- raptureとか使えば
- 203 :名無しさん@お腹いっぱい。:2015/02/27(金) 10:21:40.12 ID:vWotzIX00.net
- Bandicamとか使う
- 204 :197:2015/02/27(金) 12:07:34.60 ID:dOnDdzOq0.net
- >>198 大変失礼しました。
HMDI 環境は Windows 10 preview x64 です
(正常動作しているノートPC は複数あって、いずれも Win 8.1 x64)
また提示していただいたスクリプト、上記 Win 10/HMDI 環境で正常動作しました。
ハードウェア的オンオフでなく、ソフトウェア的オンオフ (スクリーンセーバー的なモノ)
の状態を知りたいので、今回紹介していただいたスクリプトが大変参考になりそうです。
本当にありがとうございました。少し挑戦して、また分からないことがあったら
ご教示下さい。
- 205 :名無しさん@お腹いっぱい。:2015/02/27(金) 16:13:25.75 ID:S1w84vHl0.net
- avastさんがexeに変換したスクリプトをことごとく削除してくる・・・
- 206 :名無しさん@お腹いっぱい。:2015/02/27(金) 16:25:28.09 ID:OeH8CZWE0.net
- UPX圧縮OFFにしてもだめ?
- 207 :名無しさん@お腹いっぱい。:2015/02/27(金) 16:37:02.81 ID:S1w84vHl0.net
- Ahk2ExeのBaseFileをDefaultからANSI 32-bitに変えてみたら出てこなくなった・・・
- 208 :名無しさん@お腹いっぱい。:2015/02/27(金) 16:39:20.01 ID:C1XlgZHA0.net
- >>200
http://www.autohotkey.com/board/ で
検索語を「Capture」にして検索したら
Capture screeshots with a nice GUI (and IrfanView) - Scripts - AutoHotkey Community
http://www.autohotkey.com/board/topic/4980-capture-screeshots-with-a-nice-gui-and-irfanview/?hl=%20capture
というページ見つけたが、「Easy Copy AHK.ahk」というスクリプトは外部ソフト(IrfanView)を使うものであった。
imagesearch使うスクリプトは常駐させてはいるが、それ用の素材作るのは個人的には[IrfanViewでキャプチャー] + [編集保存]で十分だな。
- 209 :名無しさん@お腹いっぱい。:2015/02/27(金) 20:45:03.97 ID:+Kww4BIn0.net
- >>205
*スクリプトの文を誤検出
*AHK本体やコンパイルスクリプトを誤検出
Avast!のログを見る
Avast!の設定でAHKディレクトリを除外
空のファイルをEXEにしてみる
それでも駄目ならAvast!に誤検出報告送る
- 210 :名無しさん@お腹いっぱい。:2015/02/27(金) 21:03:10.42 ID:C1XlgZHA0.net
- >>208だけど、>>208で貼った同URLページの中ごろに 172x という人が作った全く別のスクリプトもあり、
ちょっと改造したらうまく動いたので改造部分だけ書いとくけど、これもIrfanViewを利用するタイプ。
ドラッグで指定した矩形範囲を、指定したフォルダにどんどん保存していくものなので、おそらく>>200の理想に一番近いかも。
Alt & Lbutton::
(中略)
file_name := GetFileName(Folder, "SCR", "JPG") ;ここを、"JPG" → "BMP" にすればBMP形式で保存される
;TakeScreenShot(irfanviewPath, file_name, MX, MY, MXend, MYend, 0)
; ↑ を ↓ のように変更
TakeScreenShot(irfanviewPath, file_name, MX, MY, MXend-MX, MYend-MY, 0)
}
Return
- 211 :名無しさん@お腹いっぱい。:2015/02/28(土) 02:00:45.43 ID:fi17g8G40.net
- ビットマップだけならWin32APIだけで保存できないこともなく
DCやDIBセクションを作ってそこにBitBltで転写したあとDIBのバイナリをWriteFileで保存すればいい
- 212 :名無しさん@お腹いっぱい。:2015/02/28(土) 10:39:04.06 ID:5BLPatPM0.net
- 左上を、Aホットキー、右下をBホットキーでBキーを押した瞬間画面全体をスクリーンショットでキャプチャーさせたあと
A,Bホットキーで保存しておいた左上、右下の座標で切り出すスクリプト作ったらいいんじゃね
切り出すのは外部のソフトでImageMagickのコマンド系使ってもいいしなんでもあるだろ
- 213 :名無しさん@お腹いっぱい。:2015/02/28(土) 12:10:11.99 ID:w2cRL2ia0.net
- AHKだとFunc("関数名")で文字列からMy関数呼び出せて超便利だけど、クラス関数だけどうやっても呼び出せない
みんなFuncはグローバル関数専用で使ってんのかな
- 214 :名無しさん@お腹いっぱい。:2015/02/28(土) 12:16:35.71 ID:7jW9ns/y0.net
- スレ汚しすいません。
ID:C1XlgZHA0 す。
>>208>>210を大幅に変更してみますた。
見づらいかも知れませんが変数名も変えてます。
以前はドラッグの方向が左上→右下のみ正常動作してましたが、
全方向正常に動くようになってると思います。
>>211の方法は分からないので、irfanviewを使用してます。
GetFileName関数についてですが、保存フォルダ内に画像が大量に有ると
処理に時間が掛かると思われるんですが、現実的には作っても
数十〜数百位だから気にする必要ないですかね?
それか、良い案有りますか?
次レス以降にスクリプト貼ります。(長いので分割します)
- 215 :名無しさん@お腹いっぱい。:2015/02/28(土) 12:17:33.72 ID:7jW9ns/y0.net
- irfanviewPath := "(インストパス)\i_view32.exe"
SaveFolder := TEMP . "\CaptureImage" ;テンポラリフォルダ内にフォルダ作成
SaveImage_Pre := "SCR"
SaveImage_Ext := "bmp"
goto, TakeScreenShot_end
TakeScreenShot(AppPath, FileName, x_start, y_start, width, height) {
Send, {PRINTSCREEN}
RunWait, "%AppPath%" /clippaste /crop=(%x_start%`,%y_start%`,%width%`,%height%) /convert="%FileName%", , hide
}
GetFileName(FolderPath, FilePrefix, FileExt) {
FileNoCount := 0
Loop, {
FileNoCount++
Tmp_FileName := FolderPath . "\" . FilePrefix . FileNoCount . "." . FileExt
} until ! FileExist(Tmp_FileName)
return Tmp_FileName
}
- 216 :名無しさん@お腹いっぱい。:2015/02/28(土) 12:20:48.75 ID:7jW9ns/y0.net
- #x:: ExitApp
Alt & Lbutton::
if ! FileExist(SaveFolder) { ;画像の保存場所が存在しなければ作成する
FileCreateDir, %SaveFolder%
}
CoordMode, Mouse, Screen
MouseGetPos, start_X, start_Y
Gui, 1:Color, EEAA99
Gui, 1:+Lastfound
WinSet, TransColor, EEAA99
Gui, 1:-Caption +Border
Loop, {
MouseGetPos, end_X, end_Y
crop_width := abs(start_X - end_X)
crop_height := abs(start_Y - end_Y)
If (start_X < end_X) {
crop_X_start := start_X
} Else {
crop_X_start := end_X
}
If (start_Y < end_Y) {
crop_Y_start := start_Y
} Else {
crop_Y_start := end_Y
}
Gui, 1:Show, x%crop_X_start% y%crop_Y_start% w%crop_width% h%crop_height%
} until ! GetKeyState("LButton", "P")
Gui, 1:Destroy
SaveImageName := GetFileName(SaveFolder, SaveImage_Pre, SaveImage_Ext)
TakeScreenShot(irfanviewPath, SaveImageName, crop_X_start, crop_Y_start, crop_width, crop_height)
Return
TakeScreenShot_end:
- 217 :名無しさん@お腹いっぱい。:2015/02/28(土) 12:22:48.58 ID:7jW9ns/y0.net
- 以上です。
説明のコメント少なくてすいません。
最後に、スレ汚しすいませんでした。
- 218 :名無しさん@お腹いっぱい。:2015/02/28(土) 14:30:30.52 ID:z8Z8inyf0.net
- >>217
長過ぎるときはこれ >>1
> 簡易スクリプト掲示板
> http://pastebin.com/
コメントが無いので処理の把握が面倒
関数の書く位置がおかしい、先に書く必要ない
Returnの下にまとめて書けばいい
gotoが謎
単純な一行ifなら三項演算子にした方が見やすい
代入も含めて1行で済む hoge := (1 < 0) ? 1 : 2
FileNoCount → A_Index
Tmp_FileNameに代入しないでFileExistの中で連結したほうが処理が減る
処理速度は自分で計ればわかる A_TickCount - A_TickCount
- 219 :名無しさん@お腹いっぱい。:2015/02/28(土) 14:32:55.78 ID:UwDvAnBB0.net
- これとAUTOIT3の違いって何ですか?
- 220 :名無しさん@お腹いっぱい。:2015/02/28(土) 15:29:12.72 ID:PGQVCLd20.net
- 詳しくなっていくにつれて
以前書いたスクリプトのアラに気が付き
修正し始める、のループ
効率をあげるためにAHK使い始めたのにAHKのスクリプト書いてる時間のほうがながいきがしてきた
- 221 :名無しさん@お腹いっぱい。:2015/02/28(土) 15:52:06.68 ID:7jW9ns/y0.net
- >>218
説明コメントの件はすいません。
元々のスクリプトは>>208に貼ったページに書かれてあった他人(172x)のもので、
元々のスクリプトにもコメントがないんです。
関数の位置が上に来てるのは分割レスするのにキリの良いところで区切ろうとすると
こういう区切り方にするしかなかったのです、見づらくてすいませんでした。
goto, TakeScreenShot_end
(中略)
TakeScreenShot_end:
はいつものクセでこうしてます。
これで、(中略)部分にサブルーチンのラベルがあった場合でも
スクリプト起動時に実行してしまうのを防止してくれます。
「return」でも良いのでしょうけど、何か分かりにくいので「goto」使ってます。
ご指摘の所は今後気を付けます。
また、色々と分かりやすい解説ありがとうございました。
>>219
大きな違いは、
1.キーリマップに特化されているか否か
2.文法
ですかね。
キーリマップ(カスタマイズ)したいなら「AutoHotkey」。
一般的な自動化スクリプト書きたいならどちらでも。(個人的には、文法は「AutoIt3」の方が分かりやすいと思う)
あとは、出来ることや獲て不得手も有るかもしれないので、両方見比べて使い分けすれば良いと思いますよ。
自分は両方使い分けてます。
- 222 :名無しさん@お腹いっぱい。:2015/02/28(土) 16:15:01.83 ID:mdycdv2l0.net
- 呼べないわけじゃない。
下のオブジェクト Hoge と Fuga は(ほぼ)等価。
AHKのクラス定義(Hoge)はかなり新しくて、
過渡期的にオブジェクトのメソッドは外部関数にて実現していた時期があり、
手法的にはFugaの形式でやっていた。
class Hoge{
static name := "HogeHoge"
func() {
MsgBox, % "I am " this.name
}
}
Fuga := {"base":{"func":"Fuga_func"}, "name":"FugaFuga"}
Fuga_func(this) {
MsgBox, % "I am " this.name
}
Hoge.func()
Fuga.func()
んで、HogeもFugaの間でのメソッド(クラス関数)の違いは、
「暗黙的な自分自身を示すthis引数を書かなくていいだけ」であって、
関数として呼ぶときは「暗黙のthis」が必要になる。
fn:=Func("Hoge.func")
fn.(0)
fn.({"name":"HigeHige"})
- 223 :名無しさん@お腹いっぱい。:2015/02/28(土) 16:15:47.72 ID:mdycdv2l0.net
- >>222 は >>213 宛て
- 224 :名無しさん@お腹いっぱい。:2015/02/28(土) 16:37:25.10 ID:UwDvAnBB0.net
- サンクス。
- 225 :名無しさん@お腹いっぱい。:2015/02/28(土) 16:51:10.68 ID:AINZ07z20.net
- >>221
>これで、(中略)部分にサブルーチンのラベルがあった場合でも
>スクリプト起動時に実行してしまうのを防止してくれます。
>「return」でも良いのでしょうけど、何か分かりにくいので「goto」使ってます。
ちょ防止って、あのねアセンブラじゃないんだからさ
AutoExecuteセクションはラベルこそないけど最初に実行される一つのサブルーチンって考えたほうがいいよ
出口はreturnなりexitappなりが妥当
中途に他サプルーチンやら関数やらホットキーやら挟むようなコード書いちゃいかんのよ
ファイル末尾のラベルまでgotoで飛ばすって普通はあり得ない
個人的なわかりやすさ優先でマイルール貫きたいんでいいんですっていうことだったら
金輪際こういう場でコードさらすのはやめたほうがいい、それくらい悪い見本
- 226 :名無しさん@お腹いっぱい。:2015/02/28(土) 17:04:17.15 ID:Nv6f4t4+0.net
- >>225
AutoExecuteセクションの終わりでExitするのにくらべて
Gotoで末尾に飛ばすことがどのような致命的な問題があるのか
是非とも教えていただきたい
- 227 :211:2015/02/28(土) 17:10:41.16 ID:fi17g8G40.net
- 言いだしっぺなりに援助のつもりでBMP保存のコードを書いてたらDIDデータを書き込むとこで予想外に行き詰った
全消しするのももったいないので後人に希望を託して経過だけ貼っておく
http://pastebin.com/pa0NRAYi
- 228 :名無しさん@お腹いっぱい。:2015/02/28(土) 17:21:16.42 ID:fi17g8G40.net
- いきなりだが微修正
55行目のpvbits → &pvbits
あとBitBltの引数がミスってた。座標部分だからこの際どうでもいいけど
Int, right - left, Int, bottom - top, Int, 0 → Int, 0, Int, right - left, Int, bottom - top
http://ahkwiki.net/FileSelectFile
> options 8を指定して 16を指定しなかった場合、強制的に 保存ダイアログになる。
ところでこれ誤植かなぁ。仕様も意味不明だし実際に試してもそうならなかったような
- 229 :名無しさん@お腹いっぱい。:2015/02/28(土) 17:35:55.92 ID:Nv6f4t4+0.net
- 16を指定して 8を指定しなかった場合
が正しいんじゃないかね
- 230 :名無しさん@お腹いっぱい。:2015/02/28(土) 19:08:11.68 ID:yfEHmudG0.net
- ImageSearchで画像探してる時ってマウスのカーソルは無視してくれてるの?
- 231 :名無しさん@お腹いっぱい。:2015/02/28(土) 20:54:35.45 ID:AINZ07z20.net
- >>226
えっそれ人に聞くの?
煽りじゃなく本気で知りたいならここで横着して聞くよりも自分で調べたほうがためになると思うけど
http://ja.wikipedia.org/wiki/Goto%E6%96%87
>Cなどの構造化プログラミング言語においては、goto文はむやみに使ってはいけないと言う暗黙の約束がある。
>これは、goto文が原始的で自由度の高すぎる機能であるため、安易なgoto文の使用はプログラムの構造化を妨げ、
>デバッグなどが行いにくくなり、バグの発生や、メンテナンス性・可読性の低下の原因になりやすいからである。
逆になぜそこにこだわるのか、理由やメリットがあるなら教えてほしい
gotoで飛ばすにしても TakeScreenShot_end: の次の行にはReturnを書くべきだし
AutoExecuteセクション内にラベルや関数を内包するというのは
自分にはコーティングルール違反にしか見えないのだけど
- 232 :名無しさん@お腹いっぱい。:2015/02/28(土) 21:33:21.83 ID:ma75jfsH0.net
- 思考停止して「そういうものだから」と思ってるだけならそれでもいいけど
〜すべきとか他人に言わないほうがいい
- 233 :名無しさん@お腹いっぱい。:2015/02/28(土) 22:01:06.78 ID:QaJ7AYq30.net
- >>230
書いてある
- 234 :名無しさん@お腹いっぱい。:2015/02/28(土) 22:20:31.66 ID:i67nsyV20.net
- >>232
こういうプログラミングの基礎部分のタブーはやりがちゆえに皆それなりに痛い目見てきてるし
他人が書いたトンデモソースをデバッグしたことある人間なら身に沁みてることではないかと
単純に思考停止と言いきってしまう人は逆に経験則で学ぶ機会をまだ得てないのかなと思ってしまう
前にも三項演算子とかスマートコーティング() とか妙な煽り方してた人いたけど
右へならえを否定したい変なポリシーでもあるんだろうか
- 235 :名無しさん@お腹いっぱい。:2015/02/28(土) 23:56:28.28 ID:HPdXpqeF0.net
- 思考停止という熟語は喧嘩売るときに使われるという文化的背景を知るべき
- 236 :名無しさん@お腹いっぱい。:2015/02/28(土) 23:59:24.59 ID:w2cRL2ia0.net
- >>222-223
丁寧に回答感謝します
Fuga.func()の書き方は初めて知った。引数の渡し方が特に参考になり感謝です
- 237 :名無しさん@お腹いっぱい。:2015/02/28(土) 23:59:43.58 ID:rNeGr3r90.net
- #include, Gdip_All.ahk
file : ="foo.jpg"
pToken := Gdip_Startup()
pBitmap := Gdip_BitmapFromScreen()
Gdip_SaveBitmapToFile(pBitmap, file)
Gdip_Shutdown(pToken)
Gdip_All.ahkをつかってデスクトップのスクリーンショットを保存する
ttp://www.autohotkey.net/~Rseding91/Gdip%20All/Gdip_All.ahk
- 238 :名無しさん@お腹いっぱい。:2015/03/01(日) 00:04:40.42 ID:rTsCTT9d0.net
- Gdip_BitmapFromScreenはウィンドウや矩形を指定できるっぽい
- 239 :名無しさん@お腹いっぱい。:2015/03/01(日) 05:59:04.95 ID:/27aLbAj0.net
- 最近は条件付きでgotoを認めようという中道派が増えてきた気がしないでもない
用途はフラグ変数の節減とかその程度のものだけど
>>220
よく分かるわ。ちょっと凝ろうとすると外部関数が必要になるし、DllCallへの移植が大変過ぎる
ヘッダファイルをぶっかいて入力支援を作ろうかと思ったがtypedefとか多くて諦めた
>>237-238
そんなのがあったのか。すげえな
- 240 :名無しさん@お腹いっぱい。:2015/03/01(日) 08:39:19.41 ID:Vj76C+Z/0.net
- Errorアボートの時にはよく使うけどね>goto
- 241 :名無しさん@お腹いっぱい。:2015/03/01(日) 09:17:36.84 ID:mbX5CEKm0.net
- AHKコンソールの文字サイズはどう変更するんです?
Script lines most recently〜が表示されるアレです
もう少し大きくしたいんですが
- 242 :名無しさん@お腹いっぱい。:2015/03/01(日) 09:29:34.51 ID:HRvEjq5N0.net
- こんなのあるけど
Screen Capture using only AHK. No 3rd party software required.
http://www.autohotkey.com/board/topic/91585-screen-capture-using-only-ahk-no-3rd-party-software-required/
gotoは多重ループの内側から一番外へ出たいときとかに使うけどなあ
まったくないのも不便
でもAutoExecuteから一番最後にジャンプってのはあり得ないわw
そんなコード書くやつは、まともなプロジェクトとかには参加できない。そこでは書き方も含めチェックされるからね
- 243 :名無しさん@お腹いっぱい。:2015/03/01(日) 11:24:57.16 ID:O82ldbvM0.net
- >>227
なんかタブが無駄に入ってしまった
でもpastebinて便利だな
http://pastebin.com/2jadLBws
- 244 :名無しさん@お腹いっぱい。:2015/03/01(日) 12:49:33.26 ID:/27aLbAj0.net
- >>243
おおお、すげー。色々浮かばれたわ、サンクス
リベンジとは違うけど、さっきMSDN等の関数定義をDllCallの書式に移植するやつを作ったので公開しとく
http://pastebin.com/0EB9Ykyw
- 245 :名無しさん@お腹いっぱい。:2015/03/02(月) 01:42:22.99 ID:qRAEGYPk0.net
- ホームページ更新の巡回に関する小技募集
- 246 :名無しさん@お腹いっぱい。:2015/03/02(月) 02:42:07.80 ID:qRAEGYPk0.net
- Send, ^+!v ; ファイラーでカレントディレクトリパスを取得
ClipWait
TargetDir = %Clipboard%
Clipboard =
InputBox, S&RWord, Search&Replace, Search/Replace,, 500, 120
SWord := RegExReplace(S&RWord, "^(.*)/", "$1")
RWord := RegExReplace(S&RWord, "/(.*)$", "$1")
Loop, %TargetDir%\*.*, 1 {
NewFileName := RegExReplace(A_LoopFileName, SWord, RWord)
FileMove, %A_LoopFileFullPath%, %TargetDir%\%NewFileName%
FileMoveDir, %A_LoopFileFullPath%, %TargetDir%\%NewFileName%
}
return
この『ディレクトリ直下一括リネーム.ahk』のInputBoxから仕入れたS&RWordの処理が気に入らないんですが、
ひとつの入力欄に「検索語/置換語」と入力したあとスマートにそれらを二つの変数に分けるのって、どうやります?
- 247 :名無しさん@お腹いっぱい。:2015/03/02(月) 03:00:22.81 ID:A9bu8JKX0.net
- >>246
RegExReplace → RegExMatch
または
InputBox → GUI自作して入力項目を分ける
- 248 :名無しさん@お腹いっぱい。:2015/03/02(月) 03:04:18.22 ID:A9bu8JKX0.net
- Clipboard =
Sendの前に追加
- 249 :名無しさん@お腹いっぱい。:2015/03/02(月) 03:05:11.48 ID:jFWfWs/q0.net
- 検索語を入力していって/が入力されると置換語の入力に切り替わるようなものを作るのはどうでしょ
- 250 :名無しさん@お腹いっぱい。:2015/03/02(月) 04:25:53.00 ID:/YnkJPoe0.net
- 作ればいいと思いますよ
- 251 :名無しさん@お腹いっぱい。:2015/03/02(月) 04:46:39.16 ID:uwFqihon0.net
- ?w
流れとか文章とか読めないひとなのかしら
- 252 :名無しさん@お腹いっぱい。:2015/03/02(月) 07:52:59.07 ID:PStKGwIP0.net
- 流れとか文章とか関係ない
テンプレも読めない人なんだねってだけw
>>1-13 の何に該当すると思う?
- 253 :名無しさん@お腹いっぱい。:2015/03/02(月) 07:54:53.00 ID:Y3/aW/KL0.net
- 何くらだねえの相手にしてんだよ
- 254 :名無しさん@お腹いっぱい。:2015/03/02(月) 07:57:53.62 ID:0Soi2uWn0.net
- そんなのに即レスするあんたもたいして変わらんと思う
- 255 :名無しさん@お腹いっぱい。:2015/03/02(月) 08:23:42.64 ID:qRAEGYPk0.net
- >>247
Word := RegExMatch(S&RWord, "^(.+)/(.+?)", Word)
としたらWord1にSWordが、Word2にRWordが格納されるんですかね?
Matchって一致箇所を調べるだけかと思ってました
GUI自作はGUI,Destroyがうまく使えないので避けてます
>>248
忘れてました。ども
- 256 :名無しさん@お腹いっぱい。:2015/03/02(月) 08:46:53.06 ID:qRAEGYPk0.net
- >>249
InputコマンドのEndkeysオプションみたいな感じですかね
- 257 :名無しさん@お腹いっぱい。:2015/03/02(月) 10:25:36.59 ID:cDD5fVU70.net
- >>252の言うことがガチで意味分からんから誰か解説してほしい
ただのテンプレ工作?
- 258 :名無しさん@お腹いっぱい。:2015/03/02(月) 11:24:48.88 ID:1RBp1lvy0.net
- ID:qRAEGYPk0 の教えて君っぷりを指して
>11-13って言いたかったんじゃないかと
それより>251の言う流れのほうがよっぽどわからない
- 259 :名無しさん@お腹いっぱい。:2015/03/02(月) 11:37:40.55 ID:cDD5fVU70.net
- 流れも何も、>>249の>>246への提案レスに対して「作ればいい」というレスポンスが意味不すぎるだけだと思うけど
- 260 :名無しさん@お腹いっぱい。:2015/03/02(月) 12:18:57.68 ID:ZB7V9D3L0.net
- Chromeを使っています
IEでもいいのですが、複数のタブを並べて複数のHPを開いているのですが、タブの切り替えってどうやったらいいでしょうか
今考えているのはImagesearchを使って該当するタブを見つけてクリック、くらいしか思いつかないのですがもっとスマートな方法は
出来ないでしょうか
引数としてはタブに出てるHP名です
- 261 :名無しさん@お腹いっぱい。:2015/03/02(月) 12:48:25.04 ID:1RBp1lvy0.net
- Ctrl+Tabで順次切替えるのは?
WinGetTitleで該当HP名取得できるまでWhileで回す
>>259
作るのはどうでしょ
→ 同意、作ればいいと思いますよ>246
って意味かなと思ったけど、そうじゃなくてもスルー対象じゃね
- 262 :名無しさん@お腹いっぱい。:2015/03/02(月) 12:51:57.62 ID:cDD5fVU70.net
- ChromeのGUIはActive Accessibilityに対応してるからACC.ahkで操作できそうだな
- 263 :名無しさん@お腹いっぱい。:2015/03/02(月) 12:56:55.57 ID:1RBp1lvy0.net
- そんで
欲しい答えもらえなかった質問者=>251でファビョってんのかなと
その後の流れで違うのはわかったけど、>252もそこ勘違いしたんだと思う
で、教えて君のテンプレ貼ろうとして参照先間違えたと想定
- 264 :名無しさん@お腹いっぱい。:2015/03/02(月) 13:18:19.31 ID:ZB7V9D3L0.net
- >>261
なるほど、そういう手がありましたか
>>262
今ちょっと時間がないので、ACC.ahkというのをあとで調べてみますね。ありがとうございます
- 265 :名無しさん@お腹いっぱい。:2015/03/02(月) 13:25:55.56 ID:A9bu8JKX0.net
- >>11-13
これはテンプレではありません勝手に追加しようとしているものです
以降スルーしてください
- 266 :名無しさん@お腹いっぱい。:2015/03/02(月) 14:22:28.67 ID:qRAEGYPk0.net
- テンプレ工作ってどういう意味かと思ってましたが>>265でようやっと把握しました
勝手なテンプレ追加改変をしれっと容認させる片棒を担がされそうになってたわけですね……
Word := RegExMatch(SandRWord, "^(.*)/(.*)$", Word)
とあとディレクトリかファイルか判定させてクリップボード周りをご指摘通り修正したら完璧に動作することを確認しました。ありがとうございます>>247>>248
なにやら荒れるきっかけを作ってしまったようで申し訳ありませんでしたm(__)m
- 267 :名無しさん@お腹いっぱい。:2015/03/02(月) 14:55:04.57 ID:uwFqihon0.net
- ID:qRAEGYPk0って教えて君か?
>>263こいつの中の教えて君の定義がどうなってんのか知りたいわ
ちゃんと手順踏んでる質問者に無能ってのもひどすぎると思うし
発端の勘違い>>250クンもだけど「教えて君」に過剰反応し過ぎて逆にスレの正当な流れすら乱してる
- 268 :名無しさん@お腹いっぱい。:2015/03/02(月) 14:58:34.23 ID:uwFqihon0.net
- ごめん
無能云々は他スレの荒らしだったわ
タブ開きすぎてて間違った
スマソ
- 269 :名無しさん@お腹いっぱい。:2015/03/02(月) 16:42:29.08 ID:oV9pnqm40.net
- >245で「子技募集」
>246で拾ってきたスクリプトの挙動が「気に入らない」
教えて君断定は言い過ぎだとしても うかつ感は拭えないな
カチンと来たのは自分だけだろうか
- 270 :名無しさん@お腹いっぱい。:2015/03/02(月) 17:57:04.37 ID:K2k+E1710.net
- すいません、これって
「外付けテンキーのxx」を押したとき
という指定は出来るのでしょうか
つまり、普通のフルサイズのキーボードと外付けテンキーをPCに繋いで、フルサイズのキーボードはテンキー含めて全て変わりなく使える。テンキー部分も。
ただし外付けのテンキーはボタンの割り当てを変える という感じです
- 271 :名無しさん@お腹いっぱい。:2015/03/02(月) 18:22:11.98 ID:jFWfWs/q0.net
- >>270
http://ahkwiki.net/KeyList
その外付けテンキーが普通のキーボードのNumLockと連動しなければ
数字の部分とIns,Delはキーボードのとは違うものを割り当てられるよ
完全に別の入力として分けたいなら「HidKeySequence」みたいなソフトを経由すればいいんじゃないかな
- 272 :名無しさん@お腹いっぱい。:2015/03/02(月) 18:44:51.72 ID:cDD5fVU70.net
- >>269
強いて言えば「小技って具体的に何だよ」と思ったぐらいでそれ以外は別に
再発明はムダなだけだし出来合いのソースの募集はスレ的にはむしろ推進されるべきですらある
どういう目的でコードを書こうが改変しようが自分には知ったこっちゃないし
何にせよ、その程度で「迂闊」とされて無駄な茶々入れが入る方が優先的にイラつくだけ
- 273 :名無しさん@お腹いっぱい。:2015/03/02(月) 19:05:04.31 ID:F9hILZpp0.net
- >>270
http://pc12.2ch.net/test/read.cgi/software/1265518996/795
- 274 :名無しさん@お腹いっぱい。:2015/03/02(月) 21:53:39.58 ID:RxYnwJ0R0.net
- おまゆう
- 275 :名無しさん@お腹いっぱい。:2015/03/02(月) 22:31:32.15 ID:rptcqWQf0.net
- >出来合いのソースの募集はスレ的にはむしろ推進されるべきですらある
このスレに長くいるけどこんなの初めて聞いたわ
- 276 :名無しさん@お腹いっぱい。:2015/03/03(火) 00:05:14.63 ID:u28G/DU50.net
- 自分が先に提供してから皆の小技も教えて って呼びかけるならわかるけど
募集(クレクレ)と質問のコンボだと心象よくないかもね
改変はかまわんが質問する立場の時に言葉を選ばないのは迂闊だと思うわ
己の希望と少し違う、自分が使いやすいように変えたい、など言い回しは気をつけよう
当人に悪意はなくても元ソース提供者を下げる言い方に取れるし手を貸す気が削がれる
まあわざわざ絡むほどかっつーとそうでもないが
まともな質問でも因縁つける奴はいるし
多少の茶々が入っても騒ぎ立てずスルーしとくほうがいいと思う
- 277 :名無しさん@お腹いっぱい。:2015/03/03(火) 00:22:40.23 ID:pSvwlkqj0.net
- そもそもその『ディレクトリ直下一括リネーム.ahk』ってのは拾い物なのか
ググったけどそれっぽいの見当たらんし>>246はどっかで公開されるようなレベルには見えないよ
- 278 :名無しさん@お腹いっぱい。:2015/03/03(火) 03:15:29.95 ID:J1d0ud9B0.net
- >>3の
>64ビットOSでAHKL32ビット版の使用は制約が多いので、64ビット版を強く推奨。
の制約とは具体的にはどういうものになるのでしょうか?
ぐぐっても同じような文面しかヒットせず詳細が分からないです
- 279 :名無しさん@お腹いっぱい。:2015/03/03(火) 11:01:40.59 ID:uwF/gt120.net
- >>278
64bit版が使えない環境なのか好奇心なのか読み取れませんでした
試しに使ってみてはどうでしょうか
不具合が出て困ったときは相談に乗ります
- 280 :名無しさん@お腹いっぱい。:2015/03/03(火) 20:02:01.53 ID:gJZoAFmS0.net
- >>278
DllCall、WOW64リダイレクト (System32、レジストリ)、メモリ、このあたりかな
AHKが32bitならDllCallで64bitのDLLを呼び出すとエラーが出る
AHKが64bitならDllCallで32bitのDLLを呼び出すとエラーが出る
OSが64bitならDLLも64bitがメインになる
- 281 :名無しさん@お腹いっぱい。:2015/03/03(火) 21:48:25.52 ID:LZEYUTQz0.net
- 具体的にはILP32とLLP64の違い
32bitだとintもptrも4byteだけど64bitだとptrだけ8byteになってうげーってなる
- 282 :名無しさん@お腹いっぱい。:2015/03/04(水) 12:34:53.00 ID:05cZsQ1r0.net
- 278です
ようやくOSをXP(とAHK1.0.48.5)から8のx64に更新したのでAHKも新しいのに、と思ったのですが
DllCallとか以外にも64ビットアプリをフックできないとかいろいろあるみたいですね
当面はANSI 32-bitのとUnicode 64-bitのを併用しながら移行してみようかと思います
みなさんありがとうございました
- 283 :名無しさん@お腹いっぱい。:2015/03/04(水) 13:21:26.80 ID:dAIxby2W0.net
- >>282
>AHK1.0.48.5
それどう見たって古すぎだろ。
その版のAHKで動いていた(作った)スクリプトの幾つかがUnicode版(32,64に関わらず)ではエラーが出て動かない
っていう単純な話なら、スクリプトのエンコードを「UTF-8 BOM有り」に変更するだけで動く場合が有るぞ。
DLLうんたらかんたら…が原因で動かないならオレは解決方法は知らない。
- 284 :名無しさん@お腹いっぱい。:2015/03/05(木) 10:05:48.70 ID:PvGdQg/av
- 定時タイマーでアクションを起こしたいのですが方法どなたか教えてください。
半日近く探したけど適当なコードが見つからない・・・・。
下のコード書いたは書いたのですがキーに割り当てしないと動作しません。
トリガーなしでオートで動作するようにしたい。
よろしくお願いします。
#Persistent
nowtime=%A_HOUR%%A_MIN% ;現在hhmm取得
settime=1730 ;時刻指定
If (nowtime == settime)
Run,C:\○○○.exe
Return
- 285 :名無しさん@お腹いっぱい。:2015/03/05(木) 19:42:07.72 ID:fLHlRxfL0.net
- たびたびお世話になっております。
特定のアプリ限定で、左ダブルクリックを殺す方法はありますか?
そのアプリとは要するに並列ダウンローダーなのですが、
一覧表でアイテムを選択するつもりでうっかりダブルクリックしてしまうと
「一時停止」がかかってしまって、それが終わってから走らせるはずだった
タスクが代わりに動いてしまい、まずいのです。
#IfWinActive, 某アプリ
;こんな感じで
左ボタンのダブルクリック::
SendInput 左ボタンのシングルクリック
return
#IfWinActive
- 286 :名無しさん@お腹いっぱい。:2015/03/05(木) 20:17:57.86 ID:HWex2iB/0.net
- クリックされたらフラグを立ててタイマーで500msくらいしたら下げるようにする
それでフラグが立っているときだけそのアプリのクリックを殺す
- 287 :284:2015/03/05(木) 21:03:08.58 ID:fLHlRxfL0.net
- >>286 あー、結局そうなりますか。ありがとうございます。
タイマーとフラグ使うプログラミングなんて20年前の8bitマイコン以来だw
- 288 :名無しさん@お腹いっぱい。:2015/03/05(木) 21:10:54.82 ID:HWex2iB/0.net
- AHKがどうかは知らんけどメッセージフックができるならWM_LBUTTONDBLCLKを検知する手もある
- 289 :名無しさん@お腹いっぱい。:2015/03/05(木) 22:07:31.33 ID:KzDwKELs0.net
- >>287
こんな方法もある
a::Return
#If (A_TickCount > Time + 500)
~a::Time := A_TickCount
#If
- 290 :名無しさん@お腹いっぱい。:2015/03/06(金) 01:40:32.85 ID:0uNqwvG50.net
- If (式) 式の計算結果の真偽で条件分岐を行う。
If (変数の比較) 変数と数値を比較して条件分岐を行う。
上記2つの違いがわかりません。
使い分けないと困る、使い分けると便利な場面が有りましたら教えてください
- 291 :289:2015/03/06(金) 01:56:58.36 ID:0uNqwvG50.net
- テンプレ読みましたごめんなさい
- 292 :名無しさん@お腹いっぱい。:2015/03/06(金) 02:11:00.54 ID:OmF/O/650.net
- ええのよ
- 293 :284:2015/03/06(金) 14:02:18.02 ID:XTaoPMMA0.net
- >>288 早速やってみました。
OnMessage(0x203, "WM_LBUTTONDBLCLK")
WM_LBUTTONDBLCLK(wParam, lParam, iMsg, hWnd)
{
if WinActive("某ダウンローダー")
{
return 1
}
else
{
return ""
}
}
結果…反応せず。
AHKのOnMessage()は、スクリプト内でウィンドウを自作して、
それにメッセージが届いたときに反応するようです。
タイマーを試してみます。しばしお待ちを。
- 294 :名無しさん@お腹いっぱい。:2015/03/06(金) 14:15:11.34 ID:i727hu6r0.net
- a.exeというプロセスが同時に10個走ってるとして、その10個に対して同じ処理をしたい時、
最初の1つだけでなく、1つ1つのPIDを順番に取得して処理していく方法ってあるのん?
- 295 :284:2015/03/06(金) 14:15:46.81 ID:XTaoPMMA0.net
- できました。ありがとうございました。
global tLastLButtonClick := 0
#IfWinActive, 某ダウンローダー
LButton::
if (tLastLButtonClick < A_TickCount-500)
{
Send {LButton}
}
; 必ずこの位置で更新
tLastLButtonClick := A_TickCount
return
#IfWinActive
- 296 :名無しさん@お腹いっぱい。:2015/03/06(金) 15:11:54.35 ID:r7rWZBoJ0.net
- >>294
WinGet List
>>295
関数以外でglobalを書く必要はない
- 297 :名無しさん@お腹いっぱい。:2015/03/06(金) 15:22:31.37 ID:/NJQnDZm0.net
- >>285=294
ダブルクリック(じゃないこと)の判定は組み込み変数だけでもできるね
あと、>>295だとドラッグができなくなるから、もし必要ならKeyWaitで
LButtonが離されるのを待ってからLButton Upしてやる
LButton::
If (A_PriorHotkey <> A_ThisHotkey OR A_TimeSincePriorHotkey > 500)
{
Send, {LButton Down}
KeyWait, LButton
Send, {LButton Up}
}
Return
- 298 :名無しさん@お腹いっぱい。:2015/03/06(金) 15:47:37.42 ID:812RJITe0.net
- AHKには、PixelGetColorやImageSearchみたいのはあるのに、
画面の範囲を指定してそのBMPをファイル保存みたいのはないのでしょうか
たとえば、HPでもなんでも指定の画面範囲のBMPを読み込んで、別の個所の画面の画像と比較をしたいのですが
画面の指定範囲をファイル保存→そのファイルでImageSearchで別の画面をサーチ
みたいなことを考えていました
- 299 :284:2015/03/06(金) 17:12:56.99 ID:XTaoPMMA0.net
- ありがとうございます。
>>296 了解です>関数以外でglobalを書く必要はない
>>297 こちらのほうがよさそうですね。ありがたく使わせていただきます。
- 300 :名無しさん@お腹いっぱい。:2015/03/06(金) 18:25:52.72 ID:OmF/O/650.net
- >>298
丁度同類のスクリプトがこのスレで公開されてるよ
- 301 :名無しさん@お腹いっぱい。:2015/03/06(金) 20:10:08.59 ID:812RJITe0.net
- >>300
ありがとうございます。見ましたがとても難しそうですね
結局、AHKではそのようなコマンドは用意されてないのですね
それならいっそと思って、PixelGetColorで画素をとってきてppmファイルを作るスクリプトを作ってみました
あとはppmからbmpへ変換するコマンドソフトがあればいいだけです
時間はかかりますが、200x200くらいまでならまだ耐えられそうですw
q::ExitApp, 0
^s::
file := FileOpen( "C:\xxx.ppm", "w" )
if( file = 0 )
{
MsgBox File Not Open
return
}
x1 = 0
x2 = 500
y1 = 0
y2 = 500
cx = % x2-x1+1
cy = % y2-y1+1
s = P3`n%cx% %cy%`n255`n
file.Write( s )
ys = %y1%
- 302 :名無しさん@お腹いっぱい。:2015/03/06(金) 20:10:51.14 ID:812RJITe0.net
- つづき
loop, % cy
{
xs = %x1%
t = 0
loop, % cx
{
PixelGetColor, col, xs, ys, RGB
StringMid, r, col, 3, 2
StringMid, g, col, 5, 2
StringMid, b, col, 7, 2
r = 0x%r%
g = 0x%g%
b = 0x%b%
r += 0
g += 0
b += 0
s = %r% %g% %b%
if( t = 1)
file.Write( " " )
file.Write( s )
xs += 1
t = 1
}
file.Write( "`n" )
ys += 1
}
file.Close()
MsgBox 変換終了
return
- 303 :名無しさん@お腹いっぱい。:2015/03/07(土) 00:57:15.02 ID:B3eYvI7S0.net
- >>301
> あとはppmからbmpへ変換するコマンドソフトがあればいいだけです
つ http://www.imagemagick.org/
> 時間はかかりますが、200x200くらいまでならまだ耐えられそうですw
凄いな。CPUの型番きぼんぬ。
- 304 :名無しさん@お腹いっぱい。:2015/03/08(日) 04:06:48.18 ID:zliUZK/s0.net
- Headline-Reader Liteとautohotkeyの連携がなかなかイイね
- 305 :名無しさん@お腹いっぱい。:2015/03/08(日) 18:28:18.66 ID:+Kl9YiW10.net
- 質問です。同じフォルダ内の拡張子が同
じxxxa1,xxxa2,xxxa3,xxxa4(xxx部には毎回異なる数字が入る)がありxxxa2以外のファイルをFileDeleteを使い削除したいのですがどのようにすればよいのでしょうか?
- 306 :名無しさん@お腹いっぱい。:2015/03/08(日) 18:45:00.00 ID:jz2AVciS0.net
- >>305
Loop (ファイル検索) + If RegExMatch() で回せばいい
後は自分で考えよう
- 307 :名無しさん@お腹いっぱい。:2015/03/08(日) 19:23:58.32 ID:3bMFBWcF0.net
- 質問が初歩的すぎてどこまで説明が要るのか分からん
ファイルは取得できるのか連番は作れるのか文字列は扱えるのかetc
徒労の説明とかしたくないから要点を分割して訊くか、できるとこまでスクリプトを書いて転載してくれ
- 308 :名無しさん@お腹いっぱい。:2015/03/08(日) 19:30:44.19 ID:u1Hx7wMH0.net
- >>305
LOOPでフォルダー内のファイルをとってくるということが出来る
これくらいは調べて
で、ファイル名が得られるから、とりあえずそのファイル名にa2が入っているかどうかを
文字サーチしてないやつだけ削除すればいい
a2が思っていたところ以外の個所にある場合は削除出来ずに残るが、そこは例外処理をしよう
- 309 :名無しさん@お腹いっぱい。:2015/03/08(日) 20:52:12.36 ID:3bMFBWcF0.net
- ここで正規表現を使わずいつ使うのか
[0-9]+(.+)(|\..+)$ とか(キャプチャ使用)
[0-9]+[^a][^2](|\..+)$ とか
- 310 :名無しさん@お腹いっぱい。:2015/03/08(日) 21:12:57.57 ID:qcXH9bFf0.net
- >>306で終わってるのにどうしても 俺が俺が しないと気がすまないのか
- 311 :名無しさん@お腹いっぱい。:2015/03/08(日) 21:14:28.50 ID:1bwREvY/0.net
- >[0-9]+[^a][^2](|\..+)$ とか
[0-9]+(?!a2\.)の方がまだ良いのでは
とにかく丸投げ過ぎ。ここ何週かでトップレベルのクソ質問者 ←これが言いたい
- 312 :名無しさん@お腹いっぱい。:2015/03/08(日) 21:39:00.55 ID:/cBwszRt0.net
- んなこたあない
このスレ内のクソ認定度では 初心者 <<< クレクレ
- 313 :名無しさん@お腹いっぱい。:2015/03/08(日) 21:48:05.96 ID:GDqebOvo0.net
- >>311
^((?!a2\.拡張子).)*$
で十分じゃね?数字は特に意味が無いだろうし
- 314 :名無しさん@お腹いっぱい。:2015/03/08(日) 21:54:25.86 ID:fSR8ly9m0.net
- このひどい正規表現の数々は確実に釣り
得意気にベスト書いた奴が負け
- 315 :名無しさん@お腹いっぱい。:2015/03/08(日) 21:59:40.57 ID:3bMFBWcF0.net
- >>311
そんなの使えるのか、サンクス
後半は00a2.01.jpgとか拡張子無しの対策だけど
- 316 :名無しさん@お腹いっぱい。:2015/03/08(日) 22:07:41.36 ID:3bMFBWcF0.net
- てか^aじゃa1も弾くから一択しかないな
- 317 :名無しさん@お腹いっぱい。:2015/03/08(日) 22:48:07.25 ID:SZBUqUWU0.net
- 1.1.20.00
なんか更新内容多い
ラベルが見つからない時に同名の関数受け付けたり
メニューやホットキーのイベントでfunction objectを受け入れたりって
どう便利なんだろう
- 318 :名無しさん@お腹いっぱい。:2015/03/08(日) 23:01:05.97 ID:DgnwCOHF0.net
- そんなんより文字列をオブジェクト化してくれればいいのに
- 319 :名無しさん@お腹いっぱい。:2015/03/09(月) 01:45:05.68 ID:I8msS/ir0.net
- ;東京のテレビ番組表を取得し、as_HTMLというファイル名で保存
UrlDownloadToFile,http://tv.so-net.ne.jp/rss/schedulesByCurrentTime.action?group=10&stationAreaId=23,as_HTML
;番組表の内容を変数に入れる
FileRead,G_Guide,as_HTML
;番組表を削除
FileDelete,as_HTML
MsgBox,%G_Guide%
今放送してるテレビ番組名を取得したいのですが、上記のように番組表を持ってきてAHKで表示させると日本語の部分が文字化けしてしまいます
文字化けしないようにするにはどうすればいいでしょうか
AHKのスクリプトはUTF-8で保存してます
- 320 :名無しさん@お腹いっぱい。:2015/03/09(月) 01:56:15.09 ID:pqlQgiia0.net
- FileReadのオプション
- 321 :名無しさん@お腹いっぱい。:2015/03/09(月) 02:13:26.90 ID:I8msS/ir0.net
- >>320
ありがとうございます
これで読めるようになりました
;番組表の内容を変数に入れる
FileRead,G_Guide,*P65001 as_HTML ;*P65001はUTF-8
- 322 :名無しさん@お腹いっぱい。:2015/03/10(火) 01:32:30.73 ID:ikLxLr5X0.net
- >>317
> The main benefit of using a function is that local variables can be used,
> which avoids conflicts when two or more hotkeys use the same variable
> names for different purposes.
> It also encourages self-documenting hotkeys, like in the code above where
> the function name describes the hotkey.
> If GuiClose is a function, the GUI is closed by default.
> The function can prevent this by returning a non-zero integer, as in the example below:
GuiClose(GuiHwnd) { ; Declaring this parameter is optional.
MsgBox 4,, Are you sure you want to close the GUI?
ifMsgBox No
return true ; true = 1
}
GuiSize(GuiHwnd, EventInfo, Width, Height)
ふむ。関数型に移行してますなぁ。
個人的には↓がよさげ。
> Changed the method used by A_CaretX/A_CaretY to retrieve the caret position.
- 323 :名無しさん@お腹いっぱい。:2015/03/10(火) 08:37:17.04 ID:WAIsf76V0.net
- ;URLのHTMLをテキスト形式で変数に入れる
URLDownloadToVar(url){
hObject:=ComObjCreate("WinHttp.WinHttpRequest.5.1") ;Create the Object
hObject.Open("GET",url) ;Open communication
hObject.Send() ;Send the "get" request
return hObject.ResponseText ;Set the "text" variable to the response
}
拾ってきたこの関数を使うとファイルを保存せずに変数にHTMLの内容を読み込めるぽいですが
見えないところにキャッシュファイルみたいなかんじで溜まったりしますかね
- 324 :名無しさん@お腹いっぱい。:2015/03/10(火) 09:13:06.09 ID:WYVbNPbI0.net
- 直接メモリに読み込んでるんじゃない?
HTMLのテキスト容量なんてたかが知れてるし
- 325 :名無しさん@お腹いっぱい。:2015/03/10(火) 14:52:02.60 ID:HSsgppHA0.net
- AHKのスクリプトをオートフォーマットできるエディターとかって無いですかね?
コピペを繰り返してるとインデントがぐちゃぐちゃになっちゃって修正するのが大変なんです
- 326 :名無しさん@お腹いっぱい。:2015/03/10(火) 15:23:01.35 ID:mTklEGR20.net
- ある商用アプリを使っているとき、そのアプリにフォーカスが当たっていると
AHKのホットキーが効かないことがわかりました
びっくりして、単純なa.ahkというのを作って
q::ExitApp,0
というのだけを入れてみましたが、その商用アプリのウインドウにフォーカスが
当たっているときは、qキーを押しても、a.ahkが終了にはなりません
そんなことがあるのか、と驚きましたが、これってこのアプリでもAHKが効くようには
出来ないのでしょうか。どんな仕組みでそうなるのか
自作のアプリ(VC++とか)でもそのようなことが出来るのでしょうか
もちろん、その商用アプリはAHKをわざわざ意識して作られているようなものではありません
- 327 :名無しさん@お腹いっぱい。:2015/03/10(火) 15:28:15.17 ID:vy2D2X/w0.net
- 答える価値無し
- 328 :名無しさん@お腹いっぱい。:2015/03/10(火) 15:32:06.16 ID:PI46hMz+0.net
- SendModeで方式変えて試してみ
ゲームの類はハードキーじゃないと効かないと思うが
- 329 :名無しさん@お腹いっぱい。:2015/03/10(火) 15:38:12.95 ID:mTklEGR20.net
- >>328
SendModeを、Event、Input、Play、InputThenPlayでやってみましたが、どれもダメです
- 330 :名無しさん@お腹いっぱい。:2015/03/10(火) 19:01:28.27 ID:BKwZ5Y8p0.net
- テンプレ
- 331 :名無しさん@お腹いっぱい。:2015/03/10(火) 20:04:37.77 ID:nxAv8yEB0.net
- クリップボード履歴作った
Unicode版 v1.1.20.00以降用
http://ux.getuploader.com/autohotkeyl/download/56/ClipboardHistory.ahk 👀
- 332 :名無しさん@お腹いっぱい。:2015/03/11(水) 00:32:09.23 ID:+q54axpY0.net
- DLしようとしたらサーバーがエラるわ
- 333 :名無しさん@お腹いっぱい。:2015/03/11(水) 01:19:11.64 ID:3kUMuemo0.net
- クリップボード履歴バグってたので修正版
http://ux.getuploader.com/autohotkeyl/download/57/ClipboardHistory.ahk 👀
- 334 :名無しさん@お腹いっぱい。:2015/03/11(水) 12:32:01.86 ID:HtyaJ32l0.net
- ahkでソース中のある文字列をある文字列に置き換えて解釈するようにする擬似命令?みたいなのってありますか?
たとえばmuhenkanをvk1Dsc07Bに置き換えるような。
- 335 :名無しさん@お腹いっぱい。:2015/03/11(水) 13:38:50.66 ID:+q54axpY0.net
- defineみたいなプリプロセッサ命令のこと?
たぶん無い
- 336 :名無しさん@お腹いっぱい。:2015/03/11(水) 15:14:44.85 ID:iwY1VDQM0.net
- スレッドの割り込みについて質問。
スレッド実行中に一時停止/再開をするためにホットキーでPauseするようにしたんだけど、
実行中のスレッドになぜか割り込めず、スレッドが終わってからPauseしてしまう。
↓はF1キーで1秒ごとに123を入力して、F2キーで一時停止してくれると思うんだけど、
動かすと123の入力が全部終わるのを待ってから一時停止ってなふうになる。どうすればいいかな
F1::
SetKeyDelay,1000,-1
Send,1
Send,2
Send,3
Return
F2::
Pause
Return
- 337 :名無しさん@お腹いっぱい。:2015/03/11(水) 17:30:04.17 ID:b7QimU4R0.net
- >>336
二つの問題がある
SetKeyDelayの待機時間はSleepと違って割り込み不可
割り込もうとしたスレッドは待機後実行される
割り込みできる位置が無い
Send の間に Sleep,0 か -1 で指定する
- 338 :名無しさん@お腹いっぱい。:2015/03/11(水) 17:45:39.14 ID:+q54axpY0.net
- >>333
結構いいねこれ
- 339 :名無しさん@お腹いっぱい。:2015/03/11(水) 17:56:12.72 ID:iwY1VDQM0.net
- >>337
ありがとう。Sleepを書かないと割り込めないのか
- 340 :197:2015/03/12(木) 16:33:15.00 ID:Sw9Isv5G0.net
- 下記スクリプトで、ディスプレイのソフトウェア制御下パワー状態取得ができるように
なりました。このスクリプトでは終了時 UnregisterPowerSettingNotification の
呼び出しをしていないのですが、どんな問題が生じうるでしょうか。
今のところ特に問題ないような感じなのですが…。
Gui, +LastFound
hRecipient := WinExist()
DISP_GUID := "{02731015-4510-4526-99e6-e5a17ebd1aea}"
VarSetCapacity(DISP_STAT, 16, 0)
DllCall("ole32\CLSIDFromString", "UInt", &DISP_GUID, "UInt", &DISP_STAT)
DllCall("RegisterPowerSettingNotification", "UInt", hRecipient, "UInt", &DISP_STAT, "UInt", 0)
OnMessage(0x0218, "DispStatChange")
Return
DispStatChange(wParam, lParam, msg, hwnd)
{
Msgbox % NumGet(lParam + 16 + 4)
}
- 341 :名無しさん@お腹いっぱい。:2015/03/13(金) 01:20:24.64 ID:KxHrOCah0.net
- 開いたモノは閉じる
確保したものは開放する
登録したものは登録解除する
そこまでスクリプトが書けるのならわかると思うが
- 342 :名無しさん@お腹いっぱい。:2015/03/13(金) 17:24:44.91 ID:OvDEEwAf0.net
- http://ux.getuploader.com/autohotkeyl/download/59/ClipboardHistory.ahk
のクリップボード履歴関係なんだけど
ポップアップメニューを出した時に対象のウインドウがフォーカスを失うせいで
たとえばエクスプローラーなんかでうまくペーストできない問題を解決したいと思って…
1::
WinGet,targetPID,PID,A
ProcessSuspend(targetPID) ;プロセスを一時停止
Menu,testMenu,Add
Menu,testMenu,Show ;メニュー表示
ProcessSuspend(targetPID,1) ;プロセスを再開
Return
ProcessSuspend(PID,resume=0){
h:=DllCall("OpenProcess", "uInt", 0x1F0FFF, "Int", 0, "Int", PID)
If h
{
if resume
DllCall("ntdll.dll\NtResumeProcess", "Int", h)
else
DllCall("ntdll.dll\NtSuspendProcess", "Int", h)
DllCall("CloseHandle", "Int", h)
}
}
上のようにメニュー表示中は対象のプロセスを一時停止するようにしてみたところ、
メニュー項目を実行したときやメニューをESCで閉じた場合は期待通り動作するんだけど、
メニューを出したまま対象のウインドウにマウスクリックで直接戻ったときなんかに、
プロセスの再開処理が走るのが遅れるのか数秒間フリーズした状態になってしまいます。
メニュー表示中はマウスクリックに別の処理を割り当てればいいと思ったんだけど、
どうもうまくいかないっぽい。
「ウインドウのフォーカスを維持したままメニューを出す」
あるいは「メニュー表示中にマウスクリックをフックする」
といったことはどうやったらできますか? 👀
- 343 :名無しさん@お腹いっぱい。:2015/03/13(金) 18:55:07.62 ID:VipaWBZc0.net
- こんな感じの指定したファイルパスにあるbmpを開くというスクリプトを書いたんですが
openfile(path)
{
run,%path%
}
F1::
Filepath=%A_ScriptDir%\A\B.bmp
openfile("Filepath")
return
openfile関数の引数に変数をいれるやり方がわからなくてストップしています
どうしたらいいでしょうか?
- 344 :名無しさん@お腹いっぱい。:2015/03/13(金) 19:42:01.99 ID:ZdmYCXyj0.net
- >>343
括弧の中は式、変数は展開される
関数はreturn下に書くのが一般的
■関数 → 関数の引数に代入されるもの
hoge("AAA") → 文字列AAA
hoge(AAA) → 変数AAAの中身
hoge(%AAA%) → 二重展開 中身の中身
- 345 :名無しさん@お腹いっぱい。:2015/03/13(金) 19:56:12.27 ID:VipaWBZc0.net
- >>344
できました どうもです 詳しい解説どうもです
あとその二重展開ってどういう時に使うんですかね?
- 346 :名無しさん@お腹いっぱい。:2015/03/13(金) 20:36:03.27 ID:ZdmYCXyj0.net
- >>345
使いたい変数名を書くときなど色々
F1::
Filepath = %A_ScriptDir%\A\B.bmp
openfile("Filepath")
return
openfile(path)
{
MsgBox % %path%
}
- 347 :名無しさん@お腹いっぱい。:2015/03/13(金) 20:51:29.47 ID:4FOLYL/i0.net
- カナかなキーと変換キーでD&Dしたいんですが左クリック押しっぱなしが出来ていないようです
sc070::MouseClick, Left,,,, 1, D
vk1Csc079::MouseClick, Left,,,, 1, U
他のコマンドの干渉はないようです
キーボードでD&Dするとき特に気をつけるべきことがあるんでしょうか?
- 348 :名無しさん@お腹いっぱい。:2015/03/13(金) 22:53:37.21 ID:VipaWBZc0.net
- >>346
なるほどどうもでした
- 349 :名無しさん@お腹いっぱい。:2015/03/13(金) 23:36:15.00 ID:ZdmYCXyj0.net
- >>347
こちらでは特に問題なく動いたので自分で原因を探そう
テストするスクリプト以外書かない(二行のみ)
UTF-8 BOM有り で保存
スクリプト実行ログを確認
キーログを確認
Sendで書く (表記が簡単なのでミスしにくい)
sc070::Send {LButton Down} ; カナかな
sc079::Send {LButton Up} ; 変換
- 350 :名無しさん@お腹いっぱい。:2015/03/14(土) 00:21:21.39 ID:zWeT5dtF0.net
- >>347
特に何を変えるでもなく今もう一回やってみたら出来ました
検証不足失礼しましたm(__)m
- 351 :341:2015/03/14(土) 01:37:27.04 ID:9saTsIKF0.net
- かなり強引だけど自己解決しました
下記のやり方ならポップアップメニューでアクティブウインドウがフォーカスを失わないっぽい
Gui,+LastFound -Caption +ToolWindow +AlwaysOnTop
Gui,Color,000000
WinSet,Transparent,1
WinGet,targetPID,PID,A
Suspend:=DllCall("OpenProcess","uInt",0x1F0FFF,"Int",0,"Int",targetPID)
DllCall("ntdll.dll\NtSuspendProcess","Int",Suspend)
DllCall("CloseHandle","Int",Suspend)
Menu,testMenu,Add
Gui,Show,NA x0 y0 w%A_ScreenWidth% h%A_ScreenHeight%
Menu,testMenu,Show
Gui,Hide
Suspend:=DllCall("OpenProcess","uInt",0x1F0FFF,"Int",0,"Int",targetPID)
DllCall("ntdll.dll\NtResumeProcess","Int",Suspend)
DllCall("CloseHandle","Int",Suspend)
- 352 :名無しさん@お腹いっぱい。:2015/03/14(土) 07:45:02.85 ID:oJd6rQgS0.net
- OR ANDがあるifを書きたいんですが
if (y+height < A_ScreenHeight) OR (x+width < A_ScreenWidth )
これだと動かないんですが、どう書いたらいいんでしょうか?
- 353 :名無しさん@お腹いっぱい。:2015/03/14(土) 12:33:34.46 ID:oqJG/xEU0.net
- それだと式になってない
if ((y+height < A_ScreenHeight) OR (x+width < A_ScreenWidth ))
- 354 :名無しさん@お腹いっぱい。:2015/03/14(土) 16:07:43.40 ID:lKfyXFXG0.net
- ctr+shift+zでctr+yの動作をさせると捗るなぁ
- 355 :名無しさん@お腹いっぱい。:2015/03/14(土) 16:46:12.20 ID:oJd6rQgS0.net
- >>353
いけました どうもです
- 356 :名無しさん@お腹いっぱい。:2015/03/14(土) 17:46:22.61 ID:h0UcWAhF0.net
- >>352
間違ってない、他のミス
>>353
> それだと式になってない
式になってる
■If (変数の比較) コマンド
if 3 > 1 + 1 || 3 > 1 + 1 ; 不正 先頭は変数展開される
Var = 3
if Var > 1 + 1 || Var > 1 + 1 ; 正しい 先頭は変数展開される
■If (式)
if (3 > 1 + 1 || 3 > 1 + 1) ; 正しい
if (3 > 1 + 1) || (3 > 1 + 1) ; 正しい 範囲が分かりやすくなる
if ((3 > 1 + 1) || (3 > 1 + 1)) ; 括弧が二重で無駄
- 357 :名無しさん@お腹いっぱい。:2015/03/14(土) 22:20:23.02 ID:RRXEcAlZ0.net
- if (式) で必ず外側にカッコつけるのはcの仕様だな
ahkではしなくても動くけど多言語扱う習慣のある人ならつけるのが無難
無駄と言い切るのは乱暴かと
- 358 :名無しさん@お腹いっぱい。:2015/03/15(日) 16:41:20.79 ID:B1hnPxsm0.net
- >>356
どう記述するのが正解ですか?
if (y+height < A_ScreenHeight) OR (x+width < A_ScreenWidth )
y座標+高さがモニターの縦幅より小さいかx座標+幅がモニターの横幅より小さい時の条件が作りたいんですが
- 359 :名無しさん@お腹いっぱい。:2015/03/15(日) 17:32:06.22 ID:L8/89NQZ0.net
- >>358
動くなら後は好みと統一性の問題だけど
その見本なら3か4番目じゃない?
あとは計算は右に置いた方がバランスいいかと
(A_ScreenHeight > y+height)
hoge = y+height
- 360 :名無しさん@お腹いっぱい。:2015/03/15(日) 17:40:46.73 ID:B1hnPxsm0.net
- >>359
動きました どうもです
右においた方がいいというのは
不等号の位置的にそうするべきという意味ですか?
- 361 :名無しさん@お腹いっぱい。:2015/03/15(日) 17:44:04.66 ID:ENZJa4ci0.net
- まず君はやるべきことがあるのでは、と思うがね
- 362 :名無しさん@お腹いっぱい。:2015/03/15(日) 23:32:24.40 ID:ZJS2FJtk0.net
- 質問者じゃないけど>352が動かない理由が皆目わからない
参考までにどのあたりに他のミスがあるのか教えてほしいです>356
- 363 :名無しさん@お腹いっぱい。:2015/03/16(月) 00:38:21.89 ID:y4oIDS+O0.net
- 351をコヒペして適当に変数に数値代入してみたけど普通に動いたよ
- 364 :名無しさん@お腹いっぱい。:2015/03/16(月) 00:51:02.34 ID:GzqZZfsL0.net
- F1キーを押して押し上げた瞬間に特定の動作をさせたいのですがどうしたらいいでしょうか?
たとえば
F1::soundbeep
と書いたとして、F1キーを押した瞬間ではなく押し上げた瞬間に音がなるようにしたいのです。
F1キーを押しっぱなしにしてしまって音が2回以上なってしまうのを避けたいのです。きっかり一度だけ鳴らしたいので押しあげた瞬間のみに音を鳴らしたいのです。
- 365 :名無しさん@お腹いっぱい。:2015/03/16(月) 01:56:04.91 ID:j74GxRa80.net
- 押し上げた瞬間に鳴らしたいならUpホットキー
http://ahkwiki.net/Hotkeys#Up.E3.83.9B.E3.83.83.E3.83.88.E3.82.AD.E3.83.BC
KeyWaitならリピートさせずに押した瞬間・押し上げた瞬間どちらでも可能
http://ahkwiki.net/KeyWait
- 366 :名無しさん@お腹いっぱい。:2015/03/16(月) 11:49:34.04 ID:Wcaklw3v0.net
- Fnキーの取得って無理ですか?
バッファローのUSBキーボードなんですが、Fn押しながらの別機能は使わないので他のキーを割り当てようと思ったのですが「Key history and script info」をしても出ませんでした。
キーのラベル載せてるサイトでもFnはありませんでした。
どうかよろしくお願いします。
- 367 :名無しさん@お腹いっぱい。:2015/03/16(月) 13:07:00.27 ID:fgVsYJTD0.net
- むりです。そのキーはOSを介してるものじゃないので
- 368 :名無しさん@お腹いっぱい。:2015/03/16(月) 13:25:24.23 ID:VkS4pR1w0.net
- やるならハードウエアレベルでドライバをハックする必要があるかと
- 369 :名無しさん@お腹いっぱい。:2015/03/16(月) 17:58:20.36 ID:ZkO6+tak0.net
- 関数やラベルを使わずに事前に定義した式を後で適用する方法はありますか?
これができるように
Var := "A"
A := "あ"
MsgBox, % %Var% ; あ
こんな感じでやる方法があるのか少し気になりまして
Var := "Var1 + Var2"
Var1 := 1
Var2 := 2
MsgBox, % %Var% ; 3
- 370 :名無しさん@お腹いっぱい。:2015/03/16(月) 18:40:29.52 ID:iquRvpTl0.net
- 最近同じやつが自己努力しないでずーっと同じようなレベルの質問繰り返してないか?
スレへの嫌がらせ?
- 371 :名無しさん@お腹いっぱい。:2015/03/16(月) 19:01:50.08 ID:3Qa1+6+Q0.net
- >>369
文字列を式として計算する機能は用意されていない
自分で書けばできるが大変、適当に書くとこうなる
Target := "Var1 + Var2"
Var1 := 1
Var2 := 2
RegExMatch(Target, "(.+?)\s*(\+)\s*(.+)", Shiki)
If (Shiki2 = "+")
Var := Var1 + Var2
MsgBox % Var ; 3
Return
- 372 :名無しさん@お腹いっぱい。:2015/03/16(月) 19:06:32.76 ID:GzqZZfsL0.net
- >>365
どうもありがとうございました これで誤動作がなくなります
- 373 :名無しさん@お腹いっぱい。:2015/03/16(月) 19:34:10.47 ID:ZkO6+tak0.net
- >>371
力技でしか無理な感じですか
ありがとうございました
- 374 :名無しさん@お腹いっぱい。:2015/03/16(月) 19:39:08.15 ID:wp7xGYTJ0.net
- そういうeval的なのはライブラリとしてあったような
- 375 :名無しさん@お腹いっぱい。:2015/03/16(月) 19:47:33.74 ID:D8AkpNrd0.net
- 04,12といった2つの数値から
04,05,06……11,12
という1づつ足していった数値を得たいんですが
04から一旦先頭の0を外してから1足して
その後5の先頭に0を付け足すということを繰り返すしかないでしょか
- 376 :名無しさん@お腹いっぱい。:2015/03/16(月) 19:52:28.85 ID:Yu0d7lgh0.net
- てs
- 377 :名無しさん@お腹いっぱい。:2015/03/16(月) 21:16:01.55 ID:ZkO6+tak0.net
- リストビュー内でのダブルクリック時の挙動をEnterを押した時と同じにしたいのですが
Enterキーを押した後の処理はホットキーラベル内で定義、Enterのホットキーラベルは複数なのでGosubは使わないという前提として
どのようにすればいいでしょうか?
直接キーを送ってみましたが反応しません
Gui, Add, ListView, gListView, 1
LV_Add("", "あ")
LV_Modify(1, "Focus Select")
Gui, Show
Return
ListView:
If (A_GuiEvent = "DoubleClick")
Send, {Enter}
Return
#If (その他の条件)
Enter::Return
#If (リストビューにフォーカスがある時の条件)
Enter::
MsgBox, OK
Return
#If (その他の条件)
Enter::Return
- 378 :名無しさん@お腹いっぱい。:2015/03/16(月) 21:26:44.43 ID:+TbA765R0.net
- >>375
setformat
- 379 :365:2015/03/16(月) 22:54:45.83 ID:Wcaklw3v0.net
- >>367-368
そんなに無理な事なんですかっ
何かしらを送信してるからわかるかと思ったんですが残念です
ありがとうございました。
- 380 :376:2015/03/16(月) 23:27:12.02 ID:ZkO6+tak0.net
- Gosubで対応するしかないんですかね…
ホットキーラベルのところに並べて通常のラベルも置いたら目的の場所には飛べましたが、使い方としては問題ないんでしょうか?
ListView:
If (A_GuiEvent = "DoubleClick")
Gosub, EnterListView:
Return
#If (その他の条件)
Enter::Return
#If (リストビューにフォーカスがある時の条件)
EnterListView:
Enter::MsgBox, OK
#If (その他の条件)
Enter::Return
- 381 :名無しさん@お腹いっぱい。:2015/03/16(月) 23:42:44.13 ID:N7oXghhy0.net
- 関数使えばいい。
でもgosubを関数に直すと複雑怪奇になるからやめといた方がいい
場合によっては書き直すハメになる
- 382 :379:2015/03/17(火) 00:16:01.96 ID:Ev/aS3TK0.net
- >>381
ありがとうございました
確かにそうなのですが、リストビューを関数で動的に幾つか作っていて、
それぞれに専用の関数を作ると煩雑な感じになってメンテナンス性が少し悪くなりそうなのです
- 383 :名無しさん@お腹いっぱい。:2015/03/17(火) 00:25:09.62 ID:T2p2xOY80.net
- ahkスクリプト開始時点にフラグ用の変数を自動で読み込ませたいんですがどうしたらいいですかね?
こういう感じの記述でいうところのflag =1 の部分をスクリプト起動時点で読み込ませておきたいんです
flag = 1
A::
if flag = 1
tooltip,OK
else
return
- 384 :名無しさん@お腹いっぱい。:2015/03/17(火) 02:44:42.19 ID:909q+xHK0.net
- そんな意味のない機能はない
init.ahkなどを用意してインクルードするか、nflagみたいにon/offを逆にした命名にする
- 385 :名無しさん@お腹いっぱい。:2015/03/17(火) 08:08:24.71 ID:RMaqoVKg0.net
- >>384
ムダに煽るなよ何言ってるのかわからんし
>>383
#ifdef的に使いたいってことかな
定数を初期化したいだけならAutoexecute領域に書いときゃいいよ
frag = 1 の下行にreturnつけときゃ望みの動作になる
スクリプト書き換えずにflagの値を都度変えたいのなら
iniReadでiniから読むか、コマンドラインオプションを読みとるように作ればいい
- 386 :名無しさん@お腹いっぱい。:2015/03/17(火) 08:26:34.44 ID:909q+xHK0.net
- >>385
はぁ?お前こそ何言ってんの?
- 387 :名無しさん@お腹いっぱい。:2015/03/17(火) 08:38:07.65 ID:eiqJnQ120.net
- そういう使い方するのは環境変数じゃねーの?
- 388 :名無しさん@お腹いっぱい。:2015/03/17(火) 08:55:27.85 ID:RMaqoVKg0.net
- そんなにむずかしいことを書いたつもりはないが
質問者の意図も理解できてないようだし読解力に難のある人なのか
間違った回答を上から言い切りの形で出すのは一番やっちゃアカン
- 389 :名無しさん@お腹いっぱい。:2015/03/17(火) 09:32:31.76 ID:909q+xHK0.net
- ムダに煽るなよ何言ってるのかわからんし
- 390 :名無しさん@お腹いっぱい。:2015/03/17(火) 13:26:49.14 ID:o/9LF89q0.net
- とりあえずID:RMaqoVKg0がいつもの親切すぎる解答者じゃないことはわかる
- 391 :名無しさん@お腹いっぱい。:2015/03/17(火) 13:53:31.06 ID:N62n5Gpa0.net
- 穏やかな心を持ちながら激しい怒りによって目覚めた親切すぎる解答者
- 392 :名無しさん@お腹いっぱい。:2015/03/17(火) 15:45:16.26 ID:Kjo98OVb0.net
- >>383の意図なるものが俺にはさっぱりわからんのだが
382に書いてるのをそのまま保存して実行すれば望み通りに動くだろ??
- 393 :名無しさん@お腹いっぱい。:2015/03/17(火) 16:00:28.15 ID:ZWxLBT4z0.net
- autoexecuteにreturnがないし
ホットキーのほうもelseのときしかreturn通らないから
まともに動かなくね?
- 394 :名無しさん@お腹いっぱい。:2015/03/17(火) 16:07:41.79 ID:ZWxLBT4z0.net
- まあ手直しすれば動くし>384が何故ないっていってるのかわからんけど
スプリクトの最初で変数初期化するのって無駄?自分よくやるけど
- 395 :名無しさん@お腹いっぱい。:2015/03/17(火) 16:16:13.84 ID:Kjo98OVb0.net
- ホットキーラベルが現れた時点でAutoExecuteセクションは勝手に終了するので
ReturnやExitはべつに必須なわけではない
ifが真だとreturnしないのは間違ってはいるが
これより後ろに何も記述がないのであればとりあえず動くことは動く
- 396 :名無しさん@お腹いっぱい。:2015/03/17(火) 16:17:55.98 ID:MTZ2OOQ30.net
- ID:909q+xHK0が赤っ恥書いただけだろ
あまり引っ張って晒してやるな
- 397 :名無しさん@お腹いっぱい。:2015/03/17(火) 16:32:20.37 ID:Kjo98OVb0.net
- インクルード使えって回答がおかしいとは思わんが
- 398 :名無しさん@お腹いっぱい。:2015/03/17(火) 16:53:14.09 ID:A0XBm+WR0.net
- そのままで動くならiわざわざncludeする意味なくね?
初期化対象の変数が大量にあるなら分けるのも手だけどさ
- 399 :名無しさん@お腹いっぱい。:2015/03/17(火) 16:55:45.01 ID:4Jayl0Jm0.net
- includeにインクルードしてレスの意図を視覚的に表現とは高度な
- 400 :名無しさん@お腹いっぱい。:2015/03/17(火) 17:52:33.88 ID:wsdIwXMd0.net
- >>399
パッと見必死こいてるのかと思ったがそういう意図が……
- 401 :名無しさん@お腹いっぱい。:2015/03/17(火) 18:24:57.70 ID:Gy9j9Bm90.net
- これ作っとくと便利だぞっていうスクリプトや関数ありますか
- 402 :名無しさん@お腹いっぱい。:2015/03/17(火) 19:28:44.57 ID:T2p2xOY80.net
- 382ですけどAuto execute sectionに変数を書き込むのとiniを使うやりかた両方使う感じにしました
ありがとうございました
- 403 :名無しさん@お腹いっぱい。:2015/03/17(火) 19:44:58.58 ID:909q+xHK0.net
- AutoExecuteぐらいとっくに知ってて初期化処理を分化するか無くしたいってことじゃないの?
エスパーが間違ってたら次から反省するよボク
- 404 :名無しさん@お腹いっぱい。:2015/03/17(火) 19:54:31.66 ID:909q+xHK0.net
- あ、反省って言ったけど、ID:RMaqoVKg0への応対はまったく間違ってないと思ってるけどね
- 405 :名無しさん@お腹いっぱい。:2015/03/17(火) 20:05:57.83 ID:m42dKMP+0.net
- 次とかいらないんでROMってて下さい
- 406 :名無しさん@お腹いっぱい。:2015/03/17(火) 20:53:49.19 ID:2Xm/+h6R0.net
- ん?リロってないでゴチャゴチャいってんの?
>403読んだらとっくに知ってた可能性なんかどこにもないことわかるけど
- 407 :名無しさん@お腹いっぱい。:2015/03/17(火) 20:54:57.62 ID:2Xm/+h6R0.net
- レス間違え>402だた
- 408 :名無しさん@お腹いっぱい。:2015/03/17(火) 21:24:58.08 ID:909q+xHK0.net
- >>406
言うこと変わらんからそのまま書いただけ
- 409 :名無しさん@お腹いっぱい。:2015/03/17(火) 21:49:56.30 ID:N62n5Gpa0.net
- 質問者の方がよほどまともだな…
- 410 :名無しさん@お腹いっぱい。:2015/03/17(火) 22:39:30.45 ID:909q+xHK0.net
- 質問者には大して不満なんて持ってないよ
今までも質問者を擁護こそすれ叩いたことなんて一度もないし
マニュアルを読み返したらAutoExecuteが思ったよりマイナーな機能であることも分かったし
質問の確認や回答の前提の前置きすら心掛けず思い込みでレスしたのは俺の責任と言える
鼻に付いたのはあの程度のレスで無駄な煽り認定を受けたことだよ
そんで親切な解説者とやらは結果が判明しない内から煽るな意味不だと言いつつ自分は碌に解釈の説明もしない
まあ消えて欲しかったら皆でこれっきりスルーしてね。それで判断するから
- 411 :名無しさん@お腹いっぱい。:2015/03/18(水) 02:41:59.87 ID:Lv3td3ic0.net
- >>399
そのつもりならinの後に書くだろう
- 412 :名無しさん@お腹いっぱい。:2015/03/18(水) 08:50:07.14 ID:g479jRP10.net
- 次スレにはこれの追加が必要になるのか…
■回答できないレベルの人へお願い■
書き込むなカス
- 413 :名無しさん@お腹いっぱい。:2015/03/18(水) 09:21:42.29 ID:/YHMQWCO0.net
- ヒントになる要素のないツンデレはただの貶しと同じ
質問者のレベルを見極められない時は初心者向けと上級者向け2つ回答を用意してやれば
大抵はどっちかがひっかかる
- 414 :名無しさん@お腹いっぱい。:2015/03/18(水) 09:53:22.79 ID:ZbfKR6320.net
- じゃあそれも追加で
ぶっちゃけ無能に回答されても邪魔なだけなんだよねこっちは
- 415 :名無しさん@お腹いっぱい。:2015/03/18(水) 10:08:00.16 ID:/YHMQWCO0.net
- あとはドンピシャ回答後のうろ覚え回答と
質問者から解決済出たあとの劣化ソース提供かな
解読の必要のある質問の場合はエスパーも賑やかしだけど流れは読んでほしいと思う
- 416 :384:2015/03/18(水) 10:39:52.84 ID:/YHMQWCO0.net
- >>410
>そんで親切な解説者とやらは結果が判明しない内から煽るな意味不だと言いつつ自分は碌に解釈の説明もしない
>386,389は煽り以外の何者でもないと思ってたのでスルーした
まさか解釈の説明を求められてるとは夢にも思わなかったわ
煽りじゃなかったなら悪かったが
>383のifやreturnの使い方見れば質問者が構文よくわかってないのは明白だったし
最初についたレスがいきなり間違った回答だと質問者が混乱するので注意したまで
- 417 :名無しさん@お腹いっぱい。:2015/03/18(水) 13:09:17.92 ID:gTk+kb8K0.net
- 無知な奴と、押しつけがましい奴と、説教くさい奴と、
教えたがりな奴と、煽るだけの奴は書き込まなくていいよ
次スレからのテンプレね
- 418 :名無しさん@お腹いっぱい。:2015/03/18(水) 13:12:24.45 ID:Nx3BLbJN0.net
- テンプレのQ3にあるコンビネーションキーですが、なんとか3キー以上同時押しできるようになりませんかねぇ
F13 & +j::とか
- 419 :名無しさん@お腹いっぱい。:2015/03/18(水) 15:46:25.75 ID:YQll6y190.net
- >>418
コンビネーションキーではなく #If 使えばいい
安いキーボードだと同時押しの対応数が少ないので注意
- 420 :名無しさん@お腹いっぱい。:2015/03/18(水) 15:56:11.42 ID:vVDvrMa60.net
- AHKじゃ関数の戻り値を複数取得ってできないん? gosubでやるしかないかな
- 421 :名無しさん@お腹いっぱい。:2015/03/18(水) 16:07:06.68 ID:Nx3BLbJN0.net
- >>419
つまりGetKeyStateなわけですね。ありがとうございます
他と干渉しないか気をつけつつ使ってみます
- 422 :名無しさん@お腹いっぱい。:2015/03/18(水) 16:25:51.14 ID:xs7ZGE6R0.net
- >>420
global変数か、引数をByRref渡しにするかで対策
- 423 :名無しさん@お腹いっぱい。:2015/03/18(水) 17:01:44.71 ID:vVDvrMa60.net
- globalがお手軽だね。ありがとう
- 424 :名無しさん@お腹いっぱい。:2015/03/18(水) 18:06:52.01 ID:tREIlTjw0.net
- >>420
解決済みのようだけど、自分は配列に入れて似たようなことやってたよ
文法的に正しいのか分からないけど
Function()
{
A := "あ"
B := "い"
Return {1: A, 2: B}
}
Var := Function()
MsgBox, % Var[1] Var[2] ; あい
- 425 :423:2015/03/18(水) 18:14:24.30 ID:tREIlTjw0.net
- あ、"Var"より"Array"の方が名前的に適切だった
- 426 :名無しさん@お腹いっぱい。:2015/03/18(水) 19:15:08.19 ID:J9qjAr580.net
- >>424
こういうスマートな書き方あったのかー
自分はわざわざ関数使ってた
CreateArray(values*) { ; 可変長引数で配列作成
return values
}
Function() {
A := "あ", B := "い"
return CreateArray( A, B )
}
- 427 :名無しさん@お腹いっぱい。:2015/03/18(水) 19:24:52.09 ID:4240iYLg0.net
- フォトショップを使っている時に特定動作をすると現在ブラシツールが選択している色を反映したProgressバーをマウスカーソルポジションから100ピクセル下に表示するようにしてます。
このProgressバーはタイマーで300ms後に消えるようにはしてるんですが絵を書いている時だとたまにProgressバーが消える前にProgressバー自体をクリックしてしまい
フォトショップが非アクティブになってしまって作業が中断してしまいます。これを避けるためにマウスカーソルが30ピクセル動いたらProgressバーを強制的に消すような設定をしていますが
これだと色々と不都合があります。なのでもっと手っ取り早くProgressバーをクリック不可能=アクティブ化できない状態にできないかと考えています。
どうにかできないものでしょうか?
- 428 :名無しさん@お腹いっぱい。:2015/03/18(水) 19:27:15.37 ID:NdwCM8GW0.net
- 自分はいつも「Function1」の方法でやってるな
Var := Function1()
MsgBox, % Var[1] Var[2] ; あい
Var := Function2()
MsgBox, % Var["亜"] Var["井"] ; をん
Function1() {
A := "あ", B := "い"
Return [A, B]
}
Function2() {
A := "を", B := "ん"
Return {亜:A, 井:B}
}
- 429 :名無しさん@お腹いっぱい。:2015/03/18(水) 20:54:46.68 ID:/YHMQWCO0.net
- >>427
よくわかんないけどEnabledをfalseにしたらいいんじゃね
- 430 :名無しさん@お腹いっぱい。:2015/03/18(水) 21:11:28.79 ID:4240iYLg0.net
- >>429
ProgressバーにEnabledオプションないですよね?
- 431 :名無しさん@お腹いっぱい。:2015/03/18(水) 21:53:06.70 ID:57qzseOZ0.net
- >Progressバーをクリック不可能
WinSet, ExStyle, +0x00080020, (Progressバーを指定)
- 432 :名無しさん@お腹いっぱい。:2015/03/18(水) 23:26:11.78 ID:4240iYLg0.net
- >>431
できました ありがとうございます でもプログレスバーのテキストが消えてしまいました
どう設定したらいいんでしょうか?
- 433 :名無しさん@お腹いっぱい。:2015/03/18(水) 23:45:03.67 ID:4240iYLg0.net
- いやこれでいけました sleep,10を挟むとテキストが消えないです なんででしょうかね?sleepないとテキストが消えます。
F2::
x :=A_ScreenWidth/2
y := A_ScreenHeight/2
Progress , 1:B1 x%x% y%y% h200 w200 CWFFFFFF c11 CT000000 ZX0 ZY20 ZH0 , ,TEST, TESTTEST,
sleep,10
WinSet, ExStyle, +0x00080020, TESTTEST
return
- 434 :名無しさん@お腹いっぱい。:2015/03/19(木) 00:18:05.88 ID:Hu/LxZVi0.net
- あとすいません これなんですけど F2を押しっぱなしにするとマウスカーソルの位置にプログレスバーが追随してきますがプログレスバーが更新される度にプログレスバーが点滅しているように見えてしまいます。
これを点滅しないようにできないでしょうか?
F2::
Mousegetpos,x,y
Progress , 1:B1 x%x% y%y% 50 50 CWFFFFFF c11 CT000000 ZX0 ZY20 ZH0 , ,TEST, TESTTEST,
sleep,10
WinSet, ExStyle, +0x00080020, TESTTEST
return
- 435 :名無しさん@お腹いっぱい。:2015/03/19(木) 19:58:13.76 ID:npLKt0VW0.net
- wget4win的なものでホームページの更新確認巡回とかさせてる人いたら是非パクらせてくださいm(__)m
- 436 :名無しさん@お腹いっぱい。:2015/03/19(木) 20:10:00.40 ID:En+tbqHp0.net
- もし変数の中身に関数の名前があるなら関数を呼び出したいんですが、こっからどうすればいいです?
If(ISFunc(Funcname))
gosubもsendも使えません。Funcname変数を展開したいだけなんです
- 437 :名無しさん@お腹いっぱい。:2015/03/19(木) 20:27:45.05 ID:U+fiuP9W0.net
- >>435
>>245
- 438 :名無しさん@お腹いっぱい。:2015/03/19(木) 20:34:06.23 ID:npLKt0VW0.net
- 巡回関係はタブーなんですか……失礼しました
- 439 :名無しさん@お腹いっぱい。:2015/03/19(木) 20:35:13.36 ID:+aahqHLj0.net
- 何関係であろうがクレクレは歓迎されない
- 440 :名無しさん@お腹いっぱい。:2015/03/19(木) 21:01:33.16 ID:k6VKmFFQ0.net
- >>436
ttp://ahkwiki.net/Func_Object
If (fn := Func("TEST")) {
fn.()
} Else {
MsgBox NO
} Return
TEST() {
MsgBox OK
}
- 441 :名無しさん@お腹いっぱい。:2015/03/19(木) 21:03:45.77 ID:1kqhiWu90.net
- >>436
Funcname := "kansuu"
If ISFunc(Funcname) {
%Funcname%()
}
kansuu() {
MsgBox, kansuu jikkou
}
- 442 :名無しさん@お腹いっぱい。:2015/03/19(木) 21:23:37.59 ID:En+tbqHp0.net
- >>440-441
どっちもできました。助かりました
- 443 :名無しさん@お腹いっぱい。:2015/03/20(金) 21:16:16.65 ID:xIWxMLXz0.net
- 変数の中に文字列があるんですが、これを分解して前半部分と後半部分に分けたいんです。
要するに中には関数の全文が入ってるわけですが、これを>>441でやった場合、関数の値は指定されませんよね。なので
Funcname := "kansuu"
If ISFunc(Funcname) {
%Funcname%(%FnVar%)
}
kansuu(hoge)
で、()を区切り文字にして%Funcname%と%FnVar%各々 に値を入れたいんですが、なにか使えるコマンドはありますか?
- 444 :名無しさん@お腹いっぱい。:2015/03/20(金) 21:41:24.79 ID:xIWxMLXz0.net
- あ、いえ、出来ました。
- 445 :名無しさん@お腹いっぱい。:2015/03/20(金) 21:51:18.24 ID:alc6b5t00.net
- UrlDownloadToVarでユーザーIDとパスワードを入力してログインした状態の値を取得したいのですが
http://www.autohotkey.com/board/topic/9529-urldownloadtovar/page-7#entry671474
このページのコードを使えばそのようなことができるんでしょうか
- 446 :名無しさん@お腹いっぱい。:2015/03/22(日) 00:29:21.74 ID:GkHCJ2Q90.net
- 外部アプリのリストビューを自動でソートさせたいのですが、カラムの座標を指定してマウスでクリックさせる方法以外にありますか?
- 447 :名無しさん@お腹いっぱい。:2015/03/22(日) 02:30:02.26 ID:SO90yV1k0.net
- >>446
ショートカット(設定されているなら)
コントロールに直接送る(コントロール取得できるなら)
- 448 :名無しさん@お腹いっぱい。:2015/03/22(日) 04:51:19.17 ID:GkHCJ2Q90.net
- >>447
ショートカットはないようですが、コントロール名は"SysHeader321"でした
指定カラムをソートするコマンド等があるのでしょうか?
- 449 :名無しさん@お腹いっぱい。:2015/03/22(日) 05:10:51.88 ID:SO90yV1k0.net
- >>448
どんなコマンドがあるのか目を通すのが先じゃない?
アプリが何なのか分からないので答えようが無い
- 450 :名無しさん@お腹いっぱい。:2015/03/22(日) 06:34:37.95 ID:GkHCJ2Q90.net
- >>449
一応一通り見て、Controlコマンド辺りかなと思ったのですが、任意のカラムをソートできるようなものが見当たらないので確認してみました
EveryThingというアプリで、どのカラムを選択してもコントロール名は"SysHeader321"と表示されます
- 451 :名無しさん@お腹いっぱい。:2015/03/22(日) 06:45:46.32 ID:Lq8NvNP20.net
- >>450
EveryThingならメニューからキー操作で並び替えできるからそっちを使った方がいいんじゃない
表示(V)>並び替え(o)>
で、Ctrl+数字と昇順(A)・降順(D)ってデフォで設定されてるし、これ自体カスタマイズできるから
もっと楽にやれそう
- 452 :名無しさん@お腹いっぱい。:2015/03/22(日) 07:17:09.42 ID:GkHCJ2Q90.net
- >>451
いつの間にかアプデでそのようなメニュー&ショートカットが加わってたのですね。ありがとうございました
結局のところ、コマンド類でこのようなカラムをソートするのは不可能なんですかね?
(他にも同じようなリストビューを持つアプリが幾つかあって、今のところ大きな支障はないのですが、気になったので一応)
- 453 :名無しさん@お腹いっぱい。:2015/03/22(日) 07:29:27.13 ID:Lq8NvNP20.net
- >>452
そのあたりのことは詳しく分からないし、そのソフトにもよるのかもしれないけど、
FirefoxみたいなメジャーなソフトでもClassNNが取得できなかったりするくらいだから、
どんなソフトでもソート部分が取得できて、それが機能するとは限らないと思う
ホットキーがないのなら、それこそ、同位置・同サイズを前提にしてクリックさせる方が現実的かも
- 454 :名無しさん@お腹いっぱい。:2015/03/22(日) 07:38:20.66 ID:GkHCJ2Q90.net
- >>453
やはり最終的にそうなりますか。ありがとうございました
- 455 :名無しさん@お腹いっぱい。:2015/03/23(月) 21:14:55.35 ID:bUt74JCu0.net
- alt+左クリックで関数をループ実行させてなおかつaltと左クリックを押し続けるような動作をさせたいんですが
こういう感じのループを使ってみましたが左クリックを押し上げてからSend,{Lbutton up}{Alt UP}が実行されるまでに時間がかかるので
左クリックを押し上げても最初のdownが解除されない状態が400ミリセカンドくらい続きます
左クリックを押し上げた瞬間にSend,{Lbutton up}{Alt UP}をきっちり実行させることって無理でしょうか?
!Lbutton::
Send,{Alt down}{Lbutton down}
Loop
{
GetKeyState, state, Lbutton , p
if state = u
break
}
Send,{Lbutton up}{Alt UP}
return
- 456 :名無しさん@お腹いっぱい。:2015/03/23(月) 21:22:45.60 ID:bUt74JCu0.net
- 400msは言いすぎました 50msくらいです
- 457 :454:2015/03/23(月) 21:31:13.83 ID:bUt74JCu0.net
- またまたすいません どう考えても自分の使ってる関数のせいで遅れてました
やっぱり質問はなかったことにしてください
- 458 :名無しさん@お腹いっぱい。:2015/03/24(火) 01:12:05.76 ID:8+a2TfNI0.net
- Firefox上のリンクや選択状態にしたテキストをahkで作ったguiにD&Dしたいんですけどどうすればいいのでしょうか
現状guiのウィンドウ自体や、エディットコントロールにドロップしようとしても
マウスカーソルが丸に斜め線が入ったものになりできません
(FirefoxからのD&D自体はIEの文字入力欄やデキストエディタ等なら受け取れるのは確認しています)
よろしくお願いします
- 459 :名無しさん@お腹いっぱい。:2015/03/24(火) 01:56:10.17 ID:SYc3t2JM0.net
- >>458
Send ^c
- 460 :名無しさん@お腹いっぱい。:2015/03/24(火) 17:28:21.15 ID:vRsuGYqF0.net
- #IfWinActiveなのですが、タイトルが2つのときのORをしたいときはどうしたらいいのでしょうか
たとえば、2つのウインドウがあってそれらのタイトルが
hoge hoge
hage hage
のとき、
#IfWinActive hoge hoge | hage hage
#IfWinActive "hoge hoge" | "hage hage"
でも動きません
- 461 :名無しさん@お腹いっぱい。:2015/03/24(火) 17:44:06.20 ID:b40haFUl0.net
- #IfとWinActive()を使う
- 462 :名無しさん@お腹いっぱい。:2015/03/24(火) 19:11:02.58 ID:vRsuGYqF0.net
- 出来ました。ありがとうございました
#If WinActive("hoge hoge") | WinActive("hage hage")
最後は
#if
しておけばいいのですね
- 463 :名無しさん@お腹いっぱい。:2015/03/24(火) 20:40:58.30 ID:hVYozaQf0.net
- >>459
それぐらいしかやり用ないですかね
D&Dの挙動が一番理想に近いんですが
- 464 :名無しさん@お腹いっぱい。:2015/03/24(火) 20:41:56.00 ID:hVYozaQf0.net
- ん、なんかID変わってますけど>>458です
- 465 :名無しさん@お腹いっぱい。:2015/03/24(火) 21:13:42.60 ID:s+pzoKKw0.net
- >>463
そのままのコマンド、MouseClickDragでできるかも?
winactivateも必要かな?
動くかどうか実験できないんでスマナイね。
ファイルをアプリにD&Dする、「Simulate Drop Files」っていう関数は使っているから知ってるんだが…
- 466 :名無しさん@お腹いっぱい。:2015/03/24(火) 23:41:52.44 ID:hVYozaQf0.net
- >>465
MouseClickDragではできませんでした。ありがとうございます
結局ドラッグ操作にはなりませんでしたが、MGLで
MG_Move()、MouseGetPos、MG_CheckCursor、ControlSendあたりを使ってゴリ押しました。
貼ろうとも思いましたが、長さ的に分割しないと投稿できないしそこまでお目汚しする程のものではないのでよしときました
>>459さんもありがとうございました
- 467 :名無しさん@お腹いっぱい。:2015/03/26(木) 15:58:35.86 ID:Bx9NsndY0.net
- 範囲に入ったらツールチップ表示ってどうにかできませんかね?
- 468 :名無しさん@お腹いっぱい。:2015/03/26(木) 15:59:55.88 ID:Bx9NsndY0.net
- Settimerでやりたいんですが、そもそも座標をトリガーにすることって出来るんでしょうか?
#Persistentを使うしかない感じです?
- 469 :名無しさん@お腹いっぱい。:2015/03/27(金) 01:34:28.37 ID:6CJdtRAy0.net
- 「マウスが〜」ってことでいいのかな?
>Settimerでやりたいんですが、そもそも座標をトリガーにすることって出来るんでしょうか?
Settimer使うんでしょ?単純にマウス座標とその範囲の座標とを比べればいいじゃない
>#Persistentを使うしかない感じです?
settimer使うんならもちろん常駐が必要で、コード的に#Persistentがなきゃ常駐できないんなら使えばいい
何を聞きたいのかいまいちよく分からんな
- 470 :名無しさん@お腹いっぱい。:2015/03/27(金) 09:21:50.06 ID:dvbICV0C0.net
- Settimerは使いたいのですがぶっちゃけ#Persistentは使いたくないんです。常駐してしまうのではなくonoffを切り替えたいので
- 471 :名無しさん@お腹いっぱい。:2015/03/27(金) 10:31:53.35 ID:jwAKZjot0.net
- Settimerって常駐しなきゃ無理でしょ
- 472 :名無しさん@お腹いっぱい。:2015/03/27(金) 11:13:58.23 ID:YaF88CcH0.net
- SetTimerのON/OFFはAHK常駐してなかったらできない
#Persistentの記述が嫌なら適当なホットキーを突っ込んどく
SetTimer On/OFFでも割り当てとけばいい
使わない時はAHKが動いている事自体が嫌だということなら
任意のタイミングでExitAppするコードを組み込んでおけばいい
- 473 :名無しさん@お腹いっぱい。:2015/03/28(土) 00:56:43.77 ID:5s82G7GG0.net
- 特定のキーを押す毎にアルファベットのa-zを順にsendしたいのですが
変数に整数を入れて1ずつ増やした時に
if文を使わずに直接変数からアルファベットに変換する方法は無いでしょうか?
- 474 :名無しさん@お腹いっぱい。:2015/03/28(土) 01:28:34.00 ID:EeJsQ2o90.net
- Transform
- 475 :名無しさん@お腹いっぱい。:2015/03/28(土) 01:32:28.86 ID:1IsZlfKl0.net
- >>473
zまでいったらaに戻るのかとか、途中でリセットしてaに戻したりする必要あるのかとか
細かいことがわからんけど↓みたいな感じは?
F1::
n++
Send, % Chr(n+96)
Return
- 476 :名無しさん@お腹いっぱい。:2015/03/28(土) 01:54:33.89 ID:5s82G7GG0.net
- >>475
出来ました、完璧です
ありがとうございます
別のキーでaに戻すようにしてあります
ループするかはまだ考えていませんでした
- 477 :名無しさん@お腹いっぱい。:2015/03/30(月) 01:08:05.56 ID:ITanFaH/0.net
- チルダキーを付けて動作させたいものとさせたくないものがあるんですがそういうことってできますか?
たとえばあるアプリで
~Space & 1::soundbeep
Space & 2::soundbeep
の2つの設定を作りましたが、上だけはチルダありで、下はチルダなしでSpaceキーを無効化したいんですが
この2つを書いてしいまうと両方共Spaceが生きたままになってしまいます
- 478 :名無しさん@お腹いっぱい。:2015/03/30(月) 03:36:44.73 ID:ITanFaH/0.net
- >>477は勘違いでした なかったことにしてください
- 479 :名無しさん@お腹いっぱい。:2015/04/03(金) 11:51:23.93 ID:MQyEHpAC0.net
- 外部にあるファイルの関数って呼び出せないかな?
便利にするためにいろいろ関数作ってたら無軌道に増えてって、
新しい.ahkファイルを作るたびに今までの関数全部コピペしなきゃならないんだけどいい方法ある?
- 480 :名無しさん@お腹いっぱい。:2015/04/03(金) 12:31:14.05 ID:zkU3W2Z+0.net
- Wikiで「関数」の項目を読む
- 481 :名無しさん@お腹いっぱい。:2015/04/03(金) 12:54:27.64 ID:MQyEHpAC0.net
- >>480
ファイル読み書き系のコマンドばっか眺めてたわすまんかった
- 482 :名無しさん@お腹いっぱい。:2015/04/03(金) 14:21:55.84 ID:5KU6O+Hk0.net
- 右クリックのクラスって取得できません?
Appkeyでトグルさせたいんです。右クリックコンテキストの有無で。
- 483 :名無しさん@お腹いっぱい。:2015/04/04(土) 10:45:18.25 ID:81olN86v0.net
- a & b::send,c
こうやった場合やGetKeyStateを使っても
aが死ぬんですが何故でしょうか?
- 484 :名無しさん@お腹いっぱい。:2015/04/04(土) 11:05:05.40 ID:NdWTHlxL0.net
- 仕様だから
- 485 :名無しさん@お腹いっぱい。:2015/04/04(土) 11:16:06.11 ID:3yMU30pq0.net
- つかGetKeyState使うんならこうじゃね?
b::
If(GetKeyState("a")) {
Send, c
} else {
Send, b
}
Return
そりゃコンビネーションキーにしたらaは死ぬよ
- 486 :名無しさん@お腹いっぱい。:2015/04/04(土) 13:21:47.90 ID:81olN86v0.net
- おーありがとうございます
関数の使い方を間違っていました
勉強になります
- 487 :名無しさん@お腹いっぱい。:2015/04/04(土) 20:11:24.01 ID:VDUMwzcu0.net
- >>482
MouseGetPos
- 488 :名無しさん@お腹いっぱい。:2015/04/04(土) 21:29:00.06 ID:+HRqUzbg0.net
- >>487
できなかったです。
- 489 :名無しさん@お腹いっぱい。:2015/04/04(土) 21:43:24.71 ID:py+t02Yz0.net
- メニュー、ダイアログ系のClassはだいたい ahk_class #32770
コンテキストメニューかどうかの判別方法は知らん
- 490 :名無しさん@お腹いっぱい。:2015/04/05(日) 10:24:32.11 ID:CDj9mNfl0.net
- >>488
+WinGetClass
- 491 :名無しさん@お腹いっぱい。:2015/04/05(日) 23:35:27.10 ID:20EMD3Aj0.net
- 初歩的な質問なのですが
「F12」キーと「A」キーを押した場合「b」と入力したい場合どう記述すればよいのでしょうか?
(F12a::Send b とかやってみたのですが出来なくて…)
- 492 :名無しさん@お腹いっぱい。:2015/04/05(日) 23:40:49.34 ID:7ACApk/G0.net
- 数レス前もしくはautohotkey wiki と検索して出るサイトを見て下さい
- 493 :名無しさん@お腹いっぱい。:2015/04/05(日) 23:42:02.37 ID:05yqFFwC0.net
- テンプレに書いてるしw
- 494 :名無しさん@お腹いっぱい。:2015/04/06(月) 00:20:56.69 ID:MlgJxlGV0.net
- >>492
>>493
ありがと。&と{}ってやつで囲ったらできました
プログラミング的なのに縁遠くてチンプンカンプンでした
- 495 :名無しさん@お腹いっぱい。:2015/04/06(月) 00:27:16.16 ID:dVbhCwY90.net
- wikiはプログラミングできない奴向けの解説だろうに何言ってんだ?
- 496 :名無しさん@お腹いっぱい。:2015/04/06(月) 01:19:59.57 ID:KiKP6hcl0.net
- すみません、お尋ねします。
IEのリンク上で右クリックメニューを表示させた際に「ショートカットのコピー(T)」のあるウィンドウが発見された時に、任意のコードを実行したいのですが
「ショートカットのコピー(T)」をWinTextに指定すると反応が無くて困っています。
何か根本的な事を間違っていると思うのですが、どうかお力添えをお願いします。
Loop {
WinWait, ahk_class #32768, ショートカットのコピー(T), 5
If ErrorLevel = 0
{
msgbox, 5秒以内に発見
} else If ErrorLevel = 1
{
msgbox, 5秒以内に発見出来ず
}
}
return
esc::exitapp
- 497 :名無しさん@お腹いっぱい。:2015/04/06(月) 09:32:17.27 ID:GFGxqZ1b0.net
- 右クリメニューのテキスト取得は多分できないから無理
質問するときは具体的に何のためにそれがしたいのか書いたほうが代案出してもらえていいよ
もしカーソルがリンク上にあった場合のみ特定の処理がしたいなら
変数A_Cursorで現在のカーソルの形が取得できるからそれで判別
あと何かを監視したい場合はLoopじゃなくてSettimerを使うこと
- 498 :名無しさん@お腹いっぱい。:2015/04/06(月) 09:53:18.07 ID:d6KiG/Qn0.net
- コンテキストメニューのテキストを取るのは標準コマンドじゃ無理と思う
自分はImageSearch で無理矢理に検知させてるわ
スクショから「ショートカットのコピー(T) 」の部分を切りだして検索元画像にするといい
フォント変わったらアウトだし汎用性皆無だけどね
- 499 :名無しさん@お腹いっぱい。:2015/04/06(月) 14:34:23.14 ID:KiKP6hcl0.net
- >>497 >>498
解りました、ありがとうございます。
- 500 :名無しさん@お腹いっぱい。:2015/04/06(月) 15:32:05.38 ID:kSkTXHTB0.net
- a::
if GetKeyState("Space","P"){
send,あ
}else{
send,a
}
i::
if GetKeyState("Space","P"){
send,い
}else{
send,i
}
この時にaと打つと「ai」が送信、Space+aと打つと「あい」が送信されます。
なぜaを打つと下のiのifまで実行されるのでしょうか?
対処方法を教えください。
- 501 :名無しさん@お腹いっぱい。:2015/04/06(月) 15:46:24.77 ID:yEh88lnd0.net
- >>500
Return
解説と見本を読まないと余計に時間かかる。
- 502 :名無しさん@お腹いっぱい。:2015/04/06(月) 16:38:09.75 ID:kSkTXHTB0.net
- >>501
ありがとうございます。
解説をじっくり読みます
- 503 :名無しさん@お腹いっぱい。:2015/04/06(月) 21:45:34.33 ID:HmzKuP6Q0.net
- 以前ここで、マウスのXbutton1、2以上の拡張ボタンをどう割り当てればいいか質問した者です
そのときF13, F14・・・に割り当てればいいということだったのですが
いざ、マウスを買って来たら、キーのリバインド先は実際にキーボードを押さなければならず
F13のようなキーを割り当てることができませんでした
この場合どのようにすればいいのでしょうか?
- 504 :名無しさん@お腹いっぱい。:2015/04/06(月) 21:47:39.46 ID:4m8lMHdu0.net
- まるで成長しとらんな
- 505 :名無しさん@お腹いっぱい。:2015/04/06(月) 22:16:53.93 ID:yEh88lnd0.net
- >>503
マウスの設定ファイルを自分で探して直接書き換えるか
適当なキーを一時的にF13に割り当てればいい
F1::F13
- 506 :名無しさん@お腹いっぱい。:2015/04/06(月) 22:18:38.68 ID:d6KiG/Qn0.net
- そういう時はマウスの型番やメーカーは書け、情報隠すと2度手間でうざい
ロジならuberOptionsで可能
http://ahkwiki.net/Faqs
そうでないなら割り当て設定時用に F3::F13 とかリマップスクリプト書いてF3押したらいいんじゃね
AHKのリマップではダメなら一時的にChangeKeyで割り当て変換したらいいんじゃね
- 507 :名無しさん@お腹いっぱい。:2015/04/06(月) 22:31:44.20 ID:HmzKuP6Q0.net
- >>505
ありがとうございます
それはなんとか私でも思いついてやってみたのですが
ユーティリティが反応しません
F1::F12とすればちゃんと受理してくれます
Razer DeathAdderというマウスです
- 508 :名無しさん@お腹いっぱい。:2015/04/07(火) 03:58:04.14 ID:srF0sXjc0.net
- Logiならドライバ入れて設定できたんだがRazerは使ったことないからわからないな
ハードウェア板向きの話題じゃねえかな
- 509 :名無しさん@お腹いっぱい。:2015/04/07(火) 08:19:19.01 ID:Uvh4pKKx0.net
- RazerはF12までしか対応してなかった記憶
- 510 :名無しさん@お腹いっぱい。:2015/04/08(水) 12:15:39.88 ID:EtNb5qyG0.net
- (誤検出、誤動作なく)左右同時押しを検出する方法があったら教えて下さい
- 511 :名無しさん@お腹いっぱい。:2015/04/08(水) 15:45:32.91 ID:DTorG3cd0.net
- AutoHotkeyサンプル集が404になってる
大変お世話になりました
- 512 :名無しさん@お腹いっぱい。:2015/04/09(木) 00:14:36.87 ID:y/OsY/dd0.net
- こういう記述をしたときにahk_class AAAのアプリがアクティブでもaキーを押すとsend,cの動きをしてしまうんですが普通ですかね?
限定してるのでa::soundbeepが動いてくれると思ってたんですが
#ifwinactive ahk_class AAA
a::soundbeep
#ifwinactive
a::send,c
- 513 :名無しさん@お腹いっぱい。:2015/04/09(木) 13:53:03.28 ID:hEHWFs4Q0.net
- クラス指定間違ってるんだろ
- 514 :名無しさん@お腹いっぱい。:2015/04/13(月) 21:39:03.72 ID:fkQnGzUR0.net
- Pause/BreakキーにWinキーを配置したいんですが
Pause::Send,{RWin}
だと長押しが連打判定になってしまいました
Win+Rキーなどのショートカットを使いたいのですがいい方法はないでしょうか
- 515 :名無しさん@お腹いっぱい。:2015/04/13(月) 21:52:36.76 ID:k7WMUgej0.net
- >>514
KeyWait
連打→キーリピート
まず解説とコマンド全部読む方が先
- 516 :名無しさん@お腹いっぱい。:2015/04/15(水) 14:54:50.39 ID:oL1oACbx0.net
- アップローダにあった
WindowGrid.ahk
コレどうやって使えばいいの。
- 517 :名無しさん@お腹いっぱい。:2015/04/15(水) 18:37:20.06 ID:/pg2z1j+0.net
- 先頭にホットキー書いてあるじゃん
- 518 :名無しさん@お腹いっぱい。:2015/04/15(水) 20:08:36.02 ID:4DIcQuGQ0.net
- 座標とかが出るだけなんだよな
- 519 :名無しさん@お腹いっぱい。:2015/04/15(水) 21:41:01.59 ID:/pg2z1j+0.net
- いや?カクカクとリサイズしたり移動したりできたぞ
- 520 :名無しさん@お腹いっぱい。:2015/04/15(水) 21:45:56.89 ID:4DIcQuGQ0.net
- あーctrl+Rドラッグで機能するってことね。
- 521 :名無しさん@お腹いっぱい。:2015/04/16(木) 22:52:54.38 ID:S7s+M0q20.net
- >>514
オレも Pause にキー割り当てようと思ってしてみたんだけど、
Pause/Break はちょっと特別なようで、割り当ないで他のキーで
回避してる。上手くいかなかった。
- 522 :名無しさん@お腹いっぱい。:2015/04/17(金) 06:08:20.71 ID:LpK03rxv0.net
- google.comでの検索結果上で何かキーを打つと、
同じクエリでgoogle.co.jpで検索してくれるスクリプトをスマートに作る方法はないですかね?
アドレスバーのcomを書き換える方法しか思いつかないんですが、誤爆しそうで・・
- 523 :名無しさん@お腹いっぱい。:2015/04/17(金) 10:40:17.02 ID:Ym5918OY0.net
- 誤爆しそうって、書き換えるURLの文字列位置を間違える的な意味で?
そういう意味ならRegExReplace()で大丈夫かと
- 524 :名無しさん@お腹いっぱい。:2015/04/17(金) 10:48:29.50 ID:h8ag0FEx0.net
- そんなのはブックマークレットでいいじゃん
つか.comと.co.jpでなんか違うの?
- 525 :名無しさん@お腹いっぱい。:2015/04/17(金) 13:25:20.80 ID:LpK03rxv0.net
- jpだと検索結果違う時あったり画像検索のカテゴリ分け使えなかったり
経路検索でワンクッションはさまないといけなかったりいろいろ面倒だったので、、
ブックマークレットとkeyconfig for chromeが俺としては楽そうです。
ありがとうございました!
- 526 :名無しさん@お腹いっぱい。:2015/04/17(金) 18:30:25.87 ID:DGRHVW9D0.net
- むしろそれらの情報が有用だわ
なんとなくくせでcom使っててよかった
- 527 :名無しさん@お腹いっぱい。:2015/04/17(金) 23:54:32.33 ID:CNY2SU6G0.net
- ボタンを押すたびに変数を増やす方法が上手くいかないんですが
教えていただけないでしょうか
- 528 :名無しさん@お腹いっぱい。:2015/04/17(金) 23:56:25.11 ID:t7c8Vf1Q0.net
- 変数++でいいやん
- 529 :名無しさん@お腹いっぱい。:2015/04/17(金) 23:57:17.74 ID:arw34YO40.net
- 金も払わず質問とな
- 530 :名無しさん@お腹いっぱい。:2015/04/19(日) 21:15:46.82 ID:R2kTS/HR0.net
- 箱1コンを認識してくれない
- 531 :名無しさん@お腹いっぱい。:2015/04/19(日) 21:25:05.57 ID:4prPKQjo0.net
- AHKのせいちゃうがな
- 532 :名無しさん@お腹いっぱい。:2015/04/20(月) 01:00:46.02 ID:Cay/m/LD0.net
- くそうNHKめ!
- 533 :名無しさん@お腹いっぱい。:2015/04/23(木) 16:10:33.63 ID:YQQckzSl0.net
- AHKでguiのウィンドウを作成して、そのウィンドウを OnMessageを使用して
マウスのクリックイベントを拾い、都度 Gui, Add, Text で
そのウィンドウに時刻を表示するスクリプトを作りました。
ログとして表示するのが目的なのですが、この場合にウィンドウの一番下まで
テキストで埋まると以降は何も表示が更新されません。
テキストが下まで来たらスクロールされるにはどうしたらいいでしょうか?
- 534 :名無しさん@お腹いっぱい。:2015/04/23(木) 16:39:46.31 ID:K1DogRPZ0.net
- Gui, Add, Edit, ReadOnly HScroll VScroll
- 535 :名無しさん@お腹いっぱい。:2015/04/23(木) 17:46:28.27 ID:YQQckzSl0.net
- >>534
ありがとうございます
Gui, Show, w1024 h768
OnMessage(0x204, "WM_RBUTTONDOWN")
Return
GuiClose:
ExitApp
WM_RBUTTONDOWN(wParam, lParam)
{
ntime = %A_Year%/%A_Mon%/%A_MDay% %A_Hour%:%A_Min%:%A_Sec%:%A_MSec%
Gui, Add, Text,, %ntime%
Return
}
こんな感じで作ったのですが、Gui, Add, Text だと HScroll VScroll のオプションつけても
希望通りになりませんでした、Gui, Add, Edit は使った事がないのですが
どう転用すればいいのでしょうか?
- 536 :名無しさん@お腹いっぱい。:2015/04/23(木) 18:51:14.48 ID:Qpc6t8jV0.net
- >>535
二度目以降はGui作成ではなくGuiControlで内容変更
Gui, Add, Text, vTEST w150
Gui, Show
; OnMessage(0x204, "WM_RBUTTONDOWN")
Return
; WM_RBUTTONDOWN() {
; GuiControl,, TEST, % A_Year "/" A_Mon "/" A_MDay A_Hour ":" A_Min ":" A_Sec ":" A_MSec
; }
GuiContextMenu:
GuiControl,, TEST, % A_Year "/" A_Mon "/" A_MDay A_Hour ":" A_Min ":" A_Sec ":" A_MSec
Return
- 537 :名無しさん@お腹いっぱい。:2015/04/23(木) 19:15:24.17 ID:YQQckzSl0.net
- >>536
ありがとうございます
なんだか後出しみたいで本当に申し訳ないのですが>>533にある
「ログとして表示するのが目的なのですが」の通り、あくまでログウィンドウが目的なので
ウィンドウサイズ1024 x 768の複数行表示なのです
- 538 :名無しさん@お腹いっぱい。:2015/04/23(木) 19:46:26.44 ID:Qpc6t8jV0.net
- 後は読めば分かる
- 539 :名無しさん@お腹いっぱい。:2015/04/23(木) 19:58:55.55 ID:YQQckzSl0.net
- >>536
一行目の Gui, Add, Text, vTEST w150
を
Gui, Add, ListBox, vTEST w1024 h768
にしてみた所かなり自分のイメージ通りになりました
ただ、依然として自動で最終行に追随してスクロールはしてくれないです
ここがなんとかなれば良いのですが…
なんにしてもみなさん助かりました、ありがとうございました
- 540 :名無しさん@お腹いっぱい。:2015/04/23(木) 20:12:55.08 ID:Qpc6t8jV0.net
- >>539
Ctrl+EndかEnd
- 541 :名無しさん@お腹いっぱい。:2015/04/23(木) 20:50:20.51 ID:YQQckzSl0.net
- >>540
実はさっきの書き込みをしたすぐ後に、
最終行でログが更新されて行数が増える度に渋々PageDown押してた時に
これって、わたしがPageDown押す代わりにスクリプトに押させればいいだけなんじゃ…
と気付いて、マウスイベントから戻る直前に Send, {PgDn} して解決してました
ごり押しの解決ぽかったので、ちょっと言えなかったんですけれども
最後まで細やかなフォローありがとうございました
- 542 :名無しさん@お腹いっぱい。:2015/04/24(金) 12:43:41.18 ID:f5QeCqZK0.net
- ;--------
a::1
#IfWinActive, 〜
a::2
;--------
これは期待通り動作するのに
;--------
a::Send, 1
#IfWinActive, 〜
a::2
;--------
これだと下が機能しないのは仕様ですか?
;--------
a::1
#IfWinExist, aaa
a::2
#IfWinActive, aaa
a::Send, 3
;--------
#If〜は条件が被ってたら先頭が優先なはずだけど、これだと後ろが優先されるのもよくわからない
wikiのどこかに説明ある?
- 543 :名無しさん@お腹いっぱい。:2015/04/24(金) 12:52:47.77 ID:IY9zVxvC0.net
- なんで#Ifで閉じないの?デバッグのつもりなの?
- 544 :名無しさん@お腹いっぱい。:2015/04/24(金) 13:32:41.42 ID:m+JL+NGt0.net
- 俺も同じことでめっちゃ躓いたんだけど
そういう時は
#IfWinActive, 〜
a::Send, {2 down}
a up::Send, {2 up}
みたいに二行に分けて書かないとダメ
>>542の書き方ではなぜか
a::Send, 1
a up::Send, {2 up}
と解釈されてしまいうまく動作しない
- 545 :名無しさん@お腹いっぱい。:2015/04/24(金) 17:00:56.15 ID:f5QeCqZK0.net
- リマップがホットキー変換されるときのバグっぽいのかな?
リマップとホットキーの違いはどうにも理解が難しい
- 546 :名無しさん@お腹いっぱい。:2015/04/24(金) 20:49:55.94 ID:lqocsr9z0.net
- >>542
#IfWinExist < #IfWinActive こちらが優先
>>544 >>545
バグではない仕様
#If系とは無関係リマップは変換されて実行されるので分かりにくい
同じキーの割り当てはホットキーで統一した方がいい
■変換前
a::2
a::Send 1
■変換後
*a::
SetKeyDelay -1
Send {Blind}{2 DownTemp}
Return
*a up::
SetKeyDelay -1
Send {Blind}{2 Up}
Return
a::Send 1
-------
同じホットキー「a」が登録されているように見えるが
「a」と「*a」違うホットキーなのでエラーが無く動く
修飾キーを押していないので「a」→「*a up」という流れになる
- 547 :名無しさん@お腹いっぱい。:2015/04/24(金) 21:28:02.04 ID:m+JL+NGt0.net
- >>546
別のホットキー扱いだったのか・・・
全く気づかなかったわ。ありがとう
- 548 :名無しさん@お腹いっぱい。:2015/04/24(金) 22:25:12.74 ID:pJJKqwld0.net
- >>546
>#IfWinExist < #IfWinActive こちらが優先
そんなことないよ
#IfWinExist, ahk_class Notepad
a::1
#IfWinActive, ahk_class Notepad
a::2
これメモ帳でa押したら1だよ
前後入れ替えれば2になるよ
- 549 :名無しさん@お腹いっぱい。:2015/04/24(金) 23:02:42.71 ID:KbUta85o0.net
- 上から読んでく。左から読んでく。
includeは先に読み込んだほうが優先
- 550 :名無しさん@お腹いっぱい。:2015/04/24(金) 23:11:36.08 ID:lqocsr9z0.net
- >>548
こっちも書いてる上でいつのまにか間違ってました
これは無視してください、指摘どうもです。
> #IfWinExist < #IfWinActive こちらが優先
- 551 :名無しさん@お腹いっぱい。:2015/04/25(土) 01:46:52.05 ID:przsQ+QU0.net
- ウィンドウのアクティブになってる箇所の位置を取得することってできますかね?
例えばエディタなら、文章編集の部分がアクティブなのか、それとも検索窓がアクティブなのか、とか
- 552 :名無しさん@お腹いっぱい。:2015/04/25(土) 08:38:43.96 ID:ILhHnN/f0.net
- ControlGetFocus
- 553 :名無しさん@お腹いっぱい。:2015/04/25(土) 10:21:27.98 ID:przsQ+QU0.net
- >>552
ありがとうございます
おかげさまで望み通りの挙動を実現できました
- 554 :名無しさん@お腹いっぱい。:2015/04/26(日) 07:15:11.97 ID:E7ItJPWy0.net
- 通常、文字はキーを押した瞬間に反映されますが、
反映されるのをキーを離した時に変えることって出来ますか?
- 555 :名無しさん@お腹いっぱい。:2015/04/26(日) 10:37:17.24 ID:/KOqIoQI0.net
- >>554
ttp://ahkwiki.net/Hotkeys
- 556 :名無しさん@お腹いっぱい。:2015/04/27(月) 23:44:16.23 ID:YkImkU5F0.net
- 最近.ahkスクリプトを弄っていないのに、F19の割り当てがある日突然動かなくなりました。
なぜでしょう?
changekeyというソフトを使って、AppskeyにF19を割り当てていままでうまくやってきた
つもりだったのですが、突然3日ほど前からF19の割り当てだけ動かなくなりました。
F19::b とやってもだめなのです。今日気づいたのですが、
sc06A::bというスキャンコードでahkスクリプトに登録すると以前のようにちゃんと動きます。
なぜでしょう。
- 557 :名無しさん@お腹いっぱい。:2015/04/28(火) 00:19:52.71 ID:Z5Yw7+AI0.net
- >>556
最小限のスクリプトでテスト
KeyHistoryのログでAHKがF19を認識してるか自分で確認
- 558 :名無しさん@お腹いっぱい。:2015/04/28(火) 00:31:20.28 ID:KJcPzRL00.net
- >>557
historyではF19と認識されていました。
最小のスクリプトでやると、F19::bのままでちゃんと動く。
なぜだろう。スクリプト見なおしてみます。ありがとうございました。
- 559 :名無しさん@お腹いっぱい。:2015/04/28(火) 01:20:14.02 ID:KJcPzRL00.net
- スクリプトのなかでsc06Aの行とF19の行があると、
どちらかが動かなくなるみたい。統一しないといけないの?
#IfWinActive とかで区切っててもだめっぽい。
- 560 :名無しさん@お腹いっぱい。:2015/05/02(土) 13:51:17.86 ID:J/EjvGQ30.net
- vk82sc06A::Send, {F19}
- 561 :名無しさん@お腹いっぱい。:2015/05/12(火) 15:50:15.55 ID:UeaJTsYg0.net
- ご教示願います
変換(sc079)にshiftを割り当てたいのですが、 sc079::Shift と書いても反映されません
sc079 & a::A と総当りする以外に、書き方はあるでしょうか?
- 562 :名無しさん@お腹いっぱい。:2015/05/12(火) 16:07:11.26 ID:UeaJTsYg0.net
- 解決しました
sc079::Shift 以降に
sc079 & a::A みたいなのが2〜3混入していたのが原因だったようです
前者のみにしたところ動作するようになりました
- 563 :名無しさん@お腹いっぱい。:2015/05/13(水) 00:34:47.27 ID:RnxP4oC40.net
- 何かヒントを探しています。
ツールは違いますが、最小限の類似の似た事で質問すると
MSペイントでそのウィンドウをフォカスした状態でスクリプト上からペイントにjpegがドラッグされたのと同等のアクションを実現するにはどうしたらいいんでしょう?
注意点としてはmsペイントのメニュー等で読み込むのでは無くドラッグと言う事です。
ペイントは悪魔で例でして、run, 等で別のアプリケーションに紐付けられている為
runで外部アプリを起動するのはNGです。
batだとドラッグと同様な効果って合った気がするのですが・・・できばahkオンリーで可能だと嬉しいです。
数日考えてても思いつかなくて。。
- 564 :名無しさん@お腹いっぱい。:2015/05/13(水) 01:33:36.70 ID:RnxP4oC40.net
- http://www.autohotkey.com/board/topic/88036-drag-drop-file-script/
自己解決しそうな・・・・これ同じような問題解決している奴なんでしょうかね。
- 565 :名無しさん@お腹いっぱい。:2015/05/13(水) 03:51:04.94 ID:k2+Di73M0.net
- >>563-564
もう解決したのかな?ま、いちおう…
http://ahk.xrea.jp/myscripts/index.html
にある、「ファイルドロップ関数」は?
あと、↑の発展系がMouseGestureLの内部に「MG_DropFiles()」としてある。
自分は前者は使ったことないけど、後者はそこの関数だけ抜き出して個別のスクリプトで使わせてもらってる。
- 566 :名無しさん@お腹いっぱい。:2015/05/13(水) 07:58:32.76 ID:AgxOjBgh0.net
- そこのファイルドラッグ関数はANSI時代のでUnicode版では動かない
過去ログよりU対策、まだ見れると思う
http://hibari.2ch.net/test/read.cgi/software/1280482227/330-332
- 567 :名無しさん@お腹いっぱい。:2015/05/13(水) 13:06:36.91 ID:RnxP4oC40.net
- >565
仕事の時間が来たのでまだですがドロップ関数とか有るんですね。
今週来週パツパツですが合間を見て作っている感じです。
通常は、この手段使わなくても良いんですが使えると色々便利なはずなので頑張りたいと思います。
>566
見てみます。
有難う御座います!
- 568 :名無しさん@お腹いっぱい。:2015/05/14(木) 00:30:26.74 ID:HwMcKOEp0.net
- クリップボードを使わずに文字列を一気に入力する方法はありませんか?
- 569 :名無しさん@お腹いっぱい。:2015/05/14(木) 00:47:50.13 ID:lpl3HLkX0.net
- ControlSetText
- 570 :名無しさん@お腹いっぱい。:2015/05/14(木) 01:23:49.57 ID:HwMcKOEp0.net
- ありがとうございます
- 571 :名無しさん@お腹いっぱい。:2015/05/16(土) 11:48:33.89 ID:PCrubyTL0.net
- csvファイルから読み込むことはできるんだけど、保存ってどういうふうにしたらいいかな
例えば
aaa,1
bbb,2
ccc,3
という内容のcsvファイルがあったとして、これを
変数aaaに1を格納、
変数bbbに2を格納、
変数cccに3を格納
といった感じにするコードを組んだんだけど、処理中にいずれかの変数の値が変わったとき、
それをcsvファイルのほうに反映させることはできないだろうか
- 572 :名無しさん@お腹いっぱい。:2015/05/16(土) 12:29:03.68 ID:kOy7gbjs0.net
- FileDelete後にFileAppendで丸ごと書き換える
- 573 :名無しさん@お腹いっぱい。:2015/05/16(土) 14:48:23.19 ID:PCrubyTL0.net
- >>572
ありがとう。やってみる
- 574 :名無しさん@お腹いっぱい。:2015/05/16(土) 14:51:30.58 ID:eUo+JdQG0.net
- それだと全部消える瞬間あるからどうだろ
- 575 :名無しさん@お腹いっぱい。:2015/05/16(土) 15:09:42.40 ID:kOy7gbjs0.net
- そんなら別名で作成して成功したら古いの消してリネームする
CSVじゃなきゃならない理由がないならini使ったほうが楽ではある
- 576 :570:2015/05/16(土) 20:13:12.66 ID:PCrubyTL0.net
- ありがとう。やっとなんとかできた。
俺も消えるの怖かったからFileMoveでリネームしてバックアップとってから書き込み作業させる感じでやってみた
csvはExcelシートで編集するのが楽だからだけど、iniのが便利なのか
何にしても回答thx
- 577 :名無しさん@お腹いっぱい。:2015/05/17(日) 12:14:28.04 ID:QIbhGgDk0.net
- Excelみたいに参照元の値が変わったらそれを参照してる先に変更を反映させたいんだが・・・
例えば下みたいなコードがあったとする
米:=200
調味料:=50
チャーハン:=米 + 調味料
Msgbox,% "チャーハンの値段=" チャーハン
これを実行するとメッセージボックスにチャーハンの値段=250と出るわけだが、
この後チャーハンの素や米の値段を変えても、"チャーハン:=米 + 調味料"の処理を
再度行わないとチャーハンの値段は250のままになる。
再計算の処理を行わずに、元となる値を変更するだけで参照先の値に反映させられないだろうか。
もしくは変数の値を変更したらその変数を参照している全ての変数を検索することはできないだろうか
- 578 :名無しさん@お腹いっぱい。:2015/05/17(日) 12:30:44.62 ID:TU8bjKH40.net
- 期待した答えと違うだろうけど
その部分だけVBAで組めば?
- 579 :名無しさん@お腹いっぱい。:2015/05/17(日) 13:19:38.21 ID:l5tu0VN80.net
- 料理名を関数にするとか…
チャーハン関数(米, 調味料){
処理
}
ラーメン関数(米, 調味料, 片栗粉){
処理
}
- 580 :名無しさん@お腹いっぱい。:2015/05/17(日) 13:21:34.60 ID:l5tu0VN80.net
- >>579
ラーメン関数の引数間違ってたorz
ラーメン関数(小麦粉, 調味料, 豚肉){
処理
}
- 581 :名無しさん@お腹いっぱい。:2015/05/17(日) 13:29:19.49 ID:chDQUntX0.net
- setterかgetter作るのがセオリー
get_price(){ ; 値が必要になった時に計算
return kome+chomi
}
set_kome(v){ ; 値を設定するときについでに価格も更新
kome:=v
price:=kome+chomi
}
- 582 :名無しさん@お腹いっぱい。:2015/05/17(日) 13:30:13.94 ID:l5tu0VN80.net
- すいませn、上2つのレスは無かった事にして
- 583 :名無しさん@お腹いっぱい。:2015/05/17(日) 16:25:35.70 ID:xSeyaxV/0.net
- チャーハン変数はどうしても使わないといかんのか?
直に計算式放り込めば常に最新の値になると思うが
Msgbox,% "チャーハンの値段=" 米+調味料
- 584 :576:2015/05/17(日) 19:17:30.45 ID:QIbhGgDk0.net
- みんなレスありがとう。
おかげで目途ついたかもしれないから、ちょっと組んでみる。できたら報告させてほしい。
あと>>583が指摘してくれてる直接計算式放り込むやり方なんだが、
材料の材料を使ったものもあるからできないんだ
(a=b+c b=d+e の場合にaの価格を求めたいとき、直接計算式を入れてもdやeの値の変化に対応できない)
とにかくやってみる。みんなthx
- 585 :576:2015/05/18(月) 00:23:45.98 ID:uhyQAsmx0.net
- やっとできた・・・こんな感じで組めた。長いからレス分ける。
>>581の登録と出力、>>582の引数に材料名を指定するのがヒントになった。お二方ありがとう。
何故か出力関数が登録関数の値を受け取ってくれなくてさんざwiki見た挙句、
globalを書けばいいことにたどり着くのに2時間かかったよorz
F10
;ケーキの材料費を計算する
SetGoodsValue("ケーキ",0,"スポンジ","ホイップクリーム","イチゴ")
SetGoodsValue("スポンジ",0,"粉","卵","バター","砂糖")
SetGoodsValue("粉",100)
SetGoodsValue("卵",50)
SetGoodsValue("バター",50)
SetGoodsValue("砂糖",20)
SetGoodsValue("ホイップクリーム",0,"生クリーム","砂糖")
SetGoodsValue("生クリーム",50)
SetGoodsValue("イチゴ",300)
Msgbox,% "ケーキ=" GetGoodsValue("ケーキ")
return
- 586 :576:2015/05/18(月) 00:24:14.68 ID:uhyQAsmx0.net
- ;品物の値段と材料を登録する関数
;Nameが登録する品物の名前
;Priceが原材料費もしくは加工による付加価値
;Mats*が材料の名前
SetGoodsValue(Name,Price,Mats*){
global
%Name%_Price:= Price
Loop,% Mats.MaxIndex() {
%Name%_Mats%A_Index% := Mats[A_Index]
}
}
;品物の値段を返す関数
GetGoodsValue(Name){
PriceSum+=%Name%_Price
While(%Name%_Mats%A_Index% != ""){
PriceSum+=GetGoodsValue(%Name%_Mats%A_Index%)
}
Return PriceSum
}
- 587 :名無しさん@お腹いっぱい。:2015/05/18(月) 05:06:25.42 ID:YF2LOIX30.net
- がんばるね〜
- 588 :名無しさん@お腹いっぱい。:2015/05/18(月) 12:32:38.01 ID:JqdHtnRV0.net
- VBで作られたフォーム内のコントロールの値を取得したいんだけど、指定の方法がわからないよ助けて!
- 589 :名無しさん@お腹いっぱい。:2015/05/18(月) 13:16:49.67 ID:uBE6jm3m0.net
- >>585
すごいがんばってるし適性もありそうだから
Objectのページも読むともっとよくなると思うな
- 590 :名無しさん@お腹いっぱい。:2015/05/18(月) 19:11:09.94 ID:TONE4GIQ0.net
- 同じスクリプトがもう一つ実行された場合にだけ特定の処理をするというようなことは可能なのでしょうか?
#SingleInstanceだと多重起動の有無くらいしか設定できないので…
- 591 :名無しさん@お腹いっぱい。:2015/05/18(月) 19:33:44.80 ID:QfcpYhw40.net
- 変数作って場合分け
- 592 :名無しさん@お腹いっぱい。:2015/05/18(月) 20:22:00.11 ID:fYgf5L7M0.net
- >>590
いろいろ方法がある
; タイトルで判断
#SingleInstance Off
DetectHiddenWindows On
WinGet,hoge,List
Loop,Parse
WinGetTitle
...略
OnMessage()
環境変数
ini作成
>>591
別スクリプトの変数は共有されない
- 593 :名無しさん@お腹いっぱい。:2015/05/18(月) 20:29:24.13 ID:TONE4GIQ0.net
- >>592
レスありがとうございます
OnMessage()かiniかでやってみます
- 594 :名無しさん@お腹いっぱい。:2015/05/18(月) 22:36:03.79 ID:fiB4L+jl0.net
- 教えてください。
ASUSの8インチWindows8.1タブレット「Vivotab Note 8」を使っていて、ボリュームキー上下にそれぞれ単押し、2回押し、長押しの3つの機能を持たせたく思っています。
Wikiなどで、Keywaitを使う方法、IF(A_PriorHotkey == A_ThisHotkey) && (400 > A_TimeSincePriorHotkey)を使う方法を知り、それぞれ2回押しまでは成功しました。
しかし、どうしても長押しが実現できません。
単純にアルファベットのキー入力をするコードを入れて調べてみたところ、どうも、ボリュームキー等のハードキー自体が、長押し中に「押下されたまま」ではなく、「連続押下」の信号を出しているようです。
このようなタイプのハードキーで、長押しを判定する方法はあるでしょうか?
- 595 :名無しさん@お腹いっぱい。:2015/05/18(月) 23:16:02.31 ID:fYgf5L7M0.net
- >>594
とりあえず最小限のコードを書いてほしい
何が間違ってるか分からない
- 596 :名無しさん@お腹いっぱい。:2015/05/18(月) 23:31:56.49 ID:fiB4L+jl0.net
- 勘違い。Keywaitを使う方法では、2度押しもダメだった。失礼しますた_(._.)_
#Usehook
$Volume_Up::
KeyWait,Volume_Up,T0.8
If(ErrorLevel)
{
Send,a ;長押し
KeyWait,Volume_Up
Return
}
KeyWait,Volume_Up,D T0.4
If(ErrorLevel)
{
Send,b ;1度押し
KeyWait,Volume_Up
Return
}
Send,c;2度押し
KeyWait,Volume_Up
Return
↑このコードで、2度押しでもbが入り、長押しをすると、bが連続で入力されてしまう。
- 597 :名無しさん@お腹いっぱい。:2015/05/18(月) 23:34:21.35 ID:fiB4L+jl0.net
- んで、単押しと2度押しの使い分けができたのが以下のコード
Volume_Up::
If (A_PriorHotkey = A_ThisHotKey && A_TimeSincePriorHotkey > 100 && A_TimeSincePriorHotkey < 500)
Send,b
Else
Send,a
Return
ハード的に連続(断続?)的に発生している入力信号を排除するため、>100を入れてる
- 598 :名無しさん@お腹いっぱい。:2015/05/19(火) 00:45:05.29 ID:vqvTfWRg0.net
- >>597
そのノートパソコンがVolume_Upの割り当てをソフトで行っている場合
フックを使用するとソフトが発行した信号は無視されるのでKeyWaitも反応しない
フックなしにして論理的判定にしたら動くと思うがどうだろう?
Volume_Up::
KeyWait, Volume_Up, T0.8 L
If (ErrorLevel)
ToolTip ok
Return
- 599 :名無しさん@お腹いっぱい。:2015/05/19(火) 01:16:04.01 ID:rple42k80.net
- 普通にキーリピートじゃないの?
KeyWaitが無理ならUpホットキーで対策したら
http://ahkwiki.net/Hotkeys#Up.E3.83.9B.E3.83.83.E3.83.88.E3.82.AD.E3.83.BC
- 600 :名無しさん@お腹いっぱい。:2015/05/19(火) 07:28:35.45 ID:dbD1dE6i0.net
- thx。
今晩ためしてみます
- 601 :名無しさん@お腹いっぱい。:2015/05/19(火) 07:42:32.31 ID:dbD1dE6i0.net
- 電車中でやってみた
Voluume_Up:;をVolume_Upに変更。結果変わらず
処理も変えないといけないのかな
また夜に挑戦
- 602 :名無しさん@お腹いっぱい。:2015/05/19(火) 07:43:35.11 ID:dbD1dE6i0.net
- みす
Voluume_Up:;をVolume_Up upに変更、でした。
- 603 :名無しさん@お腹いっぱい。:2015/05/19(火) 09:05:20.47 ID:rple42k80.net
- そうじゃなくて、押し下げイベントはリピートする前提でフラグを設置、A_TickCountで初回押下時刻記憶
次回の押し下げイベントでフラグONだったら押されっぱなしとみなし
初回押下時刻とA_TickCountとの差分が800ms以上だったら長押し判定とする
upイベントにはフラグと押下時刻初期を化処理を入れる
- 604 :名無しさん@お腹いっぱい。:2015/05/19(火) 17:18:25.43 ID:zeMGqcPi0.net
- 可変長変数の引数の数を変数か何かで指示することって可能?例えば
hoge(Text*){
Loop,% Text.MaxIndex(){
Msgbox,% Text[A_Index]
}
}
こんな関数があったとして、普通に使うなら
hoge("てきすと1","てきすと2","てきすと3")
みたいになると思うけど、この「"てきすと1","てきすと2","てきすと3"」の部分を
変数か何かに組み込んで、hoge(てきすと)みたいな使い方をすることはできないだろうか
- 605 :名無しさん@お腹いっぱい。:2015/05/19(火) 18:48:41.36 ID:iqtbUEhl0.net
- >>604
こうすれば出来るけど、他の方法は知らない
ary_Text := array()
ary_Text := ["てきすと1"]
hoge(ary_Text*)
ary_Text := ["てきすと1", "てきすと2", "てきすと3"]
hoge(ary_Text*)
hoge(Text*){
Loop,% Text.MaxIndex()
{
Msgbox,% Text[A_Index]
}
}
個人的には、素直に、hoge("てきすと1","てきすと2","てきすと3")で良いような気がするがなぁ
- 606 :名無しさん@お腹いっぱい。:2015/05/19(火) 19:20:26.73 ID:iqtbUEhl0.net
- >>605に追加
個別に変数のデータを変更する時
ary_Text := ["てきすと1", "てきすと2", "てきすと3"]
hoge(ary_Text*)
ary_Text[3] := "てきすと4"
hoge(ary_Text*)
- 607 :名無しさん@お腹いっぱい。:2015/05/19(火) 20:28:38.69 ID:zeMGqcPi0.net
- >>605
なるほど。助かった。
"てきすとn"の数がいくつになるか分からないデータがあって、
手動で打ち込むことができなかったんだ thx
- 608 :名無しさん@お腹いっぱい。:2015/05/21(木) 11:17:48.45 ID:eRo2mlV60.net
- 常に変数の値を監視させて、条件が一致したら現在のスクリプトをポーズさせて
別の処理を行わせるって可能かな?例えば
スクリプトA:変数hogeを1秒ごとに1増やす
Loop {
hoge++
tooltip,% hoge
Sleep,1000
}
スクリプトB:変数hogeが10を超えたらMsgboxを出す
While(hoge<10){
}
Msgbox, ほげ
でもこれだとスクリプトが別だから変数hogeをスクリプトBが受け取ってくれないし、
同じスクリプトに書くとスクリプトBの監視処理を行ってくれない。
スクリプト間で変数の受け渡しをするか、同じスクリプトで同時に二つのスレッドを
起動させる方法はないだろうか?
- 609 :名無しさん@お腹いっぱい。:2015/05/21(木) 12:10:26.18 ID:isnlwiEM0.net
- スクリプト間で変数の受け渡し → OnMessage
同じスクリプトで同時に二つのスレッド → SetTimer 2つ起動
方法はあるからwiki熟読するといい
- 610 :名無しさん@お腹いっぱい。:2015/05/21(木) 14:12:17.79 ID:mSCtIiwk0.net
- loop回しでスレッド抜けない状態だとsleep入れても他スレッドが割り込めなかった記憶
settimer使うならtimer間隔を1秒単位で周回するようにしてloopウエイトは取っ払ったほうが良さげ
- 611 :607:2015/05/21(木) 15:01:19.83 ID:eRo2mlV60.net
- おーできた、SetTimer便利だね。ありがとう
一応無限ループの中からも割り込んでくれるみたい
Settimer, ほげ監視
Loop {
hoge++
tooltip,% hoge
Sleep,1000
}
ほげ監視:
While(hoge < 10){
return
}
msgbox,ほげ
Exit
- 612 :名無しさん@お腹いっぱい。:2015/05/22(金) 01:26:23.41 ID:AdeS2dqu0.net
- Ctrl+alt+wheelUpなどに割り当てる時はどうすればいいのでしょうか?
GetKeyStateですか?
- 613 :名無しさん@お腹いっぱい。:2015/05/22(金) 01:45:22.00 ID:MYV8WZ2s0.net
- ttp://ahkwiki.net/Hotkeys
- 614 :593:2015/05/22(金) 16:28:19.56 ID:+w+wX+y40.net
- うむむ、うまくいかない(´・ω・`)
おしっぱで押下のみのキーリピートが発生する物理キー
(押下にsend{a}、キーアップにsend,{b}を割り当てた状態でおしっぱ→離すと「aaaaaab」と出力される)
に、1回押し、2回押し、長押しの3つの機能を割り当てたい。
んで597さんのLオプは改善せず、598さんのUPを使う方法で挑戦ちゅう
- 615 :593:2015/05/22(金) 16:36:16.94 ID:+w+wX+y40.net
- んでこんな感じで書いてみたんだが、1回押しと長押しはうまくいくのだけど、2回押しをしても1回押しになってしまう
原因はなんだろうか(´・ω・`) 分かる人いたら教えて
#Usehook
LastVdownReleaseTime = 0
VdownHoldFlag = 0
Volume_Down:: ;押した時
if(VdownHoldFlag == 0)
{
FirstVdownPressTime = %A_TickCount%
VdownHoldFlag = 1
}
return
- 616 :593:2015/05/22(金) 16:36:58.91 ID:+w+wX+y40.net
- (つづき)
Volume_Down up:: ;離した時
if (A_TickCount > FirstVdownPressTime + 500) ;最初の押し下げから長めに時間たってから
{
send,{L}
LastVdownReleaseTime = %A_TickCount%
VdownHoldFlag = 0
return
}
Keywait,Volume_Down,D T0.5 ;もう一度押されるのを待って
If(ErrorLevel) ;押されなかったら
{
send,{1} ;
LastVdownReleaseTime = %A_TickCount%
VdownHoldFlag = 0
return
}
send,{2} ;以上に当たらなければ
LastVdownReleaseTime = %A_TickCount%
VdownHoldFlag = 0
Return
- 617 :593:2015/05/22(金) 16:42:44.48 ID:+w+wX+y40.net
- 秒数を色々変えてみたけど、結果変わらず
Keywait使わないで、2回押しの1回目、2回目両方を1回押しと区別する方法があれば解決しそうなんだけど
- 618 :名無しさん@お腹いっぱい。:2015/05/22(金) 16:55:17.93 ID:SHMJnUpL0.net
- >>617
確認だけど>>598のフックを使用しない方法はちゃんとやったか?
これは書かいてはいけない
#Usehook ; フック
$Volume_Down:: ; $もフック
キーログを見てUPの信号が出ているのか確認
特殊なキーは出ていない場合がある
例 a長押しの場合
41 01E d 0.03 a
41 01E d 0.03 a
41 01E d 0.03 a
41 01E d 0.03 a
41 01E d 0.03 a
41 01E d 0.05 a
41 01E u 0.02 a ←
- 619 :593:2015/05/23(土) 06:56:39.86 ID:5ocJAUJB0.net
- ふおお。そういう意味だったんか…
ろくに理解せず#Usehook書いたままLオプつけてた
んで、ahkwikiにある「1つのキーに3種類以上の動作割り当て」のサンプルから#Usehookを外して、Keywait全部にLオプション付けたら
動きました! うおお感激(´;ω;`) どうもありがとうありがとう
あと、キー履歴を見てみたら、uは出てた。
AE 12E a d 0.03 Volume_Down
AE 12E a d 0.03 Volume_Down
AE 12E a d 0.03 Volume_Down
AE 12E a d 0.03 Volume_Down
AE 12E a u 0.02 Volume_Down
- 620 :名無しさん@お腹いっぱい。:2015/05/23(土) 14:43:22.19 ID:uC/053Td0.net
- ワコムの液タブ使っているんですが液タブとサブモニターの相性って何気に悪いのですが
ふと思ったんですがタブレットドライバーのマッピング変更ってAUTOHOTKEYから叩く事って出来ないんでしょうか?
この部分が、自分ではちょっと分からないので可能ならば
タスクバーからサブモニターのタスク→マッピング切り替え→カーソルフォーカス移動
何らかの別のフレーム指定でマッピング指定を戻す
って事で扱い楽に出来そうなんですがマッピング切り替えって部分がさっぱり分からないので・・・
どうもショートカットに割り振る事も出来無さそうだし
(違ったらすいません+ドライバー設定死んだら面倒なのでデフォから取れると一番良い)
- 621 :名無しさん@お腹いっぱい。:2015/05/23(土) 19:53:41.32 ID:vZYD6MeW0.net
- >>620
マッピング変更が何なのか分からないが
整理するとこういうことかな?
*特定条件でホットキー割り当て(アクティブウィンドウがサブモニターであるなら)
*対象にカーソルを移動
#If ここに条件、複雑なら自作関数作成
F1::
WinGetPos, X, Y, , , A
MouseMove, X, Y
return
#If
- 622 :名無しさん@お腹いっぱい。:2015/05/24(日) 00:23:05.59 ID:hyt6dQYmw
- windowタイトル使っての監視も足しますが、カーソルのムーブとwindow判定は良く組んでいるのでツールの機能の部分を組めるのは時間の問題なのですが最大の問題は
マッピング変更って奴ですね。
コレを詳しく言うとタブレットは1つのモニターだけを移動範囲とする物
(液タブの範囲内)と接続されているモニター両方を跨ぐモードに切り替える事が出来る機能です。
http://nueko048.blog.shinobi.jp/cintiq%E3%81%AE%E8%A8%AD%E5%AE%9A/
要はですね液タブの場合でマッピング変更を使わず該当モニターの外にカーソルを持っていたとしても液タブにマッピングしていると液タブに強制的に移動されるのでマッピング変更で全画面にしてやらないといけない訳です。
ただautohotkeyだとjoypad等ソフトで用意してくれている物かキーボードのような定番の物以外だとハード関係のキーを取得するのが難しいみたいで質問の主軸としてはスクリプトでの移動等では無くこのキーの方の取得の方ですね。
ワコムのドライバー内でペン cintiqに付いているボタンに対して設定することでこの機能が使えるのですが
選択肢としては
1.ハードキーが叩かれた事を取得する
2.ソフトウェアーキーが叩くコードを取得する
3.マッピング変更のショートカットキーをキーボードショートカットに設定する
3が出来ると良いんですがどうも3が出来ないぽいので難航って所ですかね・・・
- 623 :名無しさん@お腹いっぱい。:2015/05/24(日) 14:09:26.89 ID:mtLGjGbS0.net
- >>620
初代Bambooの場合だけど、それっぽいこと出来てる。
俺の場合はゲーム用3種類と絵描き用3種類から選択して切り替えれるようにしてる。
3種類ずつあるのは詳細設定(最低筆圧、筆圧カーブ、マッピング等)が違うため。
※Bambooは通常の設定項目に最低筆圧を下げたり、筆圧カーブの設定は無いけど
設定ファイルには項目があるのでそれを直接書き換えることで変更可。
事前準備は(Win7の場合)
C:\Users\ユーザー名\AppData\Roaming\WTablet\Pen_Tablet.dat
にペンタブ(Bamboo)の設定ファイルがあるのでゲーム用3つと絵描き用3つそれぞれの設定を
Pen_Tablet01.dat 〜 Pen_Tablet06.dat として別のフォルダに保存しておく。
autohotkeyで行う動作は
1.必用な設定(設定ファイル)を選択出来るGUIを表示
2.C:\Users\ユーザー名\AppData\Roaming\WTablet\Pen_Tablet.dat を削除
3.選択したBambooの設定ファイルをコピー
例 Pen_Tablet01.dat を Pen_Tablet.dat として手順2で削除したフォルダへコピー
4.Bamboo用のWindowsサービス2つを再起動(WTouchService と TabletServicePen)
このサービスを再起動しないと設定ファイルが反映されない。
手順としてはこんな感じ、Wacomの場合はペンタブの種類によってサービス名が違うので
それさえ判ればなんとかなるかも。
- 624 :名無しさん@お腹いっぱい。:2015/05/25(月) 15:38:30.88 ID:Or3Qnp1G0.net
- DropboxAHKの様にユーザープロファイル以下などを違うディレクトリにするのってどうやって実現させているのでしょうか?
- 625 :名無しさん@お腹いっぱい。:2015/05/26(火) 00:28:25.02 ID:9vRHIAQp0.net
- >>623
ああああ。
成る程!何かヒント貰えた気がします!
確かにそれなら出来そうなので調べながらやってみます。
- 626 :名無しさん@お腹いっぱい。:2015/05/27(水) 02:24:42.44 ID:0xah5Mr50.net
- こういうことって普通に出来るのでしょうか?
F1〜F12のキーの動作は特殊機能がデフォルトになっていて、F1〜F12の機能はFnキーと同時押しする必要があるキーボード。
その動作を逆にしたい・・・・
All-in-One Media Keyboard N9Z-00023
http://review.kakaku.com/review/K0000658756/#tab
他のキーボードで出来たという報告はありますが、そういうのは一般的に可能なんでしょうか?
2000円をドブに捨てるのはもったいない(^_^;)
- 627 :名無しさん@お腹いっぱい。:2015/05/27(水) 03:23:02.72 ID:IcamOoy90.net
- >その動作を逆にしたい・・・・
これはAutohotkeyだけじゃ無理。
RegisterRawInputDevices をゴニョゴニョすれば行けるかもしれんけど
やったことないし、俺には分からん。
- 628 :名無しさん@お腹いっぱい。:2015/05/27(水) 03:23:05.28 ID:KBpDd0T+0.net
- >>626
F1 → Media_Prev
Fn+F1 → F1
Fnキー → 不可
という信号が出ていると思うので「AHKで拾えるなら」逆にするだけ
※買うなら自己責任でどうぞ
参考
https://gist.github.com/8765405
- 629 :名無しさん@お腹いっぱい。:2015/05/27(水) 03:29:43.68 ID:IcamOoy90.net
- そっか、Media_Prevで行けるのか。
これは失礼致しました。
- 630 :名無しさん@お腹いっぱい。:2015/05/27(水) 16:08:49.11 ID:0xah5Mr50.net
- >>628
ヒントありがとう。もう少し調べてみます。
- 631 :名無しさん@お腹いっぱい。:2015/05/28(木) 21:20:12.00 ID:hWnLqw8l0.net
- そこそこ幸せになれる使い方見つけた
上から
カーソルが有る単語の選択
コピーして辞書引き
コピーして音読
Send,^{Right}
Send,^{Left}
Send,^+{Right}
Send,^c
Sleep,500
Run,ebwin4.exe /S=%Clipboard%
Send,^c
Sleep,500
SofTalk.exe /X:1 /w:%Clipboard%
- 632 :名無しさん@お腹いっぱい。:2015/05/28(木) 21:27:43.56 ID:tZCrgr2n0.net
- EBWIN重いんだよな
- 633 :名無しさん@お腹いっぱい。:2015/05/28(木) 23:06:32.07 ID:hWnLqw8l0.net
- ソフトークの所run書き忘れたな
WinMenuSelectItemやSendMessageも試したが挙動が安定しないのはrunの仕様だったからsleep必須なのが痛い
キャレットブラウズなら概ね良い感じなんだけど下記のだとスペースの無い単語の選択が上手く行かないな
キャメルケース、スネークケース、チェインケース辺りに対応した別なの考える必要有るかな?
単語選択の関数
ClipSaved := ClipboardAll
Send,^c
Sleep,500
Run,SofTalk.exe /X:1 /w:%Clipboard%
Sleep,500
Clipboard:=ClipSaved
ClipSaved=
- 634 :名無しさん@お腹いっぱい。:2015/06/02(火) 06:35:33.22 ID:fUMwwWeK0.net
- 無変換+v or cで起動して
(メモ帳、VisualStudio、ブラウザ等)アクティブウィンドウの種類に応じて辞書を切り替えて
キーボードで定型文を絞り込んでペーストするという環境を作りたいんだけど
元となるペースト支援ユーティリティでフリーで良さげなのってないかな
いくつか試してるんだけど単一辞書しか持ってる奴しかなくてなかなか見つからない
- 635 :名無しさん@お腹いっぱい。:2015/06/02(火) 12:55:49.24 ID:SQHO6eDv0.net
- 汝、単一辞書のをアプリ判別して切り替える動作から始めよ
- 636 :名無しさん@お腹いっぱい。:2015/06/02(火) 15:22:28.25 ID:WGwtfqhS0.net
- Windows7ですが、BlockInput, Onが効きません
これを実行したあとも、マウスも動くしキー入力も普通に受け付けます
BlockInput, MouseMoveはちゃんと効いて、マウスが動かなくなります
みなさんはどうでしょうか。 Windows7ではOnは利かないのかな
極単純なスクリプトで試しましたがダメでした
- 637 :名無しさん@お腹いっぱい。:2015/06/02(火) 15:47:12.07 ID:s06rWvf80.net
- >>636
管理者権限の問題じゃない? >>8
自分の環境と何をやったか(スクリプト等)を正確に書かないと推測しかできない
- 638 :名無しさん@お腹いっぱい。:2015/06/02(火) 18:42:56.31 ID:Wb7F5c5h0.net
- >>637
ありがとうございます。そのとおりでした
でも、BlockInput, MouseMoveは管理者じゃなくても効いて、Onは管理者じゃないとダメなんですね
なんだかなあ
- 639 :名無しさん@お腹いっぱい。:2015/06/04(木) 13:23:29.13 ID:ZRAOoa070.net
- >>623
ペンタブの設定のはまだやってないのですが(マッタリですがいずれやりますが)
cintiqは
\AppData\Roaming\WTablet\ Wacom_Tablet.dat
あたりぽいです。
こちらの知識内で別アプローチで突貫で解決しました。
原理と理屈は簡単でミニマムな話で画面の外にウィンドウが有るなら一時的に画面の中のmoveすればいいだけって話ですね。
そこから先は書く人間のスキル次第なのですが色々この方が応用出来るみたいですね。
今はコレを応用して指定したウィンドウに対してカーソルが乗っかればムーブして移動するようなスクリプト書きたくて頑張ってます。。。
多分そんなに難しくないはずなのですが・・・スキルが無くて。。
一番レベルが低いと思われる カーソル→ライド→別の指定した位置にmove→タイマーでライドしていた場所にムーブ。
要は画面最前面に張り付いている設定で上1/4サイズのwindowでカーソルが来たら下にムープして数秒したら又上に戻すというものですね。
これが出来れば画面最前面にウィンドウ貼り付けても操作や画面の下は容易に確認出来るので。
頑張ってみます。
- 640 :名無しさん@お腹いっぱい。:2015/06/06(土) 18:31:35.62 ID:MhAXWuqk0.net
- Sysgetコマンドでモニターのアス比を取得する事出来ます?
- 641 :名無しさん@お腹いっぱい。:2015/06/06(土) 19:05:23.71 ID:vti+iXrJ0.net
- >>640
何で自分で確認しないの?
無いならググレ
aspect autohotkey
- 642 :名無しさん@お腹いっぱい。:2015/06/06(土) 19:20:13.78 ID:MhAXWuqk0.net
- 私の頭では理解できませんでした
どうも有り難うございました
- 643 :名無しさん@お腹いっぱい。:2015/06/06(土) 19:47:02.87 ID:lXnJQYaD0.net
- 使い方がわからない道具は使うな。危ないから
- 644 :名無しさん@お腹いっぱい。:2015/06/06(土) 23:33:13.54 ID:+jQ7emU60.net
- 機能的には出来ているので良いといえば良いのですが
これは1キーで透明と解除のループなんですけど
on off 0ff(flag0?) onで offが2つになるようなのですが on/offにするにはどうするんですか?
いや・・・昔調べてon/offのは作ってたんですが何か違うみたいですね。
同じような感じで単純だったはずなんですが。
f10::
Flag += 1
If Flag = 1
{
WinSet, Transparent,100,A
Return
}
If Flag = 2
{
WinSet, Transparent,off,a
Return
}
Flag =
Return
- 645 :名無しさん@お腹いっぱい。:2015/06/06(土) 23:56:03.20 ID:pwHMXENo0.net
- 何故flag管理を+=1でやるのか
f10::
If !(Flag) {
WinSet, Transparent,100,A
Flag = 1
} else {
WinSet, Transparent,off,a
Flag =
}
Return
蛇足だがフラグで管理するよりもWinGetのTransparentでウィンドウ透明度が取得できるから
それによって動作を変えた方がいいと思う
- 646 :名無しさん@お腹いっぱい。:2015/06/07(日) 09:07:16.30 ID:N2KLgAfR0.net
- インクリメントフラグは2で割るか最下位ビット以外マスクすればif判定要らなくなる
三項演算子で行数減らしたいならアリじゃね
まあ>644の例では意味なくなってるけどな
やりたいのはたぶんこういうことかと
WinGet,var,Transparent,A
WinSet, Transparent,% var!=100 ? 100 : "OFF", A
- 647 :名無しさん@お腹いっぱい。:2015/06/08(月) 01:06:23.17 ID:iBP8XUj/1
- 指摘有りがどう御座います。
たまたま見つけたサンプルがflag +=1してただけです^^;;
>蛇足だがフラグで管理するよりもWinGetのTransparentでウィンドウ透明度が取得できるから
今回のは偶々透明度だったのでどちらかと言うと汎用的なキーループとしての方がメインなのでwingetは元々思いついてなかったです。
何れにしろ勉強になったのでありがとうございます。
- 648 :名無しさん@お腹いっぱい。:2015/06/09(火) 06:05:20.52 ID:fk1IibvO0.net
- カタひらを単体で押したときはIMEオンオフ、他のキーと組み合わせたときはSHIFTの動作に変わるようにするにはどう設定すればよいでしょうか?
ワンショットモディファイアというらしいんですが
- 649 :名無しさん@お腹いっぱい。:2015/06/09(火) 08:30:52.66 ID:0zljtKj10.net
- >>648
http://blechmusik.hatenablog.jp/entry/20091005/1254674747
これの応用で出来る。
それと「カタカナひらがな」キーをF13とかに置き換えないとダメ、詳しくは>>4を参照。
- 650 :名無しさん@お腹いっぱい。:2015/06/09(火) 12:21:10.46 ID:fk1IibvO0.net
- >>649
ありがとうございます!
いままで試したなかで一番惜しいところまでいきました
ただ初回しかSHIFTが効かないのと、IMEトグルも二回押さないと始まらない状態です
- 651 :名無しさん@お腹いっぱい。:2015/06/09(火) 13:30:41.42 ID:06GOnCHm0.net
- すいません。詳しくないのでどなたか教えてください。
画像を検索してその画像があれば特定のキーを押す、なければ
その画像が出てくるまでまって、出てきたら特定のキーを押す
というのがやりたいです。
ImageSearch, , 0, 0, 1920, 1080, C:\hoge\ipodicon.bmp
if ErrorLevel = 2
MsgBox Could not conduct the search.
else if ErrorLevel = 1
MsgBox sorry.could not find a image.
else
Send, !f v y
というような感じでやろうと思ったのですが、エラーがでたら戻って待つ(繰り返す)という
やり方がわかりません。おしえてくれませんか
- 652 :名無しさん@お腹いっぱい。:2015/06/09(火) 14:43:11.46 ID:+OJpvc1Z0.net
- settimer
- 653 :名無しさん@お腹いっぱい。:2015/06/09(火) 16:21:39.29 ID:0zljtKj10.net
- >>650
応用なので希望の動作をするようにフラグ管理を修正しないとそうなる
#If (KeyMap = 0)
f13::
KeyMap := 1
keywait, f13
If (KeyMap = 1)
send,{sc029} ; 半角/全角
KeyMap := 0
return
#If (KeyMap)
sc002::
sc003::
(中略)
sc034::
sc035::
sc073::
KeyMap := 2
send,+{%A_ThisHotkey%}
return
#If
- 654 :名無しさん@お腹いっぱい。:2015/06/09(火) 17:34:08.30 ID:SOrEGBUG0.net
- >>644
聞きっぱなしクズ質問者
- 655 :名無しさん@お腹いっぱい。:2015/06/11(木) 08:14:33.02 ID:ffgtDZkn0.net
- タスクマネージャーにフォーカスがあると、なぜかAutoHotKeyが効かなくなるようです
また、正規購入したソフトウエアのウインドウでも同じように効かなくなることがあるのですが、なぜでしょうか
- 656 :名無しさん@お腹いっぱい。:2015/06/11(木) 10:13:56.18 ID:L7SUeBqz0.net
- >>655
環境とどんな割り当てなのか具体的に書かないと誰にも分からない
- 657 :名無しさん@お腹いっぱい。:2015/06/11(木) 10:24:02.62 ID:JcxoWCv60.net
- 具体的にどう「効かなくなる」のか
ホットキーが無効になるだけなのかタイマーも機能しなくなってるのか
OSやAHKのバージョンはいくつなのか
Autoexecuteや#if記述位置、return抜け等のコード記述上の問題がないか確認したのか
こういうことを明確に書かないで質問する人のバグ報告は往々にして勘違い率が高い
なぜでしょうかと聞かれてもおま環言われるのが落ち
他者が追試できるよう問題のコード貼って発生条件を書かないと
- 658 :名無しさん@お腹いっぱい。:2015/06/11(木) 11:17:14.01 ID:ffgtDZkn0.net
- ああ、すいません。Windows7
です。単純なスクリプトで、
#UseHook
a::
MsgBox, A
return
だけでも動かなくなりますよ。タスクマネージャーにフォーカスを当ててやってみてください
- 659 :名無しさん@お腹いっぱい。:2015/06/11(木) 11:35:24.87 ID:L7SUeBqz0.net
- >>658
OSの種類
AHKのバージョン
管理者権限の有無 >>8
- 660 :名無しさん@お腹いっぱい。:2015/06/11(木) 12:21:44.75 ID:mcTP3wwH0.net
- なりますよw
やってみてください(笑)
- 661 :名無しさん@お腹いっぱい。:2015/06/11(木) 13:15:06.95 ID:VqRebeq70.net
- タスクマネージャーなら普通に管理者権限の問題だろ
ahkファイルを起動する時に、右クリ→管理者として実行にすれば動くはず
まぁセキュリティ上管理者として実行はしない方がいいよ
よく分かってないならなおさら。我慢せよ
- 662 :名無しさん@お腹いっぱい。:2015/06/11(木) 14:10:22.03 ID:ffgtDZkn0.net
- >>661
なるほど、わかりました。ありがとうございました。そうすることにします
- 663 :名無しさん@お腹いっぱい。:2015/06/12(金) 00:29:33.50 ID:Zxv+f6Pi0.net
- >>653
コードまで書いていただけるなんてどこのAHK有償サポートチームですか・・・
独力だったら200%諦めていたので本当に助かりました
そのコードをスクリプトの一番先頭に置いたら思っていた通りの挙動になりました
他のコマンドが前にあるとなぜか無効化されてしまうようです
ありがとうございました!
- 664 :名無しさん@お腹いっぱい。:2015/06/12(金) 13:56:56.24 ID:MlXKDKC20.net
- imagesearchって、右クリックメニュー中の画像検索って無理なんでしょうか?
itunesの項目を右クリックしてでてきたメニューから「プロパティ」って文字をbmp画像で
探してそれをクリックさせたいんですが、探す段階で[見つかりません]ってでてしまいます。
右クリメニューじゃないitunes上のボタン文字とかだとふつうにimagesearchは成功するんですが。
imagesearchの座標は 0, 0, 1920, 1080 にしています。
- 665 :名無しさん@お腹いっぱい。:2015/06/12(金) 14:55:35.84 ID:ztDhuyUa0.net
- 検索したらitunesにはctrl+iでプロパティを開くショートカットがあるらしいけど
それじゃいかんの?
- 666 :名無しさん@お腹いっぱい。:2015/06/12(金) 15:40:35.46 ID:MlXKDKC20.net
- 途中でそのショートカットに気付きました。いまはそれでやってて問題ないんですが、
imagesearchでプロパティを何度やってもクリックできなかったことが悔しいので
今後のために聞きたいとおもいました。右クリックメニュー内はimagesearchで探せないのでしょうか?
- 667 :名無しさん@お腹いっぱい。:2015/06/12(金) 16:04:04.22 ID:ibsGJC3R0.net
- itunesのことはよう知らんけどソフトに依存するんじゃね?
うちはブラウザ(PaleMoon)ではimagesearchで右クリメニュー内のコマンド探せてる
- 668 :名無しさん@お腹いっぱい。:2015/06/12(金) 21:47:14.88 ID:MlXKDKC20.net
- >>667
たしかに。gpadの右クリメニューでやってみましたが、成功しました。
itunesはできん。
http://freetexthost.com/kjtcndhitx
たとえばこんな感じ。 sorry.could not find a image が出ることに。 👀
Rock54: Caution(BBR-MD5:1afdc9e9a6c7bfb7b198c68134844756)
- 669 :名無しさん@お腹いっぱい。:2015/06/13(土) 01:00:11.58 ID:YkUDCRqr0.net
- それイメージファイルのパスが見つからないってメッセージじゃろ
> C:silo(x64)residentAutoHotkeyimageSearchitoption.bmp
C:\ になってないからCドライブのカレント見に行ってるだけと思うが
- 670 :名無しさん@お腹いっぱい。:2015/06/13(土) 04:51:01.63 ID:uBW/2qNt0.net
- s=
(
aaa
bbb
ccc
)
my_func(a)
をmy_funcの引数に直接書くことって出来ない?
msgbox %
(
aaa
bbb
ccc
)
は出来るようだけど
- 671 :名無しさん@お腹いっぱい。:2015/06/13(土) 05:57:47.45 ID:AmjDzvxq0.net
- 気が付かなかったです。海外サイトなので\が全部消えてる..
- 672 :名無しさん@お腹いっぱい。:2015/06/13(土) 08:59:26.07 ID:d+ugg74P0.net
- >>670
質問の意味が不明だが…
こういうことしたい?
s=
(
aaa
bbb
ccc
)
;変数 s を引数にする
my_func(s)
;複数行の文字列を引数にする
my_func("aaa`nbbb`nccc")
my_func(x) {
msgbox, % x
}
- 673 :名無しさん@お腹いっぱい。:2015/06/13(土) 22:23:09.55 ID:3I5Pr+4S0.net
- 無変換+アルファベットにAutoCADのショートカット登録してるんだけど、一発でショートカット送れないです
必ずショートカットを2回連打しないとダメなんですけど、なんででしょうか?
ウインドウ指定とかもやってみましたがダメでした・・・
- 674 :名無しさん@お腹いっぱい。:2015/06/13(土) 22:29:08.04 ID:lsZP1Qd50.net
- >>673
とりあえずSetKeyDelayで入力遅くする
問題の解決したいならスクリプトと環境ぐらいは書こう
- 675 :名無しさん@お腹いっぱい。:2015/06/13(土) 23:27:52.84 ID:3I5Pr+4S0.net
- >>674
すみません
環境は
Windows7 64bit
AutoCAD 2012
です
まずAutoCADのコマンドに複雑なショートカット(例えばAlt+Shift+Ctrl+F1)を設定してます
本当はCAD側で無変換がショートカットキーに設定できればいいのですが、できないので
これをAutoHotkeyで実現しようとしています
スクリプトは↓です
SC07B & 1::send,!+^{F1} ;十字穴
これで「無変換+1」でAutoCADのマクロに設定したショートカットが実行されるはずですが、一回押すだけでは
ただ単にAltが押された状態になり、メニューにフォーカスが行くだけになります。
この状態でもう一度「無変換+1」を押すとようやく実行されます
win7のAutoCAD Mechanical2007、Mechanical2012などでは一発でいくので
環境による影響も考えられますが・・・なぜかレギュラー版2012だとうまくいきません…
- 676 :名無しさん@お腹いっぱい。:2015/06/13(土) 23:53:34.39 ID:lsZP1Qd50.net
- >>675
アプリが反応する前に押し上げてるのかも
; SendMode Input
; SetKeyDelay,,10
SC07B & 1::
Send {Alt Down}
Send {Shift Down}
Send {Ctrl Down}
Send {F1}
Send {Alt Up}
Send {Shift Up}
Send {Ctrl Up}
Return
- 677 :名無しさん@お腹いっぱい。:2015/06/14(日) 00:30:50.12 ID:vRKISFaD0.net
- >>676
ありがとうございます
自宅では試せないので、週明けに試してみたいと思います
- 678 :名無しさん@お腹いっぱい。:2015/06/14(日) 08:14:12.68 ID:GyBtayty0.net
- STEP1:定義ファイルを用意する。
#ifwin 電卓 ahk_class CalcFrame
使い方|RUN|http://www.google.com/?q=calcの使い方
PI|AHK|send,3.141592
#ifwin Internet Explorer ahk_class IEFrame
...
STEP2:Ctrl+Alt+Cを押す。
STEP3:電卓がアクティブな状態だったらコンテキストメニューが表示される。
使い方
PI
STEP4:選んだメニューによって外部のプログラムを起動したり、AutoHotKeyがsend,3.141592を実行する(別途定義した関数呼び出しも可能)。
という画期的なアイデアを思いついたので誰か作ってください宜しくお願いします。
自力で作るには何もかもがわかりません><
- 679 :名無しさん@お腹いっぱい。:2015/06/14(日) 08:50:38.75 ID:wK4l9dpt0.net
- いいから宿題の計算ドリルでもやってろ
- 680 :名無しさん@お腹いっぱい。:2015/06/14(日) 09:01:35.96 ID:P1MG69MF0.net
- 実行部を汎用化してahkのほぼ全コマンドを外部iniに従って実行できるスクリプト
iniで指定した内容読み込んでメニュー作るスクリプト
なら作って使ってるよ
変動部の編集の手間が楽になるメリットはある
ただ、ahk自体がインタプリタなのに更にかますのはある意味無駄ともいえる
他人が画期的と思ってくれるかどうかは微妙なところだな
- 681 :名無しさん@お腹いっぱい。:2015/06/15(月) 18:38:57.32 ID:EEiQFxjg0.net
- 変数に任意のWindowClassを使いたいのですが、どうすればいいでしょうか?。
以下のやり方だと出来ませんでした。
よろしくお願いします。
WinClass=任意のウィンクラス
#IfWinExist, %WinClass%
処理
#IfWinExist
- 682 :名無しさん@お腹いっぱい。:2015/06/15(月) 19:13:29.08 ID:v3FeIkzA0.net
- >>681
#If WinExist(WinClass)
- 683 :名無しさん@お腹いっぱい。:2015/06/15(月) 19:19:16.43 ID:EEiQFxjg0.net
- >>682
本当に素晴らしい!
本当に有難うございました!
- 684 :名無しさん@お腹いっぱい。:2015/06/15(月) 19:32:34.29 ID:0cok6kz60.net
- いいってことよ
- 685 :名無しさん@お腹いっぱい。:2015/06/15(月) 19:37:16.39 ID:iDDUbAll0.net
- 眺めてるだけだが、ここ解決人が優秀すぎる
- 686 :名無しさん@お腹いっぱい。:2015/06/15(月) 20:20:24.77 ID:uVL/DwmW0.net
- まぁ、そもそもちゃんとwiki読もうって話よな
- 687 :名無しさん@お腹いっぱい。:2015/06/15(月) 22:01:40.94 ID:fOTVbzvy0.net
- onenote上で
;; 無変換 + i = ↑
sc07B & i:: Send,{Up}
;; 無変換 + k = ↓
sc07B & k:: Send,{Blind}{Down}
これが動きません。→や←は動くのに。どうしてでしょう
- 688 :名無しさん@お腹いっぱい。:2015/06/15(月) 22:35:59.93 ID:CrVFYZv10.net
- >>676
今日試してきました
教えていただいた通りですと、メニューにフォーカスが行ってしまいましたが
↓のようにShiftとCtrlの後に押下するように変更した所1回押すだけでコマンド実行できるようになりました。
ありがとうございました
; SendMode Input
; SetKeyDelay,,10
SC07B & 1::
Send {Shift Down}
Send {Ctrl Down}
Send {Alt Down}
Send {F1}
Send {Shift Up}
Send {Ctrl Up}
Send {Alt Up}
Return
- 689 :名無しさん@お腹いっぱい。:2015/06/15(月) 23:17:44.55 ID:v3FeIkzA0.net
- >>687
最小限のスクリプトを自分でテスト
スクリプトとキーログを見て処理とキーが送られているか確認
Sendの方式変更
SetKeyDelay
ControlSend
- 690 :名無しさん@お腹いっぱい。:2015/06/16(火) 04:23:37.37 ID:Ga9+At6a0.net
- >>686
とはいえAHKで使われてる言語は酷すぎるよ…
pythonかperl風味に変えてほしい
- 691 :名無しさん@お腹いっぱい。:2015/06/16(火) 04:42:52.81 ID:E6lTCV0a0.net
- wiki読まない理由にはなってない
- 692 :名無しさん@お腹いっぱい。:2015/06/16(火) 07:37:52.85 ID:ZOIC/ey/0.net
- >>690
ちなみにどの辺がヒドイと思うの?
- 693 :名無しさん@お腹いっぱい。:2015/06/16(火) 07:45:55.66 ID:DcshQhzP0.net
- if xx = yy
と
if( xx = yy )
で違うとか、いろいろめんどくさい
- 694 :名無しさん@お腹いっぱい。:2015/06/16(火) 14:36:29.06 ID:tVufIEKX0.net
- 「本当に」他言語やってる人はいつもの感覚プラスαで上段の記法もできるってだけだから何も混乱しない
- 695 :名無しさん@お腹いっぱい。:2015/06/16(火) 15:20:18.24 ID:x+VHtPpr0.net
- v2でちょっとはましになってるので試してみるといいかも
- 696 :名無しさん@お腹いっぱい。:2015/06/16(火) 16:59:32.66 ID:e+QZwt8/0.net
- >>690
perl風とかひたすら読みにくくなるなw
- 697 :名無しさん@お腹いっぱい。:2015/06/17(水) 22:43:13.36 ID:RCetnyoS0.net
- お助けください
親父が将棋ゲームを遊んだ積算時間を知りたいと言うので、コードを改変しましたが上手くいきません。
秒と分が1桁の時に、先頭に0が表示されません。INIWRITEしても同様の症状です。
分が59から00に変わる所に、1秒間だけ60が表示されます。
何卒宜しくお願い致します。
http://pastebin.com/aTA7mTzJ
- 698 :名無しさん@お腹いっぱい。:2015/06/18(木) 01:49:00.43 ID:QmnHYq920.net
- ManicTime使ったほうが早くね
- 699 :名無しさん@お腹いっぱい。:2015/06/18(木) 02:26:01.78 ID:t37xkAv40.net
- Sekisan:
timers += 1
if(timers > 59)
{
timerm += 1
timers := "0"
}
if(timerm > 59)
{
timerh += 1
timerm := "00"
}
while StrLen(timers) < 2
timers = 0%timers%
while StrLen(timerm) < 2
timerm = 0%timerm%
while StrLen(timerh) < 2
timerh = 0%timerh%
GuiControl, , Sekisan , %timerh%:%timerm%:%timers%
return
こんなんでいいんじゃねーの?試してないから分からんけど
- 700 :名無しさん@お腹いっぱい。:2015/06/18(木) 02:28:00.97 ID:avfhSFuk0.net
- >>697
そのスクリプトだと分と秒の判定が順序が逆。
10秒以下なら前に"0"を付ける。
以下、やっつけ
Sekisan:
timers += 1
if ( timers < 10 )
timers = 0%timers%
if(timers > 59){
timerm += 1
if ( timerm < 10 )
timerm = 0%timerm%
timers := "00"
GuiControl, , Sekisan , %timerh%:%timerm%:%timers%
}else{
GuiControl, , Sekisan , %timerh%:%timerm%:%timers%
}
if(timerm > 59){
timerh += 1
timerm := "00"
GuiControl, , Sekisan , %timerh%:%timerm%:%timers%
}
return
- 701 :名無しさん@お腹いっぱい。:2015/06/18(木) 02:44:03.68 ID:40T+bdxp0.net
- >>697
Settimerなどでの単純な数値のカウントでは
自動Sleep、割り込み、処理負荷などで少しずつ誤差が生じるので精度が低い
正確に計算したい場合はOSから時間を取得して算出する必要がある
Save_Time := 24 * 60 * 60 * 1000 ; 1日
Save_Time += 60 * 60 * 1000 * 23 ; 23時間
Save_Time += 59 * 60 * 1000 ; 59分
Save_Time += 55 * 1000 ; 55秒
Time := A_TickCount ; 開始時間
Settimer, timer, 1000
return
timer:
Tooltip % TimeConvert(A_TickCount - Time + Save_Time)
Return
TimeConvert(mSec) { ; ミリ秒 → 日時分秒 変換関数
SetFormat, Float, 02.0
D := mSec // 86400000 + 0.0
H := Mod(mSec // 3600000 , 24) + 0.0
M := Mod(mSec // 60000 , 60) + 0.0
S := Mod(mSec // 1000 , 60) + 0.0
return % D "day " H ":" M ":" S
}
ESC::
ExitApp
- 702 :名無しさん@お腹いっぱい。:2015/06/18(木) 02:49:56.47 ID:iRtY3t370.net
- >>699様、>>700様、>>701様、こんばんは。
寝る間も惜しんでスレに張り付いていた甲斐がありました。
無事に正常動作の確認が取れました。
これで早朝には親父にドヤ顔出来ます!!!!。
本当に有難うございました、この御恩は一生忘れません。
- 703 :名無しさん@お腹いっぱい。:2015/06/19(金) 15:57:57.34 ID:p5DbvC0w0.net
- NumLockオフ時のテンキーのリマップが上手く生きません。助けてください。
Key History で調べて、
テンキー4を次のようにしました。
vk25sc04B::Send,{Media_Prev}
すると、普通のカーソルキーまでMedia_Prevになってしまいます。
NumLockオフ時のテンキーは
vk25sc04B
であり、
普通のカーソルLeftキーは
vk25sc14B
のはずですが、
どうすれば巻き添えの誤爆を回避できるでしょうか?
(ほかにもいっぱい不具合が出てお手上げです。)
- 704 :名無しさん@お腹いっぱい。:2015/06/19(金) 16:06:02.26 ID:lkXV4CWY0.net
- http://ahk.xrea.jp/KeyList.html
NumpadLeft
- 705 :名無しさん@お腹いっぱい。:2015/06/19(金) 16:07:37.69 ID:uoPaOsGA0.net
- 質問する前にwikiを見ましょう
- 706 :名無しさん@お腹いっぱい。:2015/06/19(金) 19:13:58.54 ID:sx2tWzdL0.net
- 特定の色を(透明にするのではなく)別の色に置き換えることはできませんか?
- 707 :名無しさん@お腹いっぱい。:2015/06/19(金) 19:28:10.49 ID:LbICqwUq0.net
- >>706
状況が分からないのですが
- 708 :名無しさん@お腹いっぱい。:2015/06/19(金) 19:37:32.47 ID:p5DbvC0w0.net
- >>704
>>705
ありがとうございました。散々調べたのですが意味がわからず無駄なことをやっていたようです。
このページを見たんですが、
http://ahkwiki.net/KeyList
〜〜〜
Numpad0 〜 Numpad9
NumpadDot
(NumLockがOFFの時のみ) ←★
テンキー上の 0 〜 9 および .(ドット)、キーボードメイン部分とは区別される。
※外付けテンキーで「00」や「000」を持つものもあるがNumpad0連打のことが多い。
〜〜〜〜
★の部分って間違ってますよね?
逆ですよね?
- 709 :名無しさん@お腹いっぱい。:2015/06/19(金) 20:03:16.52 ID:LbICqwUq0.net
- >>708
誤植だね
- 710 :名無しさん@お腹いっぱい。:2015/06/19(金) 20:27:47.27 ID:sx2tWzdL0.net
- >>707
たとえばウィンドウの青い部分を赤い色に置き換えたいです
- 711 :名無しさん@お腹いっぱい。:2015/06/19(金) 21:01:04.12 ID:ScgTnJvZ0.net
- 青い部分を透明化&GUIで該当窓と同サイズの赤窓作って該当窓の下に重ねる
窓移動時の追従とか考えだすと面倒くさくなるけどな
- 712 :名無しさん@お腹いっぱい。:2015/06/19(金) 23:06:05.85 ID:uoPaOsGA0.net
- >>708
情報が古い、不備があるので
http://ahkwiki.net/Top
こっちを使った方が
- 713 :名無しさん@お腹いっぱい。:2015/06/19(金) 23:07:19.60 ID:uoPaOsGA0.net
- >>704のサイトとまちがえたw
すまん。それでいい
- 714 :名無しさん@お腹いっぱい。:2015/06/19(金) 23:08:13.29 ID:uoPaOsGA0.net
- >>708
その2つ下を見ましょう
- 715 :名無しさん@お腹いっぱい。:2015/06/19(金) 23:59:17.39 ID:sx2tWzdL0.net
- >>711
参考になりました
- 716 :名無しさん@お腹いっぱい。:2015/06/20(土) 02:44:13.36 ID:fAVAqMVh0.net
- c:\test.txtというファイルが有ったとして
これをExplorerで選択、切り取り状態にするにはどうやればいいですか
- 717 :名無しさん@お腹いっぱい。:2015/06/20(土) 11:20:51.65 ID:ZHFJl+ZG0.net
- >>716
WinActivateでエクスプローラをアクティブ
ControlFocusでアドレスバーにフォーカス移動
環境に合わせて適度にSleep
Send,c:\{Enter}
ControlFocusでファイルペインにフォーカス移動
環境に合わせて適度にSleep
Send,test.txt^x
OSバージョンやツリーペインのあるなし等でClass名、Control名は変わるので適度に調整
アドレスバー出してない場合は知らん
- 718 :名無しさん@お腹いっぱい。:2015/06/20(土) 15:20:08.19 ID:8MyyN6gm0.net
- explorer.exe /select,c:\text.txt
- 719 :名無しさん@お腹いっぱい。:2015/06/20(土) 21:08:02.33 ID:YPh81vzJ0.net
- アドバイスお願いします。
マウスのホイールクリックをCtrl+F1で行おうとしたのですが・・・
^F1::
Send,{MButton down}
KeyWait,Ctrl
Send,{MButton up}
return
Firefoxだと正常だし、ブラウザ以外のアプリ(秀丸エディタ、Google Earth)でも動作します。
しかし、ChromeとIEのブラウザコンテンツ内でのみ『動作しません』
タブの上では反応します。
修飾キーを Shift, Win, Alt いずれに替えても同じ症状です。
もちろん拡張機能などは切ってます。
動かない原因分かりますでしょうか?
(Chromeだと押した一瞬だけカーソルが変化するので何か反応しているようです)
- 720 :名無しさん@お腹いっぱい。:2015/06/20(土) 21:39:04.50 ID:qldo9SDE0.net
- >>716
クリップボードにコピーまたは移動するファイルを設定する関数
ttp://www.autohotkey.com/board/topic/23162-how-to-copy-a-file-to-the-clipboard/?p=463462
MouseGestureL.ahkの中にあるMG_FilesToClipboard関数でもいいがx64非対応
- 721 :名無しさん@お腹いっぱい。:2015/06/20(土) 21:56:06.75 ID:qldo9SDE0.net
- >>719
困ったら手動で再現してみれば問題が分かりやすい
オートスクロールの終了条件が「スクロール以外のキーを押す」
それが原因で一瞬で終わっている
^F1::
KeyWait Ctrl
KeyWait F1
Send {MButton}
return
- 722 :名無しさん@お腹いっぱい。:2015/06/20(土) 22:23:49.03 ID:YPh81vzJ0.net
- >>721
ありがとうございます。
>オートスクロールの終了条件が「スクロール以外のキーを押す
>それが原因で一瞬で終わっている
これは自分でも疑っていたのですが、一体何に反応しているのかが、どうしても分かりません。
〜〜〜
とりあえず、教えて頂いたコードにしたら、今度はGoogle Earthで動かなくなってしまいました。
#IfWInActiveで個別に判定するしかないのかもしれませんね。
- 723 :名無しさん@お腹いっぱい。:2015/06/20(土) 22:37:38.60 ID:YPh81vzJ0.net
- >>722
いま原因に気が付きました。
『修飾キーの自動復元
Sendコマンドが始まるとき、仮想的に修飾キーを離した状態になる。
コマンド終了時に、再びもとの状態に戻される。
この動作は、Keysの最初に {Blind}をつけることで無効化できる。』
これですね!!
^F1::
Send,{Blind}{MButton down}
KeyWait,Ctrl
Send,{MButton up}
return
さらに Ctrl+CapsLock にアサインし直して最高の使い心地になりました。
(Lock系キー問題回避のためレジストリのスキャンコードマップで仮想的にF13キーを経由)
- 724 :名無しさん@お腹いっぱい。:2015/06/21(日) 23:35:18.66 ID:gWqgsFnN0.net
- エクスプローラを落としてシェルを使わない状態でVistaを運用しようと思ってるんですが、その場合AHKって動くんでしょうか?
また、AHKと補助でいくらかソフトを導入すればシェルなしVista運用は可能だと思いますか?
- 725 :名無しさん@お腹いっぱい。:2015/06/21(日) 23:44:01.24 ID:dMLrQ3p00.net
- IniReadについてお尋ねします。
例えば、IniRead, HENSUU, HENSUU.ini, HAGE, HOGE
だとして
HENSUUから返された変数がERRORだった時のIF文で
If HENSUU = ERROR
IniWriteしたくない
ではなくて
If Not HENSUU = ERROR
IniWriteしたい
みたいな事をしたいのですが、2行では出来ません。
このような時はどのようにすればよろしいでしょうか?。
よろしくお願いします。
- 726 :名無しさん@お腹いっぱい。:2015/06/21(日) 23:48:36.20 ID:NHz4zLYU0.net
- If HENSUU <> ERROR
If HENSUU != ERROR
- 727 :名無しさん@お腹いっぱい。:2015/06/21(日) 23:55:29.96 ID:dMLrQ3p00.net
- >>726
出来ました!。
いつも稚拙な質問に光速回答ありがとうございます。
お世話になりました。
- 728 :名無しさん@お腹いっぱい。:2015/06/22(月) 03:42:53.14 ID:8D6+AoT90.net
- 「あるウィンドウから開いた#32700」ってどう表現するんで?
- 729 :名無しさん@お腹いっぱい。:2015/06/22(月) 08:18:01.46 ID:PCjWNZvJ0.net
- SoundGet以外の方法で、マスターボリュームを取得する方法ってありますか?
- 730 :名無しさん@お腹いっぱい。:2015/06/22(月) 09:05:28.92 ID:7s+LTHL90.net
- >>728
プロセス名から判断したらいい。
それか常にアクティブウィンドウをチェックしておいて#32700がアクティブになったときの
事前のアクティブウインドウで判断するか。
- 731 :名無しさん@お腹いっぱい。:2015/06/22(月) 18:30:23.29 ID:akNvAV5P0.net
- >>729
できるがマスターボリュームならSoundGet使えばいい
他には外部ライブラリの Vista Audio Control Functions が紹介されてる
- 732 :名無しさん@お腹いっぱい。:2015/06/22(月) 21:07:17.69 ID:SfGXTq5f0.net
- ありがとうございます、確認してみます。
- 733 :名無しさん@お腹いっぱい。:2015/06/22(月) 21:28:58.62 ID:SfGXTq5f0.net
- >>731
VA.ahkのコードが大きいですけど、やりたい事は無事出来ました。
ありがとうございました。
- 734 :名無しさん@お腹いっぱい。:2015/06/23(火) 23:18:55.77 ID:uPq0cgfh0.net
- 以前回答いただいた時のコードなのですが、バイナリデータを出力する際に6KB程度のファイルしか出力出来ません。
大きなデータを出力しようとするとエラーが表示されてしまいます。
どうにか改善出来ませんでしょうか、よろしくお願いします。
HexToBin("Hoge.bin", "00 00 02 00 01 00 20 20 00")
HexToBin(File, Array)
{
Hex := StrSplit(Array, A_Space)
BufSize := Hex.MaxIndex()
VarSetCapacity(Buf, BufSize)
Loop, % BufSize
{
h := "0x" Hex[A_Index]
NumPut(h, &Buf, A_Index-1, "Char")
}
oFile := FileOpen(File, "w")
oFile.RawWrite(Buf, BufSize)
oFile.Close()
}
- 735 :名無しさん@お腹いっぱい。:2015/06/23(火) 23:32:48.89 ID:mpSINKgY0.net
- >>734
いつの何する物なのかぐらい書いたら?
- 736 :名無しさん@お腹いっぱい。:2015/06/23(火) 23:54:49.47 ID:VzeKDTKE0.net
- http://anago.2ch.net/test/read.cgi/software/1398655195/660-
↑で俺が以前書いたものだけど、8MB程度まで試したけどちゃんと出力されたけどな
速度遅いしとメモリ食うし大きいデータは一旦テキストで出力して外部ツールで処理した方がいいんじゃない?
http://www.vector.co.jp/vpack/filearea/win/util/bin/conv/
ここから好きなの選ぶといいよ
- 737 :名無しさん@お腹いっぱい。:2015/06/24(水) 00:18:04.19 ID:K13YYqDY0.net
- >>735
説明不足ですみません。
>>736
素直にVectorのツール使います。
ご紹介有難うございました。
- 738 :名無しさん@お腹いっぱい。:2015/06/25(木) 19:14:07.99 ID:15S1kntH0.net
- autohotkeyとは直接関係ないんで恐縮ですが、
エクスプローラのコピー、切り取りを呼び出すような単機能フリーソフトであとからあとから対象ファイルを追加していくことのできるものってご存知の方いらっしゃいませんか?
cutfileとcopyfileとpastefileっていうbluewindに関連した単機能ツール群があってそれをファイラーからautohotkeyを経由して呼び出して使ってるんですが、
それだとエクスプローラのコピー、切り取りを呼び出すまではできるんですがC:\bをコピーしてからC:\cもコピーしてC:\eにまとめて貼り付けるってことができない状態です
重複ファイルがあるときのリネーム書式が〜〜〜 (2).***であってほしいんでFastCopyとかの代替ファイルコピーソフトは使えません。探しましたが書式いじれるソフトは公開されてませんでした
バッチファイル書ければ出来るんでしょうか?
環境はWin8.1 32bit、autohotkey v1.1.09.00です
- 739 :名無しさん@お腹いっぱい。:2015/06/25(木) 19:58:56.43 ID:66nXthkk0.net
- >>738
無いなら自分で作ればいい
ファイルの存在確認して重複はリネームしてから送ればいいだけだろ?
- 740 :名無しさん@お腹いっぱい。:2015/06/25(木) 21:17:17.21 ID:15S1kntH0.net
- >>739
すみません、確認してその結果によって分岐〜っていうの苦手でして……多分肝の部分なんでしょうが
〜〜〜.***の存在を確認したあと存在したら〜〜〜 (2).***を確認して存在したら〜〜〜 (3).***を確認して存在しなかったら〜〜〜 (3).***にリネームっていう加算しつつ確認の仕方がわかりません。ここだけお恵み願えないでしょうか
- 741 :名無しさん@お腹いっぱい。:2015/06/25(木) 21:40:55.13 ID:YGQADaH50.net
- RegExMatch()で引っ掛けて(n)の数値部分抜き出して+1してReplace
- 742 :名無しさん@お腹いっぱい。:2015/06/25(木) 21:50:54.75 ID:xSDuv3nz0.net
- 歯抜けあったときに再利用するのか欠番にするのか
- 743 :名無しさん@お腹いっぱい。:2015/06/25(木) 23:04:36.43 ID:15S1kntH0.net
- ダメですわかりません
多分慣れてる人から見れば2,3行ですよね?おねがいします(><;)
>>742
再利用したいです
- 744 :名無しさん@お腹いっぱい。:2015/06/25(木) 23:06:51.82 ID:YGQADaH50.net
- そういうお願いのしかたしてコード貰えるスレじゃないからここ
- 745 :名無しさん@お腹いっぱい。:2015/06/25(木) 23:36:07.13 ID:15S1kntH0.net
- 知識の出し惜しみは集団を非生産的にする原因の一つですよ。無用な不和を生むしそのうち必要な知識の共有にも歯止めをかけ始めます
その結果の今のこのスレなのかもしれませんね
教えていただけないのであればこれにて失礼します
- 746 :名無しさん@お腹いっぱい。:2015/06/25(木) 23:37:58.53 ID:Y5SdqH+C0.net
- バイバイw
- 747 :名無しさん@お腹いっぱい。:2015/06/26(金) 00:57:47.27 ID:cSqtQs7c0.net
- クレクレの捨てゼリフ虚しすぎ
ここは自助努力する人は全力で助けるスレなのになあ
- 748 :名無しさん@お腹いっぱい。:2015/06/26(金) 01:01:50.66 ID:NgSxznxn0.net
- このスレ、2chとは思えないほど親切な人多いのになw
- 749 :名無しさん@お腹いっぱい。:2015/06/26(金) 06:05:29.98 ID:qnLH4XQ70.net
- >>745
こういうレスは非生産的で無用な不和を産む原因ですよw
- 750 :名無しさん@お腹いっぱい。:2015/06/26(金) 07:29:42.75 ID:Izhts68i0.net
- >>745
集団を生産的にしたいがお前のような乞食はぶっ殺したい
- 751 :名無しさん@お腹いっぱい。:2015/06/26(金) 11:52:12.55 ID:Qu/lLMXm0.net
- >知識の出し惜しみ
教える側の手間や工夫やモチベーションとか想像もつかないんだろうな
ID:YGQADaH50はいろいろ問題あるけどそういう想像力のなさも一つだよな
- 752 :名無しさん@お腹いっぱい。:2015/06/26(金) 13:12:31.52 ID:4/OLyxU30.net
- 正直おれも>>738のようにファイルやフォルダの「追加コピー/移動」したくて、
10年近く前に、当時やり始めたばっかのWSHでかなり苦労して作った(未だに使ってるよ)。
>多分慣れてる人から見れば2,3行ですよね?
冗談じゃねーぞ、変数代入だけの2,3行とはわけが違う。
改めて見直したら、自分はリネームと再コピーの処理を一つのサブルーチン(20行ほど)にして、再帰処理を使ってループしてた。
それに、同名ファイル(フォルダ)の存在確認などせず、コピーに成功するか失敗するかで分岐するという"荒技"も使用してたよw
- 753 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:22:28.75 ID:RR4yo7vg0.net
- 2つのファイル、a.ahk と b.ahk があって、それぞれに
a::
なんとか
return
と入れているとします。
そして、2つのファイルに別のなんとかが入っているのですが、双方のa:: の中身を実行してほしいのですが
実際にやってみると、どちらか片方だけしか実行されないみたいです
双方のa:: の中身を実行させるようにする方法ってどうするのでしょうか
- 754 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:24:31.08 ID:ekLlarAg0.net
- どっちか片方になんとかを二つ分入れたらいいんじゃない
- 755 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:26:43.42 ID:XrpFyCrZ0.net
- コジるしか能のないやつがコジってきたところでそんなに相手にする必要があるか?
それと単芝を生やすやつも消えろ、見苦しい
- 756 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:27:47.46 ID:/QNj1MFk0.net
- コジるって何?
- 757 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:29:29.18 ID:Qcw8n3w80.net
- >>756
想像力の欠如
- 758 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:32:33.48 ID:RR4yo7vg0.net
- >>754
2つとも全く別のスクリプトで、普通は片方だけで使うのですが、ときどき両方を同時に使うことがあるんです
そのとき、a.ahk内のa:: はa,ahk内の他のコマンドと関係していてて、b.ahk内のa:: はb.ahk内で動いているので
一緒にできないのですよ
- 759 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:37:46.12 ID:ekLlarAg0.net
- a.ahkのa::のなかにsend bでも付け足して
b.ahkにa::とおなじ内容のb::を加えるってのはどう
- 760 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:43:55.57 ID:RR4yo7vg0.net
- >>759
なるほど。そうやって逃げられるのかな。やってみますね
正当法で両方のa::を実行させることは出来ないのですね
- 761 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:48:11.29 ID:RR4yo7vg0.net
- >>759
これやってみたけど、ダメですねえ
send, b ってやりましたが、他のスクリプトのb:: には入らないようです
- 762 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:49:31.84 ID:ekLlarAg0.net
- そうでしたか
ごめんなさい
- 763 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:54:53.35 ID:WBaIj8X+0.net
- >>760
a.ahkの方でb.ahkが存在するならb.ahkに変数を渡してみては?
以下は過去スレを個人的にメモしてたサンプル
●GUIを利用して変数と値を渡す
;---- server.ahk ---- (受け側のスクリプト)
Gui, Add, Button,gSub1
Gui, Add, Edit, vParam
Gui, Show,Hide, HiddenWindow
Return
Sub1:
Gui, Submit, NoHide
MsgBox, % Param
Return
;---- client.ahk ---- (送る側のスクリプト)
Gui, Add, Edit, vParam
Gui, Add, Button,,Go
Gui, Show
Return
ButtonGo:
Gui, Submit, NoHide
DetectHiddenWindows, On
ControlSetText,Edit1,% Param, HiddenWindow ahk_class AutoHotkeyGUI
ControlClick,Button1,HiddenWindow ahk_class AutoHotkeyGUI
Return
- 764 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:55:50.78 ID:WBaIj8X+0.net
- >>763 とは別の方法
●OnMessage と PostMessage を使って値を渡す
;文字列の受け渡しになるとちょいと面倒になるけど、数値の受け渡しならこの程度で済む
;--- receiver.ahk --- (受け側のスクリプト)
;第1引数の 0x5555 は他の値でもOK、第2引数は受け取ったときに実行する関数名
OnMessage(0x5555,"MsgHandler")
MsgHandler(wParam, lParam, msg) ; ※引数は省略してもOK、例えば MsgHandler() というようにする。
{
TrayTip,Receiver,Message %msg% arrived:`nWPARAM: %wParam%`nLPARAM: %lParam%
}
;--- sender.ahk --- (送る側のスクリプト)
F12::
SetTitleMatchMode 2
DetectHiddenWindows On
;第1引数は送る値、第2と第3引数は0や1でも問題ない
PostMessage, 0x5555, 11, 22, , receiver.ahk ahk_class AutoHotkey
return
- 765 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:58:43.15 ID:ekLlarAg0.net
- あ、exe化させたb.ahkを起動させるというのは
- 766 :名無しさん@お腹いっぱい。:2015/06/26(金) 16:00:59.00 ID:RR4yo7vg0.net
- >>764
On
- 767 :名無しさん@お腹いっぱい。:2015/06/26(金) 16:02:42.82 ID:RR4yo7vg0.net
- >>764
OnMessageを使った方法は前にやったことがあります
>>763の方法は初めてです。ありがとうございました
やっぱりメッセージのやりとりとかしないといけないのかな
ちょっとめんどくさいですが、これなら出来るのでこれでやりましょうか
- 768 :名無しさん@お腹いっぱい。:2015/06/26(金) 16:07:45.68 ID:RR4yo7vg0.net
- 2時間くらい席を空けます。なにかあれば、またあとでw
- 769 :名無しさん@お腹いっぱい。:2015/06/26(金) 16:14:20.02 ID:Q7Wzsq1u0.net
- クレクレ荒らしが来た直後にこういう理想的なやりとりがかなり速いペースでなされるって前にも見たな。まるで仕切り直しのために用意されたような
気のせいか?
- 770 :名無しさん@お腹いっぱい。:2015/06/26(金) 16:40:33.48 ID:cSqtQs7c0.net
- >>752
うちは妥協して hoge〜のコピー〜のコピー〜のコピー.txt
みたいな感じでどんどん末尾増やしてってたなw
エクスプローラと完全に同じ規則でそこ絶対譲れないって前提がまず面倒
そもそもOSバージョンでリネーム規則自体違うしな
- 771 :名無しさん@お腹いっぱい。:2015/06/26(金) 18:45:41.21 ID:lzZmXfXn0.net
- これはクレクレとどう違うん?
- 772 :名無しさん@お腹いっぱい。:2015/06/26(金) 18:51:49.48 ID:Qu/lLMXm0.net
- 744が言ってるが自助努力から見える姿勢だろね
- 773 :名無しさん@お腹いっぱい。:2015/06/27(土) 08:41:42.50 ID:6dLBD4bc0.net
- 生産性が30%向上する神スクリプト
Space::Shift
Shift::Space
- 774 :名無しさん@お腹いっぱい。:2015/06/27(土) 14:13:06.57 ID:ikjXxhWm0.net
- shift押す頻度よりspace押す頻度の方がよっぽど高い
- 775 :名無しさん@お腹いっぱい。:2015/06/27(土) 14:59:16.07 ID:D9/6DwQL0.net
- 小指スペースのほうが捗る派なんじゃね
- 776 :名無しさん@お腹いっぱい。:2015/06/27(土) 15:11:09.09 ID:NP7P/K510.net
- >>775
だとしても。。。
- 777 :名無しさん@お腹いっぱい。:2015/06/27(土) 15:30:32.49 ID:TBPPo3Er0.net
- 流行らせるページだかにSandS.ahkって有るのにな
今のバージョンでそのまま使えるか分からんけど…
- 778 :名無しさん@お腹いっぱい。:2015/06/27(土) 17:59:28.80 ID:Djei5dJQ0.net
- 正直、スペース部分をシフトにするより柔軟に設定できる分、アップローダにあるワンショットモデファイヤのほうが使いやすいのですよ
- 779 :名無しさん@お腹いっぱい。:2015/06/27(土) 22:22:03.89 ID:TLYmI5Mvg
- 無変換・変換あたりをshiftに割り当てればいいんじゃない?親指シフト派みたいに
- 780 :名無しさん@お腹いっぱい。:2015/06/29(月) 04:51:48.46 ID:NLpdyHkk0.net
- GuiControlで数値やテキスト等をタイマーで表示させた場合に
更新したウインドウがチラつかない上手い方法ってありますかね?
- 781 :名無しさん@お腹いっぱい。:2015/06/29(月) 05:06:40.21 ID:YdY2eCXn0.net
- 表示しているメッセージに変更がなければ更新しないようにすれば多少は改善されるんじゃない
- 782 :名無しさん@お腹いっぱい。:2015/06/29(月) 05:37:36.61 ID:0A9SBmi50.net
- 情報たりなさ過ぎじゃない?
表示内容の取得とその反映をsettimerで行っているという前提で話すけど、
タイマー間隔で毎回Guicontrolしてるからちらつく
本当に必要な時(表示内容が前回と違う時)だけ実行するようにすればいい
タイマー間隔と同間隔で目まぐるしく表示内容が変わるんなら知らん
SetTimer, Timer, 1000
return
Timer:
min := A_Min
WinGetTitle, aWin, A
if (min != preMin || aWin != preAWin) {
GuiControl, Text, ControlID1, %min%
GuiControl, Text, ControlID2, %aWin%
preMin := min
preAWin := aWin
}
return
- 783 :名無しさん@お腹いっぱい。:2015/06/29(月) 06:22:11.86 ID:NLpdyHkk0.net
- >>782
確かに情報少な過ぎました、申し訳ないです。
SETTIMER 50ms位で回しているんですけど、難しいですかね。
どうも有難うございました。
- 784 :名無しさん@お腹いっぱい。:2015/06/29(月) 08:23:57.17 ID:ZicKgyoX0.net
- AHKで初心者スレ作らない?
もっと簡単な質問したいけど、基本的にスラスラ書ける奴以外お断り感が凄い
- 785 :名無しさん@お腹いっぱい。:2015/06/29(月) 08:35:10.05 ID:YdY2eCXn0.net
- 1スレを2〜3日とかで消費するなら分けたほうがいいだろうけど
こんな過疎スレは分ける必要ないやん
初心者だからと気にせず質問したらいい、レスが付くかどうかは質問内容次第だし
- 786 :名無しさん@お腹いっぱい。:2015/06/29(月) 08:51:24.44 ID:zKtdn2ze0.net
- 初心者という名のクレクレが湧いて過疎るだけかと
基礎的な質問にはwikiの該当ページ貼って誘導になるし
わかってなさそうな人にはみ砕いて説明してくれてる回答者もいるよ
ただ質問テンプレみたいなのはあってもいいかもね
環境書かない人、目的書かずにコード貼ってデバッグ頼んでくる人とかいるし
クレクレ避けにコード書いて下さい禁止って明示しとくのも有効かも試練
- 787 :名無しさん@お腹いっぱい。:2015/06/29(月) 09:00:54.30 ID:VFRNxj0V0.net
- wikiの該当ページ開いて誘導とか激しくめんどい
AutoHotkeyJpとかAutoHotkey Wikiとかでググってもらう方がいい
- 788 :名無しさん@お腹いっぱい。:2015/06/29(月) 09:04:03.80 ID:zKtdn2ze0.net
- それはググらなくても>1にある
初心者は自分の欲しい情報の該当ページがどこだかわからないから質問してくるんだよ
- 789 :名無しさん@お腹いっぱい。:2015/06/29(月) 09:12:18.66 ID:YdY2eCXn0.net
- >>787
レスしたくなければスルーするかNGに突っ込めばいいやん
>>786
そうなんだよね、本スレがこんなに過疎ってるのに
初心者スレ作っても過疎って放置されるのが分かりきってる。
以前なら知らない間にdat落ちしてる感じ。
- 790 :名無しさん@お腹いっぱい。:2015/06/29(月) 11:07:04.05 ID:ZicKgyoX0.net
- >>785-789
うーむそうですね。
自分も質問できるレベルまでもっと勉強します。
- 791 :名無しさん@お腹いっぱい。:2015/06/29(月) 14:21:30.45 ID:HWJjF1A20.net
- 学習中の者です。
IfWinExist が正しく判定されない原因が分かりません。
#+n::
IfWinExist Untitled - Notepad
WinActivate
else
Run Notepad
return
ホットキーが ^!n だと正常に動作します。
しかし #+n だと Untitled - Notepad が存在しても else に飛んでしまいます。
原因と対策を教えて下さい。
- 792 :名無しさん@お腹いっぱい。:2015/06/29(月) 14:32:04.76 ID:HWJjF1A20.net
- すいません、いろいろ勘違いしていました。
どちらのホットキーでも判定おかしいです。
で、そもそも原因はウインドウ名が英語で書かれているからですね。たぶん。
英語でも日本語でも判定出来るように頑張ってみます。
- 793 :名無しさん@お腹いっぱい。:2015/06/29(月) 14:58:43.40 ID:YdY2eCXn0.net
- AU3_Spy.exe でウィンドウ情報を取得してWindowsClass(ahk_class)を指定すればいい
IfWinExist ahk_class WindowsClass
- 794 :名無しさん@お腹いっぱい。:2015/06/29(月) 16:04:27.46 ID:0A9SBmi50.net
- >>783
>>782の前提が間違ってなければ、
タイマーが50msでも表示したい内容が50ms間隔で変更されない限りチラツキは軽減されるはずだけど。
書いたコードは例で、
こんな風に表示した内容を記録しといて変更がないか判別したらいいってことだよ
後は自力で頑張るなり、諦めるなり、情報出すなりなんなりと
- 795 :名無しさん@お腹いっぱい。:2015/06/29(月) 16:06:29.81 ID:HWJjF1A20.net
- >>793
IfWinExist ahk_class Notepad
ということですね。
勉強になりました、ありがとうございます。
- 796 :名無しさん@お腹いっぱい。:2015/06/29(月) 16:39:52.28 ID:hGPWoSJP0.net
- 俺も勉強中だがUTF-8で動いた
IfWinExist, 無題 - メモ帳
WinActivate, 無題 - メモ帳
Else
Run Notepad
Return
- 797 :名無しさん@お腹いっぱい。:2015/06/29(月) 17:14:38.87 ID:HWJjF1A20.net
- IfWinExist の後ろのカンマ無くても動きますね。
そもそもサンプルファイルAutoHotkey.ahkにもカンマ無いし。
- 798 :名無しさん@お腹いっぱい。:2015/06/29(月) 17:39:42.41 ID:hGPWoSJP0.net
- OnClipboardChange:をホットキーで有効無効を切り替えるにはどうすればいい?
Suspend,ToggleもPause, Toggleも変化なかった
- 799 :名無しさん@お腹いっぱい。:2015/06/29(月) 17:49:47.90 ID:UqNeNdBe0.net
- 普通はホットキーでフラグをトグルさせて、OnClipboardChangeラベル内のIfで分岐処理する
http://ahkscript.org/docs/commands/OnClipboardChange.htm#Function
AHK_Lが最新ならOnClipboardChange関数を使えばオン・オの切り替えもできるよ
- 800 :名無しさん@お腹いっぱい。:2015/06/29(月) 18:00:05.01 ID:UqNeNdBe0.net
- 途中で書き直したら消しすぎたw
過去ログ見ればいくつもあるけど簡単な例だと
ClipFlag = 1
return
OnClipboardChange:
if ClipFlag
ToolTip, %Clipboard%
return
!Space::
ClipFlag := !ClipFlag
ToolTip, % ClipFlag ? "ON" : "OFF"
return
- 801 :名無しさん@お腹いっぱい。:2015/06/29(月) 18:21:59.10 ID:qU45Nqld0.net
- カンマ付けてなくても動くけど付けた方が明示的だから最初のうちは付けといた方がいい
- 802 :名無しさん@お腹いっぱい。:2015/06/29(月) 22:31:42.85 ID:HWJjF1A20.net
- >>801
OK
- 803 :名無しさん@お腹いっぱい。:2015/06/30(火) 18:11:08.95 ID:BCuzGtO60.net
- ウインドウタイトルを正規表現でマッチさせたはいいんだけど、その中の一部を後で使うにはどうすればいいのだろ
他の関数中で\1って入力しても、\1がそのまま入っちゃうし、正規表現で待ったさせつつ変数に入れる方法はわからないし困った。
例えば20150531データってウインドウタイトルでいうと、20150531って部分をどこかに保持する方法を知りたいのです。
解決方法はありますか。
- 804 :名無しさん@お腹いっぱい。:2015/06/30(火) 19:00:28.17 ID:0mtHG+R70.net
- RegExMatch
- 805 :名無しさん@お腹いっぱい。:2015/06/30(火) 19:39:38.84 ID:BCuzGtO60.net
- >>804
WinGetTitleの結果に対してRegExMatchでできましたありがとう!
- 806 :名無しさん@お腹いっぱい。:2015/06/30(火) 21:46:05.60 ID:qUtegEjk0.net
- wiki読まないカスは死んでおけ
- 807 :名無しさん@お腹いっぱい。:2015/06/30(火) 21:49:14.39 ID:H3DPThHx0.net
- >>806
死んできたよ
今度はあなたの番ね♪
- 808 :名無しさん@お腹いっぱい。:2015/06/30(火) 21:55:39.96 ID:vVuJd9SW0.net
- 何言ってるんだこのカス。死んでも直らんらしいな
- 809 :名無しさん@お腹いっぱい。:2015/07/01(水) 02:08:22.61 ID:g8dMrIiN0.net
- ^!f:: msgbox,^!f
vk1Csc079 & S::
; Suspend,On
Send,^!n^!f
; Suspend,Off
return
上のコードでSuspend On/OffしないとSendしたものをAHKがまた拾っちゃうんだけど
対象アプリに^!fを伝えたい場合どう書くのが普通なの?
- 810 :名無しさん@お腹いっぱい。:2015/07/01(水) 02:32:15.19 ID:+fIiRTQV0.net
- >>809
フック >>5
- 811 :名無しさん@お腹いっぱい。:2015/07/01(水) 16:23:04.14 ID:gB1kXVgW0.net
- 起動中のメモ帳や電卓のタスクバーボタンを中クリックすると複数起動出来るはずですが、
AHKから起動したメモ帳や電卓だと、この動作が出来ません。
#+n::Run Notepad
#+c::Run Calc
不思議なことに、ピン留めしてある電卓やメモ帳だと普通に複数起動出来ます。
Windows本来の動作ならピン留めなしでもホイールクリックで複数インスタンス起動するはずです。
AHKから起動した時でもこの動作を取り戻すにはどうすれば良いでしょうか?
- 812 :名無しさん@お腹いっぱい。:2015/07/01(水) 16:32:26.37 ID:+fIiRTQV0.net
- >>811
管理者権限 >>8
最低限環境を書こう
- 813 :名無しさん@お腹いっぱい。:2015/07/01(水) 18:50:45.42 ID:gB1kXVgW0.net
- >>812
Windows7 Home
AHK v1.0.48.05
です。
>管理者権限
私も最初それを疑ったのですが、管理者権限でも通常権限でも同じ症状です。
- 814 :名無しさん@お腹いっぱい。:2015/07/01(水) 18:55:33.89 ID:+fIiRTQV0.net
- >>813
旧版のAHKが問題
そのころは管理者権限自体が無い想定外
- 815 :名無しさん@お腹いっぱい。:2015/07/01(水) 20:49:35.97 ID:gB1kXVgW0.net
- >>814
最新の AHK_L を導入することにします。
(ついでに、かざぐるマウスもやめてMouseGestureL.ahkにまとめた方が良さそうですし)
教えて頂いてありがとうございました!
- 816 :名無しさん@お腹いっぱい。:2015/07/03(金) 01:40:35.81 ID:qgluISHY0.net
- IMEがオフの時だけ,
無変換キーにコントロールキーを,
変換キーにシフトキーを,
割り当てたいけど,>>1では無理かな
そもそもIMENの動作モードの取得とかどうすんだって話だし
- 817 :名無しさん@お腹いっぱい。:2015/07/03(金) 02:13:30.29 ID:7GUlc3YA0.net
- テンプレ
- 818 :名無しさん@お腹いっぱい。:2015/07/03(金) 07:40:36.17 ID:iBIC9JGh0.net
- >>816
>7
- 819 :名無しさん@お腹いっぱい。:2015/07/03(金) 17:50:16.24 ID:hTtMpwkr0.net
- 事務でよく使う作業で、単語登録してある語が入力された後にカーソルを戻したく、調べてみてホットストリングで出来るのかな?と思ってやってみましたが出来ませんでした。
http://ahkwiki.net/Hotstrings
:*B0:年月日)::{Left 4}
試しに)だけで入力したら出来たので日本語では出来ないという事でしょうか?
あと単語登録で)を出力した時は出来ませんでしたので、ホットストリングでは無理な作業でしょうか?
だとするとこれが可能になるやり方は何かあるでしょうか?
すみませんがよろしくお願いします。
Win8.1 64
- 820 :名無しさん@お腹いっぱい。:2015/07/03(金) 18:25:50.86 ID:jEsR1Ep/0.net
- 単語登録に登録した変換元になる言葉をホットストリングのキーにするのは?
hogehoge→変換→:*B0:年月日)
となってるのを
::hogehoge::
Send,:*B0:年月日)
Send,{Left 4}
Return
的な感じで
- 821 :名無しさん@お腹いっぱい。:2015/07/03(金) 18:35:30.20 ID:iBIC9JGh0.net
- ホットストリングはキー入力を見てるからIME経由での貼付けは無理じゃろ
>820が正解
- 822 :名無しさん@お腹いっぱい。:2015/07/03(金) 18:47:38.80 ID:iM+fwL850.net
- >>819
自分で張ったリンク先に
「置換後のテキストに2バイト文字を使うことはできないので、〜」
って解決策含めて書いてあるじゃん
- 823 :名無しさん@お腹いっぱい。:2015/07/03(金) 18:50:46.22 ID:iM+fwL850.net
- すまん818は815の質問勘違いしてた
- 824 :815:2015/07/03(金) 18:57:50.70 ID:hTtMpwkr0.net
- >>820-821
お返事ありがとうございます
共用のパソコンでパソコンに不慣れな人が何人もいて、そんな人の作業をやりやすくミスが起きない用にしたくてなんですが、
その為単語登録も簡単に一文字で出せる様にしてある物が多く、今回の物も他に同じ読みの登録が複数あるのでその方法が使えないんです
自分が個人で使うにはいくらでも変更出来るのですが、他の複数の人がメインで皆さんそれに慣れてるので違う言葉には出来ないんですよね
使い勝手を変えず実現させたいのですが、他にやり方は無いのでしょうか?
長文すみません。
- 825 :815:2015/07/03(金) 19:00:12.85 ID:hTtMpwkr0.net
- >>822-823
ですよね。
読んで逆だなと思ったので違うだろうと質問させて頂きました。
- 826 :名無しさん@お腹いっぱい。:2015/07/03(金) 20:11:55.29 ID:9dk2v8nd0.net
- >>824
; #If IME_Get() ; http://www6.atwiki.jp/eamat/pages/17.html
:B0:nenngappi::{BackSpace 5}年月日{Enter}){Enter}{Left 4}(
; #If
- 827 :名無しさん@お腹いっぱい。:2015/07/04(土) 10:09:18.35 ID:u9PD2TChH
- ホットキーラベルなんだけど、shift+aとかはできるんだけどshift+Numpad5ができない
別に他に割り当てればいいんだけど、+Numpad5::は書き方がおかしいのかな
^Numpad5::はいけるんだけど
- 828 :名無しさん@お腹いっぱい。:2015/07/04(土) 16:22:08.05 ID:hjaU8+Ae0.net
- 調べてもどうしても分からなかったので教えて下さい。
あるキーをWinキーと同様に動作させたいのですが、キーリピートを拾わないようにするにはどうすれば良いでしょうか?
たとえば下記のようにしても、押し続けると a のキーリピートが発生してしまいます。
a::
send,{LWin down}
KeyWait,a
send,{LWin up}
return
Winキーと同様にキーリピートが生じないようには出来ないでしょうか?
(Windowsのキーリピートまるごと無効化することは考えていません)
(環境)
v1.1.22.02
Win7
- 829 :名無しさん@お腹いっぱい。:2015/07/04(土) 16:56:26.80 ID:LJcutymJ0.net
- フック
- 830 :名無しさん@お腹いっぱい。:2015/07/04(土) 17:27:31.07 ID:qxaeyUNz0.net
- >>828
そういう用途ならホットキーじゃなくてリマップしたほうがいい
a::LWin
- 831 :名無しさん@お腹いっぱい。:2015/07/04(土) 18:12:48.68 ID:tFlcUr1H0.net
- >>828
LWin+a が押されたと認識してる
ホットキーは登録されていないので a のキーリピートが発生する
--------
*a:: ; 修飾キーの組み合わせを受け入れる
; $a:: ; またはフックで拒否する
; $#a::
send, {LWin down}
KeyWait, a
send, {LWin up}
return
- 832 :名無しさん@お腹いっぱい。:2015/07/04(土) 20:50:25.60 ID:hjaU8+Ae0.net
- >>830
こんなにシンプルに出来るとは。。。
ありがとうございました。
>>831
>LWin+a が押されたと認識してる
これは気付きませんでした。AHKは難しいですね。
ホットキーラベルを *a にしたら狙い通りの動きになしました。
a::Lwin のリマップと同じ動きみたいです。
教えていただいたコードをいろいろ試行錯誤してみました。
理解しきれていませんが頑張ります。
ありがとうございました。
>>829
フックって難しいですね。
- 833 :名無しさん@お腹いっぱい。:2015/07/04(土) 23:40:41.07 ID:kTJL9NHr0.net
- #USEHOOK
おまじないな。書いとこうな。
- 834 :名無しさん@お腹いっぱい。:2015/07/05(日) 00:03:49.01 ID:99Nt666p0.net
- 684にも書きましたが、
onenote上でSend, {Up}等がどうしても動きません。賢い方助けてください。
send,{left}は動きます。最小構成で試してみましたがやはり動きませんでした。
以下が動きません。
;; 無変換 + i = ↑
sc07B & i:: Send, {Up}
;; 無変換 + k = ↓
sc07B & k:: Send, {Blind}{Down}
- 835 :名無しさん@お腹いっぱい。:2015/07/05(日) 00:06:59.27 ID:uiV+6Tdg0.net
- 同じ現象に出会った人のためのメモ。
Google Chrome の Webコンテンツ内で
+RButton::AppsKey
が動きません。
IEとFirefoxでは動きます。
どうやら Chrome では シフト修飾されたアプリケーションキー には反応しないようです。
なのでリマップではなくホットキーを使いました。
+RButton::Send,{AppsKey}
- 836 :名無しさん@お腹いっぱい。:2015/07/05(日) 00:20:24.69 ID:bL3HRZsN0.net
- Chromeはクラス拾えないし相性悪いからfirefoxにしとき。ブラウザでAHK使うならね
- 837 :名無しさん@お腹いっぱい。:2015/07/05(日) 01:34:38.28 ID:ybRBVByc0.net
- すみません、このコードで小数点以下を削除するにはどうしたらよろしいでしょうか。
よろしくお願いします。
Width := A_ScreenWidth
Height := ( A_ScreenWidth * 0.5555 )
SetFormat,Float, 0.0
msgbox, %Width%x%Height%
- 838 :名無しさん@お腹いっぱい。:2015/07/05(日) 01:50:23.31 ID:ybRBVByc0.net
- 度々すみません、これで正解ですか?。
何となくスマートではない様な気がします。
Width := A_ScreenWidth
Height := ( A_ScreenWidth * 0.5555 )
StringTrimRight, Height, Height, 7
msgbox, %Width%x%Height%
- 839 :名無しさん@お腹いっぱい。:2015/07/05(日) 01:55:11.58 ID:XZrEpAiZ0.net
- >>837
SetFormatのページに書いてある
このコマンドを使用しても、すでに変数に入っている数値のフォーマットは変換されない。
変換するには、0を足すなどの計算を行えばよい。
- 840 :名無しさん@お腹いっぱい。:2015/07/05(日) 02:07:38.18 ID:ybRBVByc0.net
- >>839
了解しました!返答有難うございました。
- 841 :名無しさん@お腹いっぱい。:2015/07/05(日) 03:17:19.02 ID:A0DdOJbL0.net
- >>840
小数点以下切り捨てっていう直接的な関数はないみたいだけど、Floorっていう関数があった・・・これ使える?
Floor()
http://ahkwiki.net/Floor
Width := A_ScreenWidth
Height := Floor( A_ScreenWidth * 0.5555 )
msgbox, %Width%x%Height%
- 842 :名無しさん@お腹いっぱい。:2015/07/05(日) 04:41:54.09 ID:ybRBVByc0.net
- >>841
おお!こんなものまであったんですね、色々と使えそうです。
ご紹介有難うございました。
- 843 :名無しさん@お腹いっぱい。:2015/07/05(日) 10:11:53.44 ID:Xw4ohWkl+
- 関数を終わらせる方法があるか質問なんだけど、なにかあるかな
普通なら関数を終わらせるにはreturnを使えばいいんだけれど、
関数内でSetTimerでサブルーチンを回転させてて
そのサブルーチンに条件が一致したら関数を終了させる、ということをさせたい
けれどサブルーチン内でreturnやexitをさせても、
そのサブルーチンが終了するだけで関数を終わらせられない。何かやり方あるだろうか
- 844 :名無しさん@お腹いっぱい。:2015/07/05(日) 12:25:15.72 ID:hsnN1xHr0.net
- >>834
ぐぐれ
不完全ながら解決してる人がいたはず
- 845 :名無しさん@お腹いっぱい。:2015/07/05(日) 20:22:57.78 ID:nYhbS0TU0.net
- 有料ポルノ動画が「見るだけなら」無料 両手をキーボードの上に置いている間だけ再生できるポルノサイト
ttp://headlines.yahoo.co.jp/hl?a=20150703-00000050-it_nlab-sci
瞬時にAHKのことが頭をよぎった
- 846 :名無しさん@お腹いっぱい。:2015/07/05(日) 20:55:06.47 ID:O2cESNl20.net
- >>845
ゲームガードとかでガチガチにされてないだろうか?
- 847 :名無しさん@お腹いっぱい。:2015/07/05(日) 21:35:31.21 ID:uFf8JbN+0.net
- >>845
つ[文鎮]
- 848 :名無しさん@お腹いっぱい。:2015/07/06(月) 01:35:27.19 ID:zcpXJv/k0.net
- 後は適当なダウンローダーに動画のURLを送るか
rtmpdumpみたいなので取得する方法だけだな
- 849 :名無しさん@お腹いっぱい。:2015/07/06(月) 15:44:14.80 ID:fYN2QyB10.net
- ;エクスプローラーのナビゲーションペインの表示/非表示
#IfWInActive, ahk_class CabinetWClass
!n::
Send, !d ★
Sleep, 100 ★
Send, {TAB 2} ★
Sleep, 100
Send, {ENTER}
Sleep, 100
Send, {DOWN 7}
Sleep, 100
Send, {RIGHT}
Sleep, 100
Send, {DOWN 3}
Sleep, 100
Send, {ENTER}
return
#IfWinActive
★の3行を下記に置き換えたのですが、
ControlFocus,DirectUIHWND2
フォーカスが当たったり当たらなかったり不安定です。
原因と対策のアドバイスをお願いします。
v1.1.22.02 64bit Unicode / Win7 Home 64bit
- 850 :名無しさん@お腹いっぱい。:2015/07/06(月) 23:16:38.24 ID:SfVDsuM00.net
- PCの画面に指定したウインドウが現れると
Androidのスマートフォンのアラームだったり通知がでて知らせてくれるようにしたいのですが
autohotkeyで作れるものでしょうか
- 851 :名無しさん@お腹いっぱい。:2015/07/06(月) 23:34:53.28 ID:UCmA/edh0.net
- >Androidのスマートフォンのアラームだったり通知がでて知らせてくれるようにしたいのですが
ここがいまいち分からない
PCからスマホに通知を送りたいってことかな
だったらwshでメールが送れるみたいだからそれでいけるかな
「autohotkey CDO.Message」でggr
- 852 :名無しさん@お腹いっぱい。:2015/07/06(月) 23:36:25.02 ID:UCmA/edh0.net
- ハードルが高ければフリーソフトの
コマンドラインからメール送信できるメーラーを探して使えばいいと思う
- 853 :名無しさん@お腹いっぱい。:2015/07/07(火) 06:13:43.05 ID:FULEwfoA0.net
- run,cmd.exe /c start myshortcut.lnk arg1 arg2
これってもっと短く書けないですか
run,myshortcut.lnk arg1 arg2
とするとエラーになります
- 854 :名無しさん@お腹いっぱい。:2015/07/07(火) 07:54:49.80 ID:9+RwmPKy0.net
- 確認してないので申し訳ないけど、
a = cmd.exe /c start myshortcut.lnk
run, %a% arg1 arg2
とかでは出来ない?
- 855 :名無しさん@お腹いっぱい。:2015/07/07(火) 08:11:31.23 ID:GH0oD2pX0.net
- .lnkを起動しなきゃならんのかっていう
- 856 :名無しさん@お腹いっぱい。:2015/07/07(火) 08:49:25.03 ID:WVm7mRdl0.net
- >>849
DirectUIHWND2 は背景のコントロールにも割り当てられているので必ずしもボタンにフォーカスが移動するとは限らない。
それとナビゲーションペインのツリーにフォーカスがあるとControlFocusだけでは移動しなかったりする。
↓のように記述すれば動くには動く。
controlgetpos,x,y,,,DirectUIHWND2,ahk_class CabinetWClass
x+=10,y+=10
controlclick,x%x% y%y%,ahk_class CabinetWClass,,left,1,pos
send,{space}レナ ; "レナ" の部分は旧版のAutohotkeyでは動作しない
>>853
絶対パスや相対パスではないからエラーが出るんじゃない?
- 857 :名無しさん@お腹いっぱい。:2015/07/07(火) 09:50:38.03 ID:Y6KRJm9e0.net
- >>844
ありがとうございます。ぐぐったらすぐそういうブログがヒットしました。よかった!
ただ日本語のブログに明示されてる方の解決策じゃまったく動かなかった。win7だけど。
そこの文中で触れられてる&英語の海外フォーラムにあった
SendPlay, {UP}
これで動いた。あーよかった。
- 858 :名無しさん@お腹いっぱい。:2015/07/07(火) 14:20:35.73 ID:4as8OiiF0.net
- >>856
まるごと全体の改善コードまで提示して下さりありがとうございます。
ほんと自分一人では解決不可能だったと思います。
やはりAHKを使うのは色々難しいです。
普及が進みにくいのも当然ですね。
- 859 :名無しさん@お腹いっぱい。:2015/07/07(火) 14:47:25.56 ID:pD6vffMY0.net
- まぁ、これ勉強するくらいなら他の言語に手を伸ばしてそれっきり戻ってこないだろうからな
- 860 :名無しさん@お腹いっぱい。:2015/07/07(火) 17:48:52.07 ID:+PtcBdFV0.net
- アップローダーにある独自関連コンテキストメニューと過去スレにあったデスクトップ判別関数使ったら世界が相当変わった。
なにこれ半端ない。
- 861 :名無しさん@お腹いっぱい。:2015/07/07(火) 17:51:45.98 ID:O6WcvpwU0.net
- >>687>>834>>857
>>689
> Sendの方式変更
言われたこと合ってたのに試してなかったのかよ
- 862 :名無しさん@お腹いっぱい。:2015/07/07(火) 22:56:40.48 ID:+PtcBdFV0.net
- あ、だめだわこれ。
デスクトップでコンテキスト開くと選択外れるわ。死ねwindows
- 863 :名無しさん@お腹いっぱい。:2015/07/08(水) 00:36:37.36 ID:9Rbyi1W70.net
- 品の無い人が定期的に湧くのは何故?呪われてるの?このスレは
- 864 :名無しさん@お腹いっぱい。:2015/07/08(水) 01:47:22.73 ID:OvJF9dNv0.net
- >>861
言うべくもございません。
686さんありがとうございました
- 865 :名無しさん@お腹いっぱい。:2015/07/08(水) 03:38:45.22 ID:dv+Eplwp0.net
- この1行だけのスクリプトを動かすと・・・・
NumpadDown::MButton
常駐秀丸エディタのホットキー Ctrl+Alt+H が動かなくなります。
A2 01D d 1.17 LControl
A4 038 d 0.23 LAlt
48 023 d 0.28 h
A2 01D a u 0.00 LControl 秀丸エディタ
28 050 h d 0.00 NumpadDown
28 050 h u 0.00 NumpadDown
48 023 u 0.11 h Program Manager
A4 038 u 0.19 LAlt
A2 01D i d 0.00 LControl
A2 01D i u 0.00 LControl
A2 01D u 0.38 LControl
キーヒストリー見ても自分には原因が分かりません。
どうしてこういう現象が起きるのでしょうか?
AHKは最新版です
- 866 :名無しさん@お腹いっぱい。:2015/07/08(水) 03:50:18.04 ID:dv+Eplwp0.net
- NumpadDownが発生するメカニズムがどうしても分からない
- 867 :名無しさん@お腹いっぱい。:2015/07/08(水) 04:00:48.36 ID:FVdEFCye0.net
- > ■質問に際して
> OSの種類(XP/Vista/7)や32/64ビット版の違い、利用するAutoHotkeyのバージョンを明記すること。
のテンプレを守れてないと
> 1行(追加した)だけのスクリプト
とか
> 1行だけのスクリプト(と他の常駐スクリプト)
とか
超展開する心配が
あと秀丸のバージョンと、ノートPCや特殊なキーボードなら
その型番も書いたほうが回答がもらえる可能性が上がると思う
- 868 :名無しさん@お腹いっぱい。:2015/07/08(水) 04:31:13.59 ID:12TtXlEg0.net
- >>865
キーフックだけの常駐スクリプトでログを見るとaとあるので
つまりこれは秀丸エディタが発行しているキーイベント
a=Artificial/人工的
A2 01D a u 0.00 LControl 秀丸エディタ
28 050 a d 0.00 NumpadDown
28 050 a u 0.00 NumpadDown
なぜかよく分からないがリマップだとフックでも無視できないので
コマンド形式で対応するとできる
×NumpadDown::MButton
○NumpadDown::Send {MButton}
- 869 :名無しさん@お腹いっぱい。:2015/07/08(水) 12:44:01.77 ID:dv+Eplwp0.net
- >>868
ありがとうございます。
たしかにSendを使うと動きますね。
ただこの現象を解明したいので、引き続きNumpadDownが発生する原因を調べてみようと思います。
>>867
1行だけのスクリプトです。スクリプト全体がこの1行。
もちろん他のスクリプトは動いていません。
常駐系はAHKと秀丸エディタだけです。
AHK最新版64bitとWin7 64bitです。
- 870 :名無しさん@お腹いっぱい。:2015/07/08(水) 14:31:48.04 ID:dv+Eplwp0.net
- NumpadDownともMButtonとも無関係なリマップ
a::b
でもNumpadDownが発生してます。
つまりこれはCtrl+Alt+Hをトリガーとして秀丸エディタが発行しているイベントということですね。たぶん。
一応納得しました。
A2 01D d 0.41 LControl
A4 038 d 0.19 LAlt
48 023 d 0.20 h
A2 01D a u 0.00 LControl 秀丸エディタ
28 050 a d 0.00 NumpadDown
28 050 a u 0.00 NumpadDown
48 023 u 0.08 h
A4 038 u 0.17 LAlt
A2 01D u 0.30 LControl
- 871 :名無しさん@お腹いっぱい。:2015/07/09(木) 16:26:11.34 ID:LFuGtEvg0.net
- やったよー慣性スクロール関数できたよー
でもコレだとマウス下のウィンドウにスクロール送れないんで助けて下さい
Inertia_wheel(slip="3",axl="60"){
global WheelCount,scroll
If(A_Priorhotkey = A_thishotkey && A_TimeSincePriorHotkey<axl && A_TimeSincePriorHotkey != -1){
WheelCount++
}else{
If A_thishotkey contains *,~
StringTrimLeft,scroll,A_ThisHotkey,1
else
scroll := A_ThisHotkey
send,{Blind}{%scroll% 1}
return
}
SetTimer,Slip,10
}
Slip:
;TrayTip , , %WheelCount%, 10 ,1
If(WheelCount>0)
{
If(WheelCount>slip)
WheelCount-=0.2
else
WheelCount-=0.1
Send,{Blind}{%scroll% %WheelCount%}
}Else{
SetTimer,Slip,Off
}
Return
- 872 :名無しさん@お腹いっぱい。:2015/07/09(木) 16:35:52.39 ID:fdBqyQ2A0.net
- 一貫性スクロール?どういうことだ
- 873 :名無しさん@お腹いっぱい。:2015/07/09(木) 16:56:51.83 ID:nCQIwjZN0.net
- 使い方書いてなかった。
Wheelup::
Wheeldown::
Inertia_wheel()
で動くはず
- 874 :名無しさん@お腹いっぱい。:2015/07/09(木) 17:20:21.83 ID:96ih8Ia50.net
- >>871
↓のホイールリダイレクトを参照
http://ahk.xrea.jp/myscripts/index.html
- 875 :名無しさん@お腹いっぱい。:2015/07/10(金) 09:17:46.02 ID:itk+MHym0.net
- >>871
わざわざAHKで実現しなくてもほかの常駐フリーソフトでもこれ動くね
- 876 :名無しさん@お腹いっぱい。:2015/07/10(金) 10:37:15.00 ID:KSolukUs0.net
- それは言わないお約束
つかahkスクリプトでも類似従来品はここで何度も発表されてるし
自分で作るってところに意味があるんじゃね
- 877 :名無しさん@お腹いっぱい。:2015/07/10(金) 10:50:45.50 ID:O+854SBf0.net
- 自分で作らずに済むならそれがベスト
- 878 :名無しさん@お腹いっぱい。:2015/07/10(金) 10:55:40.60 ID:OCeyVYKD0.net
- でも、車輪の再発明って学習には有用だよね
- 879 :名無しさん@お腹いっぱい。:2015/07/10(金) 10:57:23.90 ID:kLvXw/Ik0.net
- >>877
そうだね、君はそういう生き方していけばいいんじゃないかな
- 880 :名無しさん@お腹いっぱい。:2015/07/10(金) 11:33:11.60 ID:yg8onbYi0.net
- 自分の理想とする物があればベストだろうけど、
違うときにカスタマイズできたりっていうのが自作のメリットでしょ
どちらも一長一短
- 881 :名無しさん@お腹いっぱい。:2015/07/10(金) 11:38:18.93 ID:D2msNeMB0.net
- しかしahkのホイールリダイレクトのソース見てもさっぱり分からんな
lpとかなんだこれ
- 882 :名無しさん@お腹いっぱい。:2015/07/10(金) 12:41:47.62 ID:OCeyVYKD0.net
- たぶん、wp はwParam、lp はlParamの略じゃなかな
lParamは上位ワードと下位ワードでマウスポインターの位置を示してるらしい
- 883 :名無しさん@お腹いっぱい。:2015/07/10(金) 14:23:54.50 ID:KSolukUs0.net
- ほい
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms645617%28v=vs.85%29.aspx
- 884 :名無しさん@お腹いっぱい。:2015/07/10(金) 14:51:02.54 ID:D2msNeMB0.net
- 俺には敷居が高すぎるよ……
SendMessage,0x84,0,%lp%,,ahk_id %ctrl%
If ErrorLevel=4294967295
MouseGetPos,,,,ctrl,2
Loop,%A_EventInfo%
PostMessage,0x020A,%wp%,%lp%,,ahk_id %ctrl%
このへんなにしてるのかわかんね
- 885 :名無しさん@お腹いっぱい。:2015/07/10(金) 14:52:09.98 ID:D2msNeMB0.net
- PostMessage,0x020A,
は>>883で分かった
- 886 :名無しさん@お腹いっぱい。:2015/07/10(金) 15:06:33.13 ID:Yl639HwT0.net
- >>884
http://www.autohotkey.com/board/topic/36328-windows-constants/
↑で84や20Aを探して、そのメッセージをググればある程度何しているのか分かる、はず
- 887 :名無しさん@お腹いっぱい。:2015/07/10(金) 15:13:30.77 ID:D2msNeMB0.net
- Sendmessage ってWindows固有コマンドにも使えるなんて知らなかったそんなの
- 888 :名無しさん@お腹いっぱい。:2015/07/10(金) 17:45:14.72 ID:KSolukUs0.net
- 0x84はWM_NCHITTEST
WheelRedirect.ahk冒頭のコメントにあるようにマウス下のコントロール判定に仕様
元管理人さんのスプリクトはコードから目的が追いにくいというのはあるな
参考用サンプルとして公開してくれてた割にはdefineの代わりに直値で書くし
コメントもほぼなしだったから逆引きがしづらくて泣ける
- 889 :名無しさん@お腹いっぱい。:2015/07/10(金) 18:53:16.88 ID:vFGWJlBv0.net
- 以下のスクリプトをtest.ahkで保存し、DetectHiddenWindows On 対象のホットキーを有効にしたいのですが
この場合はどう処理したら良いですか?。
よろしくお願いします。
#NoEnv
#NoTrayIcon
#InstallKeybdHook
#UseHook
;DetectHiddenWindows Off 対象のホットキー
1::msgbox, %A_DetectHiddenWindows%
;DetectHiddenWindows On 対象のホットキー
;SetTitleMatchMode, 2
#If WinExist("test.ahk - AutoHotkey")
2::msgbox, %A_DetectHiddenWindows%
#If
- 890 :名無しさん@お腹いっぱい。:2015/07/10(金) 20:28:43.02 ID:FeOC+rtp0.net
- >>889
15 スクリプトの起動とAuto-executeセクション
http://ahkwiki.net/Scripts
ホットキー(サブルーチン)のみ適応したいなら
複数行にしてホットキー内に書けばいい
- 891 :名無しさん@お腹いっぱい。:2015/07/10(金) 21:15:17.34 ID:kLvXw/Ik0.net
- >>889
2::
DetectHiddenWindows, On
;SetTitleMatchMode,
if WinExist()
MsgBox,
Return
- 892 :名無しさん@お腹いっぱい。:2015/07/10(金) 21:26:00.00 ID:OCeyVYKD0.net
- 関数作ればいいんじゃね?
; 引数は WinExist() と同じ
; 戻り値は表示なら 0 以外、非表示なら 0、存在しなければ -1
IsWinVisible(WinTitle:="", WinText:="", ExcludeTitle:="", ExcludeText:="") {
DHW := A_DetectHiddenWindows
DetectHiddenWindows, On
hWnd := WinExist(WinTitle, WinText, ExcludeTitle, ExcludeText)
DetectHiddenWindows, %DHW%
Return hWnd ? DllCall("IsWindowVisible", "Ptr", hWnd) : -1
}
- 893 :名無しさん@お腹いっぱい。:2015/07/10(金) 22:09:27.68 ID:SNn+/Ija0.net
- >>890>>891
有難うございます、複数行にする事で対処しました。
>>892
有難うございます。
しかし私には難しすぎな上、エラーが発生して対処出来ませんでした、すみません。
- 894 :名無しさん@お腹いっぱい。:2015/07/10(金) 23:11:40.75 ID:PRCaaYXy0.net
- Xキーを長押しで「−」が入力したい
- 895 :名無しさん@お腹いっぱい。:2015/07/10(金) 23:25:30.60 ID:pM1plsiZ0.net
- >>八八八
つ どうぞどうぞ
- 896 :名無しさん@お腹いっぱい。:2015/07/11(土) 14:00:34.99 ID:ssAo0IJP0.net
- >>871をもうチョット簡単にしてみたけど、これホイール数えるの、リダイレクトだと再現出来無くない?
Slip処理の中にloop置いてしまうと止まるし
Inertia_wheel(slip="3",axl="300"){
global WheelCount,scroll
If A_thishotkey contains *,~
StringTrimLeft,scroll,A_ThisHotkey,1
else
scroll := A_ThisHotkey
If(A_Priorhotkey = A_thishotkey && A_TimeSincePriorHotkey<axl && A_TimeSincePriorHotkey != -1){
WheelCount++
}else{
WheelCount := 1
}
SetTimer,Slip,10
}
Slip:
;TrayTip , , %WheelCount%, 10 ,1
If(WheelCount>0)
{
Send,{Blind}{%scroll% %WheelCount%}
If(WheelCount>slip)
WheelCount-=0.2
else
WheelCount-=0.1
}Else{
WheelCount := 0
SetTimer,Slip,Off
}
Return
- 897 :名無しさん@お腹いっぱい。:2015/07/11(土) 16:41:10.67 ID:Lb7qzCnB0.net
- SendでWheelup/Down投げてるってことは再帰呼び出し前提なのかな
SetTimerとかも扱い面倒だし全面的に見直さないと難しそう
リダイレクトで慣性スクロールなら
http://lukewarm.s101.xrea.com/up/の58.zipあたりが参考になるのでは
- 898 :名無しさん@お腹いっぱい。:2015/07/11(土) 17:08:09.63 ID:Pt3XXray0.net
- >>896-897
リダイレクト??
タイマーかサブルーチンの間違いじゃないのか?
- 899 :名無しさん@お腹いっぱい。:2015/07/11(土) 18:39:59.30 ID:jbNnXm050.net
- ネット上で公開されてる複数のスクリプトを登録して切り替えて使えるといいのに。
ありそうでないな
- 900 :名無しさん@お腹いっぱい。:2015/07/11(土) 19:07:15.02 ID:Lb7qzCnB0.net
- >>898
>874のホイールリダイレクトのことだよ
流れ読めないなら無理に加わろうとしなくていいから
- 901 :名無しさん@お腹いっぱい。:2015/07/11(土) 20:35:49.77 ID:bU70aI5o0.net
- 性格の悪さが滲み出てるなw
- 902 :名無しさん@お腹いっぱい。:2015/07/12(日) 01:49:38.92 ID:GcXLWyrm0.net
- >>894
何か説明面倒くさいから、触りだけ。
先ずは、以下の二つを用意する
(1)長押し判定用コード
サンプルコード集 - AutoHotkey Wiki
http://ahkwiki.net/SampleCodes
「1つのキーに3種類以上の動作割り当て」サンプルを改造する
(2度押し判定も含めて汎用関数化した方が、後々使えるので良いと思う)
(2)挿入する文字列によってはIMEオン状態だと困るのでIMEを制御する
(クリップボードを介して文字列挿入するならこの関数不要かな?)
eamat @Cabinet - IME制御
http://www6.atwiki.jp/eamat/pages/17.html
で、IME制御関数「IME.ahk」を入手
後は頑張ってちょ
>>899
どういうスクリプトを想定してるのか分からないが、
常駐スクリプトなら、一々手動で切り換えないで settimer で巡回すれば良いんでない?
それか、ahkで常駐のランチャーツール作ってそれに登録して個別に実行すれば良いんでないの?
んーんよく分かんないわ(´Д`)
- 903 :名無しさん@お腹いっぱい。:2015/07/13(月) 21:16:34.67 ID:A5DSKZz80.net
- マウスがおかしいのでチャタリングキャンセラを作ってみた
反応速度が0.01秒遅れるけど良い感じ
- 904 :名無しさん@お腹いっぱい。:2015/07/13(月) 23:43:34.29 ID:JCRIi78a0.net
- >>857
うちはSendPlayでは動かなかったわ
Win8.1でOneNote2013だからかも知れん
- 905 :名無しさん@お腹いっぱい。:2015/07/14(火) 14:08:25.04 ID:nsujvHmk0.net
- MGL使ってる時チャタリングはまずいので、100ミリ秒以下のクリックは認識しないでとばすとかできないかな。マウス買いに行くのめんどくさい
- 906 :名無しさん@お腹いっぱい。:2015/07/14(火) 14:30:29.97 ID:bm5eJYhp0.net
- チャタリングを起こしてるマウスでジェスチャー系ツールを使うと
押しっぱなしが多発するから早めに買い替えたほうがいい。
もしくはマイクロスイッチ(D2F-01 or D2F-01F)を買って自分で交換。
個人的にはD2F-01(1.47N)より低荷重のD2F-01F(0.74N)の方が疲れにくくて好き。
- 907 :名無しさん@お腹いっぱい。:2015/07/14(火) 14:32:02.40 ID:hQnduirZ0.net
- 他の人に適用できるか分からんが俺はこのやり方で大丈夫だったみたい
LButton::send,{LButton down}
LButton up::
loop,{
KeyWait, LButton, D T0.01
if ErrorLevel = 1
break
KeyWait, LButton,
}
send,{LButton up}
return
- 908 :名無しさん@お腹いっぱい。:2015/07/14(火) 14:34:40.05 ID:1Aa5UlaJ0.net
- 接点復活スプレーで一発で回復するなんて話もあるね
ヨドバシなら送料無料で410円だ
- 909 :名無しさん@お腹いっぱい。:2015/07/14(火) 14:42:27.77 ID:nsujvHmk0.net
- お金使うのは構わないしそのうち買い換えるけど、今すぐ買い換えるのが面倒臭いから最初からMGLに組み込めればいいなと思ったのさ
>>907
コレ参考に埋め込めるかやってみるよ。ありがとう
- 910 :名無しさん@お腹いっぱい。:2015/07/14(火) 17:34:56.29 ID:8alDAerP0.net
- オムロン製のスイッチは頻繁にチャタリング起こす。
インテリマウス10個入り購入したけど、2年位で全部チャタリング起こした。
2年で10個も駄目になるとかウンコ過ぎですよオムロンさん・・・。
- 911 :名無しさん@お腹いっぱい。:2015/07/14(火) 17:47:30.57 ID:5J4+LB+R0.net
- インテリマウスを貧民が使う……わけの分からない世の中だ
- 912 :名無しさん@お腹いっぱい。:2015/07/14(火) 20:30:31.57 ID:IDMmKwlc0.net
- インテリの貧民だっているだろうよ
- 913 :名無しさん@お腹いっぱい。:2015/07/14(火) 20:33:37.42 ID:en7mlv+t0.net
- 1個故障した時点でその商品はもう買わんな
- 914 :名無しさん@お腹いっぱい。:2015/07/14(火) 20:58:25.97 ID:+JNFeD9E0.net
- 初歩質ですみません、昨日の日付を得るにはどうしたら良いですか?
day += 1, days は出来るのに
day -= 1, days はNG…。なので
SetFormat, FLOAT, 02.0
if(a_dd = "01") {
if(a_mm a_dd = "0301") {
a := a_yyyy "0301", b := (a_yyyy-1.0) "0301"
a -= b, days
day := a_yyyy ((a = "366") ? "/02/29" : "/02/28")
}else {
day := RegExMatch(a_mm, "(01|05|07|08|10|12)")
? ((a_mm = "01") ? (a_yyyy-1.0) "/12/31" : a_yyyy "/" (a_mm-1.0) "/30")
: a_yyyy "/" (a_mm-1.0) "/31"
}
}else {
day := a_yyyy "/" a_mm "/" (a_dd-1.0)
}
MsgBox,,, % day,
return
こんなんしか思いつきません。もっとスマートにできないでしょうか?
- 915 :名無しさん@お腹いっぱい。:2015/07/14(火) 21:06:25.43 ID:ztG0+lqw0.net
- 俺も同じ問題に遭遇して散々悩んだ末に過去ログを見たらこんな答えがあったよ
day += -1,D
超シンプルw
- 916 :名無しさん@お腹いっぱい。:2015/07/14(火) 21:10:43.75 ID:+JNFeD9E0.net
- >>915
なんてこった!そんなやり方が。
即レスサンクス
- 917 :名無しさん@お腹いっぱい。:2015/07/14(火) 21:42:20.69 ID:GcduKYQ70.net
- RegExReplaceの検索条件や置換条件の中で変数を用いることはできないのでしょうか?
- 918 :名無しさん@お腹いっぱい。:2015/07/14(火) 22:49:06.82 ID:LfZIb0hA0.net
- >>917
できる
関数など式形式のコマンドでは、変数は%で括らずそのまま書こう
RegExReplace(hoge, hage, homo)
ちなみに%で括った場合は、その変数内の値を変数名と見なす
以下の場合、変数aaaを参照してしまう
hoge := "aaa"
RegExReplace(%hoge%, 〜〜)
- 919 :名無しさん@お腹いっぱい。:2015/07/14(火) 23:14:43.54 ID:GcduKYQ70.net
- ありがとうございます
使い道がぐっと増えた気がします
- 920 :名無しさん@お腹いっぱい。:2015/07/15(水) 01:52:46.44 ID:UWuEXNY80.net
- すいません、AHKって修飾キー2つ押しをホットキー化出来ないのですか?
Ctrl 押しながら Win に機能を割り当てるのは無理ですか?
- 921 :名無しさん@お腹いっぱい。:2015/07/15(水) 02:48:39.86 ID:DwFw1Wd70.net
- 難しいですよ。頑張って勉強できますか?
- 922 :名無しさん@お腹いっぱい。:2015/07/15(水) 02:55:25.55 ID:Ap3S46QB0.net
- >>920
#If GetKeyState()
- 923 :名無しさん@お腹いっぱい。:2015/07/15(水) 03:59:55.29 ID:oStWEal20.net
- >>910
インテリマウスって偽物がいろいろ出回ってたけど
家電店とかの仕入れがしっかりしてそうなところで買ってた?
- 924 :名無しさん@お腹いっぱい。:2015/07/15(水) 07:32:33.35 ID:ODxmyac40.net
- >>920
^LWIN::
^RWIN::
#Ctrl::
- 925 :名無しさん@お腹いっぱい。:2015/07/15(水) 11:15:21.69 ID:aP0mKxx40.net
- http://ux.getuploader.com/autohotkeyl/download/75/ACC_Unicode.zip
需要があるか分からんけど、フォーラムのAccInfoViewer.ahkを元に少し修正したものをうpした。
・チェックマークの判別を追加。※Stateの()内の値の変化で判別
・詳細表示/非表示切り替え時のアニメーションを無効。
・ウィンドウサイズを少し大きめに。
それとUnicode版用のACC.ahk(以前フォーラムで拾ったもの)
とマウスカーソル下の情報を取得するサンプル関数付き。 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
- 926 :名無しさん@お腹いっぱい。:2015/07/15(水) 11:18:51.76 ID:ZQ50+71T0.net
- #If GetKeyState(”Lctrl”,”P”)
LWin::機能
みたいな感じ
- 927 :名無しさん@お腹いっぱい。:2015/07/15(水) 11:19:32.09 ID:ZQ50+71T0.net
- >>925
何するものなん?
- 928 :名無しさん@お腹いっぱい。:2015/07/15(水) 11:31:22.46 ID:aP0mKxx40.net
- >>927
AU3_spy.exe の拡張版みたいなもの、実際に試してみると分かると思う。
ダウンロードして AccInfoViewer_kai.ahk を実行して
左上の 田 (四角枠に+)の部分をドラッグしたままマウスカーソルを色んな所に移動してみて。
ドラッグを解除したら右上の「Show Acc Structure」をクリックするとターゲットウィンドウ内の
各々についての取得情報を見れたりする。
- 929 :名無しさん@お腹いっぱい。:2015/07/15(水) 11:39:08.65 ID:ZQ50+71T0.net
- へー。便利かも。AccessibleInfoって条件に使えるん?
- 930 :名無しさん@お腹いっぱい。:2015/07/15(水) 11:54:04.73 ID:aP0mKxx40.net
- 付属の ACC.ahk をLibフォルダに突っ込むか#Includeすれば条件として使える。
使い方は付属のサンプル関数やACC.ahkを直接見ればなんとかなる。
AccInfoViewer_kai.ahkを参考にするなら358〜370行までと639行以降(Acc Library)かな。
- 931 :名無しさん@お腹いっぱい。:2015/07/15(水) 12:18:23.91 ID:QMsD/Wdl0.net
- http://pastebin.com/KBYh38x2
ACC.ahkを使ってブラウザのタブをダブルクリックで閉じるものがHDDに残ってたんで貼ってみる
- 932 :名無しさん@お腹いっぱい。:2015/07/15(水) 12:25:56.44 ID:aP0mKxx40.net
- >>925 のサンプルが間違ってた( ChildId のところを Child にしていた)ので修正版をうp
http://ux.getuploader.com/autohotkeyl/download/76/ACC_Unicode_and_AccInfoViewer_kai.zip 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
- 933 :名無しさん@お腹いっぱい。:2015/07/15(水) 12:54:23.34 ID:UWuEXNY80.net
- >>924
そのままコピペして動きましたありがとう。
>>922
10分間調べたけど実装できなかったので頭の引き出しに保管しましたありがとう。
- 934 :名無しさん@お腹いっぱい。:2015/07/15(水) 12:56:12.15 ID:ZQ50+71T0.net
- おー、これ、タスクトレイ操作もできるかも?
- 935 :名無しさん@お腹いっぱい。:2015/07/15(水) 13:02:41.09 ID:UWuEXNY80.net
- >>926
気付くの遅れた、ありがとう。
しかし何故か動かなかったorz
#If GetKeyState("LCtrl","P")
LWin::
Run,taskmgr
Return
#If
- 936 :名無しさん@お腹いっぱい。:2015/07/15(水) 14:34:35.23 ID:Ap3S46QB0.net
- >>935
#If GetKeyState("Ctrl","P")
^LWin::MsgBox
#If
- 937 :名無しさん@お腹いっぱい。:2015/07/15(水) 14:36:31.98 ID:Ap3S46QB0.net
- この場合は無駄だなw
- 938 :名無しさん@お腹いっぱい。:2015/07/15(水) 16:41:42.96 ID:UWuEXNY80.net
- >>936
重ねてありがとう!
- 939 :名無しさん@お腹いっぱい。:2015/07/15(水) 18:28:48.87 ID:EnGBFw5/0.net
- >>918
マジか・・
今までの苦労は一体
- 940 :名無しさん@お腹いっぱい。:2015/07/16(木) 12:08:59.74 ID:MCc7AOhZ0.net
- >>931
これサンプルもひとまとめにして先頭と末尾にgotoとラベル書けばMGLで使えるのね。マウス下の奪うって意味でも相性が良いと思うんでやっとくと幸せになれる
- 941 :名無しさん@お腹いっぱい。:2015/07/16(木) 20:36:44.77 ID:sVq38FFM0.net
- 関数の集合体なんだからgotoとかそういうのいらないな
カスタム条件式に
"hoge.ahk" == Acc_GetName()
"ボタン" == Acc_GetRole()
とかでMGLがタスクトレイ上でも動くようになった。これは便利だ
- 942 :名無しさん@お腹いっぱい。:2015/07/16(木) 20:38:03.52 ID:sVq38FFM0.net
- あ、Acc.ahkにサンプル関数をコピペしてプラグインフォルダに直入れしたらうごいたよ
- 943 :名無しさん@お腹いっぱい。:2015/07/16(木) 20:41:12.31 ID:E0egZ+Lu0.net
- 無操作時間がしばらく続けば離席時の処理に切り替えてくもの作ろうとして
うまくいかないなぁと思ってたら
#InstallMouseHook を追加したり
動画再生ソフトの再生中はスクリーンセーバーをオフにするのチェックはずしたらうまくいくようになった
- 944 :名無しさん@お腹いっぱい。:2015/07/17(金) 06:37:32.55 ID:JS78MbMA0.net
- UACがあるOSで管理者権限必須の実行ファイルを見るとアイコン右下に盾のマークが表示されますが、AHKでこのマークが表示されるかされないか、管理者権限が必須かどうかを調べる方法はありませんか?
- 945 :名無しさん@お腹いっぱい。:2015/07/17(金) 18:09:20.55 ID:/xeH24bk0.net
- >>944
何でそんな面倒な処理が必要なのか書かれていないが
AHKを管理者権限で起動すればいいだけでは?
- 946 :名無しさん@お腹いっぱい。:2015/07/17(金) 20:32:54.93 ID:NXCA6zjcR
- >>27
管理者権限で動作中のプログラムから通常権限でプログラムを起動する方法〜〜〜
あらかじめタスクスケジューラに対象プログラムを起動するだけのタスクを登録しておく。
当然、Run with highest privileges はオフにしておく。
トリガーは設定不要。
あとは、コマンドラインから任意に起動できる。
schtasks /run /tn "タスク名"
これをAHKからRunすれば良い。
Run,schtasks /run /tn "タスク名"
〜〜
ちなみにこの方法で、逆に管理者権限で起動の際のUACダイアログをスキップすることも出来る。
- 947 :名無しさん@お腹いっぱい。:2015/07/17(金) 21:31:59.68 ID:r8EDUmrt0.net
- str := "abc", var := "123" str "456" str "789hoge"
RegExMatch(var, "i)(\d+)" str "(\d+)" str "(\d+)(?=hoge)", $)
MsgBox,,, % $1 "`," $2 "`," $3 str, ;123,567,789abc
MsgBox,,, % RegExReplace(var, "i)(\d+)" str "(\d+)" str "(\d+)(?=hoge)", "$1`,$2`,$3" str, cnt) "`n" cnt ;123,567,789abchoge
return
;(´・ω・`)・・・なんでこうなるの
- 948 :名無しさん@お腹いっぱい。:2015/07/17(金) 22:13:33.98 ID:vsifWqTO0.net
- >>947
"i)(\d+)" str "(\d+)" str "(\d+)(?=hoge)"
に一致するのは Var(123abc456abc789hoge)の 123abc456abc789 になる。
RegExReplace()は文字列中の正規表現パターンに一致する箇所を
別の文字列に置換して返すので(流行らせるページから引用)
var(123abc456abc789hoge) の 123abc456abc789 を 123,567,789abc に置き換えて
123,567,789abchoge になる。
- 949 :名無しさん@お腹いっぱい。:2015/07/17(金) 22:34:02.64 ID:r8EDUmrt0.net
- > パターンに一致する箇所を別の文字列に置換して返す
ナルホド…そうか、消さない限り、元の文字列もくっついてくるんですね。
ありがとうございました。スッキリした。
- 950 :名無しさん@お腹いっぱい。:2015/07/19(日) 06:35:09.19 ID:2mJ9QIEn0.net
- SMAILという送信専用コマンドラインメールソフトでメール送ろうとしたらエラーの連続で困り果てたけど
Run , .....¥smail.exe .......
じゃなくて
Run , .....¥smail .......
でいけたんすね・・・・・
- 951 :名無しさん@お腹いっぱい。:2015/07/19(日) 07:13:46.68 ID:AQ9JKLd40.net
- ahkスクリプトにドラッグ&ドロップした(渡した)ファイルを予め決めたフォルダに
移動させたいんですが、「ドロップされたファイルを」ってどういうふうに書けばいいんでしょうか?
たとえば
FileMove, C:\My Documents\List1.txt, D:\Main Backup\
のList1.txtの部分をドロップされたファイルにしたいのです。教えてください
- 952 :名無しさん@お腹いっぱい。:2015/07/19(日) 07:29:48.37 ID:sPj33igg0.net
- コマンドライン引数
- 953 :名無しさん@お腹いっぱい。:2015/07/19(日) 08:14:53.52 ID:yJi3Wr1t0.net
- >>951
Loop, %0%
{
FileMove, % %A_Index%, D:\Main Backup\
}
Installerを使ってAHKをインストールしてなかったら要レジストリ編集
>>8のQ5が参考になる
- 954 :名無しさん@お腹いっぱい。:2015/07/19(日) 15:33:22.16 ID:MKYqbkSx0.net
- とりあえずwikiを見る、見直すくせを。
http://ahkwiki.net/GUI
GuiDropFiles参照
- 955 :名無しさん@お腹いっぱい。:2015/07/19(日) 16:52:57.96 ID:yhyzj4ew0.net
- >見直すくせを。
自虐ネタか?
久しぶりにこのスレで笑った
- 956 :名無しさん@お腹いっぱい。:2015/07/20(月) 04:26:19.15 ID:RKVsNGlM0.net
- var = 5
Clipboard = 123456789123456789
Clipboard := RegExReplace(Clipboard, ".*?"var, "")
こうすると結果が「6789」になるんですが、この場合は最小マッチはどうすればできるんでしょうか
- 957 :名無しさん@お腹いっぱい。:2015/07/20(月) 04:43:20.11 ID:Kt/+QQ5X0.net
- "^.*?" var
- 958 :名無しさん@お腹いっぱい。:2015/07/20(月) 04:48:33.67 ID:kDbgwVPK0.net
- >>956
Var = 123456789123456789
MsgBox % RegExReplace(Var, ".*?5", "",, 1)
- 959 :名無しさん@お腹いっぱい。:2015/07/20(月) 05:00:06.79 ID:RKVsNGlM0.net
- ^を使う方法と置き換え回数の指定とどちらでも思い通りになりました
ありがとうございました
まだまだ理解が足りないようで勉強になります
- 960 :名無しさん@お腹いっぱい。:2015/07/20(月) 05:33:40.32 ID:raNxgfNT0.net
- AutoHotkeyというより正規表現の問題。
正規表現はできる限り最長の文字列とマッチしようとする。
- 961 :名無しさん@お腹いっぱい。:2015/07/20(月) 05:38:34.55 ID:kDbgwVPK0.net
- >>960
?入ってるしちょっと違いと思うが・・・。
- 962 :名無しさん@お腹いっぱい。:2015/07/20(月) 06:29:39.42 ID:raNxgfNT0.net
- まぁ微妙だけどな。
12345が空白に置換された後、
678912345がまた空白に置換されてるから、
先頭からを意図する必要があるのか無いのかで解釈が変わる。
空白ではなく適当なアルファベットかなにかで置換すればすぐ気付けたろうに。
- 963 :名無しさん@お腹いっぱい。:2015/07/20(月) 15:09:58.29 ID:4RO9KRwC0.net
- は?
- 964 :名無しさん@お腹いっぱい。:2015/07/20(月) 19:51:53.85 ID:myuReIcN0.net
- >>27
遅レスだが、未解決のようなので回答。
〜〜〜管理者権限で動作中のプログラムから通常権限でプログラムを起動する一般的な方法〜〜〜
あらかじめタスクスケジューラに対象プログラムを起動するだけのタスクを登録しておく。
当然、Run with highest privileges はオフにしておく。
トリガーは設定不要。
あとは、コマンドラインから任意に起動できる。
schtasks /run /tn "タスク名"
これをAHKからRunすれば良い。
Run, schtasks /run /tn "タスク名"
〜〜
ちなみに、このようにタスクスケジューラーを経由することで、
逆に管理者権限でプログラムを呼ぶ際に、UACダイアログをスキップすることも出来る。
- 965 :名無しさん@お腹いっぱい。:2015/07/21(火) 07:43:32.90 ID:imJ3Q2CJ0.net
- 面白いものを見つけた
字幕速記人 特製機械で1秒6文字!ニュース番組数秒遅れで対応
http://headlines.yahoo.co.jp/hl?a=20150720-00000117-spnannex-ent
字幕速記人用の特製キーボード
http://www.sponichi.co.jp/car/news/2015/07/20/gazo/G20150720010773790.html
https://www.youtube.com/watch?v=vSRpF8eTBJ0
これって、AHKを使って入力変換スクリプトを作ったら
似たようなもの作れるよね
- 966 :名無しさん@お腹いっぱい。:2015/07/21(火) 21:58:06.44 ID:ffKSDUHa0.net
- > これって、AHKを使って入力変換スクリプトを作ったら
> 似たようなもの作れるよね
既に作った人がいるよ。
- 967 :名無しさん@お腹いっぱい。:2015/07/21(火) 22:36:21.92 ID:FwoV3yQW0.net
- 誰かの通った道
- 968 :名無しさん@お腹いっぱい。:2015/07/22(水) 16:33:43.85 ID:hMHRIjXL0.net
- >>953
ありがとうございました。成功しました!% %A_Index%ってのがまったく意味わかりませんが
なんとかコピペしたら動いてくれています。ファイラから任意で選んだのを渡すってのも
やりたかったのですが、同じスクリプトでうごいてくれています。
>>952
そうなんでしょうか?自分にはまだわかりません。ヒントありがとうございました。
>>954
特殊サブルーチンラベルっていうのでしょうか?難しい。
- 969 :名無しさん@お腹いっぱい。:2015/07/22(水) 17:46:08.06 ID:oymWcwUW0.net
- 清々しすぎんだろ
調べもしないでまったく意味わかりませんコピペしましたはないわ
嘘でもいいから調べたけど難しすぎて理解できませんでした言うくらいの配慮はもてよ
- 970 :名無しさん@お腹いっぱい。:2015/07/22(水) 17:56:34.59 ID:mVleZPUB0.net
- 顔も見せないどっかの誰かにそんな誠意が必要か?
- 971 :名無しさん@お腹いっぱい。:2015/07/22(水) 18:24:43.95 ID:sDhj9phK0.net
- 2ちゃんで顔見せ要求されても困るが
- 972 :名無しさん@お腹いっぱい。:2015/07/22(水) 18:30:24.38 ID:POGsbABW0.net
- いきなり完答書いて自分だけ気分良くなってるアホが悪い
- 973 :名無しさん@お腹いっぱい。:2015/07/22(水) 18:34:22.30 ID:s5en+coD0.net
- >>972
じゃあお前が詳しく解説してやれよ
- 974 :名無しさん@お腹いっぱい。:2015/07/22(水) 21:10:40.99 ID:V0+jogaj0.net
- もう質問禁止スレでも作れw
- 975 :名無しさん@お腹いっぱい。:2015/07/22(水) 23:56:37.74 ID:hMHRIjXL0.net
- >>969
w
- 976 :名無しさん@お腹いっぱい。:2015/07/23(木) 00:00:43.65 ID:bV/68n2E0.net
- 知性を感じないレスするやつほどアンカだけのレスするんだよな
- 977 :名無しさん@お腹いっぱい。:2015/07/23(木) 00:04:30.08 ID:e5fDCgop0.net
- お前はこのスレにどうなって欲しいんだよ
- 978 :名無しさん@お腹いっぱい。:2015/07/23(木) 00:16:34.15 ID:dOwokymO0.net
- 無礼すぎて礼なしの方がよっぽどいましなレベルだわ
回答者はクレクレ幇助で叩かれてるし災難もいいとこだな
- 979 :名無しさん@お腹いっぱい。:2015/07/23(木) 02:14:49.63 ID:7UpKvqlZ0.net
- ^a::
処理1
return
^b::
処理2
return
^c::
処理1
処理2
return
このように、^cの処理が他のホットキーの組み合わせになっている場合、簡略化して書けませんか?
^c::
Send,^a
Send,^b
return
では動きませんでした。
#InstallKeybdHook #UseHook を宣言しているせいでしょうか?
やはり処理1と2を関数化して、
^a::shori1()
^b::shori(2)
^c::
shori1()
shori2()
return
のようにするのが良いのでしょうか? なにか勘違いか、大幅に間違っている点はありますか?
- 980 :名無しさん@お腹いっぱい。:2015/07/23(木) 02:30:18.34 ID:M70SAws30.net
- ^c::
gosub,^a
gosub,^b
return
- 981 :名無しさん@お腹いっぱい。:2015/07/23(木) 02:31:36.60 ID:ubCTyG/X0.net
- gosub ^a は?
- 982 :名無しさん@お腹いっぱい。:2015/07/23(木) 02:33:34.79 ID:T2WY7oq90.net
- >>979
多用するなら関数で簡単ならGosubで十分
ホットキーもラベルとして利用できる
フックの認識はあってる
^c::
Gosub ^a
Gosub ^b
return
- 983 :名無しさん@お腹いっぱい。:2015/07/23(木) 02:34:38.17 ID:ubCTyG/X0.net
- 3人での結婚生活はカオス
- 984 :名無しさん@お腹いっぱい。:2015/07/23(木) 10:25:07.58 ID:BCiaxGPR0.net
- ラベルに飛ぶという同じやり方にしても、自分ならこうするかなー(関数にするのと変わらないが)
^a::gosub,shori1
^b::gosub,shori2
^c::
gosub,shori1
gosub,shori2
return
shori1:
処理 1
return
shori2:
処理 2
return
ラベル^aへ飛ぶやり方だと、こういう場合↓処理 2の(2)へ飛びたい時困るよね
下の例は単純だから、下の #IfWinActive, ウインドウ B〜#If を上へ持って行けば良いだけだが…
#IfWinActive, ウインドウ A
^a::処理 1 ;(1)
#If
#IfWinActive, ウインドウ B
^a::処理 2 ;(2)
#If
^c::gosub,^a
勘違いしてたらスマン
- 985 :名無しさん@お腹いっぱい。:2015/07/23(木) 12:18:57.17 ID:Wrp2nC720.net
- ん?
よくわからんが、下記で、^cを実行したとき
ウインドウAにフォーカスがあったときは実行されないんだっけ?
^c::の前後には#ディレクティブがないから^cには制約がかからずすべてのウインドウにフォーカスがあったときに
実行されると思ってたんだが
^c::gosub ^b
#IfWinActive, ウインドウ A
^a::処理 1
#If
#IfWinActive, ウインドウ B
^b::処理 2
#If
- 986 :名無しさん@お腹いっぱい。:2015/07/23(木) 17:24:35.85 ID:CQfxvWAY0.net
- >>980-982
ありがとうございます。
あぁ・・・リファレンスに書いてありますね。気が付かなかったョ
有るかどうか分からない機能を見つけ出すのはムツカシイ・・・・・・・・・・・
- 987 :名無しさん@お腹いっぱい。:2015/07/23(木) 17:25:16.86 ID:CQfxvWAY0.net
- >>984-985
追加情報ありがとうございます。
- 988 :名無しさん@お腹いっぱい。:2015/07/23(木) 17:25:52.91 ID:mVpwhHY60.net
- 次スレが立つ前に埋まってしまった場合の避難所
AutoHotkey スレッド part17
http://anago.2ch.net/test/read.cgi/software/1383489925/
- 989 :名無しさん@お腹いっぱい。:2015/07/29(水) 16:22:54.12 ID:5xNyVhRM/
- 「#」
この文字自体の出力ができないとは知らなかった。
意外な欠点だわ
- 990 :名無しさん@お腹いっぱい。:2015/07/31(金) 18:01:28.73 ID:ZhH5BJs94
- ホットストリングがたまに効かないときがあるんだけどなんで?
タブキーで動作させてるんだけど。
- 991 :名無しさん@お腹いっぱい。:2015/09/11(金) 09:51:20.38 ID:xH4J8IQl6
- test
- 992 :名無しさん@お腹いっぱい。:2015/09/13(日) 20:55:34.48 ID:Qx/zjqmTT
- (・∀・)
総レス数 992
326 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★