1 :
名無しさん@お腹いっぱい。
2015/07/26(日) 20:34:57.30 ID:3Hxp3NyD0
2 :
名無しさん@お腹いっぱい。
2015/07/26(日) 20:37:02.93 ID:3Hxp3NyD0
3 :
名無しさん@お腹いっぱい。
2015/07/26(日) 20:38:55.75 ID:3Hxp3NyD0
4 :
名無しさん@お腹いっぱい。
2015/07/26(日) 20:40:40.55 ID:3Hxp3NyD0
■ リマップ・ホットキー割り当て
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/07/26(日) 20:45:57.07 ID:TPDevIuG0
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/07/26(日) 20:47:36.57 ID:TPDevIuG0
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/07/26(日) 20:49:09.47 ID:TPDevIuG0
■ 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/07/26(日) 21:00:19.79 ID:TPDevIuG0
Q5:AHK(A32)、AHKLx86(U32)、AHKLx64(U64)の共存は出来る?
A5:それぞれを違うフォルダにインストールする(最新版は分ける必要無し)
但し、インストーラーを使って最後にインストールしたAutohotkeyに対して
ahkファイルの関連付けが行われるので、レジストリエディタ(Regedit.exe)や
FileTypesMan等のツールを使って関連付を変更してください。
ahkファイルをAHK(A32)、ahlファイルをAHKLx86(U32)、ah6ファイルをAHKLx64(U64)
といったように別々の拡張子に関連付けが可能です。
それぞれに関連付けしたファイルに対してドラッグアンドドロップを有効にするにはレジストリの
[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/07/26(日) 21:05:18.20 ID:ZZbYoBXG0
■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/07/26(日) 21:13:12.90 ID:ZZbYoBXG0
11 :
名無しさん@お腹いっぱい。
2015/07/26(日) 21:20:25.62 ID:ZZbYoBXG0
■質問する場合のアドバイス
「○○という処理をするにはどういうコードを書いたらできますか?」 では返答は無いでしょう。
「○○という処理をすることを目的に、このようなスクリプトを組みましたがうまく動きません
どこを修正すればいいですか?」 という質問なら返答が付きやすい。
もっと言えば、「動かない」だけではなく、「××といった想定外の動作になります」ならベター
スクリプトをロクに書かずに答を教えてくれ、では単なるクレクレとみなされます。
なぜそれが嫌がられるかと言えば、自分で学ぼうとも調べようともせずにまたクレクレするだろうと思われるからです。
12 :
名無しさん@お腹いっぱい。
2015/07/27(月) 01:37:14.42 ID:S5otcsZd0
● 分からない理由 ●
1. 過去ログを読まない。
2. 読んでても肝心な所が見えてない。
3. 検索能力が低い。
4. そもそも検索する気がない。
5. 類推という概念がない。
6. それ以前に普通に頭が悪い。
<わからない11大理由>
1.読まない …現行スレ、テンプレ、取説などを読まない。読む気などさらさらない。
2.調べない …過去スレ、ググるなど最低限の内容も自分で調べようとしない。
3.試さない …めんどくさいなどの理由で実行しない。する気もない。
4.覚えない …人から聞いて、楽して得た答えは身に付かないから、すぐに忘れる。
5.説明できない …何に困っているのか、第三者に正確に伝わる文章が書けない。
6.理解力が足りない …理解力以前の問題で理解しようとしない。
7.人を利用することしか頭にない …甘え根性でその場を乗り切ろうとする。
8.感謝しない …教えてもらって当たり前。事がすんだらさようなら。
9.逆切れする …自分の思うようにならないと逆切れする。
10.開き直る …自分の思うようにならないと開き直る。
11.2ちゃんねるをお客様相談室だと思っている。
13 :
名無しさん@お腹いっぱい。
2015/07/27(月) 01:37:55.77 ID:S5otcsZd0
★教えて君五大要素★
1 読まない (文盲)
2 調べない (能なし)
3 試さない (発想力欠如のアホ)
4 理解力が足りない (馬鹿)
5 人を利用することしか頭にない (死ね)
YES → 【見つかった?】 ─ YES → じゃあ聞くな死ね
/ \
【探した?】 NO → なら、ねぇよ
\
NO → 死ね
14 :
名無しさん@お腹いっぱい。
2015/07/30(木) 11:35:03.48 ID:M8B+XcpF0
windows10でwindow spy使ったら
応答不能になって終了しても画面に残っちゃう
15 :
名無しさん@お腹いっぱい。
2015/07/30(木) 18:52:43.04 ID:YiGVsR6Y0
Win10はウィンドウの左右と下の枠線7px分を透過して見えなくしてるだけだな
WinMoveで画面端に動かすと上だけぴったりで後は隙間が空く
16 :
名無しさん@お腹いっぱい。
2015/07/31(金) 13:01:58.84 ID:F6kc0r2b0
17 :
名無しさん@お腹いっぱい。
2015/07/31(金) 13:51:46.28 ID:SCSL0lts0
ux.getuploader.com
はRock54のNGワードのようです
18 :
名無しさん@お腹いっぱい。
2015/07/31(金) 14:44:47.50 ID:AnTnCFEn0
19 :
名無しさん@お腹いっぱい。
2015/07/31(金) 18:23:23.62 ID:063vTjGG0
loopで次々ファイル情報を変数に入れて表示ってできませんか?
フォルダの中のファイルをリストアップしたいんです
20 :
名無しさん@お腹いっぱい。
2015/07/31(金) 18:35:39.16 ID:dngwMttJ0
できるよ
21 :
名無しさん@お腹いっぱい。
2015/07/31(金) 18:55:52.29 ID:063vTjGG0
Loop,%A_scriptdir%\*.*,,1
{
Filelist = %Filelist% %A_LoopFileFullPath%%A_LoopFileTimeModified% `n
}
あ、できたわ。自己解決しました
22 :
名無しさん@お腹いっぱい。
2015/07/31(金) 20:27:08.57 ID:sAPF/B6Z0
Run, cmd /c POWERCFG /GLOBALPOWERFLAG off /OPTION RESUMEPASSWORD ;(スタンバイ復帰時にパスワード入力を求めない)をした上で
Run, cmd /c SCHTASKS /CREATE /RU %A_ComputerName%\%A_UserName% /RP %pwd% /TN "%taskname%" /TR "%batfile%" /SC ONCE /SD %date% /ST 00:00:00 >%A_Temp%\stdout.txt
みたいにして新規タスクを作ったとき、ahkから「タスクを実行するためにスリープを解除する」設定を有効にする方法ってないです?
SCHTASKS /CREATEや/CHANGEのコマンドラインスイッチでそれらしきものは無いようだし
Run, properties %A_WinDir%\Tasks\%taskname%.job
でもタスクのプロパティは開かないし、レジストリをタスク名で検索してもヒットしないし、どうしたものやら…。
23 :
名無しさん@お腹いっぱい。
2015/07/31(金) 20:27:37.90 ID:sAPF/B6Z0
ちなみに過去ログのGetCommandLine()関数で「タスクのプロパティ」ウィンドウのコマンドラインを調べても
C:\WINDOWS\Explorer.EXE と出るだけでした。
;######################################################################################################
; Function: GetCommandLine
; Description:
; pidを指定してコマンドラインを取得する関数
; 出展:AutoHotkey スレッド part8(
http://pc12.2ch.net/test/read.cgi/software/1243005818/291 )
; Syntax: GetCommandLine([pid = 0, WinTitle = "A"])
;######################################################################################################
GetCommandLine(pid=0, WinTitle="A") {
ptr := (NumGet(DllCall("kernel32.dll\GetProcAddress"
, "UInt",DllCall("kernel32.dll\GetModuleHandle", "Str","Kernel32")
, "Str","GetCommandLineA", "UInt")+1))
hp := DllCall("kernel32.dll\OpenProcess", "UInt",0x001F0FFF, "UInt",0, "UInt",pid, "UInt")
VarSetCapacity(res, 1024)
DllCall("kernel32.dll\ReadProcessMemory", "UInt",hp ,"UInt",ptr, "UIntP",addr, "UInt",4, "UInt",0)
DllCall("kernel32.dll\ReadProcessMemory", "UInt",hp ,"UInt",addr, "Str",res, "UInt",1024, "UInt",0)
DllCall("psapi\CloseProcess", "UInt",hp)
return, res
}
24 :
名無しさん@お腹いっぱい。
2015/08/01(土) 14:12:13.05 ID:myyyIzKF0
誰か助けてくれ……。
例えば、ファイルを右クリックしてDを押すっていう一連の作業は、
割り当てたいkey::Send,{RButton}Send,L
じゃダメなの?
割り当てたいkey::Send,{RButton & Send,Lにしても無理だし……。
何がいけないんだろう……。
25 :
名無しさん@お腹いっぱい。
2015/08/01(土) 14:29:46.99 ID:3ysW3zO/0
まず解説サイトよく読みなさいよ
Send,{RButton}してもフォーカスが当たってるファイルをクリックするんじゃなくて、いまカーソルが在るとこを右クリックするだけ。代わりにキーボード右下にあるコンテキストメニューキー{AppsKey}を送ればいい
あと1キーごとにSend,入れなくていい。BAKAと押したければSend,BAKAでいい
つまり、Send,{AppsKey}L
26 :
名無しさん@お腹いっぱい。
2015/08/01(土) 14:50:16.94 ID:myyyIzKF0
>>25 ごめん。説明が悪かった。
ファイルじゃなくて、とある特定の場所で、
右クリックしたのちにLを押したいんだわ。
だから、Send,{AppsKey}Lってやっても無理だわ……。
27 :
名無しさん@お腹いっぱい。
2015/08/01(土) 14:52:09.81 ID:myyyIzKF0
28 :
名無しさん@お腹いっぱい。
2015/08/01(土) 14:55:23.95 ID:HkIEirnZ0
>>24 ヘルプやリファレンスをよく見よう
key::Send,{RButton}Send,L
ではダメ
key::
Send,{RButton}
Send,L
return
もしくは
key::Send,{RButton}L
29 :
名無しさん@お腹いっぱい。
2015/08/01(土) 15:19:23.00 ID:myyyIzKF0
>>28 ありがとう。
key::
Send,{RButton}
Send,L
return
こういう方法を見たことあったから、Send,が必要だと思ったんだよ。
この方法だと改行しないとダメみたいだな。
30 :
名無しさん@お腹いっぱい。
2015/08/01(土) 15:38:10.75 ID:myyyIzKF0
十字キーの上下だけ、あるアプリで動作しないんだけど?
左右はちゃんと割り当てられた通りに入力できる。上下だけ機能しない……。
そのほかのアプリでは上下左右機能する。
理由は何が考えられると思います?
ちなみに、無変換+jkliにそれぞれ割り当ててます。
31 :
名無しさん@お腹いっぱい。
2015/08/01(土) 16:08:56.05 ID:kE7wEdk30
最近暑いからそのせいじゃないかな
32 :
名無しさん@お腹いっぱい。
2015/08/01(土) 16:17:32.86 ID:HkIEirnZ0
あるアプリって何?それが分からないとどうしようもないけど。
可能性としてはアプリ側でハード入力だけ受け付けるようにしている可能性あり。
作っている途中で仕様変更して、他のキーはソフト入力を受け付けるとかある。
33 :
名無しさん@お腹いっぱい。
2015/08/01(土) 16:31:23.98 ID:WqWbJZkt0
上みたいな仕様勘違いやTypo等のケアレスミスの可能性
34 :
名無しさん@お腹いっぱい。
2015/08/01(土) 17:02:38.08 ID:myyyIzKF0
>>32 MicrosoftのOneNote2013ですね。
Auto Hot Keyで設定した十字キーの上下だけ機能しない……。
でも、KeySwapっていうレジストリ?をいじるソフトだと機能します。
なんでだろう。
35 :
名無しさん@お腹いっぱい。
2015/08/02(日) 03:49:33.76 ID:jgpMVIyI0
>>34 sendmode play
もしくは
sendplay,{up}
>KeySwapっていうレジストリ?をいじるソフトだと機能します。
レジストリはシステム設定変更だから動くのは当然
36 :
名無しさん@お腹いっぱい。
2015/08/02(日) 06:20:25.70 ID:K0ehGXOn0
>>35 vk1Dsc07B & I::SendInput,{Blind}{Up}
vk1Dsc07B & K::SendInput,{Blind}{Down}
sendplay,{up} 試してダメだったから、上記も試したけど、
ダメでした……。
37 :
名無しさん@お腹いっぱい。
2015/08/02(日) 07:46:48.05 ID:jgpMVIyI0
>>36 OneNote2013で動作確認してからレスしたんだけど
>>1 の最新版Autohotkeyを使ってる?
Autohotkeyでググったら旧版がTopにくるけど誤って旧版を使ってない?
他のAutohotkeyスクリプトを全て終了した状態で試した?
それでも反応しないなら使っている環境が悪としか言い様がない。
ちなみに俺の環境は↓だけど何れも動作した。
Win7 64bit Pro で AutohotkeyU32、U64
Win7 32bit Starter 32bit で AutohotkeyU32
Sendplay,{up}
Sendplay,{down}
と
vk1Dsc07B & I::Sendplay,{Blind}{Up}
vk1Dsc07B & K::Sendplay,{Blind}{Down}
のどちらでも反応する
SendInputは反応しない。
38 :
名無しさん@お腹いっぱい。
2015/08/02(日) 08:02:24.59 ID:K0ehGXOn0
>>35 vk1Dsc07B & I::sendplay,{Blind}{Up}
vk1Dsc07B & K::sendplay,{Blind}{Down}
こういうふうにもして、ユーザー制御アカウントもOFFってみたましたが、
やっぱりダメでした。
何か間違っているのでしょうか?
39 :
名無しさん@お腹いっぱい。
2015/08/02(日) 08:08:08.09 ID:K0ehGXOn0
>>37 環境はWindows8.1の64bit版です。
バージョンは1.1.22.03です。
ずっと対策練ってるけど、なかなかできないです……。
40 :
名無しさん@お腹いっぱい。
2015/08/02(日) 13:31:53.45 ID:bnRNKiwz0
>>14 Windows10をクリーンインストールしてAutoHotKeyも新規インストール
今のところすべて問題なく動作しております
41 :
名無しさん@お腹いっぱい。
2015/08/02(日) 16:29:13.29 ID:K0ehGXOn0
OneNoteの上下キーがAuto Hot Keyで機能しない問題は、
ググると出てくるわ……。
Windows8以降の問題みたい。7だと動くみたい。
Windows7に戻すか、それともWindows10にするか、
どっちがいいだろうか??
42 :
名無しさん@お腹いっぱい。
2015/08/04(火) 05:16:31.65 ID:vzvO042E0
win8.1のときsettimerで常駐監視させてたら
ときどきCPUがタスクのホストプロセスとやらに15%ぐらい使用されたままになることがあったんだけど
win10だと今のとこならない
.netのプロセスが一瞬跳ね上がったのを一度だけみたけれど
43 :
名無しさん@お腹いっぱい。
2015/08/04(火) 12:35:23.44 ID:2LqZAPqi0
今までUSBキーボードにPS/2キーボード端子への変換アダプタを挟んでPCのPS/2端子に接続していたんだけど
それだと正常にpower,sleepキーが使えていたけど、
USB端子にそのまま接続するようにしたら上記のホットキーが働かなくなってしまった
何か助言ある人いたらお願いします
44 :
名無しさん@お腹いっぱい。
2015/08/04(火) 18:04:14.04 ID:LjUF0Btp0
>>43 #Persistent
#InstallKeybdHook
フック+常駐させてキーログを見て指定が正しいか自分で確認
45 :
名無しさん@お腹いっぱい。
2015/08/04(火) 18:55:10.44 ID:2LqZAPqi0
>>44 ありがとう!見た結果どうもpower,sleep,wakeのホットキーがUSB接続だとそもそも効いてないと分かった。
しかも別の新品のキーボードを挿しても同じだからキーボードの故障でもないっぽい、
そこで一つ前の問題に戻って質問ですが
そもそもUSB接続にしたいと思った理由が最近PCを操作してると突然キーボードが英語キーボードに認識されてしまう現象が頻発してるからなんです
(全角キーが「`」になっちゃう奴)
地域と言語→キーボード→テキストサービスと入力言語→入力言語の切り替え、のホットキーを無効にしてみたがやっぱり起こる
こういう現象ってAHKユーザーの皆さんのお宅では起こったりしますか?
AHKをガシガシ使ってるからなのか、それ以外の理由なのか知りたいので何か助言あるエスパーさんいたらお願いします
46 :
名無しさん@お腹いっぱい。
2015/08/04(火) 19:01:23.15 ID:bGwgNVIv0
Linuxerになってからというもの、あれだけ頼り切ってたAutoHotkeyとEverythingが無くても別に困らない日々が続いておる
47 :
名無しさん@お腹いっぱい。
2015/08/04(火) 19:09:01.36 ID:LjUF0Btp0
48 :
名無しさん@お腹いっぱい。
2015/08/04(火) 19:22:26.11 ID:YvqEVU7K0
>>45 PS/2接続で英語版になったりするならデバイスマネージャーから
キーボードのドライバを更新を選択して日本語(日本語109など)を指定すれば
勝手に変わらないようになるはず。XPを使っていた時はこれで対処してた。
Vista以降で有効なのか解らない。
USB接続に変えてスリープボタン等が効かないのなら、マザーボードのBios設定に
それらの項目があったような気がする。
電源オプションに「スリープボタンを押したとき」の設定があるけど今回は関係ないと思う。
(設定以前にスリープボタンが認識されていないということなので)
49 :
名無しさん@お腹いっぱい。
2015/08/04(火) 20:53:20.29 ID:2LqZAPqi0
>>46 なんで?暇あったら具体的に教えて
>>47 なるほど
>>48 網羅的にありがとう、3つの段落すべて非常に参考になりました
今パソの電源落とせないので2つ目の効果はすぐには検証できないけど明日やってみる
50 :
名無しさん@お腹いっぱい。
2015/08/04(火) 23:33:08.59 ID:bGwgNVIv0
>>49 コマンド使えば困らない程度に同等のことが出来る
→無い環境に慣れる
→→使い方すら忘れる
→→→比較対象が消失することで現状を不便に思わなくなる
まぁあった方がいいんだろうけど。使い方忘れた道具より今使ってる道具だよねって話かな
あと俺が元々キーボード使いだからLinuxのソフト群と相性が良くAHKの補助があまりいらないという話もある
51 :
名無しさん@お腹いっぱい。
2015/08/04(火) 23:40:52.46 ID:oE35GsDs0
そんな誰のためにもならんはなしされても正直その、困る。
52 :
名無しさん@お腹いっぱい。
2015/08/04(火) 23:52:07.93 ID:WpJVsnFL0
ahkは常駐させてgui操作やファイル整理やweb巡回の自動化に使ってて
肝心のホットキーは外付けテンキーにちょこっと割り当ててみただけであんまり使えてない
ファイル整理なんかはバッチファイルとかでやるものらしいけどパッと見何書いてるか分からなかった
ahkだとなんかわかりやすくてこっち使ってる
53 :
名無しさん@お腹いっぱい。
2015/08/05(水) 00:13:18.71 ID:hhv7THdd0
>>51 ×誰のためにもならん
○たいていの人のためにならん
白いカラスが存在しないことを証明しろ的な意味で
54 :
名無しさん@お腹いっぱい。
2015/08/05(水) 04:41:01.56 ID:o5HmsZkX0
>>52 >ahkは常駐させてgui操作やファイル整理やweb巡回の自動化に使ってて
もし、ホットキー設定と別スレッドで使ってるならAutoItっての使うのも良いかも。
まぁ、AHK使い慣れてるみたいだから、こいういのも有るってことで。。。
55 :
名無しさん@お腹いっぱい。
2015/08/05(水) 04:42:42.85 ID:o5HmsZkX0
56 :
名無しさん@お腹いっぱい。
2015/08/05(水) 06:53:11.34 ID:fWzpjOKi0
ネットで拾ったマウスカーソル下の非アクティブなウインドウもスクロールできるようにするWheelScroll.ahkってスクリプト
Windows10のスタートメニューやアプリでスクロールできなくてしょんぼりしながらはずしたけど
10はデフォルトでマウスカーソル下のウインドウのスクロールに対応してたんやね
57 :
名無しさん@お腹いっぱい。
2015/08/05(水) 08:37:34.82 ID:7v/7k9WM0
FILCOのMajestouch MINILAって、スペースの両端に
Fnキーあるから、買わないほうがいいよね?
Auto Hot Keyで設定どうしてもできなくない?
58 :
名無しさん@お腹いっぱい。
2015/08/05(水) 09:16:38.61 ID:nqH3d7r30
59 :
名無しさん@お腹いっぱい。
2015/08/05(水) 09:51:25.01 ID:7v/7k9WM0
>>58 ああ〜……。
クソ高いHappy Hacking Keyboardを買うことになるのかオレは。
60 :
名無しさん@お腹いっぱい。
2015/08/05(水) 19:19:28.72 ID:bi6CPWl80
61 :
名無しさん@お腹いっぱい。
2015/08/07(金) 09:56:52.90 ID:ry5Cqi630
ニコニコ実況SDKというものについてなんですが
これはautohotkeyからでも使えるものなんでしょうか?
ホームページからダウンロードしたvcredist_x86とjknicom_releaseをインストールしたあと
VBScriptによるサンプルというものに
'JKNiCOMを実体化
Set JKNiCOM = WScript.CreateObject("jkNiCOM.JKNiCOM")
とあったので試しにautohotkeyで
JKNiCOM := ComObjCreate("jkNiCOM.JKNiCOM")
とやってみても 0x80040154 - クラスが登録されていません とエラーがでてきます
根本的に使い方を間違ってるのでしょうか?
ニコニコ実況のコメント数をみて盛り上がっていれば通知してテレビを表示するということがしたいです
環境はwin10 64bitです
62 :
名無しさん@お腹いっぱい。
2015/08/07(金) 12:39:12.21 ID:ry5Cqi630
普段使ってる64bit版autohotkeyではだめで
32bitのunicode版autohotkeyでなら使えました
exeに変換するときもBaseFile(bin)のところを64bitだと0x80040154 - クラスが登録されていませんと出ますが
32bitにすると動いてくれました
63 :
名無しさん@お腹いっぱい。
2015/08/07(金) 16:44:08.15 ID:040ZZWGA0
loop命令で便利な機能作ってみたい
みんなどんなことに使ってる?
64 :
名無しさん@お腹いっぱい。
2015/08/07(金) 17:46:25.15 ID:uW9FUtk70
>>62 32bit用DLLを64bitソフトで動かすことはできない(OSは例外)
AHKをインストーラで導入した場合は32/64bit両方インストールされているので
スクリプトで使い分けするように書けばいい
65 :
名無しさん@お腹いっぱい。
2015/08/07(金) 21:09:16.96 ID:Sz6aWKHa0
>>59 Happy Hacking Keyboard 買う前に、ちょっと実際触ってキーピッチチェックした
方が良いぞ。個人的に持ってて使ってるけど、他のキーボードと併用してると
くっ狭いなとおもうときがある。
66 :
名無しさん@お腹いっぱい。
2015/08/08(土) 10:52:06.90 ID:ISMb2HQ70
>>63 リスト作って突き合わせてフォルダ監視とかインストールされてるのは確定してるけどどこに実行ファイルがあるかわかんない時とか
67 :
名無しさん@お腹いっぱい。
2015/08/10(月) 00:29:21.91 ID:awndHrrB0
普段ディスプレイに隙間なくウインドウを設置してるんだけど
win10にするとなんか画面端にセットしてたソフトのウインドウが再起動させると微妙にずれるから
普段使うソフトを全部指定した位置・サイズにセットするもの作った
ついでに作業ごとにウインドウの位置切り替えるようにしたった
68 :
名無しさん@お腹いっぱい。
2015/08/10(月) 01:53:10.09 ID:sYzf9Mx60
俺もウインドウの位置大きさ常に固定しておきたい人だから自作して使い続けてるわw
69 :
名無しさん@お腹いっぱい。
2015/08/10(月) 09:20:09.38 ID:LNLE13d70
上下左右半分って不便なんだよ。
上3下3の整理が捗る
70 :
名無しさん@お腹いっぱい。
2015/08/10(月) 13:09:26.77 ID:Hy3ClwTj0
win10のpc再起動させたら
winactivateしてもタスクバーに最小化したウインドウが出てこなくなった・・・・・
71 :
名無しさん@お腹いっぱい。
2015/08/10(月) 13:38:14.95 ID:1jvW/jNb0
detecthiddenwindows,on
winrestore,wintitle
で出てくるようになった
何が原因なのかさっぱり
72 :
名無しさん@お腹いっぱい。
2015/08/10(月) 15:40:30.60 ID:3ij+fdTp0
とりあえず
detecthiddenwindows,on
はwikiでしらべときーや
73 :
名無しさん@お腹いっぱい。
2015/08/14(金) 17:23:49.09 ID:Dvpxj0pY0
ジョイスティックのボタンに応じて、「Send, ×××」で文字の出力をしたスクリプトを組みました。
windows8.1までは何ごともなく動いていたのが、DG-D09IW(windows10機)上で実行しても何も出力してくれません。
どこを見た方がいいですか。
もちろん、ジョイスティックのボタンがwin10上のプロパティで正しく反応していることを確認しています。
※これまでに試してみたこと
・最新版に移行(Autohotkey1.1)
・その最新版で再コンパイルする
・DG-D09IW 上でコンパイル
・実行ファイルを管理者モードで実行
・ 〃 互換モードで実行
74 :
名無しさん@お腹いっぱい。
2015/08/14(金) 18:42:36.72 ID:R4EUU6JC0
>>73 問題のスクリプトを最小限にしてここに書く
AHKのログを見る、ここに書く。スクリプトは実行されているか、キー信号は送信されているか
75 :
73
2015/08/14(金) 20:54:17.68 ID:Dvpxj0pY0
>>74 ありがとうございます。ボタン1を一度押してから「離した後に」文字が出力されます。
===スクリプト
Joy1::onKeyDown()
onKeyDown(){
SetTimer, WaitForButtonUp_1, 10
return
}
WaitForButtonUp_1:
if GetKeyState("Joy1")
return
SetTimer, WaitForButtonUp_1, off
send, hogehoge
return
76 :
73
2015/08/14(金) 20:56:01.52 ID:Dvpxj0pY0
===ログ(windows7機)
001: Return (20.37)
001: onKeyDown()
003: SetTimer,WaitForButtonUp_1,10
004: Return
001: Return (0.01)
007: if GetKeyState("Joy1")
008: Return (0.02)
007: if GetKeyState("Joy1")
008: Return (0.02)
007: if GetKeyState("Joy1")
008: Return (0.01)
007: if GetKeyState("Joy1")
008: Return (0.02)
007: if GetKeyState("Joy1")
008: Return (0.01)
007: if GetKeyState("Joy1")
009: SetTimer,WaitForButtonUp_1,off
010: Send,hogehoge (0.25)
011: Return (1.92)
Press [F5] to refresh.
===ログ(windows10機)
001: Return (876.34)
Press [F5] to refresh.
===
ボタンを押してもonKeyDown()に飛んでくれません。
77 :
名無しさん@お腹いっぱい。
2015/08/14(金) 21:09:28.33 ID:/ysh04Z70
接続しているコントローラーが優先デバイスになってないとか?
↓を試してみては
2joy1::msgbox,2_1
3joy1::msgbox,3_1
4joy1::msgbox,4_1
5joy1::msgbox,5_1
2joy5::msgbox,2_5
3joy5::msgbox,3_5
4joy5::msgbox,4_5
5joy5::msgbox,5_5
78 :
73
2015/08/14(金) 22:00:23.96 ID:Dvpxj0pY0
>>77 ありがとうございます。ビンゴでした。
どういうわけか、2番目のジョイスティックとして認識していたようでした。
優先デバイスに指定したら、ちゃんと1番目のジョイスティックとして認識して、
要求通りの動作をするようになりました。
79 :
名無しさん@お腹いっぱい。
2015/08/18(火) 02:13:20.13 ID:faf0+ECI0
1つのソフトを保存場所を変えて3つ同時に起動させてます
この3つ起動させたソフトを別々に操作したいのですが
WinActivate , title ahk_class ○○○ ahk_exe ○○○
とやっても3つとも同じなので区別して操作が出来ません
exeファイルの場所によって区別したりする方法はないでしょうか
80 :
名無しさん@お腹いっぱい。
2015/08/18(火) 02:43:36.28 ID:Gk29n+ex0
81 :
名無しさん@お腹いっぱい。
2015/08/18(火) 05:27:00.73 ID:HLq89bww0
>>79 実行ファイル名を変えても動く場合があるので変更してみては?
例えば abc.exe なら abc1.exe abc2.exe abc3.exe にする
82 :
名無しさん@お腹いっぱい。
2015/08/18(火) 10:33:47.04 ID:IZcp4ksq0
ahk_exeにフルパスを指定する
83 :
名無しさん@お腹いっぱい。
2015/08/18(火) 11:00:44.63 ID:Q2V/EF320
WingetでListを使いloopでリストを分解してPIDなりタイトルなりを探す。
84 :
名無しさん@お腹いっぱい。
2015/08/18(火) 11:09:07.60 ID:Q2V/EF320
もしくは起動時にAHKを介してrunコマンドで起動させ、PIDを記録しておくのが一番手っ取り早くかつわかりやすいと思うな
85 :
名無しさん@お腹いっぱい。
2015/08/18(火) 15:49:57.69 ID:faf0+ECI0
WinActivate , ahk_exe C:\○○○.exe
とフルパスをつけることで区別するようにしました
ありがとうございました
86 :
名無しさん@お腹いっぱい。
2015/08/18(火) 16:50:27.11 ID:38BX3gJf0
使ってる多ボタンマウス(MMO TE)がWin10に対応せず(8時代からソフトで設定しても出来ない項目は多かったが)全く使い物にならないのでAHKでどうにか出来ないかと調べ始めました。
取りあえずMouseGesture2.ahkを入れてやってみましたがその後MouseGestureL.ahkの方が多機能みたいなので変えました。
ジェスチャーをせずマウスクリックだけで設定を実行する事は出来ないでしょうか?
ジェスチャー認識処理の間隔は20以下にしても20に戻ってしまいますね。
カーソル移動量、通常ストロークは0にしています。
MouseGesture2.ahkのReadmeに書いていたので12ボタンまではX1B〜トリガ操作の追加で登録はしました。
Win10だから出来ないのか、マウスクリックだけでは無理なのかどちらでしょうか?
Windows10 Pro 64
87 :
名無しさん@お腹いっぱい。
2015/08/18(火) 17:01:39.32 ID:Y/Ko/Nw60
88 :
名無しさん@お腹いっぱい。
2015/08/18(火) 17:04:41.84 ID:38BX3gJf0
別でMouseGestureL.ahkを使わない方法を試そうと
MButton::F5
XButton1::BS
などもしてみましたが無反応。
これも何か他に認識させる設定とかあったでしょうか?
どうかよろしくお願いします。
89 :
名無しさん@お腹いっぱい。
2015/08/18(火) 17:40:00.72 ID:38BX3gJf0
あれっ!?
MButton::F5
XButton1::BS
XButton2::!Right
としてたのですが、なぜか左クリックでF5動作になってしまったので1行目を消した所F5では無くなりましたがBS動作になり、それも消しましたが今度は!Right動作になってしまったのでそれも消しました。
どうしてこんな事になったか何かおわかりになりますか?
MouseGestureL.ahkは動かしたままですが、そっちは左クリックには何も設定しておらず「中央ボタン押し下げ」に「;キー操作を発生させる Send{F5}」とはしていましたが無反応です。
何ですかね…
90 :
名無しさん@お腹いっぱい。
2015/08/18(火) 18:29:14.80 ID:Gk29n+ex0
>>89 原因を探したいなら他の要因は徹底的に排除してからテスト。
AHKのバージョンは?
マウスの設定は?
フックは?
http://ahkwiki.net/-UseHook フックなしの場合はマウスのソフト設定に対してAHK割り当て
フックありは実際のキーに対してAHK割り当て
マウス設定>XButton1>F1 の場合
AHKフックなし>F1::???
AHKフックあり>XButton1::???
91 :
86
2015/08/18(火) 19:31:42.18 ID:38BX3gJf0
>>90 レスありがとうございます。
バージョンは最新の1.1.22.03
Hookは未記入のOn
MButtonは第3ボタン(ホイール)なので左(第1)ボタンに影響する事って普通は無いですよね?
XButton1も2も左ボタンには関係無いと思うのですが、他のが何か影響与えてるんでしょうかね…
これらを書いた時以外はおかしな動作をしないので問題無いかと思ったのですが、一度全部他を無しで試してみた所変な動作も望んだ動作も無く無反応でした。
他に色々書いてるどれかが悪さをしていたようです。
こんな事を起こしそうな設定とか何か思い付く物ありますでしょうか?
92 :
86
2015/08/18(火) 19:34:21.94 ID:38BX3gJf0
あ、あとマウスの設定は専用ソフトが使えない(起動や設定は出来るが反映はされない)ので起動はしていません。
ですので特に何も無い素の状態?かと思います。
93 :
名無しさん@お腹いっぱい。
2015/08/20(木) 06:31:30.87 ID:A5z4ei1W0
>>89 例えばこんな感じになってるんじゃない?
Lbutton::
;(中略)
; Return無しだと↓のF5が発動する。
MButton::F5 ; これを削除すると↓のBSが発動する。
XButton1::BS
XButton2::!Right
94 :
名無しさん@お腹いっぱい。
2015/08/20(木) 06:41:54.59 ID:A5z4ei1W0
>>89 もうちょっと分かりやすく書くと
下記スクリプトはA〜Eのどれを押しても
メッセージボックス(hoge)が表示される。
a::
b::
c::
d::
e::msgbox, hoge
95 :
名無しさん@お腹いっぱい。
2015/08/20(木) 12:06:35.58 ID:EPuGWAPM0
>>93-94 レスありがとうございます。
ああ、そうなってます。
ドラッグで文をコピーする物(~LBotton:: (略) Return } })が直前にあります。
Wikiも見直したんですが終わらせる時にReturnって入れますよね?
;を付けるとそこはコメントアウトされるから終了にならないですよね?
でもこの状況になった理由はそれみたいですので理由がわかって良かったです。
96 :
名無しさん@お腹いっぱい。
2015/08/21(金) 20:08:10.14 ID:JPGBlagg0
97 :
名無しさん@お腹いっぱい。
2015/08/22(土) 11:31:57.80 ID:MIdcIMT10
>>96 こうするのか。なるほどなー
Whileやる間を1秒とかどうやって計測すればいいんだろう
98 :
名無しさん@お腹いっぱい。
2015/08/22(土) 11:42:43.00 ID:MIdcIMT10
自己解決
while前に現在時刻入れて現在時刻+3秒みたいな計算しておいて式に入れておけばいいんだな
99 :
名無しさん@お腹いっぱい。
2015/08/22(土) 15:21:06.55 ID:MIdcIMT10
具体的にはCountじゃなくて関数の最初のwhile以前に
waittime := A_TickCount+ミリ単位で数字
Count条件のところを
If (A_TickCount > waittime)
にしてやれば指定した時間待ってくれる
100 :
名無しさん@お腹いっぱい。
2015/08/22(土) 21:24:12.17 ID:IEzJt/SK0
101 :
名無しさん@お腹いっぱい。
2015/08/24(月) 05:34:45.49 ID:aWJLnuLf0
変数内の文字列に全角の英数字があれば半角に置換するにはどうすればいいでしょか
102 :
名無しさん@お腹いっぱい。
2015/08/24(月) 08:49:17.76 ID:XzCBRntl0
RegExReplace
103 :
名無しさん@お腹いっぱい。
2015/08/24(月) 12:30:03.53 ID:BBDOPljJ0
ググったらいいものがあった
;全角英数字を半角英数字に変換
WideToNarrow( str )
{
buf =
Loop , Parse , str
{
If( RegExMatch( A_LoopField , "[!-〜]" ) )
{
code := Asc( A_LoopField ) - 65248
buf := buf . Chr( code )
}Else
{
buf := buf . A_LoopField
}
}
Return buf
}
104 :
名無しさん@お腹いっぱい。
2015/08/24(月) 13:30:20.08 ID:JbvfckjL0
WheelLeft チルト左
WheelRight チルト右
チルトつきマウスって使ったことないけどahkに割り当てられるなら欲しくなってきたな
これって誤爆したりせず正確に入力できるんだろうか
105 :
名無しさん@お腹いっぱい。
2015/08/24(月) 13:31:59.43 ID:TDGzbkU50
ワイルドカードを使用したフォルダの削除が以下のスクリプトでは出来ませんでした。
お力添えをお願いします。
FileRemoveDir, c:\jpg\*, 1 ;jpgフォルダ内のフォルダを削除
106 :
名無しさん@お腹いっぱい。
2015/08/24(月) 13:48:00.27 ID:snF1k1Ry0
>>104 問題なく動くものとそうでないものがある
マウス側でF13やF14を当てれるゲーミングマウスであるならソレにリマップしてからなら使える。
タブ移動、モニタ切り替えとかにとても便利
>>105 msgbox % ErrorLevel
でそもそも成功してるかどうか見てみる
107 :
名無しさん@お腹いっぱい。
2015/08/24(月) 13:56:21.20 ID:fWpSRoYm0
Loop , C:\jpg\* , 2 , 0
{
FileRemoveDir , %A_LoopFileLongPath%
}
108 :
名無しさん@お腹いっぱい。
2015/08/24(月) 14:13:17.46 ID:TDGzbkU50
>>106 有難うございます。
ErrorLevelは1でした。しかし変化はなかったです。
>>107 無事出来ました!有難うございました。
109 :
名無しさん@お腹いっぱい。
2015/08/24(月) 18:15:24.97 ID:pdTUfM210
左クリック長押し関数。調子に乗って選択部分の文字列オートコピー機能をつけてみた。
MGLにも対応したのでプラグインフォルダにポンと入れればそのまま使えます。
多分これで最後。
http://goo.gl/hnmSYZ 110 :
名無しさん@お腹いっぱい。
2015/08/24(月) 19:46:55.67 ID:saPJBpY50
>>103 関連で自分用に作ったやつ
つべとかでよくあるタイトルコピると濁点が別文字に分かれてるのを直すもの
DakutenNaoshi(STR) {
While (ICHI := RegExMatch(str, "[カ-トハ-ホ]【※1】")) {
MOJI := SubStr(STR, ICHI, 2)
STR := RegExReplace(STR, MOJI, Chr(Asc(MOJI) + 1))
}
While (ICHI := RegExMatch(STR, "[ハ-ホ]【※2】")) {
MOJI := SubStr(STR, ICHI, 2)
STR := RegExReplace(STR, MOJI, Chr(Asc(MOJI) + 2))
}
Return, STR
}
【※1】の位置はU+3099の濁点、【※2】にはU+309Aの半濁点
111 :
名無しさん@お腹いっぱい。
2015/08/25(火) 13:30:29.37 ID:zVK9XD+N0
>>109 あー、まじ便利だコレ
俺の糞マウスホイールクリックしにくかったからマジ助かる
112 :
名無しさん@お腹いっぱい。
2015/08/25(火) 19:23:39.17 ID:HVWI17xf0
今まで、1台のパソコンでAutoHotkeyを使っていましたが、パソコンをもう1台買って
2台で作業をするようになりました。マウスとキーボードは1台づつでするために
mouse without bordersというソフトを導入してこれで作業しています
ところが、いままで1台でAutoHotKeyで、マウスを動かしたりダブルクリックさせたりと
いうのをしていたのですが、2台にすると、たまーにですが、パソコンAにしか
AutoHotKeyはインストールもしていないのに、マウスの移動が、パソコンBのモニターの方へ
移って、パソコンBのモニター上で動いてしまう、ということが起こります
特に操作を誤ってマウスをパソコンBの方に動かした、とかはしていません
どういう条件でこのようなことが起こるのか、再現条件を調べているのですがよくわかりません
似たような経験をされた方はいませんか。
ちなみに、AutohotKeyでさせてるのは、ある場所を右クリックすると、パソコンAのモニタ上の
5か所を自動でクリックしながら回る、みたいなものです
113 :
名無しさん@お腹いっぱい。
2015/08/25(火) 21:20:48.14 ID:E0WBYw330
どこかのテンプレか何か?
114 :
112
2015/08/26(水) 12:23:10.04 ID:4nXUt1/O0
>>112ですが、マルチモニターでやってる方はいても複数パソコンでやってる方は
いらっしゃらないのかな
115 :
名無しさん@お腹いっぱい。
2015/08/26(水) 12:29:38.05 ID:ZcWGXrDu0
複数PCは別にマウス別にキーボードだから正直答えようがない
そのmouse without bordersというソフトとの問題ならソレを導入してない人にとっては解決策の提示のしようがない
116 :
名無しさん@お腹いっぱい。
2015/08/26(水) 12:54:30.78 ID:4nXUt1/O0
mouse without bordersを使うと便利ですよ
以前はどこドアを使っていました。1セットのマウス、キーボードで複数のパソコンを操作できます
ソフトの種類は違っても使っている方は多いと思っていたのですが。是非お勧めです
mouse without bordersの問題なのかな。なら仕方がないですね
117 :
名無しさん@お腹いっぱい。
2015/08/26(水) 13:00:07.68 ID:4nXUt1/O0
問題になってるAutoHotKeyのスクリプトを使うときは、とりあえず
mouse without bordersをオフにすることで対応することにしました
118 :
名無しさん@お腹いっぱい。
2015/08/26(水) 14:27:33.65 ID:X6N1SlBd0
mouse without borders使ってたけど
マウスとキーボードのデバイスが微妙に連動しないのが面倒くさいのと
MS特有のお行儀の悪さが気になって使うのやめた
グローバルホットキーで Ctrl+Alt+任意キー を設定できるが
Ctrl+Alt+Shift+任意キー や Ctrl+Alt+Win+任意キー なんかも全部乗っ取られる
AHKのホットキーは勿論Photoshopは普通のアプリのショートカットも全部持ってかれる
119 :
名無しさん@お腹いっぱい。
2015/08/26(水) 14:54:38.29 ID:4nXUt1/O0
ありがとうございます。どうもAutoHotKeyとの相性は悪そうですね
どこドア2はXPのときに使っててWin7になって対応してなかったのかな、で使えなくて
やめました。でもXPのときもどこドアですが複数パソコンでやってたのですが
あまりこういう問題は起きてなかったと思います。なんか残念
120 :
名無しさん@お腹いっぱい。
2015/08/26(水) 22:02:14.32 ID:PxOK28lS0
わからん。ドラッグスクロールのahkみてもさっぱりわからん。MGLに組み込みたいのに
121 :
名無しさん@お腹いっぱい。
2015/08/26(水) 22:06:14.42 ID:KnOhpy/70
MGLの話はスレチになるかもだが
ドラッグスクロールはMGLにデフォで入ってる
122 :
名無しさん@お腹いっぱい。
2015/08/26(水) 22:35:31.87 ID:PxOK28lS0
まじか。まじだ。
これか
if (MG_While()) {
MG_DragScroll2(1, 0, 30, 30)
}
それを
>>109の長押しクリックで切り替えてスクロールさせたいと思ったけどちゃんと読んでくれない。
何がいけないんだろう
Mdoit:
if (MG_While()) {
MG_DragScroll2(1, 0, 30, 30)
}
return
ではいかんのか
123 :
名無しさん@お腹いっぱい。
2015/08/26(水) 22:37:45.84 ID:PxOK28lS0
ああ、そうか、MG_WhileてMG通してないからダメか。こっちから調べていかないとダメか
124 :
名無しさん@お腹いっぱい。
2015/08/26(水) 22:58:18.37 ID:PxOK28lS0
あーそうかMG_DragScroll2を分解しなきゃいけないのか
125 :
名無しさん@お腹いっぱい。
2015/08/26(水) 23:49:03.07 ID:/aMJcH2P0
Lbuttonの設定するととても怪しい挙動になるのがMGLの欠点
126 :
名無しさん@お腹いっぱい。
2015/08/27(木) 01:31:33.67 ID:TGBhd8a90
都合により既存の.ahkを全体にわたって編集しようとしたら遠大すぎてやる気が……
127 :
名無しさん@お腹いっぱい。
2015/08/27(木) 02:11:47.99 ID:5BeDDZgS0
そうならないよう機能毎にプラグイン化しとくべき
128 :
名無しさん@お腹いっぱい。
2015/08/27(木) 15:17:02.45 ID:6R7nKD+m0
129 :
名無しさん@お腹いっぱい。
2015/08/27(木) 15:49:22.05 ID:A1kVA00s0
130 :
名無しさん@お腹いっぱい。
2015/08/27(木) 15:56:03.66 ID:6R7nKD+m0
>>129 コマンドプロンプトも管理者権限で実行しましたがダメでしたね
再インスコのときは注意して管理者権限で実行しましたが、やはりダメでしたね。
attribで表示させるとどのファイルにもRが表示されないのがこれまた不思議なんですよね。
うちのPCだけの問題なのか、他のPCにも同じ現象があるのか知りたいですね。
ちなみに適当なフォルダに新しいフォルダを作成すると、読み取り専用で作成されてしまうことも発見しました。
これは正常な現象なんでしょうか?
131 :
名無しさん@お腹いっぱい。
2015/08/27(木) 18:41:30.79 ID:TGBhd8a90
ところでMS Edge周りでなんか問題とかあった?
いや、使う気はないんだけど
132 :
名無しさん@お腹いっぱい。
2015/08/27(木) 18:41:41.52 ID:QrGpaeh50
セキュリティー系のアプリが邪魔してるとか?
133 :
名無しさん@お腹いっぱい。
2015/08/27(木) 18:58:41.77 ID:6R7nKD+m0
>>131 ググりました。ブラウザなんですね。使用していませんね。
>>132 avira antivirus proを使用してますが、すべての機能を無効にしても症状は変わりません。
134 :
名無しさん@お腹いっぱい。
2015/08/27(木) 20:02:23.90 ID:HDPjNIFE0
口調が変な奴はおよそそいつ自身に問題がある
135 :
名無しさん@お腹いっぱい。
2015/08/28(金) 02:05:27.60 ID:kfCF/ZI40
コマンドを発動させるために使ったホットキー自体を無効化する設定ってないですかね?
Poserというソフトでショートカット変更をしたいので
こういうスクリプトを書きました
!Rbutton::
Send,{space down}{Ctrl down}{Lbutton down}
Loop
{
sleep, 15
GetKeyState, state, Rbutton , p
if state = u
break
}
Send, {space up}{Ctrl up}{Lbutton up}
return
やりたいことはAlt+Rbuttonを押した時に
space + Ctrl +Lbuttonを押してPoserにあるショートカットを使いたいのですが、
このかき方だとPoserにある別のAlt+Lbuttonで動くショートカットがかなりの確率で
誤爆してしまうので、Altを完全に無効にしたいのです
136 :
名無しさん@お腹いっぱい。
2015/08/29(土) 01:35:19.24 ID:27J7ydmj0
>>135 KeyWaitでAlt離してからSend
137 :
名無しさん@お腹いっぱい。
2015/08/29(土) 23:40:15.51 ID:9L1dhnYA0
>>120です
だいぶドラッグスクロールできそうな雰囲気になってきた。
んだけどMozillaエンジンやChromeのスクロールメッセージがわからんくてpostmessageで送れない
誰か知らない?
138 :
名無しさん@お腹いっぱい。
2015/08/30(日) 13:15:33.91 ID:XxCQb5ii0
>>48 この勝手に英語キーボード問題って実は根深いんだよね
ユーザーができることってPS2かUSBかぐらいしかないんだよね
それでもシステムが常に英語キーボードを使いたがる場合
それを防ぐ手段は無いと思う
レジストリに韓国語キーボード設定が紛れていたりとか
他にも原因はいろいろあるが
キーボードを変えるのは本末転倒だけど
キーボードを分解して物理的に中の配線をつなぎ替えるって手段も通じそうにないし
ってなるとソフト的にキーを入れ替えて
システムからは英語キーボードで認識させておいて
日本語キーボードのように使えるようにマッピングを入れ替えるみたいな
スマートでない手段しか解決はない
139 :
名無しさん@お腹いっぱい。
2015/08/30(日) 17:35:57.25 ID:C8RQoIT90
(ヽ∧__∧
、ヽ`∀´> <呼ばれて無いのにチョチョチョチョーン
) )つ
>⌒)ノ
ゝノ/
パカチョン ノ~ノ
/| ///
| | ///
| |ミ ///.
|/ ̄ /
" ̄ ̄ ̄ ̄
140 :
名無しさん@お腹いっぱい。
2015/08/30(日) 17:35:58.77 ID:+8DTYiHZ0
141 :
名無しさん@お腹いっぱい。
2015/08/30(日) 21:22:45.27 ID:jAU9uCOQ0
>>136 キーを離してしまうと厳しいですね Alt押しで別の動作もさせるので
Alt+Mbutton、Alt+Lbutton、Alt+Rbuttonと合わせて3パターンで切り替えるのでAltはずっと押していたいんです
どうもでした
142 :
名無しさん@お腹いっぱい。
2015/09/01(火) 19:21:17.34 ID:ATL7zO2X0
文字列を入れた配列を結合したいのですが
autohotkeyにjoinのようなものはないのでしょうか?
自分でforで回して文字列を作るのでしょうか?
143 :
名無しさん@お腹いっぱい。
2015/09/01(火) 21:16:44.69 ID:oOn6cjJn0
俺も拍子抜けしたんだけどね、文字列の後に文字列入れたら文字列になるんだよ
hoge = %hoge% %hage%
144 :
名無しさん@お腹いっぱい。
2015/09/01(火) 22:35:54.73 ID:ATL7zO2X0
出来ました
ありがとうございます
145 :
名無しさん@お腹いっぱい。
2015/09/02(水) 11:34:03.68 ID:27CQDY4v0
Everythingで検索した結果のファイルパスを変数に入れたいのですが
以下の関数でやると記号のハートマークが含まれてたりするとその部分が?になってしまいます
RetunのところにStrGetでCP932に変換してみたら一文字目だけ変数に入るだけでした
どこかおかしいところがあるんでしょうか?
es_StdoutToVar( search_word )
{
objShell := ComObjCreate("WScript.Shell")
;コマンドライン版Everything,es.exeのインストール場所
objExec := objShell.Exec( "インストール場所\es.exe" " " search_word )
While , !objExec.StdOut.AtEndOfStream
{
strStdOut := objExec.StdOut.ReadAll()
}
Return strStdOut
;Return StrGet(&strStdOut,"CP932")
}
146 :
名無しさん@お腹いっぱい。
2015/09/02(水) 20:04:32.30 ID:wcJk7beK0
あぷろだのコンテキストメニューがモロにそれなんで試してみたら?
147 :
名無しさん@お腹いっぱい。
2015/09/04(金) 02:41:16.97 ID:DGVcxvcT0
文字列の選択範囲が存在するか否かを調べる方法はありませんか?
^cをSendしてClipWaitしてErrorLevelを調べる、
とやってみたのですが、
使っているエディタは範囲選択していない場合にCTRL+Cを押すと
カーソルのある行全体をコピーするので、正しく検出できませんでした
148 :
名無しさん@お腹いっぱい。
2015/09/04(金) 03:14:02.68 ID:VDkFX/7X0
末尾が改行コードかどうかで判別するとか
149 :
名無しさん@お腹いっぱい。
2015/09/04(金) 04:21:08.46 ID:DGVcxvcT0
なるほど
それなら出来そうですね
ありがとうございます
150 :
名無しさん@お腹いっぱい。
2015/09/04(金) 05:00:30.42 ID:0fv3FZza0
ウィンドウIDを取得して
そのID名+x、そのID名+yという変数にウィンドウ座標を代入したとして、
その変数から取得した座標を取り出すにはどうしたらいいですかね?
こんなかんじにやってもうまくいかなかったんですが、こういう感じのことがしたいです。
Winget,test,ID,A
WingetPos,%test%_x,%test%_y
msgbox, %%test%_x%, %%test%_y%
151 :
名無しさん@お腹いっぱい。
2015/09/04(金) 05:40:44.53 ID:Mfg9efKS0
>>150 Winget , test , ID , A
WingetPos , %test%_x , %test%_y , , , ahk_id %test%
MsgBox , % %test%_x "," %test%_y
こうすると見れたよ
http://ahkwiki.net/Expression#.E5.A4.89.E6.95.B0 152 :
名無しさん@お腹いっぱい。
2015/09/04(金) 06:50:50.14 ID:0fv3FZza0
153 :
名無しさん@お腹いっぱい。
2015/09/04(金) 23:10:57.00 ID:7YsI0USd0
Gui, Add, Edit にて複数のテキスト入力欄を作った際に、
エンターキーで次のテキスト入力欄に移動したいのですがどのようにすればいいでしょうか。
また、移動後最初に入力欄に表示されているテキストを選択状態にしたいのですができますでしょうか。
Gui, Add, Edit , Number Limit4 , 1234
Gui, Add, Edit , Number Limit3
上記1234のテキストを選択状態(反転状態)にしたいのです。
1234のままでよければエンターで次のテキスト入力欄に、変更が必要ならそのままテンキーを押して変更を行えるようにしたいのです。
宜しくお願いします。
154 :
名無しさん@お腹いっぱい。
2015/09/04(金) 23:34:35.40 ID:mkbLU6h20
>>153 OnMessage()かエンターホットキー+#If
反転状態=全選択 フォーカスあわせてctl+a
155 :
名無しさん@お腹いっぱい。
2015/09/04(金) 23:36:03.54 ID:o3G+4tqy0
EnterにTabをSendさせるとか
156 :
名無しさん@お腹いっぱい。
2015/09/04(金) 23:42:55.92 ID:eYYZnR930
ルー語みたいだな
157 :
名無しさん@お腹いっぱい。
2015/09/05(土) 01:44:18.45 ID:UXTJ6C/Y0
一度Shift押すともう一度Shift押すまで押しっぱなしになるってShift::Send,{Shift Down or UP}でできますか?
トグル状態にする書き方が分かりません
158 :
名無しさん@お腹いっぱい。
2015/09/05(土) 03:19:52.89 ID:76NUCaeT0
2点教えて下さい。
IfInString, clipboard, C:
run, explore %Clipboard%
else IfInString, clipboard, D:
run, explore %Clipboard%
@こちらが動作しないのですが、理由が分かりません。
Aまた、簡素な記述法を教えて頂ければ幸いです。
159 :
名無しさん@お腹いっぱい。
2015/09/05(土) 05:43:01.20 ID:WX1fwC0+0
>>157 フラグ管理すればいい
shift::
send, % !shiftflag ? "{shift down}" : "{shift up}"
shiftflag := !shiftflag
return
>>158 俺の環境ではそのままで動いたよ
OSとAutohotkeyのVerは何?
160 :
157
2015/09/05(土) 07:49:16.43 ID:UXTJ6C/Y0
>>159 ありがとうございます!
しかしShift押しっぱなしだとその間Shift+なショートカットキーが押せないことに気づきました。あきらめます
161 :
名無しさん@お腹いっぱい。
2015/09/05(土) 10:27:37.59 ID:76NUCaeT0
>>159 windows10 build 10525
ahk 112203 x64です。
162 :
名無しさん@お腹いっぱい。
2015/09/05(土) 10:31:42.19 ID:76NUCaeT0
あ、失礼しました。
次の行に
;の文があったのですが、それを削除したら動作しました。
なぜかは、、若ってませんw
163 :
名無しさん@お腹いっぱい。
2015/09/05(土) 10:42:30.07 ID:p/CJbrsT0
>>158 Aこう書くこともできるよ
If( RegExMatch( Clipboard , "C:|D:" ) )
{
Run , explore %Clipboard%
}
Return
164 :
名無しさん@お腹いっぱい。
2015/09/05(土) 13:01:45.41 ID:76NUCaeT0
できました。なるほど、正規表現で表現すれば良いのですね。
ありがとうございました。
165 :
名無しさん@お腹いっぱい。
2015/09/05(土) 20:48:50.98 ID:1jU9sHQY0
間違って過疎スレの方に書いてしまったので再度質問です
Arr := {}
Arr := [{Key: Value}
, {Key: Value}
, {Key: Value}
…
, {Key: Value}]
のように一度に代入する内容が多いとエラーが出るのですが、Object.Push等を使い分割して入れていくしかありませんか?
166 :
名無しさん@お腹いっぱい。
2015/09/05(土) 21:13:51.76 ID:2aSk8rw40
>>165 こうしたら動くけど、やりたいことと違うんかな?
Arr := {}
Arr := {"Key1": "Value1"
, "Key2": "Value2"
, "Key3": "Value3"
, "Key4": "Value4"}
MsgBox, % Arr["Key1"]
167 :
名無しさん@お腹いっぱい。
2015/09/05(土) 21:25:49.13 ID:1jU9sHQY0
>>166 どうもです
内容は実際は異なるものでそれ自体は問題なく代入できてますが
その量が多いとエラーが出るので、仕方なく.Push等で分割して入れてるのです
Arr := {}
Arr.Push := ({Key: Value}
, {Key: Value}
, {Key: Value}
…
, {Key: Value})
Arr.Push := ({Key: Value}
, {Key: Value}
, {Key: Value}
…
, {Key: Value})
…
これらを分割せずに代入したいのです
あと.Pushだと
Arr[Key].Push := ({Key: Value}
, {Key: Value}
, {Key: Value}
…
, {Key: Value})
のようにキーを指定して追加することができないのがちょっと不便なのです
168 :
名無しさん@お腹いっぱい。
2015/09/06(日) 00:24:12.56 ID:Nw/T60NE0
いまモニターを3台つないでるんですが、プライマリ以外のデスクトップ上にマウスカーソルがあるときにF1を押した場合にAHKを動かしたいんですがうまくいきません
二枚目と三枚目のデスクトップ上の固有のClassが#32769
でProcessNameはcsrss.exeみたいですが二枚目と三枚目のデスクトップ上にマウスカーソルがある判定がつくれません
何かいい方法はないでしょうか?
169 :
名無しさん@お腹いっぱい。
2015/09/06(日) 00:40:42.32 ID:Nw/T60NE0
>>168ですがなんとかなりました 失礼しました
二枚目三枚目のデスクトッをクリックした時にWindowSpyでもClass名が取得できないので
その時に
WinGetClass, AC, A
if !AC
の判定を使ってスクリプトを動かすようにしたらうまくいきました
170 :
名無しさん@お腹いっぱい。
2015/09/06(日) 00:40:59.01 ID:T4UZ6BTe0
単純にモニタの最大をsysgetで持ってきて、そこからプライマリ分を引いたら2枚目、二枚目分を引いたら3枚めになる。
例えば横一列に並べてる1920ワイド3枚なら最大は5760だし、それはsysgetで持ってくるなりできたと思う。
1921からが2枚目となり、3841からが三枚目となる。
あとはMousegetposで場所を判定してやればいい。
171 :
名無しさん@お腹いっぱい。
2015/09/06(日) 00:59:39.93 ID:Nw/T60NE0
>>170 Windows7のWin+shift+左右矢印キーで動くウィンドウ移動ショートカットに使うので一枚目二枚目三枚目判定はsysgetで作ってますが
それだと二枚目三枚目のデスクトップ上にマウスカーソルがある判定がつくれなかったのです
172 :
名無しさん@お腹いっぱい。
2015/09/06(日) 09:06:26.68 ID:p3to+8FO0
?
Mousegetposで位置取れなかったん?
173 :
名無しさん@お腹いっぱい。
2015/09/06(日) 09:07:22.25 ID:rl/qzrB40
ファイルの種類(例えばmp4が動画か音楽か)の判定をスマートにする方法はありますか?
今のところ真空波動研を使って力業でやってますが少し時間が掛かってしまいます
174 :
名無しさん@お腹いっぱい。
2015/09/06(日) 11:34:13.87 ID:p3to+8FO0
SinkuSuperLite.exe /s よりもスマートな方法ってことかな
dllcallで直接sinku.dllと叩くとか?
175 :
名無しさん@お腹いっぱい。
2015/09/06(日) 15:15:03.29 ID:rl/qzrB40
>>174 そういう方法(というかVer?)があったのですか。ありがとうございました
176 :
名無しさん@お腹いっぱい。
2015/09/06(日) 16:13:54.63 ID:rl/qzrB40
ループを使わずにディレクトリ内にファイルがあるか調べる方法はありますか?
177 :
名無しさん@お腹いっぱい。
2015/09/06(日) 16:21:39.32 ID:T4UZ6BTe0
If(FileExist("data.txt"))
ピンポイントならこれ
178 :
名無しさん@お腹いっぱい。
2015/09/06(日) 16:37:38.03 ID:rl/qzrB40
>>177 説明が悪かったですね。ディレクトリ内が空っぽであるかをスマートに調べる方法があれば知りたいのです
関数作れば事足りることではありますが
179 :
名無しさん@お腹いっぱい。
2015/09/06(日) 16:39:58.19 ID:T4UZ6BTe0
そういう意味ではloopが最もスマートかつ管理しやすいかと。
180 :
名無しさん@お腹いっぱい。
2015/09/06(日) 16:42:36.39 ID:rl/qzrB40
181 :
名無しさん@お腹いっぱい。
2015/09/06(日) 21:16:42.64 ID:Nw/T60NE0
>>172 位置はとれますけどウィンドウハンドルやclassNN情報が拾えませんでした
Autohotkey_Lでinspect_toolbar_ids.ahkって動かないのでしょうか?
このスクリプトの
Progress,%tmp%,%num%/%cnt%
の部分で
Error: Max window number is 10.
というエラーがでていて動かないのですがどういうエラーなのかよくわかりません
182 :
名無しさん@お腹いっぱい。
2015/09/06(日) 23:58:03.69 ID:/ARUILMV0
#include Lib\IME.ahk
#If !IME_GET() ; IME がOFFの時だけ有効
;変換キーでIMEオン(IE10で不具合)
;sc079 :: Send,{Blind}{vkF2sc070}
IE10以上だとこれが正常に動作しないんだよな
183 :
名無しさん@お腹いっぱい。
2015/09/07(月) 00:17:19.68 ID:oseNuDgH0
MouseGetPos,,,Winid,Ctr
ControlClick,%Ctr%,ahk_id %Winid%,,L
return
おかしーな、なんでコレで動かないんだろう
ただアクティブじゃないウィンドウの上で左クリックしたいだけなのに
184 :
名無しさん@お腹いっぱい。
2015/09/07(月) 14:18:15.90 ID:icUjHksq0
win7からwin10にしたらime.ahkのIME_SetConvModeが動作しなくなったのだけど
何か仕様が変わったのかな?
185 :
名無しさん@お腹いっぱい。
2015/09/07(月) 18:37:01.59 ID:0prwMOwD0
Win10使ってないからわからんけどついにIMMからTSFに切り替わったってことなのかな
OS側がIMM互換残してくれてないとIME.AHKではどうしようもないと思う
186 :
名無しさん@お腹いっぱい。
2015/09/07(月) 20:59:42.12 ID:icUjHksq0
>>185 将来的にはTSFオンリーになるという話は聞いていたような気がするけど
ついにその時が来たってことなのかなぁ
187 :
名無しさん@お腹いっぱい。
2015/09/08(火) 18:25:22.21 ID:DiTxEGzB0
スクリプトでテキストデータを貼り付ける時は
クリップボードにテキストを入れてsend ^vで貼り付け
とやってるんですがクリップボードの履歴を利用できるソフトにその内容が入ってしまいます
クリップボードを介さないで^vのようにパッとテキストを貼り付ける方法ってあるんでしょうか?
188 :
名無しさん@お腹いっぱい。
2015/09/08(火) 20:45:46.24 ID:pZfe2zr60
ドロップダウンメニューが表示されている時に特定の動作をさせたいんですけど
ドロップダウンメニューの判定ってどうとればいいですかね?
189 :
名無しさん@お腹いっぱい。
2015/09/08(火) 20:56:21.82 ID:8bMO9ZgT0
>>14 亀レスだけどWin10にしても問題なく動いたよ
もし、古いWindow Spyを使ってるなら更新してみては
190 :
名無しさん@お腹いっぱい。
2015/09/08(火) 21:15:37.03 ID:8bMO9ZgT0
>>187 クリップボードを使う前にクリップボード監視ソフトを停止(終了)、終わったら再開(起動)
>>188 ドロップダウンリストのクラスを取得してWinWaitかWinExist()で判定。
ほとんどは #32769 だけどソフトによって違う場合あり。
F9::
mousegetpos, , , hwnd
wingetclass, WClass, ahk_id %hwnd%
clipboard := WClass
msgbox, %WClass%
return
191 :
名無しさん@お腹いっぱい。
2015/09/08(火) 22:26:42.47 ID:pZfe2zr60
>>190 なるほどどうも
さっきまで自分で試してたんですけど
MouseGetPos,,,hwnd,,3
Wingettitle,title,ahk_id %hwnd%
これでタイトルを取得出来ない場合はドロップダウンメニューという判定でもうまくいきました
192 :
名無しさん@お腹いっぱい。
2015/09/09(水) 01:58:13.37 ID:sfIbO/Lh0
AHKでMedia Player Classcのフルスクリーン時の最前面化を解除したいんですがどうにもなりません。
誰かここでそういうことをしてる人はいませんか?
Winset, Alwaysontop, , A
で最前面解除しても、プレイヤーがアクティブ状態になるとすぐに最前面化されてしまいます。
何かいい方法はないでしょうか?
193 :
名無しさん@お腹いっぱい。
2015/09/09(水) 02:20:18.82 ID:sfIbO/Lh0
>>192ですがこのタイマーでなんとかいけましたがなるべくPCに負荷をかけたくないのでタイマー以外の方法があったら教えて下さい。
SetTimer,MPC_FullScreen,350
MPC_FullScreen:
ifwinexist ahk_group MPC
{
WinGet, MPC_windows, ID, ahk_group MPC
WinGet, ExStyle, ExStyle, ahk_id %MPC_windows%
if (ExStyle & 0x8)
{
Winset, AlwaysOnTop, off, ahk_id %MPC_windows%
return
}
else
{
return
}
}
return
194 :
名無しさん@お腹いっぱい。
2015/09/09(水) 02:26:42.78 ID:qqzz6oSe0
>>192 俺の環境じゃ最前面化されないな。
MPCの「表示」→「手前に表示」(または動画部分を右クリック → 表示 → 手前に表示)にチェックが付いてるだけじゃ?
195 :
名無しさん@お腹いっぱい。
2015/09/09(水) 02:48:05.08 ID:sfIbO/Lh0
>>194 いい忘れました Media Player Classic BEとHCを使ってるんですが、BEのほうだけフルスクリーン表示の時に
手前表示を切っても最前面かされてしまうのです。いろいろ調べたんですが解決策がみつかりませんでした。
196 :
名無しさん@お腹いっぱい。
2015/09/09(水) 02:55:06.35 ID:qqzz6oSe0
それはソフト側のバグなんじゃ
197 :
名無しさん@お腹いっぱい。
2015/09/09(水) 06:03:44.25 ID:sfIbO/Lh0
198 :
名無しさん@お腹いっぱい。
2015/09/09(水) 10:31:37.09 ID:k1YibYKM0
199 :
名無しさん@お腹いっぱい。
2015/09/09(水) 13:41:54.81 ID:eoTr4N+F0
ControlsendってBlindつかえないのん?
200 :
名無しさん@お腹いっぱい。
2015/09/10(木) 05:14:35.69 ID:Ogg7g5iG0
>>198 例にあるウィンドウがアクティブになったら何かをさせる、のスクリプトを使って、MPCプレイヤー以外のウィンドウがアクティブになった時に
MPCプレイヤーが最前面なら最前面化をその解除する、というスクリプトを作りましたがそれで動きました。ありがとうございます。
ただEVENT_SYSTEM_〜のイベント識別番号に最前面判定がないのですがそんなもんですかね?もしかしてそれもあったりしますか?
201 :
名無しさん@お腹いっぱい。
2015/09/10(木) 14:35:46.46 ID:EJyV3hmS0
DELLCALLいみわかんね
202 :
名無しさん@お腹いっぱい。
2015/09/10(木) 16:38:15.18 ID:Lu4JniIi0
デルのサポセンか何かか
203 :
名無しさん@お腹いっぱい。
2015/09/10(木) 20:34:29.26 ID:T57FNj1S0
タッチパッドT650の三本指スワイプに別のアクションを割り当てたいのですが
三本指スワイプのコードが分かりません
204 :
名無しさん@お腹いっぱい。
2015/09/10(木) 21:52:24.11 ID:En8CayDb0
ここはお前らのつぶやき場じゃねえ
いみわかんねとか分かりませんとか言われてもそうですかとしか
205 :
名無しさん@お腹いっぱい。
2015/09/11(金) 02:44:50.22 ID:KgQY+xdZ0
そうですね
206 :
名無しさん@お腹いっぱい。
2015/09/11(金) 17:29:40.35 ID:oJhYNlfM0
タスクバーにあるウィンドウだけピックアップしてリストにするのどうすればいいの
wingetリストじゃ今ないウィンドウも拾っちゃう
207 :
名無しさん@お腹いっぱい。
2015/09/11(金) 17:55:31.33 ID:BoB/uXR80
ExStyleに0x00000080を持つかどうかで分岐させるとか
208 :
名無しさん@お腹いっぱい。
2015/09/13(日) 04:16:53.85 ID:tppm85mx0
Internet Explorerの保護モードとは?
Internet Explorerの保護モードを有効にしておくと、悪意のあるプログラムやスクリプトなどがシステムの重要な情報を窃取したり、
システムを変更したりするのを可能な限り防ぐことができる。その設定方法や現在の状態の確認方法などを解説する。
これが代表的だけど,ストアアプリに関してもキーボード・マウスフック系ツールは全滅だな
209 :
名無しさん@お腹いっぱい。
2015/09/13(日) 05:18:38.41 ID:tppm85mx0
IME_GET(WinTitle="")
;-----------------------------------------------------------
; IMEの状態の取得
; 対象: AHK v1.0.34以降
; WinTitle : 対象Window (省略時:アクティブウィンドウ)
; 戻り値 1:ON 0:OFF
;-----------------------------------------------------------
{
ifEqual WinTitle,, SetEnv,WinTitle,A
WinGet,hWnd,ID,%WinTitle%
DefaultIMEWnd := DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hWnd, Uint)
;Message : WM_IME_CONTROL wParam:IMC_GETOPENSTATUS
DetectSave := A_DetectHiddenWindows
DetectHiddenWindows,ON
SendMessage 0x283, 0x005,0,,ahk_id %DefaultIMEWnd%
DetectHiddenWindows,%DetectSave%
Return ErrorLevel
}
これが機能しないんだよな
210 :
名無しさん@お腹いっぱい。
2015/09/13(日) 10:12:25.20 ID:JTOkkRYB0
211 :
名無しさん@お腹いっぱい。
2015/09/13(日) 12:55:50.14 ID:tppm85mx0
意図通り動作するマシンとしないマシンがあって混乱中
ほぼ同じ環境なのに
212 :
名無しさん@お腹いっぱい。
2015/09/13(日) 15:54:22.92 ID:0IksCrEg0
あるスクリプトから既に常駐状態の別のスクリプト内にある
aaa:
というラベルを実行するにはどうすればいいでしょうか
213 :
名無しさん@お腹いっぱい。
2015/09/13(日) 18:51:04.35 ID:ZFeoAT7n0
あるスクリプトからPostMessage
別スクリプトでOnMessage()→GoTo, aaa
214 :
名無しさん@お腹いっぱい。
2015/09/13(日) 20:01:20.58 ID:0IksCrEg0
>>213 ありがとうございます
下のようにやることでできるようになりました
送られる側
MsgNumber := 2457 ;数値はてきとう
OnMessage( MsgNumber , "FunctionName" )
FunctionName( wParam , lParam , msg , hwnd )
{
MsgBox , ウインドウメッセージが送られました`n`nwParam:%wParam%`nlParam:%lParam%`nmsg:%msg%`nhwnd:%hwnd%
If( wParam = 1 )
{
MsgBox , 1を実行
}
}
送る側
DetectHiddenWindows, On
Msg := 2457 ;メッセージ番号
wParam := 1 ;メッセージの第1引数
PostMessage , Msg , wParam , , , 送られる側のスクリプトのパス ahk_class AutoHotkey
215 :
名無しさん@お腹いっぱい。
2015/09/13(日) 20:53:44.44 ID:lBJNhxx/0
216 :
名無しさん@お腹いっぱい。
2015/09/14(月) 01:31:47.47 ID:OiVrGh/t0
OnMessageってのはautoexecutionとかで1回起動させてしまえば
timerイベントで常に実行させておく、みたいなことをする必要無いですかね?
217 :
名無しさん@お腹いっぱい。
2015/09/14(月) 01:49:16.10 ID:mUgBafdp0
ないよん
定期監視じゃなくイベントが発生したタイミングで起動するためのものだし
218 :
名無しさん@お腹いっぱい。
2015/09/14(月) 02:42:19.29 ID:OiVrGh/t0
219 :
名無しさん@お腹いっぱい。
2015/09/14(月) 22:58:53.08 ID:u4kScnm60
If (○○)
Return
みたいなのって一行で書けないものかな?
220 :
名無しさん@お腹いっぱい。
2015/09/14(月) 23:38:37.10 ID:mUgBafdp0
IfEqual
221 :
名無しさん@お腹いっぱい。
2015/09/14(月) 23:46:07.93 ID:efpHlwrD0
三項演算子
でも視認性メンテナンス性を考えたらちゃんと綺麗にパターンにそってスクリプトは書いとくほうがいいぞ
後で何してんだこれとか自分で書いてるものを読み解くのに時間食われたらそれこそ時間の無駄だし
222 :
名無しさん@お腹いっぱい。
2015/09/15(火) 01:02:26.04 ID:hsiwELNn0
三項演算子は基本変数への代入系しかできないじゃね
return frag ? true : false などの関数の戻り値指定は有効だが
frag が有効なときだけreturnする、は無理かと
1行でルーチン抜けたいならこっち
IfEqual frag,1, return
http://ahkwiki.net/IfEqual >IfEqualのようなコマンド名の形式の場合、更にカンマで区切って条件に一致した場合に実行するコマンドを記述できる。
223 :
名無しさん@お腹いっぱい。
2015/09/15(火) 03:20:04.42 ID:/YUs9+C50
>>220-222 どうもです。IfEqualというコマンドがあったのかーと思ったらv2では排除されてたようです…
三項演算子みたいな省略的な書き方が他にもあるのかと気になってたのでVerまでは考慮しておりませんでした。すんません
224 :
名無しさん@お腹いっぱい。
2015/09/15(火) 03:51:15.34 ID:A4RzQ5uM0
行を減らしさえすれば美しいという幻想はいつまで続くのか
225 :
名無しさん@お腹いっぱい。
2015/09/15(火) 06:17:48.39 ID:/YUs9+C50
単に使い分けたいだけなんだがなぁ
視認性優先して改行入れて行数増やすこともあるよ
226 :
名無しさん@お腹いっぱい。
2015/09/15(火) 07:12:09.96 ID:UsCwcKFK0
v2なら if true, MsgBox ってな感じでいけるみたいやで
ドキュメント見ただけだけど
227 :
名無しさん@お腹いっぱい。
2015/09/15(火) 07:24:15.25 ID:/YUs9+C50
228 :
名無しさん@お腹いっぱい。
2015/09/15(火) 10:02:28.32 ID:hsiwELNn0
v2て、そんな特殊なもの使うのにver指定もなしで普通に質問されてもさあ
特にif回りはバグ元になるから旧コマンド一掃するよって謳ってるverなのに
229 :
名無しさん@お腹いっぱい。
2015/09/15(火) 14:37:46.05 ID:mWkYRkN50
マウスを動かした方向とは別の出力をさせるみたいなことってできますかね?
たとえば、
AAAAAAAAAAAAAAAAAA
という文字列があったとして、この文字列の中央で左クリックしながら右にマウスを動かして文字を選択した場合に、
中央から右側にマウスカーソルは動くけれど、ドラッグ選択される文字は中央から左側になる、みたいな感じのことがしたいです
230 :
名無しさん@お腹いっぱい。
2015/09/15(火) 15:46:53.97 ID:3CHmYEvD0
できるよ。現座標Xに対して+かーでmousegetposで調べればいい。
231 :
名無しさん@お腹いっぱい。
2015/09/15(火) 15:48:21.63 ID:3CHmYEvD0
あ、でも多分カーソルの反対にドラッグとか言うのは無理かも。
shiftとLeft送ることになると思う。
232 :
名無しさん@お腹いっぱい。
2015/09/15(火) 16:31:57.16 ID:/YUs9+C50
>>228 三項演算子のような他言語でも用いられる事がある書き方で解決できるのか疑問に思ってたので
AHK特有のコマンド(または仕様)にまで及ぶ内容だとは想定できませんでした。すんません
233 :
名無しさん@お腹いっぱい。
2015/09/15(火) 16:42:38.32 ID:3CHmYEvD0
思いついたのは
mousegetpos,X,Y
while getkeystate("Lbutton","P"){
mousegetpos,X2,Y2
idouX = X-X2
If (idouX > 20)
send,+{left}
}
みたいな感じ。動かしても居ないから結果は知らんけど。
要するに押してる間中pos監視してうごいた分でsendを送る
234 :
名無しさん@お腹いっぱい。
2015/09/15(火) 19:46:05.35 ID:5o1yy9Si0
自分にぴったりなサイトがあった
日本語で書いた変数名を英語にしてくれるサイト
https://codic.jp/ 素人かつ英語苦手だとまず変数名や関数名をどうするかで悩むんだよね
まぁahkは日本語で変数名かけるけども
235 :
名無しさん@お腹いっぱい。
2015/09/15(火) 19:52:35.84 ID:Eux4ANEd0
>>234 真っ白だと思ったらgoogle-analytics.comをブロックしてるせいだった
236 :
名無しさん@お腹いっぱい。
2015/09/15(火) 20:01:13.60 ID:tUDP7N170
解析ブロックしたら表示されないってひどい作りだなw
237 :
名無しさん@お腹いっぱい。
2015/09/15(火) 20:09:23.81 ID:Eux4ANEd0
まあ、サービス改善にもなるかもしれないし別にいいけどw
238 :
名無しさん@お腹いっぱい。
2015/09/15(火) 22:47:08.77 ID:zhVi9RCM0
USBキーボードとPS/2キーボードで挙動が異なる現象に遭遇
F1 & H::send,{Blind}{Left}
でShiftも押した場合に
USBキーボードだとShift+←と同じ挙動
PS/2キーボードだと1文字だけShift+←,その後はShift+Hと同じ挙動です.
この現象は既知なのでしょうか?
VerはWin8.1が1.1.22.04でWin7 32bitが.1.22.06です.2台のPCで同じ現象が見られています.
239 :
名無しさん@お腹いっぱい。
2015/09/16(水) 00:52:28.10 ID:tU5xmvOn0
>>233 文字選択のほうがわかりやすいかとおもってそちらを例えに出しましたが
例えがまずかったですね +{Left}だとまずいです すいません
前にここでPoserの質問をしていたのは自分ですが
今回やりたいことは、Poserのビューポート上で、左クリック+ドラッグ操作をする時にマウスの動きをいじりたかったのです
具体的にはマウスを左クリックしながら右にドラッグすると上方向にドラッグしたことになり、
左にドラッグすると下にドラッグしたことになることにしたかったのです
Poserのビューポート操作を自分がよく使う3Dアプリと同じように操作できるように設定したいのですがうまくいきません
その3Dアプリだと左右ドラッグ操作で発動するショートカットがあるのですがPoserではこれが上下ドラッグになっているのです
240 :
名無しさん@お腹いっぱい。
2015/09/16(水) 01:23:31.20 ID:TmYsYnFU0
強制的にそういう操作するならやっぱりwhileだな。mousemoveの合わせ技だ。
要するに指定方向に差分だけ進むようにすればいいんだけど、その分While監視だと処理は重くなる
241 :
名無しさん@お腹いっぱい。
2015/09/16(水) 05:13:15.83 ID:H3wp36km0
UserAgentを変更してURLからHTMLを取得して変数に格納する方法を教えて下さい。
使ってるのは AutoHotkeyU32 (v1.1.22.06) です。
二つのモジュールを使って試みたもののやり方が悪いのか成功せず。
#Include %A_ScriptDir%/httpQuery.ahk
;
http://www.autohotkey.com/board/topic/30624-function-httpquery-get-and-post-requests-update-036/ #Include %A_ScriptDir%/UrlDownloadToVar.ahk
;
http://www.autohotkey.com/board/topic/98495-super-urldownloadtovar-can-set-timeout-charset-urlcodepage-proxy-cookie-referer-useragent-enableredirects/ URL =
http://www.ugtop.com/spill.shtml UserAgent = Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
# httpQuery
html := ""
httpAgent := UserAgent
httpQuery(html, URL)
file := FileOpen("output-A.html", "w")
file.Write(html) ; 空になる
file.Close()
# UrlDownloadToVar
html := UrlDownloadToVar(URL, "20932", "", "", "", "", "", UserAgent) ; 20932 == euc-jp
httpAgent := UserAgent
httpQuery(html, URL)
file := FileOpen("output-B.html", "w")
file.Write(html) ; 文字化けする
file.Close()
242 :
名無しさん@お腹いっぱい。
2015/09/16(水) 05:15:54.43 ID:H3wp36km0
すいません。二番目のソースに一番目のソースが混ざりました
# UrlDownloadToVar
html := UrlDownloadToVar(URL, "20932", "", "", "", "", "", UserAgent) ; 20932 == euc-jp
file := FileOpen("output-B.html", "w")
file.Write(html) ; 文字化けする
file.Close()
243 :
名無しさん@お腹いっぱい。
2015/09/16(水) 12:34:50.08 ID:5kMnRgYx0
244 :
名無しさん@お腹いっぱい。
2015/09/16(水) 17:55:15.94 ID:H3wp36km0
>>243 今しがた、同じ条件で試してみたんですが、今度は文字化けなく成功しました。
初めに"euc-jp"と指定したときは確かに文字化けしたような気がするんですが……。
(そういえばその後にバージョン情報を調べるついでにAHKを最新版にしたので、
もしかしたらそのことが関わっているのかもしれません)
一応エディタをアンドゥしまくって失敗時のソースを復元し、再度実行してみても成功しました。
ともかく、解決できてよかったです。ありがとうございました。
245 :
名無しさん@お腹いっぱい。
2015/09/16(水) 18:31:53.58 ID:5kMnRgYx0
>>244 今気付いて
>>243を再確認してみた。
html := UrlDownloadToVar(URL, "euc-jp", "", "", "", "", "", UserAgent) ; 20932 == euc-jp
MsgBox, % html
ファイルに出力しないで直接MsgBoxで見たら文字化けは無かった。
246 :
名無しさん@お腹いっぱい。
2015/09/17(木) 00:08:29.44 ID:0GNCebUh0
>>245 こちらで再試行したときはファイル出力も成功しました。
一応、バージョン情報も確認してみてください。
いつの間にか2chのdatが取得できなくなってたので、
早速UrlDownloadToVarを利用したスクレイパーを書いてみました。
http://pastebin.com/8hhEtvFx >m ^と$が各行の行頭・行末にマッチするようになる。
作る途中で気付いたんですが、これ m) 働いてなくないっすか
RegExMatch("
(
aaa
bbb
ccc
)", "m)^(bbb)", $)
MsgBox % $1 ; 空文字
247 :
名無しさん@お腹いっぱい。
2015/09/17(木) 00:13:06.45 ID:0GNCebUh0
あとこれも初めて知った。トラップが多い!
/* 複数行コメントの終わりが単独だと
*/
ToolTip, 実行される
Sleep, 2000
/* 複数行コメントの終わりが単独でないと */
ToolTip, 実行されない
Sleep, 2000
248 :
名無しさん@お腹いっぱい。
2015/09/17(木) 01:13:17.18 ID:WqwVZrqD0
>>240 そうですか ちょっとためしてみます どうもです
>>247 これが原因だったんだ たまにスクリプトが動かないことがあったけど ためになった
249 :
名無しさん@お腹いっぱい。
2015/09/17(木) 03:54:06.32 ID:3HuGyT6d0
初心者向けのページ教えて
250 :
名無しさん@お腹いっぱい。
2015/09/17(木) 08:01:13.31 ID:qHToz6EC0
251 :
名無しさん@お腹いっぱい。
2015/09/17(木) 08:08:55.12 ID:kM3ONwaq0
>>246 mオプションでのデフォルトの「行末」は\r\n
ヒアドキュメントの改行コードは\nなのでマッチしてない
RegExMatch("aaa`r`nbbb`r`nccc", "m)^(bbb)", $)
or
RegExMatch("
(
aaa
bbb
ccc
)", "m`n)^(bbb)", $)
252 :
名無しさん@お腹いっぱい。
2015/09/17(木) 08:10:11.30 ID:kM3ONwaq0
×「行末」 ○「改行」
253 :
名無しさん@お腹いっぱい。
2015/09/17(木) 10:41:54.18 ID:ji2+y1tj0
ウィンドウの右上の閉じるボタンの位置情報取得ってどうすればできます?
254 :
名無しさん@お腹いっぱい。
2015/09/17(木) 11:09:40.82 ID:wVWznDfL0
SysGetで
SM_CXSIZE (30)
SM_CYSIZE(31)
SM_CYFRAME(33)
SM_CXFRAME(32)
あたりの値を求め、ウィンドウサイズ左端から逆算して割り出す
尚、最大最小?等のアイコンがあるかどうかはWinGet, Styleで調べられる
255 :
名無しさん@お腹いっぱい。
2015/09/17(木) 11:10:43.33 ID:wVWznDfL0
×左端から
○右上端から
寝ぼけたすまん
256 :
名無しさん@お腹いっぱい。
2015/09/17(木) 11:37:01.52 ID:+U+k5cUm0
width-30,10あたりを適当に押してるけどw
257 :
名無しさん@お腹いっぱい。
2015/09/17(木) 12:22:08.24 ID:A/7kw9Bt0
>>253 その情報を取得して何がしたいか分からないけど、
例えば、「閉じる」ボタンを押したらウインドウを閉じるんじゃなく最小化したいとかなら、
以下の関数使えばマウスポインタの位置が「閉じる」ボタンの上か調べられる
>【 名 称 】 Autohotkey マウス関数群 (コピペ/組込用)(MUS.ahk)
>【製作言語】 AutoHotkey Scripts (
http://www.autohotkey.com/) >【 更新日 】 2012.11.11
>【 製作者 】 eamat.
>【 URL 】
http://www6.atwiki.jp/eamat/ の、MUS_GetTitleBarPos()関数で「20」が返って来るかどうか。
↑何か質問の答になってないようなので、別な答を。
力技だけど、閉じるボタンの画像を用意して「ImageSearch」で位置を取得する。
258 :
名無しさん@お腹いっぱい。
2015/09/17(木) 16:27:55.00 ID:4LAmt04I0
259 :
名無しさん@お腹いっぱい。
2015/09/17(木) 16:57:47.86 ID:F1JlH5P90
>>258 手動で試してみたが次のタブグループは日本語キーボードだと反応しない?
> 補足: Customizable Shortcuts 拡張機能を用いて、キーボードショートカットをカスタマイズすることができます。
変えたらできるかも未確認
×次のタブグループ Ctrl + ` 一部のキーボードレイアウトでのみ使用可
○前のタブグループ Ctrl + Shift + ` 一部のキーボードレイアウトでのみ使用可
前のタブグループ
×Send ^`
○Send ^`` ; エスケープ
○Send ^+@ ; 上と同じ意味
260 :
名無しさん@お腹いっぱい。
2015/09/17(木) 17:03:19.64 ID:F1JlH5P90
補足
A → Shift + a
` → Shift + @
同じ意味になる
Ctrl + ` → Ctrl + Shift + @
Ctrl + Shift + ` → Ctrl + Shift + @
261 :
名無しさん@お腹いっぱい。
2015/09/17(木) 17:23:23.84 ID:0GNCebUh0
>>251 なるほど、そういうことでしたか。ありがとうございます。
262 :
名無しさん@お腹いっぱい。
2015/09/18(金) 16:38:39.51 ID:MADHZaul0
>>254 やってみたけどうまくいかない。実測では50くらいあるのにフレームとサイズ合わせても50に届かない。なんでだろう
263 :
名無しさん@お腹いっぱい。
2015/09/18(金) 18:00:02.89 ID:9G09CoR10
環境書いてないからわからんが
エアロ(非クラシック)だと閉じるボタンだけ他より横に長い
あと解像度の高いモニタでDPI 100%超の設定で使ってると取得値が変わるのかも
うちは最小ボタン横にツールチップ表示させてるが
厳密なサイズ割り出しまでは必要ないので適当なオフセット値入れてごまかしてる
264 :
名無しさん@お腹いっぱい。
2015/09/18(金) 18:14:57.18 ID:z07x5dup0
エアロは取得できないのか。知らんかった
265 :
名無しさん@お腹いっぱい。
2015/09/18(金) 18:23:03.13 ID:9G09CoR10
いや取得できないわけじゃないけど最大&最小と閉じるボタンとでボタンのサイズ違うでしょ
エアロがどうかっていうよりXP以降の仕様かな、詳しくはわかんない
ちなみにエアロかどうかは
DllCall("dwmapi\DwmIsCompositionEnabled","IntP",_ISENABLED)
で取得できる
266 :
名無しさん@お腹いっぱい。
2015/09/19(土) 02:09:26.93 ID:AqLWnhbc0
戻り値を見る限り成功してるっぽいんですが、キャプチャが空なのは何故でしょうか?
ret := RegExMatch("test", ".+", "$")
msgbox,
(
ret: %ret%
$: %$%
)
267 :
名無しさん@お腹いっぱい。
2015/09/19(土) 02:22:22.86 ID:y9C3jt2l0
"$" → $
268 :
名無しさん@お腹いっぱい。
2015/09/19(土) 02:38:47.25 ID:AqLWnhbc0
おお……ありがとうございます
269 :
名無しさん@お腹いっぱい。
2015/09/19(土) 02:40:53.93 ID:zNQEN6xY0
>>266 たぶん勘違いしてるのだと思うけど
>RegExMatch(Target, Pattern [, OutputVar = "", StartingPos = 1])
これはOutputVar引数に何も書かなかった場合に「""」(つまり空)と指定したことになりますよって意味ね
ダブルクォーテーションで括って下さいって意味ではない
270 :
名無しさん@お腹いっぱい。
2015/09/19(土) 02:46:55.06 ID:AqLWnhbc0
>>269 まさにその通りの勘違いです
ご解説ありがとうございます
271 :
名無しさん@お腹いっぱい。
2015/09/20(日) 08:15:12.82 ID:ZeFnM2lq0
Guiのウィンドウ番号からウィンドウタイトルを取得する方法はありますか?
272 :
名無しさん@お腹いっぱい。
2015/09/20(日) 09:10:41.16 ID:Q0X8RffF0
任意のキー入力、任意のマウスボタンやマウスの動きを待機することって出来ますか?
たとえば、スクリーンセーバーから復帰する時は、キーポードやマウスの任意の動きで反応しますよね?
それと同様に、
いかなる操作にも反応できる状態で待機して、検出した瞬間に次の処理へ進むようにしたいのです。
273 :
名無しさん@お腹いっぱい。
2015/09/20(日) 09:35:44.10 ID:8fr300CT0
任意っつーとユーザーが決めた特定のキーや操作(optional) って思ってしまうけど
スクリーンセーバー解除はどんな操作でもOK (any)って意味だよね
OnMessageでフックかければ大抵の挙動は拾えるんじゃない?
274 :
名無しさん@お腹いっぱい。
2015/09/20(日) 18:47:43.66 ID:cLEyLRXR0
>>271 作成するときにウィンドウハンドル保存すれば?
Gui, 2:New, HwndVar2, BBB
Gui, Add, Text,, BBB
Gui, Show
Gui, New, HwndVar1, AAA
Gui, Add, Text,, AAA
Gui, Show
WinGetTitle, Title1, ahk_id %Var1%
WinGetTitle, Title2, ahk_id %Var2%
MsgBox % Var1 "`n" Var2 "`n`n" Title1 "`n" Title2
Return
275 :
名無しさん@お腹いっぱい。
2015/09/20(日) 19:17:11.44 ID:ZeFnM2lq0
>>274 ああ無理っぽいですかまぁでもそれで事足りますセンキューベリマッチ
276 :
名無しさん@お腹いっぱい。
2015/09/20(日) 22:07:18.39 ID:EytMjWIu0
words := [3,1,8]
Sort,words
res =
for i, word in words
{
res := res i word "`r`n"
}
MsgBox % res
こうしても、ソートされていません
文字列をソートしたかったのですが出来なかったので
数字にしてみたのですが、やはりされていませんでした
どこが間違ってるのでしょうか?
277 :
名無しさん@お腹いっぱい。
2015/09/20(日) 22:28:55.68 ID:AtBTsPzi0
>>276 Sortコマンドはオプションを省略すると区切り文字が改行になる
と表の中に紛れて分かりにくいけどwikiに書いてある
words := "bbb`nccc`naaa"
Sort, words
MsgBox, % words
カンマ区切り時文字列をソートするならこんな感じ
words := "bbb,ccc,aaa"
Sort, words, D`,
MsgBox, % words
278 :
名無しさん@お腹いっぱい。
2015/09/21(月) 05:30:20.29 ID:FQ68Fwod0
他の言語からの類推から
配列にしてからソートするのだと思いこんでいたのですが
そもそも配列にする必要もなかったのですね
ありがとうございました
279 :
名無しさん@お腹いっぱい。
2015/09/21(月) 08:57:43.49 ID:gz/D8cNZ0
逆にAHKってSortコマンドで配列内のソート出来るの?
280 :
名無しさん@お腹いっぱい。
2015/09/21(月) 09:05:50.26 ID:FX6AvoOw0
ていうかahkって配列あったのかw
今まで一度も必要としたことがない
281 :
名無しさん@お腹いっぱい。
2015/09/21(月) 12:57:01.93 ID:I8YrMLMK0
IME_GET()がまともにIMEのモードを取得できてないとずっと悩んでいたけど
単にIME.ahkのバージョンが古いだけだったわ
282 :
名無しさん@お腹いっぱい。
2015/09/21(月) 18:51:14.14 ID:xY99p/h30
>>281 >単にIME.ahkのバージョンが古いだけだったわ
なぬっ!?っと思ってすぐさま確認したら「IME20121110.zip」のままじゃねーかよ。
でも、WheelScroll.ahkの新しいヤツ、「WheelScroll20150711.zip」がゲットできたから良かった。
さmくす。
283 :
名無しさん@お腹いっぱい。
2015/09/22(火) 20:15:53.44 ID:IXkpDD1f0
>>273 ちょっと忙しくてまだ検証できてない。
しばらく先になるけど必ず調べるから。
情報ありがとう!
284 :
名無しさん@お腹いっぱい。
2015/09/23(水) 22:17:09.28 ID:JYxXadw30
AutoHotkey v1.1.22.06をモバイルキーボードで使っているのですが
本体の小ささからファンクションキーが存在しないため、
*1::keyWait, 1, T0.25
if ErrorLevel
send,{Blind}{F1}
else
send,{Blind}1
keyWait, 1
return
こんな感じで長押しするとファンクションキーを呼び出せるようにしてみました
しかし高速で数字キーを1,2,3と入力した場合3,2,1と出力されてしまいます
調べたところkeyWaitはマルチスレッド処理がなされず
割り込んだ順で処理されるのが理由だとわかりましたが、何か他に方法はないものでしょうか?
テンプレにあるAutoHotkey_Hでexampleを元にマルチスレッドを試してみましたが
こちらでも同じ結果になりました(自分の理解が足りないせいかもしれませんが)
285 :
名無しさん@お腹いっぱい。
2015/09/24(木) 02:03:16.94 ID:ylp5wp8j0
286 :
名無しさん@お腹いっぱい。
2015/09/24(木) 04:35:19.63 ID:Rx/njl7o0
キーを押しっぱなしにすると少しの遅延のあと連打されるじゃないですか
あの遅延を短くするにはどうすればいいんですか?
287 :
名無しさん@お腹いっぱい。
2015/09/24(木) 04:44:04.09 ID:Rx/njl7o0
ああこれAHKで書かなくてもWindowsで設定できるんですね
失礼しました
288 :
名無しさん@お腹いっぱい。
2015/09/24(木) 08:51:02.84 ID:npkfS45d0
289 :
名無しさん@お腹いっぱい。
2015/09/24(木) 13:31:29.29 ID:5yaO6Szn0
対象のファイル・フォルダが移動中でないか調べる方法はある?(移動はAHKのコマンド経由だとは限らない)
290 :
名無しさん@お腹いっぱい。
2015/09/24(木) 14:30:15.85 ID:5yaO6Szn0
↑が無理でしたら、FileMove等の移動・コピーが完了するまで待たせる方法はありますか?v2
291 :
名無しさん@お腹いっぱい。
2015/09/24(木) 14:41:45.63 ID:VW4hw6oq0
移動やコピーのコマンドって移動が終わるまで次の行には行かないんじゃない
Fastcopyみたいなソフト使ってコピーするならRunwaitで終わるまで待つとか
292 :
名無しさん@お腹いっぱい。
2015/09/24(木) 15:06:56.03 ID:Q+MPQBZ30
フォルダのファイルをloopでリストアップして変数に入れて突き合わせとか。
Dropbox完了まで待つってのがアッブローダーにあるからそれみて参考にすれば?
293 :
名無しさん@お腹いっぱい。
2015/09/24(木) 16:26:55.60 ID:5yaO6Szn0
>>291-292 参考にしますセンキューベリマッチ
>移動やコピーのコマンドって移動が終わるまで次の行には行かないんじゃない
についてですがこれは本当ですか?
何故か一度に大量のファイルをリネームすると失敗してるファイルがあります
例えば"D:\image\"というフォルダに900kb程度のpngファイルを複数入れたとします
ファイルは連番で先頭には"黒"が付いてたとして、"黒"を"白"にしてまた"黒"に戻すスクリプトを書きました
(フォルダの中身 黒001.png, 黒002.png…)
Loop, 1000
{
Var := A_Index
LoopFiles, D:\image\黒*.png ; 黒を白に変える
FileMove, % A_LoopFileFullPath, % StrReplace(A_LoopFileFullPath, "黒", "白")
LoopFiles, D:\image\白*.png ; 白を黒に戻す
FileMove, % A_LoopFileFullPath, % StrReplace(A_LoopFileFullPath, "白", "黒")
LoopFiles, D:\image\*.png ; 白が残ってたらエラー
{
If InStr(A_LoopFileFullPath, "白")
{
MsgBox, % "Index" Var " Error"
Break 2
}
}
}
MsgBox, End
フォルダ内のファイルが少ないと何回やってもエラーが出ないのですが、200枚くらいだと頻繁にエラーが出ます
294 :
名無しさん@お腹いっぱい。
2015/09/24(木) 16:30:18.04 ID:88R9gtA70
次に行かないってことはないと思う。大量に処理するとおそらく処理漏れがある。
だから正確性ならLoopで付きあわせってことになると思う。
295 :
名無しさん@お腹いっぱい。
2015/09/24(木) 19:13:11.45 ID:5yaO6Szn0
>>292 DropBoxさっき入れたので何となくの解釈ですが最後にSleep長めに入れて対策してますね。結局はそれしかないんでしょうか
>>294 リネーム自体はFileMoveの戻り値を利用して失敗したらループさせる方法で解決できるんですが
移動後に他のコマンドを実行したい場合でも確実に移動・コピーの完了を待たせる手段はないものでしょうか?
296 :
名無しさん@お腹いっぱい。
2015/09/24(木) 20:09:35.39 ID:6lvDUJJX0
297 :
名無しさん@お腹いっぱい。
2015/09/24(木) 21:19:30.68 ID:xGWYHInQ0
>>295 動作確認してないのでいい加減なこと言うようだけど、
コピー(移動)前に元ファイルのファイル容量を覚えといて
コピー先で該当ファイルがそのファイル容量になったかを監視するとか?
298 :
名無しさん@お腹いっぱい。
2015/09/24(木) 21:23:22.95 ID:6lvDUJJX0
容量もだけど更新日時や作成日時も見ておくほうがより正確。バイト数だけだと偶然一致があり得るんだよね
299 :
名無しさん@お腹いっぱい。
2015/09/24(木) 22:04:43.33 ID:crjp70zC0
>285,288
Criticalコマンドで解決したかに見えたのですが
入力順を保持するためのバッファ処理が
キー長押し時にもキーリピート分で走ってしまうため、長押しして離すと
短押しキーが溜まったバッファ分だけ出力されてしまいますね…
命令の記述位置を変えたりコマンド一覧を眺めたりと色々と試していますが
思いのほか簡単にはいかない感じです
何にしてもお二人ともレスありがとうございます
上手く書けたら報告に来ますw
300 :
名無しさん@お腹いっぱい。
2015/09/24(木) 22:42:45.95 ID:5yaO6Szn0
301 :
名無しさん@お腹いっぱい。
2015/09/24(木) 23:29:11.19 ID:UKQc37JF0
>>299 うちではうまく行ってるけどどうじゃろか
*1::
*2::
*3::
tim .= tim ? "" : A_TickCount
return
*1 up::
*2 up::
*3 up::
key := (A_TickCount-tim>250 ? "F" : "") . SubStr(A_ThisHotkey,2,1)
send,{Blind}{%key%}
tim := ""
return
302 :
名無しさん@お腹いっぱい。
2015/09/25(金) 09:11:26.74 ID:6ghJoy8F0
303 :
301
2015/09/25(金) 10:42:39.09 ID:ly3ZkqvY0
ファンクションはキーUP待たないで発射したいのか、ちょい修正
*1::
*2::
*3::
tim .= tim ? "" : A_TickCount
if (A_TickCount-tim>250 && !flg){
key := "F" . SubStr(A_ThisHotkey,2,1)
send,{Blind}{%key%}
flg := 1
}
return
*1 up::
*2 up::
*3 up::
if (!flg) {
key := SubStr(A_ThisHotkey,2,1)
send,{Blind}{%key%}
}
tim := ""
flg := ""
return
304 :
名無しさん@お腹いっぱい。
2015/09/25(金) 17:42:07.83 ID:rFOJjuhL0
305 :
名無しさん@お腹いっぱい。
2015/09/25(金) 18:46:10.95 ID:s6SkcoIu0
306 :
名無しさん@お腹いっぱい。
2015/09/25(金) 20:08:40.09 ID:rFOJjuhL0
ありがとうございます。リンク先があったんですね
euc-jpにする前にsjisにする必要があるので
変換しようと思ったのですが、うまくできません
str := "あいうえお"
str := StrPut(str,"CP932")
MsgBox % str
のようにやっても、14とか出ます
どうしたらUTF8をSJISに出来るのでしょう?
307 :
名無しさん@お腹いっぱい。
2015/09/25(金) 20:28:49.20 ID:142k8d7b0
特定のサイトでOn/Offの連射をしたいのですが、連射はできるのですが、Onの状態で非アクティブまたはブラウザを閉じた場合ONのまま制御ができなくなります。
非アクティブ・ブラウザを閉じた場合Offにしたいのですが、下記では出来ませんでした。宜しくお願いします。
#IfWinActive, ;サイト名
q::
Toggle:=!Toggle
if(Toggle){
SetTimer, z, 500
}else{
SetTimer, z, off
}
IfWinNotActive, ;サイト名
SetTimer, z, off
return
#IfWinActive
308 :
名無しさん@お腹いっぱい。
2015/09/25(金) 20:40:40.11 ID:xYWWmgj10
SetTimer, z, 500
で使ってるz:ラベルの最初の方に
IfWinNotActive, ;サイト名
{
SetTimer, z, off
Return
}
を入れとけばいいんじゃない
309 :
名無しさん@お腹いっぱい。
2015/09/25(金) 21:14:42.13 ID:rFOJjuhL0
StrPutの返り値は文字列じゃなくてバイト数のようです
ですが説明を読んでも、今ひとつ分かりません
StrPut autohotkey sjis
で検索しても17件しか出てきません
ごく単純に、文字列のエンコーディングを変換するには
どうすればいいのでしょうか?
310 :
名無しさん@お腹いっぱい。
2015/09/25(金) 21:31:03.19 ID:xYWWmgj10
311 :
名無しさん@お腹いっぱい。
2015/09/25(金) 21:58:05.04 ID:KV4jiEIL0
>>303 ワーオ、最高!イエース!グレート!
望み通りの動作ですし、keyWaitで試行するより
入力のレスポンスがかなり良くなってます
応用すれば他のキーでも自由に設定できそうですね
これを元にして更に色々チャレンジしてみます
本当に助かりました。ありがとうございます
312 :
名無しさん@お腹いっぱい。
2015/09/25(金) 22:15:33.21 ID:rFOJjuhL0
エンコーディング変換という、
ごく当たり前の処理の情報が何故こんなに少ないのでしょうか?
313 :
名無しさん@お腹いっぱい。
2015/09/25(金) 23:23:39.30 ID:T68s/oJQ0
314 :
名無しさん@お腹いっぱい。
2015/09/25(金) 23:43:31.50 ID:TnffJdgb0
>>307 頭に中で考えただけなんで、動くか分かんないけど。
#IfWinActive, ;サイト名
q::
Toggle:=!Toggle
if(Toggle){
SetTimer, z, 500
}else{
SetTimer, z, off
}
return
#IfWinNotActive, ;サイト名
q::
Toggle:=false
SetTimer, z, off
return
315 :
名無しさん@お腹いっぱい。
2015/09/26(土) 00:30:30.54 ID:djAj203U0
非アクティブ化で切りたい仕様のようだから
zの中で非アクティブチェックするのがいいと思うよ
316 :
名無しさん@お腹いっぱい。
2015/09/26(土) 01:30:54.81 ID:iUEIDkcX0
>>314だす
酔っぱらった頭で考えただけあって滅茶苦茶なコードですた・・・ハジカシイorz
もうちょっと飲も
317 :
名無しさん@お腹いっぱい。
2015/09/26(土) 01:51:27.08 ID:xmb8Y91P0
酔っぱらいはバグ人間。人間に非ず
318 :
名無しさん@お腹いっぱい。
2015/09/26(土) 01:51:59.22 ID:pjw6RnBc0
319 :
名無しさん@お腹いっぱい。
2015/09/26(土) 02:09:22.78 ID:JeI01QvY0
返信遅くなりました
>>308 >>310 丁寧にありがとうございます。無事思い通りの動作ができました
上記でどうにかする事ばかり考えてました・・・
>>314 私は酔っ払っていませんでしたが、助力を頂く前にそのコードを試してました・・・
320 :
名無しさん@お腹いっぱい。
2015/09/26(土) 03:22:33.25 ID:djAj203U0
文字列の中でオブジェクトも展開できたらいいのに
321 :
名無しさん@お腹いっぱい。
2015/09/26(土) 09:03:26.15 ID:LL2F5NZg0
>>318 ありがとうございます
StrPutVarは第二引数に変換後の文字列を入れるようなので、
StrPutVar(string, ByRef var, encoding)
{
; Ensure capacity.
VarSetCapacity( var, StrPut(string, encoding)
; StrPut returns char count, but VarSetCapacity needs bytes.
* ((encoding="utf-16"||encoding="cp1200") ? 2 : 1) )
; Copy or convert the string.
return StrPut(string, &var, encoding)
}
str := "あいうえお"
out := ""
StrPutVar(str,&out,"CP932")
MsgBox % out
とやってみましたが、何故か何も表示されません
変換元エンコーディングを指定する場所がないのが気になりますが。
コードはUTF-8で記述しています
322 :
名無しさん@お腹いっぱい。
2015/09/26(土) 09:38:13.56 ID:LL2F5NZg0
323 :
名無しさん@お腹いっぱい。
2015/09/26(土) 11:05:39.96 ID:rhXvYJM20
nkf32.dll辺りと連携した方がいいと思う>文字コード変換
過去ログにahkから呼び出すためのスクリプトがあったはず
324 :
名無しさん@お腹いっぱい。
2015/09/29(火) 03:04:48.46 ID:q4T3gI780
クリップボードにファイルがあるときにその総数が知りたいんですが
どうにも上手く取れないので助言をください
DllCall("OpenClipboard", Ptr, 0)
hDrop := DllCall("GetClipboardData", Int, 0xF) ; CF_HDROP
cnt := DllCall("DragQueryFileW", Ptr, hDrop, Int, -1, WStr, 0, Int, 0)
tooltip hDrop:%hDrop%`ncnt:%cnt%
325 :
名無しさん@お腹いっぱい。
2015/09/29(火) 03:36:36.43 ID:Rdhq11FG0
エクスプローラなどででコピーしたものなら
Loop,Parse,Clipboard,`r,`n
{
MsgBox,%A_LoopField%
}
こういうので数えられるけど、そういう話ではないのかな
326 :
名無しさん@お腹いっぱい。
2015/09/29(火) 04:50:48.76 ID:q4T3gI780
いや、そういう話です。そんなに簡単に書けたとは……
昔、ファイルをコピーするとクリップボードに改行区切りのパスが入ると聞いて
メモ帳でCtrl+Vしても駄目だったので環境依存の仕様か何かだと思っていたんですが、
AHKのClipboardが動的に取り計らってくれるという意味だったんですね
今知れて良かったです。ありがとうございました
327 :
名無しさん@お腹いっぱい。
2015/10/01(木) 09:12:35.25 ID:dHOVCF+u0
WinGet, hwnd, ID, ahk_exe firefox.exe
Acc := Acc_ObjectFromWindow(hwnd)
Acc := Acc_Child(Acc, 4) ; Acc Info Viewerで取得したアドレスバーのパス
Acc := Acc_Child(Acc, 20)
Acc := Acc_Child(Acc, 4)
Acc := Acc_Child(Acc, 2)
MsgBox % Acc.accName
このようにしてACCでFirefoxからURLを取得しようとしたのですが子の取得で失敗するので正解を教えて下さい
本来は再帰的に目的のオブジェクトを探したり変更したりしたいのですが
328 :
名無しさん@お腹いっぱい。
2015/10/01(木) 17:22:21.33 ID:Ukp2Mk/E0
教えて下さい。
AHK v1.1.22.02 Unicode 64bit / Win7 64bit Home
マウス左クリックを何かのキーに置き換えます。
例
F9::LButton
又は
F9::Send,{LButton}
ところが、タスクトレイの自身のAHKアイコンの右クリックメニューの中では動作しません。
しかし、同時実行中の自分以外のAHKアイコンに対しては動きます。
何故このような挙動になるのでしょうか?
329 :
名無しさん@お腹いっぱい。
2015/10/01(木) 17:46:44.28 ID:ORi0pFmB0
仕様
自メニュー表示中は他のスレッド処理止まってる
他者(他の多重起動中の他のahkスクリプト)は別タスクで動いてるので関与可能
330 :
名無しさん@お腹いっぱい。
2015/10/01(木) 17:47:57.52 ID:9/SxiS2N0
文字化けをどうにか修正出来ませんでしょうか?。
よろしくお願いします。
FileAppend,
(
ダメ文字「〜〜〜」
)
, .\ダメ文字.txt, CP932
331 :
名無しさん@お腹いっぱい。
2015/10/01(木) 17:56:12.55 ID:9/SxiS2N0
すみません、エスケープ文字なしでの修正法です。
ダメ文字「〜`〜`〜`」
332 :
名無しさん@お腹いっぱい。
2015/10/01(木) 19:33:38.34 ID:Ukp2Mk/E0
>>329 自分の環境の問題じゃないと知って安心したよ。ありがとう!
333 :
名無しさん@お腹いっぱい。
2015/10/02(金) 01:17:10.85 ID:JUesQH/70
>>330 旧版(Autohotkeyで検索するとTopにくる)を使ってるなら
>>1 のリンク先から最新版をDLしてみては?
どうしても旧版じゃないといけないならダメ文字対策版があったはず。
もしくはダメ文字対策の関数が過去ログにあるはず。
334 :
名無しさん@お腹いっぱい。
2015/10/02(金) 01:25:54.88 ID:JUesQH/70
335 :
名無しさん@お腹いっぱい。
2015/10/02(金) 03:04:43.07 ID:JUesQH/70
336 :
名無しさん@お腹いっぱい。
2015/10/02(金) 13:05:39.25 ID:Y7lmOL750
>>335 ありがとうございます。
試行錯誤してみます。
337 :
名無しさん@お腹いっぱい。
2015/10/03(土) 01:15:25.13 ID:4vFDVsLh0
AHK v1.1.22.07 Unicode 32bit / Win7 32bit Home
アドバイスお願いします。
LAlt::display("Down")
LAlt Up::display("")
display(str) {
tooltip,%str%
}
[LAlt]を押すと、Down表示以外に{LAlt Up}イベントが出力されます。
それを回避したいです。
338 :
名無しさん@お腹いっぱい。
2015/10/03(土) 04:43:36.82 ID:hVgXFCGi0
>>337 何を言いたいのかよく分からんけど、LAlt Upを無効にしたいなら
LAlt Up::return
339 :
名無しさん@お腹いっぱい。
2015/10/03(土) 10:06:20.40 ID:4vFDVsLh0
>>338 アドバイスありがとうございます。
KeyHisotryが
A4 038 h d 1.83 LAlt
A4 038 i u 0.00 LAlt
A4 038 h u 0.48 LAlt
となるので、2行めの i u 0.00 LAlt を出ないようにしたいです。
当初、
flag==1のとき LAltを1回押すごとにDown/Upのトグル動作
flag==0のとき、通常動作
を意図してスクリプトを作ったのですが、flag==1のときにLAltを押しても
Down/Upがトグルしなかったので調べたところ、
LAltを送る記述をしなくても、KeyHistory に LAlt Upが出ていました。
340 :
名無しさん@お腹いっぱい。
2015/10/03(土) 10:58:49.22 ID:hVgXFCGi0
>>339 key historyは入力を記録しているだけなのでScriptに影響しない。
スクリプトの記述ミス、またはフラグ管理を失敗していると思われる。
f9:: ; f9でフラグ変更
!f9::
if flag = 2
send, {alt up}
flag := !flag
tooltip, %flag%
return
LAlt:: ; ※AutohotkeyのKey Historyでは動作しない。
if !flag {
send,{alt}
} else if (flag = 1) {
send,{alt down}
flag = 2
tooltip, %flag%
} else if (flag = 2) {
send,{alt up}
flag = 1
tooltip, %flag%
}
return
341 :
名無しさん@お腹いっぱい。
2015/10/03(土) 20:02:27.44 ID:4vFDVsLh0
>>339 スクリプトまでありがとうございます。
Key Historyは入力記録だけで出力判定には使えないのですね。
勘違いしていたので助かりました。
>>339を実行し、[LAlt]を押しっぱなしで KeyMillというツールで
キーイベントを見たところ、LAlt Downが1〜4回(回数は毎回違う)、LAlt Up 1回を
繰り返す状態になっていました。
環境依存の可能性が高そうなので、そちらから調査してみます。
アドバイスありがとうございます。
342 :
名無しさん@お腹いっぱい。
2015/10/03(土) 20:04:22.86 ID:4vFDVsLh0
343 :
名無しさん@お腹いっぱい。
2015/10/03(土) 21:49:15.86 ID:3qI8Ooii0
すいません。
最近使い始めてあまりわかってないのですが、スクリーンロックがかかった状態だとこのソフトは効かないものですか?
344 :
名無しさん@お腹いっぱい。
2015/10/05(月) 05:04:08.47 ID:SOr6oONc0
KeyMillというツールで表示されるVK_OEM_3とはAHKではどのキーに相当するんですか?
IMEをJPからENに変えた状態で半角全角を押すとこれが押された状態になるんですが
345 :
名無しさん@お腹いっぱい。
2015/10/05(月) 07:57:12.97 ID:J07/GDAU0
この表によると VK_OEM_3は@ (0xC0) のようだが
http://homepage3.nifty.com/ic/help/rmfunc/vkey.htm Keymill Ver.1.4落としてきてIME ONで全半押したがVK_OEM_ENLWとVK_OEM_AUTOしか出ない
@押すとVK_OEM_3(0xC0 0x1A)が出る
何らかの理由でVK_CONVERT(0x1C 0x079)をC0と読み違えるバグでも発生してるんじゃない?
数値表記を16進数にして確認してみ
win8.1 x64 JPキーボード
346 :
名無しさん@お腹いっぱい。
2015/10/06(火) 09:24:39.81 ID:5sMIM/XR0
常駐スクリプトを多重起動しようとしたときに
#SingleInstance forceでもignoreでもなくて
起動中のスクリプトを終了だけして終わりってできないですか?
347 :
名無しさん@お腹いっぱい。
2015/10/06(火) 10:28:50.48 ID:DiXvuaHq0
#SingleInstance off で多重起動許可
Autoexecuteセクション内で自力で多重起動チェックして自分以外にも起動してたら
既存スクリプトをKILLして自分もExitApp
多重起動チェックはDetectHiddenWindows,ONにして
A_ScriptHwndと同titleのahkスクリプトを
WinGet IDLastかListで探してやればいい
http://ahkwiki.net/WinGet 348 :
名無しさん@お腹いっぱい。
2015/10/06(火) 12:51:41.03 ID:5sMIM/XR0
349 :
名無しさん@お腹いっぱい。
2015/10/07(水) 05:53:11.49 ID:Z18ZPhqc0
350 :
名無しさん@お腹いっぱい。
2015/10/07(水) 09:07:42.39 ID:j68mUFxR0
>>349 横だが軽く試した感じ 同一スクリプト内でやるのは結構面倒そうだわ
OnMessage()→SendMessageの順だと自身が受け取ってしまう
SendMessage→OnMessage()の順でも先に起動してるスクリプトには届かないっぽい
351 :
名無しさん@お腹いっぱい。
2015/10/07(水) 23:15:12.19 ID:UC2M851Z0
MouseIsOver(WinTitle) {
MouseGetPos,,, Win
return WinExist(WinTitle . " ahk_id " . Win)
}
これ時々下のウィンドウがアクティブになってないと動かないんですが一発で動かすにはどうしたらいいんでしょう
352 :
名無しさん@お腹いっぱい。
2015/10/08(木) 06:23:31.59 ID:lCrLMnbM0
こんな感じでアクティブウィンドウに対応するメモファイルを開くスクリプト書いたら結構便利だ
vk1Dsc07B & MButton:: muhen_help()
vk1Dsc07B & F1:: muhen_help()
muhen_help(docname=0)
{
docfolder=%A_ScriptDir%
docext=.xmind
doctemplate=_template_
if docname
{
fn=%docfolder%\%docname%%docext%
if !FileExist(fn)
FileCopy,%docfolder%\%doctemplate%%docext%,%fn%
run,%fn%
return
}
353 :
名無しさん@お腹いっぱい。
2015/10/08(木) 06:24:09.10 ID:lCrLMnbM0
; プログラミング言語、タイトルだけで引っ掛けるもの
IfWinActive,AutoHotKey
return muhen_help("AutoHotKey")
IfWinActive,Ruby
return muhen_help("Ruby")
IfWinActive,Python
return muhen_help("Python")
IfWinActive,TiddlyWiki
return muhen_help("TiddlyWiki")
IfWinActive,Dialy
return muhen_help("TiddlyWiki")
; その他のアプリケーション
IfWinActive,ahk_class CabinetWClass
return muhen_help("Explorer")
IfWinActive,Mozilla Firefox ahk_class MozillaWindowClass
return muhen_help("Firefox")
IfWinActive,Civ IV: Beyond The Sword ahk_class GFC_StdWindowClass
return muhen_help("Civilization4")
; 対応するIfWinActiveがなかったらテンプレートをクリップボードにコピーして
; このスクリプトを開いて編集させる
WinGetActiveTitle,title
WinGetClass, class, A
clipboard=`tIfWinActive,%title% ahk_class %class%`n`t`treturn muhen_help("%title%")
run,edit %A_LineFile%
run,%docfolder%
return
}
354 :
名無しさん@お腹いっぱい。
2015/10/08(木) 09:35:43.76 ID:GRWYlLlC0
hhh.exe的なものなら過去に作ったっけ
カーソル付近の単語を対応ヘルプで検索して開く奴
355 :
名無しさん@お腹いっぱい。
2015/10/08(木) 09:40:41.55 ID:3yhzZ3UY0
Hit a Hint for Windowsなるものを見つけたのでAutoHotkeyに頼る部分がだいぶ減った
356 :
名無しさん@お腹いっぱい。
2015/10/08(木) 18:24:35.47 ID:NhOt8eVQ0
>>351 情報少なすぎ
環境と実際に動作する問題が起こる最小限のスクリプトも書かないとわからない
357 :
名無しさん@お腹いっぱい。
2015/10/08(木) 18:36:47.53 ID:GRWYlLlC0
コピペのクレクレ質問は相手せずスルーでよし
358 :
名無しさん@お腹いっぱい。
2015/10/10(土) 12:44:56.94 ID:/vs6Y5+e0
>>346 もう解決したと思うけど…
AutoItには「AutoItWinSetTitle()」というファンクションが有るので、
AHKにも有るのかと捜してみたがそれらしいコマンドは無いみたい
そこで、適当なタイトルを付けた隠しウインドウを作る方法でやてみた
最初の実行で常駐し、多重起動させて終了するはず(ver 1.1.22.07 32bit)
ちなみに、GUI作成慣れていないので、このコードで不具合有ったらゴメン
#SingleInstance off
#NoTrayIcon
DetectHiddenWindows, On
title := "タイトル - 常駐スクリプト"
class := " ahk_class AutoHotkeyGUI"
if WinExist(title . class) {
WinClose, %title%%class%
ExitApp
} else {
Gui, Show, Hide, %title%
SetTimer, jochu, 100
return
}
GuiClose:
GUI, Destroy
ExitApp
Return
jochu:
ToolTip, %A_Now%, 0, 0
Return
359 :
名無しさん@お腹いっぱい。
2015/10/11(日) 01:51:32.72 ID:il2hnji40
OnMessageでやる場合
多重起動側は自身が多重起動であることを即確認できるからフラグ立てられる
フラグ立てたら終了
終了メッセージをどっちで受け取っても終了処理することに変りないから
終了処理内でフラグ見て処理は振り分けられる
そんなに複雑にはならない気がする
360 :
名無しさん@お腹いっぱい。
2015/10/11(日) 01:52:50.90 ID:il2hnji40
フラグ立てたらメッセージ送信して終了だった
361 :
名無しさん@お腹いっぱい。
2015/10/11(日) 01:55:58.30 ID:il2hnji40
あれ?メッセージって1回の送出で複数のプロセスで同時に受け取れるんだっけか?
しばらくプログラミングとか遠ざかってて忘れちまったw
なんか変な事言ってるかもゴメンw
362 :
名無しさん@お腹いっぱい。
2015/10/11(日) 02:51:40.07 ID:iDpfFPT60
OnMessage推しの人はできれば動くサンプル貼ってほしい
自分は>350でできなかったんで可能なのか検証したい
363 :
名無しさん@お腹いっぱい。
2015/10/11(日) 14:27:11.64 ID:tEgT6jAh0
OnmassageはAuto-executeに書くこと。以上
364 :
名無しさん@お腹いっぱい。
2015/10/11(日) 17:05:06.98 ID:iDpfFPT60
OnMessageの使い方は把握してる
ただ同一スクリプト内って条件下で先に起動した別プロセスで動いてる多重起動先に
メッセージを届ける方法がわからない
>214では送りと受けは別スクリプトの前提だし
>349や>359-361は実際には試してなさそう、でもできると確信して話してる
なにか抜け道があるなら教えてほしい
OnMessageの位置ずらして下のスクリプト実行してみて欲しい
うちではどうやっても多重起動先にメッセージを届けられなかった
win8.1 AHK_L 1.1.22.06
#SingleInstance OFF
DetectHiddenWindows, On
;OnMessage( 1234 , "FunctionName" )
SendMessage,1234,1,,,%A_ScriptFullPath% ahk_class AutoHotkey
OnMessage( 1234 , "FunctionName" )
return
FunctionName( wParam , lParam , msg , hwnd )
{
SetFormat IntegerFast, H
hwnd := hwnd
if (msg==1234) {
MsgBox, 送り先hwnd=%hwnd%`nMyhwnd=%A_ScriptHwnd%
}
}
ESC:: ExitApp
365 :
名無しさん@お腹いっぱい。
2015/10/11(日) 22:04:34.04 ID:ZqM2Qzr00
Guiのコントロールの幅を取得する方法はありますか?
コントロールを縦に幾つか並べたら次の列に移動…を繰り返してGuiを作ってるのですが
次の列に移動する際に、列内にある一番長いコントロールの幅を取得して次の列のx座標を導き出したいのです
コントロール1 コントロール4 コントロール7
コントロール2 コントロール5 …
コントロール3 コントロール6
366 :
名無しさん@お腹いっぱい。
2015/10/11(日) 22:25:57.74 ID:ZqM2Qzr00
おっとGuiControlGetのPosでできたのか
「コントロールの座標と高さを取得する」って説明だったから勘違いした
>>365はスルーしてください
367 :
名無しさん@お腹いっぱい。
2015/10/12(月) 01:58:25.53 ID:M/8NPbHR0
>>364 ウィンドウ指定が間違っている
条件に合うのが複数ある場合該当する初めの物にだけ送られる
#SingleInstance OFF
OnMessage(0x5555, "MsgMonitor")
DetectHiddenWindows, On
WinGet, N, List, ahk_class AutoHotkey
Loop %N%
PostMessage, 0x5555, A_ScriptHwnd, % N%A_Index%,, % "ahk_id " N%A_Index%
return
MsgMonitor(wParam, lParam, msg)
{
SetFormat, IntegerFast, h
MsgBox, Message %msg% `nWPARAM [送り元]: %wParam%`nLPARAM [送り先]: %lParam%
}
ESC::ExitApp
368 :
名無しさん@お腹いっぱい。
2015/10/12(月) 08:00:23.00 ID:stSIvn090
>>367 レスd
なるほど先に対象取得して送り先IDを直接指定して送る必要があるんですね
SendMessageの返り値で多重起動の有無をチェックしようと横着してて気が付きませんでした
WinGetでList取る時 %A_ScriptFullPath% で対象絞れば無差別爆撃も避けられますね
ただこれだとPostする前に多重起動先があるかどうか判別が付くので
>346の案件は特別な終了前処理がないときは
if (N%A_Index% <> A_ScriptHwnd)
Winclose,% "ahk_id " N%A_Index%
で済む話なのかも
なんにせよすっきりしました、ありがとうございます
369 :
名無しさん@お腹いっぱい。
2015/10/12(月) 18:33:07.20 ID:ECM/Xd5t0
AHKでUSB接続か何かのLED制御してIMEのON/OFFやその他の通知をしたいんだけど
ハード込みで何かお勧めなものってない?
例えばXBOX360コントローラやキーボード、マウスについてるLED制御できると0円で済むんだけど
370 :
名無しさん@お腹いっぱい。
2015/10/12(月) 18:56:46.92 ID:MZkgqCG90
少なくともAHKにはそういう機能はないし
そういう機能のあるソフトを探しているならスレチだし
371 :
名無しさん@お腹いっぱい。
2015/10/12(月) 18:57:04.00 ID:gExsCg/s0
372 :
名無しさん@お腹いっぱい。
2015/10/12(月) 20:02:33.80 ID:M/8NPbHR0
373 :
名無しさん@お腹いっぱい。
2015/10/13(火) 00:02:54.03 ID:anGJ1GPR0
ロジのk270のホットキー右4つはキーストローク割り当てして
AHKで使えるように出来たんだけど
左の4つは割り当てできないしAHKも拾ってくれません
何か良い方法ありませんか?
374 :
名無しさん@お腹いっぱい。
2015/10/13(火) 00:15:31.98 ID:wlHQs/Lr0
>>373 割り当て変更や拾うことができないなら無理
ログもスクリプトも書かれていないからそれが本当かどうか知らない
375 :
名無しさん@お腹いっぱい。
2015/10/13(火) 13:59:43.45 ID:dZeGdBQN0
アクティブなウィンドウがないとき、一番手前にあるウィンドウを最大化したいんだけど、一番手前のウィンドウってどうやって取得するの?
376 :
名無しさん@お腹いっぱい。
2015/10/13(火) 15:53:54.24 ID:yGa4AJhq0
デスクトップとスタートボタン除外してwingetしたら取れるかも
377 :
名無しさん@お腹いっぱい。
2015/10/14(水) 03:33:07.03 ID:8F+pZ2iI0
GuiってGui, DestroyじゃなくてWinCloseで終了してもリソース解放される?
378 :
名無しさん@お腹いっぱい。
2015/10/14(水) 03:36:37.50 ID:XLqm5nI70
やってみたらいいじゃん
379 :
名無しさん@お腹いっぱい。
2015/10/14(水) 04:00:06.55 ID:8F+pZ2iI0
>>378 質問の仕方が悪かったけどどっちで終了しても違いはない?要はウィンドウ番号の都合で分けてるということかな?
Gui, HideとWinHideもそうだけど、Guiの場合はGui系のコマンドをなるべく使った方がいいのか少し気になって
380 :
名無しさん@お腹いっぱい。
2015/10/14(水) 04:42:31.11 ID:XLqm5nI70
>>379 終了、開放、閉じる はすべて別の動作
終了(プロセス終了) ← Process, Close
開放(開放して終了しない) ← Gui Destroy
閉じる(アプリによって違う) ← WinClose
381 :
名無しさん@お腹いっぱい。
2015/10/14(水) 04:57:07.00 ID:8F+pZ2iI0
382 :
名無しさん@お腹いっぱい。
2015/10/14(水) 09:00:17.41 ID:qrqP+GcH0
ゲーム内の特定の画面で特定のボタンを押したときに
画面を解析してゲームのイベント終了時間を算出して
コマンドラインで外部ソフトに値を渡す という物が作りたいです
・AHKが現在どういう状態にあるのか常時表示する手段(MouseGestureL.ahkの吹き出しみたいなのが理想)
・マウスクリックを検出する手段
を教えてください
もしくは、画像と座標を書き換えるだけでいろんなゲームに対応できるひな形を作ってください
383 :
名無しさん@お腹いっぱい。
2015/10/14(水) 09:32:57.36 ID:SnipqP3i0
・ToolTip
・~LButton
こんな基本中の基本を調べもしないテンプレも読まないで聞いてくるアホに
ゲーム操作みたいな厄介なスクリプトが組めるとは到底思えんが
このスレはクレクレ禁止なので最後の一行は無効
自力でがんばれや
384 :
名無しさん@お腹いっぱい。
2015/10/14(水) 09:59:46.62 ID:qrqP+GcH0
>>383 悪態をつきながらもちゃんと教えてくれてありがとうございます
調べようにも何をキーワードにしたらいいかわからなかったので助かりました
385 :
名無しさん@お腹いっぱい。
2015/10/14(水) 22:11:49.33 ID:Epf/wqC/0
explorer.exeをProcessコマンドで閉じると自動でexplorer.exeが再起動されますが、この仕様をオフにする方法を教えて下さい。
Process,Close,explorer.exe
→ 終了だけしてほしい。 再起動は不要。
コマンドプロンプトでtaskkillするみたく、プロセス終了だけしてほしいのです。
taskkill /f /im explorer.exe
386 :
名無しさん@お腹いっぱい。
2015/10/14(水) 22:20:47.04 ID:uKniWlc70
それAHK関係ないんじゃ
387 :
名無しさん@お腹いっぱい。
2015/10/14(水) 23:22:49.26 ID:Epf/wqC/0
???
AHKでは・・・
Process,Close,notepad.exe → 終了だけ。
Process,Close,explorer.exe → 終了後、勝手に再起動される。
コマンドプロンプトではどちらも終了だけ。
taskkill /f /im notepad.exe
taskkill /f /im explorer.exe
ということはAHKに原因があるように見えます。
それとも、Windowsはサードパーティアプリからexplorer.exeを終了されると自動的に復活起動する仕様なの?
388 :
名無しさん@お腹いっぱい。
2015/10/14(水) 23:36:51.43 ID:XLqm5nI70
>>387 仕様
Run = コマンドプロンプト = コマンドライン
389 :
名無しさん@お腹いっぱい。
2015/10/15(木) 00:53:11.60 ID:hm6rlI060
てか終了出来てるんならスクリプトの中にbat読む処理挟んでやりゃいいじゃんか
390 :
名無しさん@お腹いっぱい。
2015/10/15(木) 00:53:23.64 ID:CBMzSms10
そもそもexplorer.exeってファイラーとシェルどっちのこと言ってるのかね
391 :
名無しさん@お腹いっぱい。
2015/10/15(木) 02:22:15.78 ID:RSN1D9rC0
タスクバーを描画してるexplorerです。
ある理由でタスクバーを消滅させておきたいのです。
〜〜〜〜
コレでやるしかないのは分かりました。
Run, taskkill /f /im explorer.exe, , Hide
ただ、Process,Close,explorer.exe で自動再起動がかかるのは何故かな、と気になったもので....
392 :
名無しさん@お腹いっぱい。
2015/10/15(木) 08:38:15.54 ID:CBMzSms10
393 :
名無しさん@お腹いっぱい。
2015/10/15(木) 09:50:51.29 ID:OqiXekhc0
自動で再起動されるのは昔からの仕様
シェルが落ちたら一般ユーザーはPCの再起動すらできなくなるからな
394 :
名無しさん@お腹いっぱい。
2015/10/15(木) 10:16:47.05 ID:CBMzSms10
タスクバーを表示したくない理由がわからんから何ともいえんが
タスクバーを自動的に隠す設定 じゃあかんのかね
業務で特定の操作専用パネルとして使うなら
アプリ側で全画面表示にさせる
7〜8インチのちっこいサブモニタつけてタスクバーはそっちに移動させる等
シェル落として対応ってのはシステム不安定になるしかなりの悪手
395 :
名無しさん@お腹いっぱい。
2015/10/15(木) 14:53:00.01 ID:CAA/ZQ/Q0
ダブルコーテーションのエスケープはどうかくのでしょうか?
"\""
と書いてもエラーになります
396 :
名無しさん@お腹いっぱい。
2015/10/15(木) 15:08:55.20 ID:CBMzSms10
""
a := """"
msgbox,%a%
397 :
名無しさん@お腹いっぱい。
2015/10/15(木) 15:15:46.98 ID:CAA/ZQ/Q0
ありがとうございます
398 :
名無しさん@お腹いっぱい。
2015/10/16(金) 00:01:26.63 ID:ED2Tckj70
ちなみにahkのデフォルトのエスケープ文字は\じゃなくて`(shift+@)だよ
ダブルクォートに関しては関係ないけど
でも正規表現では\使うというね
399 :
名無しさん@お腹いっぱい。
2015/10/16(金) 00:56:32.45 ID:bknkoHO70
パスの区切り\をそのまま使いたかったってところかな
400 :
名無しさん@お腹いっぱい。
2015/10/16(金) 00:56:59.15 ID:Ho1AvTvR0
他のエスケープに倣って「`"」としなかったのはなぜだろう
今の仕様は見辛くてかなわん
仕方なくChr(0x22)を主に使ってる
401 :
名無しさん@お腹いっぱい。
2015/10/16(金) 05:30:36.50 ID:oSBPJ2ZG0
Guiが最前面(+AlwaysOnTop)になってるか調べる方法はある?
402 :
名無しさん@お腹いっぱい。
2015/10/16(金) 06:47:08.34 ID:rU5x7sGD0
WinGet ExStyleでWS_EX_TOPMOSTを確認すればわかる
GetTopmost(WinTitle="A") {
WinGet,WinExStyle,ExStyle , %Window%
return WinExStyle & 0x00000008 ;WS_EX_TOPMOST
}
403 :
名無しさん@お腹いっぱい。
2015/10/16(金) 07:57:36.38 ID:oSBPJ2ZG0
404 :
名無しさん@お腹いっぱい。
2015/10/16(金) 11:50:55.62 ID:AQv1b4UO0
405 :
名無しさん@お腹いっぱい。
2015/10/16(金) 12:32:57.76 ID:rU5x7sGD0
>>402 すまん関数2行目はパラメータ参照できてないね↓に差し替えで確認して
WinGet,WinExStyle,ExStyle , %WinTitle%
406 :
名無しさん@お腹いっぱい。
2015/10/16(金) 13:21:18.57 ID:E0QZ/F/90
いつの間にかインストーラー版で32bitも選択できるようになってる
この前試した時はOSが64bitの時は決め打ちで64bitバージョンを入れてきたのに
407 :
名無しさん@お腹いっぱい。
2015/10/16(金) 18:30:25.55 ID:oSBPJ2ZG0
408 :
名無しさん@お腹いっぱい。
2015/10/16(金) 20:30:54.67 ID:oSBPJ2ZG0
実行中の関数の呼び出し元が関数内からだった場合、その関数名を取得する方法はないかな?
引数でA_ThisFuncを渡したら済む話ではあるけどできれば省略したくて
↓みたいに組み込み変数はデフォルト値にできないんだね
Func(FuncName=A_ThisFunc)
{
}
409 :
名無しさん@お腹いっぱい。
2015/10/17(土) 02:51:10.24 ID:WeS/KtN/0
Windows10で、こちらの環境のせいかlogicoolのSetpointでチルト対応のLogicoolマウスを検出できず、
チルトホイールの、F13,F14割り当ての道がふさがれてしまいました。
代替として、WheelLeft WheelRight でチルトホイールの長押し検出をしたいのですが、
以下のコードを作ってみた結果、発動はするけど長押しの検出はできませんでした。
WheelLeft::
loop,100
{
GetKeyState, state, WheelLeft,
GetKeyState, stateP, WheelLeft,P
GetKeyState, stateT, WheelLeft,T
result=%result% %state%%stateP%%stateT%
sleep,10
}
msgbox,%result%
return
Pをつけないと常にUが返答され、Pをつけると常にDが帰ってきます。
実際の操作を判定するには、どのように書けばよいでしょうか。
もしくは上記のコードで、100回のループ中で結果がばらける=判定できている方いらっしゃいますか。
410 :
名無しさん@お腹いっぱい。
2015/10/17(土) 07:26:09.23 ID:ypfCpe+y0
>>391 タスクバーを消したいならShell_TrayWndを手がかりにググれば?
411 :
名無しさん@お腹いっぱい。
2015/10/17(土) 23:20:56.38 ID:llzPBbJ10
>>409 ■Logicoolマウスの問題
*Setpoint+ドライバ削除後、Setpoint最新版を使う
*管理者権限を使う
*互換性モードを使う
■ホイール上下左右の問題
AHK付属のキー履歴を見れば分かるが
Wheel***系は押し下げだけ(Upしない)をキーリピート(連打)しているので
GetKeyState、KeyWaitでの判定は意味が無い
キーリピートの回数やその時間で判定する必要がある
412 :
名無しさん@お腹いっぱい。
2015/10/18(日) 21:14:53.73 ID:AMpTStWq0
現在のデフォルトのウィンドウ番号って取得できない?
413 :
名無しさん@お腹いっぱい。
2015/10/18(日) 23:56:00.88 ID:AMpTStWq0
↑正確には実行中のスレッドでした(無理っぽいのかな)
てか同一スレッドで異なるウィンドウ番号のGuiが関数やラベルを通して複数起動する可能性があったら
それらの生成時にはデフォルト設定はせずに「Gui, 2:」のように1つずつ番号を当てるのが一般的なんだろうか?
414 :
名無しさん@お腹いっぱい。
2015/10/19(月) 01:31:20.98 ID:FSaZz6ju0
IEで表示したウェブページの保存を1キーで行いたいのに
CTRL+S
ALT+S
CTRL+W
がうまく動作しない
Win7 だからか
415 :
名無しさん@お腹いっぱい。
2015/10/19(月) 11:17:45.85 ID:xvq8jrZL0
MS謹製アプリはOSバージョンでショートカットキーが違うことはたまにある
まあでもwin8とかvistaとか他のOSでの動作実績ないんだったら
単に書き方が悪いだけだと思うよ
416 :
名無しさん@お腹いっぱい。
2015/10/20(火) 09:51:42.98 ID:F7whZ6T60
へー、run,のあとコマンドラインのコマンド入れても動くのか。
なら
Shutdown, 1
より
run,shutdown -s -t 0
のほうがしっかり処理終わらせてシャットダウンできるな
417 :
名無しさん@お腹いっぱい。
2015/10/20(火) 12:53:48.49 ID:85QvDqET0
418 :
名無しさん@お腹いっぱい。
2015/10/20(火) 13:12:31.13 ID:F7whZ6T60
新発見っていうか、外付けHDがAhkコマンドで起動したまま本体だけシャッドダウンするとかいうワケわかんないことになってたから、俺としてはコマンドラインてシャットダウン呼べるのは感動した
単純にrunでcmdが使えるって知らなかったんど
419 :
名無しさん@お腹いっぱい。
2015/10/20(火) 14:18:29.22 ID:PSPgOZED0
コントロールにスクロールバーが存在するかどうかで別の動作をさせたいのですが
スクロールバーの有無はどのように判定すればいいでしょうか
420 :
名無しさん@お腹いっぱい。
2015/10/20(火) 15:15:21.86 ID:ky3Gyr1c0
421 :
名無しさん@お腹いっぱい。
2015/10/20(火) 17:06:12.11 ID:3kcy3KXH0
>外付けHDがAhkコマンドで起動したまま本体だけシャッドダウンするとかいうワケわかんないことになってた
これの意味がまったくわからない
だれか翻訳して
422 :
名無しさん@お腹いっぱい。
2015/10/20(火) 17:11:35.56 ID:F7whZ6T60
ごめん。本来なら外部HDも一緒に電源落ちてくれるんだ。でもAHKからシャットダウンをすると外部HDがつながったまま本体がシャットダウンされたと認識されないんだ。
その結果再起動した時そのハードディスクが認識されないとか変なことになるんだ。
コマンドプロンプトからシャットダウンしたらこの問題は回避出来る。
AHKからのシャットダウンはなんだか挙動がおかしいんだ。
423 :
名無しさん@お腹いっぱい。
2015/10/20(火) 17:55:57.10 ID:85QvDqET0
よく分からん…というか、同じ様な環境にないので実証してない(できない)のでスマンが、
電源切るなら、「Shutdown, 1」じゃなく、
;(シャットダウン + 実行後電源を切る = 1 + 8 = 9):
Shutdown, 9
でどうなんだろう?(場合によっては「強制的=4」も追加するとか)
424 :
名無しさん@お腹いっぱい。
2015/10/20(火) 18:15:50.58 ID:3kcy3KXH0
うちもAHKでリブートとか停止の指示をやってるので参考までに
強制再起動,shutdown -r -t 15 -f
強制シャットダウン,shutdown -s -t 15 -f
再起動,shutdown -r -t 15
シャットダウン,shutdown -s -t 15
シャットダウン中止,shutdown -a
この5項目を使って、メニュー表示にしてる。
カンマより右をbatに書き出して、runで実行するだけ。
batに書き出す理由は、コンソール画面が出て、わかりやすくなるため。
さいごの「シャットダウン中止」は、15秒以内に呼び出せば取り消せるようにしてる。
遠隔地に設置したPCに指示を与える場合、強制(fつき)にしないと、
AHKスクリプトが終わったのにOSの他の要素で再起動を阻害されて、
実機を見に行かないとどうしようもなくなるという、最悪の状態になる。
こうなった場合、コマンドラインから直接、コンピュータ名指定で再起動を指示することで
切り抜けられることもあるが、基本的にAHKが使える状態なら fつき で実行するようにしてる。
425 :
名無しさん@お腹いっぱい。
2015/10/22(木) 03:50:53.89 ID:X0FJzFF20
超絶簡単なメニュー選択方法を思いついた
ahoka_launcher(key=0)
{
if !key
{
msgbox,,Ahoka Launcher,
(
[Q] Quit
[W] C:\Windows
[E] Expleorer
[C] Calc
)
return
}
send,{Enter}
if key=q
return
if key=w
run,c:\windows
if key=e
run,explorer.exe
if key=c
run,calc
}
^!L:: ahoka_launcher()
#IfWinActive,Ahoka Launcher ahk_exe AutoHotkey.exe
q:: ahoka_launcher("q")
w:: ahoka_launcher("w")
e:: ahoka_launcher("e")
c:: ahoka_launcher("c")
426 :
名無しさん@お腹いっぱい。
2015/10/22(木) 09:06:23.49 ID:N8YHprkn0
見栄え的にも操作的にもコーディング的にもあまり楽ではなさそうだが
起動部分まとめたらメンテは多少楽になるか
#IfWinActive,Ahoka Launcher ahk_exe AutoHotkey.exe
q::
w::
e::
c::
ahoka_launcher(A_ThisHotkey)
return
427 :
名無しさん@お腹いっぱい。
2015/10/23(金) 00:09:58.39 ID:O1iHphiL0
PS/2キーボードにUSB変換器をつなげて使ってる人いますか?
俺の環境だと、Shift+修飾キー+なんかのキーのように3キーを押下するときにリピートが効かない。修飾キーがリリースされてShift+なんかのキーが発動してしまう。
センチュリーのPS2W-USBでこの症状を確認して、今日CoregaのCG-USBKMSV2を買ってきたが、同じような感じでした。
ときどき修飾キー+任意のキーの2キーによるHotkeyさえ取りこぼすのでセンチュリーより悪い点もあります。
古いキーボードをUSB端子しかないPCでAHKを使う際に大きな問題になると思いますが、皆さんの環境ではいかがですか?
428 :
名無しさん@お腹いっぱい。
2015/10/23(金) 04:11:34.85 ID:kB6oEzWC0
俺も似たような変換器を各社何個も買って、結局どれ一つとして、まともに動かなかったから
USBキーボードに乗り換えたよ。
ひどいのだと、普通のキーリピート自体がおかしい。
キーを押しっぱなしにした場合、ふつうだとこうなるはずだけど
・ ・・・・・・・・
安いのだと、こうなる
・ ・ ・・・・・・・・
なぜか知らんがup/downが2回繰り返される。
429 :
名無しさん@お腹いっぱい。
2015/10/24(土) 12:11:58.43 ID:7jcVs8kq0
LV_GetNext等の関数ではウィンドウ番号の個別指定は不可能ですか?
LV_GetNext("1:" 0, "F")みたいにしても効果がないんだが
430 :
名無しさん@お腹いっぱい。
2015/10/24(土) 12:20:50.07 ID:hBkf+BQk0
431 :
名無しさん@お腹いっぱい。
2015/10/24(土) 12:40:10.57 ID:7jcVs8kq0
>>430 えっと、これは同じウィンドウ番号のGuiでリストビューが複数ある場合の指定ということですかね
ウィンドウ番号そのものの指定はGui, DefaultでできるのですがGuiControlのようにコマンド(関数)別での個別指定は無理っぽい感じですかね
トン
432 :
名無しさん@お腹いっぱい。
2015/10/24(土) 21:46:31.26 ID:u4Zt3OEo0
hoge -a > aaa.txt
hage -b > bbb.txt
batファイルにこのように記述して起動すると連続して一気に処理してくれますが、
batをrunさせる方法ではなく、ahkから直接、しかも一気に処理させる方法ありますか?
やはり、一つずつ起動させるしかないですか?
run, %ComSpec% /c hoge -a > aaa.txt
run, %ComSpec% /c hage -b > bbb.txt
スレ違い質問かもしれませんが、お願いします。
433 :
名無しさん@お腹いっぱい。
2015/10/24(土) 21:51:32.83 ID:r2r4w1Fn0
Autohotkeyでbatファイルを作成して、その後に実行させる
434 :
名無しさん@お腹いっぱい。
2015/10/24(土) 23:49:33.01 ID:/X7ajDWR0
&
435 :
432
2015/10/25(日) 00:56:55.73 ID:TsHcd+Aa0
>>433,434
レスサンクスです。
run, %ComSpec% /c hoge -a > aaa.txt & hage -b > bbb.txt
で行けました。
436 :
名無しさん@お腹いっぱい。
2015/10/25(日) 02:40:40.49 ID:kFnvS5jN0
コピーした文字列を句点で分割して、各行を変数に代入してリストアップしたいんですけど
どういう処理をすればいいんでしょうか?
何となく下記のような感じでいけないかと思ったんですが
ループ中のiを1つずつ増やしていく方法がわからず挫折してしまいました。
Loop {
StringGetPos,POS,Clipboard,。,L%i%
StringMid,str%i%,Clipboard,POS,,L%i%
} Until POS = 1
Gui, Add, ListBox,,%str1%|%str2%|...|%stri%
437 :
名無しさん@お腹いっぱい。
2015/10/25(日) 03:48:03.86 ID:eWto7l690
438 :
名無しさん@お腹いっぱい。
2015/10/25(日) 12:42:03.69 ID:TW2CaBWA0
StringSplit
439 :
名無しさん@お腹いっぱい。
2015/10/25(日) 12:48:15.80 ID:TW2CaBWA0
分割自体はLoop, ParseかStringSplitでいいと思うが
根本的なところで引っかかってるようなので補足
>ループ中のiを1つずつ増やしていく方法
i = i + 1 で単純にカウントアップする行を入れる
なおループのカウントだけならA_Index参照すればそもそもi変数自体不要
440 :
名無しさん@お腹いっぱい。
2015/10/25(日) 13:20:18.45 ID:O+5eHiWl0
Loop,purgeで句読点で区切ってしまえばいい
441 :
名無しさん@お腹いっぱい。
2015/10/25(日) 14:43:17.13 ID:gbJQJB+00
442 :
名無しさん@お腹いっぱい。
2015/10/25(日) 15:12:08.47 ID:O+5eHiWl0
MGLでいいんじゃねーのん?
443 :
名無しさん@お腹いっぱい。
2015/10/25(日) 16:12:13.65 ID:kFnvS5jN0
>>437-440 Loop,Parseコマンドがドンピシャでした! 本当にありがとうございました。
リストボックス表示させるのはよくわからなかったのでチェックボックスを沢山作らせて何とかできました。
444 :
名無しさん@お腹いっぱい。
2015/10/26(月) 02:32:20.49 ID:zHYr0+XK0
導入する為の判りやすい解説サイトないでしょうか?
445 :
名無しさん@お腹いっぱい。
2015/10/26(月) 04:48:58.42 ID:umkpFuAC0
ahkwikiが分かりづらいと言うなら残念ながらない
446 :
sage
2015/10/26(月) 12:48:07.04 ID:Jd6A5Anl0
ahkwiki って止まってるんすか?
この前、"あっ" 間違ってる発見、とか思ってカキコもうとしたんだけど。
目ンテナンスのためロックとかで、ダメだったんだけど。
447 :
名無しさん@お腹いっぱい。
2015/10/26(月) 14:27:30.54 ID:3HPI9QM40
日本語でおk
448 :
名無しさん@お腹いっぱい。
2015/10/28(水) 19:09:02.15 ID:kS2r4w390
449 :
名無しさん@お腹いっぱい。
2015/10/28(水) 19:37:17.66 ID:sDP6IxPu0
450 :
名無しさん@お腹いっぱい。
2015/10/29(木) 16:23:23.51 ID:c1DAqggd0
RAlt::
if var1 = 0
var1 := 1
else
var1 := 0
Return
;;右Altキーを押したあとUで4を入力
$u::
if var1 = 1
send, {Numpad4}
else
send, u
Return
これで行けるかと思ったのですが、
親指シフトの『やまぶきR』というソフトを使ってると
再帰的に呼び出されエラーになります。
何か別の書き方ありますか?ヒントお願いします
451 :
名無しさん@お腹いっぱい。
2015/10/29(木) 17:52:03.19 ID:stGonDOV0
>>450 試しにやまぶきR Ver. 1.11.1を起動して
スクリプトを実行してみたが問題ない
環境 ←OS AHK やまぶきRの設定
「どの部分が」再帰的に呼び出され ←スクリプトのログ
「どんな」エラー ←エラーメッセージ
が書かれていないのでこれ以上答えられない
452 :
名無しさん@お腹いっぱい。
2015/10/29(木) 22:05:37.12 ID:c1DAqggd0
>>451 検証ありがとうございます。こちらでもう一度確認したところ、
>>450 のコードだとひらがなの『うの段』たとえば『く_ku』が
『kち』になってしまいます。Numpad1〜6の時は再帰的なエラー
だったのですが検証不足でした。・・・それともうちの環境のセイ?
send, uの部分がだめなのかと思い、
~u::
if var1 = 1
send, {Numpad4}
Return
とすると4と出て欲しいときにu4と出てしまう。当然ですが。
453 :
名無しさん@お腹いっぱい。
2015/10/30(金) 10:33:47.09 ID:XgAkGZUx0
「フォーカスのあるウインドウのキャレットの位置(というかキーボードの入力が送られる場所)が
メニューバー(ファイル、編集、…みたいなやつ)であったらそれをやめさせる」
処理ってどうすればできるかな?
やめさせるのはaltを一回送ればいいと思うけど、
「いま現在メニューバーが選択された状態」を検出する方法ってあるんでしょうか
454 :
名無しさん@お腹いっぱい。
2015/10/30(金) 11:55:53.40 ID:9SsFNvwe0
.ahkファイルをautohotkeyに関連付けしていない状態で
auttohotkeyから.ahkファイルを実行させるにはどう記述すればいいんでしょう?
そもそも開き方がわからんとです。
run,c:\autohotkey_l.exe -c:\hoge.ahkなどとしても普通に無理でした……
455 :
名無しさん@お腹いっぱい。
2015/10/30(金) 13:29:15.41 ID:LGPNipgr0
Run,%A_AhkPath%, "c:\hoge.ahk",UseErrorLevel
で普通に行けるはずだけど
456 :
名無しさん@お腹いっぱい。
2015/10/31(土) 19:26:00.95 ID:G6rBw3hl0
試行錯誤して
Run,%A_AhkPath% c:\hoge.ahk,,UseErrorLevel
で動きました! ありがとうございました!
457 :
名無しさん@お腹いっぱい。
2015/10/31(土) 21:14:37.33 ID:uLNlOITA0
試行錯誤も何も(
>>455の間違いだらけのレスは別として)・・・
wiki見ればすぐに解決できただろうし、無理に「UseErrorLevel」なんて使うことも無かろうにね(´ω`)
458 :
名無しさん@お腹いっぱい。
2015/10/31(土) 22:19:04.92 ID:G6rBw3hl0
すいません。runコマンドのページは見たんですけど
.ahkファイルを開くためには
AutoHotkey.exe -hoge.ahkでもAutoHotkey.exe /hoge.ahkでもなく
AutoHotkey.exe hoge.ahkって書かなきゃいけないってどこか書いてありました?
459 :
名無しさん@お腹いっぱい。
2015/10/31(土) 22:26:10.17 ID:TOvhN2lI0
ファイル名やコマンドライン文字列、あるはURLを指定する。
ここだね。コマンドラインの書き方は前提知識なので。
460 :
名無しさん@お腹いっぱい。
2015/10/31(土) 22:26:51.06 ID:ztH9/Opv0
autohotkeyの使い方というよりはコマンドプロンプトの使い方かな
exe ファイルパスでそのソフトで実行とか、ブラウザ urlでそのページ開くとか、ファイラ フォルダパスでそのフォルダ開くとか
461 :
名無しさん@お腹いっぱい。
2015/10/31(土) 22:45:25.12 ID:8Y+n2zjO0
発想が逆
-や/を付ける必要があるならそう書いてあるはずで
書いてないってことは付けないってことなんだよ
462 :
名無しさん@お腹いっぱい。
2015/11/01(日) 13:06:39.26 ID:4LhHwZLY0
#cを1回押し、2回押し、3回押しにそれぞれ別の動作を割り当てたいんですがどうすればいいですか?
単独キー2回押しのスクリプトを改変して作ってみようと思いましたが自分の知識では無理でした・・。
修飾キーがついている場合はどう書けばいいんでしょうか?
463 :
名無しさん@お腹いっぱい。
2015/11/01(日) 13:40:13.68 ID:+pXDz0RX0
464 :
名無しさん@お腹いっぱい。
2015/11/01(日) 13:46:20.79 ID:RxGT96zV0
SetTimerでサブルーチンに飛ぶ直前に処理していた行番号を記憶しておく方法がないか質問。
下のスクリプトは途中でエラー条件が満たされたらメッセージが出る感じのものなんだけど、
わざわざ変数CheckPointを定義しなくてもサブルーチンに飛ぶときに飛ぶ前の行番号を
記録することはできないかな?
SetTimer, 監視用ルーチン, 1000
Loop {
CheckPoint := 1
〜〜〜処理1〜〜〜
CheckPoint := 2
〜〜〜処理2〜〜〜
CheckPoint := 3
〜〜〜処理3〜〜〜
}
監視用ルーチン:
If( エラー条件() = 1 ){
Msgbox,% "エラー。CheckPoint:" CheckPoint
}
return
465 :
名無しさん@お腹いっぱい。
2015/11/01(日) 14:09:19.81 ID:bAGjtzRH0
簡単。キーを打つことでカウント変数に++していって、SETTIMERを走らせる。
サブルーチン側で何回入力したかで分岐させてやればいい。
#IF getkeystate("Lwin","P")
C::
count++
Settimer,renda,-1000
return
renda:
If(count==1)
1回めの処理
else If(count==2)
二回目の処理
else
三回目
return
こんなんでいいと思う。
最も連打系は分岐のために時間を待たなきゃいけないから1打目の反応が鈍くなるんだけど
466 :
名無しさん@お腹いっぱい。
2015/11/01(日) 17:28:09.40 ID:4LhHwZLY0
>>463 ありがとうございます!
まさにやりたかったことです。解説までつけていただいてありがとうございました。
助かりました。勉強になります。
467 :
名無しさん@お腹いっぱい。
2015/11/02(月) 18:32:28.15 ID:+rL4hChO0
autohotkeyをタブレットで絵描きするときに使いたいと思って、autohotkeyとこれ
http://konartist3d.deviantart.com/art/ArtDock-283342420 をダウンロードしてインストールし、Artdock.ahkから起動してツールタブは出るんですが、マウスカーソルを持っていくとタブが消えてしまいます。
WINDOWS10 64bitだったので対応してないのか思い、WIN7 Ultimateにもインストールしたのですが同じ症状で使えないのですが、何か設定などし忘れてますでしょうか?
英語と日本語で色々ググってたのですが分からず、すみませんが教示頂ければ助かります。
468 :
名無しさん@お腹いっぱい。
2015/11/02(月) 19:18:39.88 ID:0myH0QY30
スプリクト作者に聞くのが一番の近道と思う
ここでは主に自作スクリプトの添削や質問が中心で
ahkで作られた配布スクリプトのサポートはしていないので
469 :
名無しさん@お腹いっぱい。
2015/11/03(火) 12:46:45.85 ID:yCEIYI4V0
ファイルの保存ダイアログなどのダイアログ操作機能とか,意外にも実装されてないよな
470 :
名無しさん@お腹いっぱい。
2015/11/03(火) 13:21:38.57 ID:0hov7/nX0
ahkに?
FileSelectFile
FileSelectFolder
つカット毛
471 :
名無しさん@お腹いっぱい。
2015/11/03(火) 13:43:04.37 ID:hLZe0AKe0
便乗だけど、guiでボタンとか選択肢を複数個出して、
たとえばこういう問い合わせを作りたい場合、GUIでチマチマ作るしかない?
AHKを使い始めたのは、Lなし無印の7年ほど前で、
こういうダイアログ用に自分で関数作って使ってる。
けど、配列の概念がなかった時代なので、自分で作っておきながら、使いにくい。
いまのバージョンだと、引数を当てるだけで、サクっと作れたりする?
472 :
名無しさん@お腹いっぱい。
2015/11/03(火) 13:54:31.77 ID:GKviTOoT0
Guiで作れるけどそこまでやるならVB使えVB
473 :
名無しさん@お腹いっぱい。
2015/11/03(火) 18:26:41.49 ID:Q/xCbLNQ0
LclickてAHKだと反応しないことがあって不便なんだけど、postmassageのほうが有効範囲広いのかな?
474 :
名無しさん@お腹いっぱい。
2015/11/04(水) 10:34:30.20 ID:Am8N3eG50
Send,{RButton down} して、右ボタンがdown状態になっている時、これをキャンセルすることは出来ますか?
RButton up を送ると結果的に 右ボタンクリックが発生してしまいます。
そうではなくて、クリックを発生させずに右ボタンの状態を押してない状態に戻したいです。
自分で調べた範囲では無理っぽいのですが、もし可能なら教えて下さい。
475 :
名無しさん@お腹いっぱい。
2015/11/04(水) 12:36:29.63 ID:zvo19fM80
Rbutton up::return
こんだけ。
476 :
名無しさん@お腹いっぱい。
2015/11/04(水) 13:34:38.34 ID:IS5ef/wi0
exitのとこ見てみ
477 :
名無しさん@お腹いっぱい。
2015/11/04(水) 14:37:58.31 ID:IS5ef/wi0
知恵を貸してください
ノンアクティブウィンドウに対しての処理をしたいんですけど、Controlsendは正規表現は無理ですかね
#If Winexist("ニコニコ動画:GINZA - Mozilla Firefox") ;ニコニコ動画に対しての処理
!space::ControlSend, GeckoFPSandboxChildWindow1, {Space}
Control名が結構変わってしまうのでこれをこういうカタチで処理したい。
!space::ControlSend, ^GeckoFPSandboxChildWindow\d+$, {Space}
478 :
名無しさん@お腹いっぱい。
2015/11/04(水) 14:56:18.35 ID:IS5ef/wi0
あ、いやどうにかなった。失礼。
#If Winexist("ニコニコ動画:GINZA - Mozilla Firefox") ;ニコニコ動画に対しての処理
!space::
Winget,CtrlHWND,ControlList,ニコニコ動画:GINZA - Mozilla Firefox
Loop, Parse, CtrlHWND, `n,`r
{
If RegExMatch(A_LoopField,"^GeckoFPSandboxChildWindow\d+$")
PlayerCtrl := A_LoopField
}
ControlSend, %PlayerCtrl%, {Space}
return
479 :
名無しさん@お腹いっぱい。
2015/11/04(水) 15:43:24.77 ID:Am8N3eG50
>>475 それだとGetKeyState("RButton")が1のまま、つまりRButtonは論理的に押されたままです。
ある条件の時に、RButtonの状態を自動的にupに戻したい。でも結果的にクリックとなってしまうのは困る。
ということです。
480 :
名無しさん@お腹いっぱい。
2015/11/04(水) 16:35:32.95 ID:ABlKf9Ea0
クリックの判定がupにかかってるから無理だよ
Rbutton (down)時に押下保留にしておいて
Rbutton upでキャンセルするならreturn
クリックさせるなら Send,{RButton} か MouseClick,RIGHT だな
ただしドラッグが効かなくなる両刃の剣
481 :
名無しさん@お腹いっぱい。
2015/11/04(水) 17:13:19.95 ID:8ZQkMSIi0
専用うぷロダの一番上にあるやつに
一旦クリックを保留しておいてドラッグだと判断したら押した時の位置に戻ってからドラッグさせるってのがあったような
482 :
名無しさん@お腹いっぱい。
2015/11/04(水) 17:15:04.56 ID:cnyAeC7s0
すごいなそれw
考えた人は変態だ
483 :
名無しさん@お腹いっぱい。
2015/11/04(水) 17:30:49.91 ID:zvo19fM80
あれは機能多いし便利に使わせてもらってる
484 :
名無しさん@お腹いっぱい。
2015/11/04(水) 17:42:21.76 ID:zvo19fM80
ただアレに文句言うとLbutton乗っ取って処理してる分時々クリックが効かないソフトとかが出てくる。
だから暫定的にこんなものを作った
#If MGLoff()
&& not MouseIsOver("ahk_class #32768") ;除外設定
&& not MouseIsOverExe("PCastHD2.exe")
&& not MouseIsOver("ahk_class AutoHotkeyGUI")
MouseIsOverExe(ExeFile){
DetectHiddenWindows,on
MouseGetPos,,, Win
WinGet, Exename,ProcessName,ahk_id %Win%
return Exename == ExeFile
}
特定PROCESS上のみで作用する(除外する)
notで成否判定逆転させればどっちも使える
485 :
名無しさん@お腹いっぱい。
2015/11/04(水) 17:48:37.28 ID:XJ9nGuqL0
「ATOKで変換中かどうか」を判定する方法はありますか?
486 :
名無しさん@お腹いっぱい。
2015/11/04(水) 18:14:22.90 ID:ABlKf9Ea0
487 :
名無しさん@お腹いっぱい。
2015/11/04(水) 18:29:44.09 ID:dMTeRru70
>>474 押し下げたものを無かったことにするのは無理
フックを使わずにRButtonをホットキーに登録して
物理的、論理的(ソフトの信号)の両方を横取りして好きなように処理をしたらいい
>>484 謎の関数を書かれても困るんだけど
詳細ぐらい書いたら?
488 :
名無しさん@お腹いっぱい。
2015/11/04(水) 18:54:16.44 ID:XJ9nGuqL0
>>486 #IfWinExist,ahk_class MSCTFIME Composition
で出来ました
ありがとうございました
489 :
名無しさん@お腹いっぱい。
2015/11/04(水) 19:47:24.01 ID:4qKjOEea0
>>487 話の流れからしてアップローダの奴のだろ
関数の内容自体はわかるし、何やってるかもよくわかる
この手のマウス下のコントロールとかウィンドウはあるけど、「プロセス」ってのは珍しい
exe指定ならわざわざウィンドウやコントロール探す手間がないからいいかもしれない
490 :
名無しさん@お腹いっぱい。
2015/11/04(水) 20:14:11.10 ID:Am8N3eG50
>>480 >>484 >>487 そもそもWindows自体が左右クリックの検出ロジックが違うんですね。
副作用対策も大変なので諦めることにします。
ありがとうございましたm(_ _)m
491 :
名無しさん@お腹いっぱい。
2015/11/04(水) 21:23:33.92 ID:ABlKf9Ea0
いや左クリックも基本up時判定だよ
ドラッグやメニュー操作みたいにdown状態から操作するものもあるから
down-upでワンセットつったほうがいいか
492 :
名無しさん@お腹いっぱい。
2015/11/04(水) 22:37:10.02 ID:UY/A9Slf0
マウスクリックは長押し以外でdown判定されると使いづらくなりそうだ
493 :
名無しさん@お腹いっぱい。
2015/11/04(水) 23:52:57.95 ID:7chYpFRh0
てか何がしたいのだろう?目的分からなきゃ
代替案も出せないしな
494 :
名無しさん@お腹いっぱい。
2015/11/05(木) 09:14:14.34 ID:HyTyenXG0
スクリプト貼ってくれればそもそもRbuttonの処理介さなくても良い処理にできそうなもんだが。
495 :
名無しさん@お腹いっぱい。
2015/11/05(木) 09:58:38.98 ID:PgJ2mqNv0
つか単にR押下後のaltキャンセルでは右クリメニューが一瞬出るのが気に食わない
って程度の理由じゃね?
発端の>474もダメ元で可能かどうかを聞いてるのであって
できると確信してやり方教えろ言ってたわけじゃなさそうだし
496 :
名無しさん@お腹いっぱい。
2015/11/05(木) 10:22:03.11 ID:M42knP/r0
超絶無理矢理な方法でContextMenuを見つけた瞬間escを送って消す、なんて力技を提示してみる。
GroupAdd, ContextMenu,ahk_class #32768
GroupAdd, ContextMenu,ahk_class MozillaDropShadowWindowClass
ContextMenuClose:
DetectHiddenWindows,on
keywait,Rbutton
WinWait,ahk_group ContextMenu
If winexist("ahk_group ContextMenu")
Winclose,ahk_group ContextMenu
return
497 :
名無しさん@お腹いっぱい。
2015/11/05(木) 10:39:03.98 ID:Q7ESMVmw0
すみません質問です
/*
Clipboard =
(
「SYMPHONY IN RIFFS」
(JAZZ AT LINCOLN CENTER
ORCHESTRA、WYNTON MARSALIS)
(8分25秒)
<BLUE ENGINE RECORDS BE0001>
「CUBANA BOP」(DIZZY GILLESPIE、
HIS ORCHESTRA)
(3分05秒)
<RCA/VITOR BVCJ 7311-12>
)
*/
var := RegExReplace(Clipboard, "`r`n", "`n", "")
var := RegExReplace(var, "m`ns)^「(.+?)」.*?((.+?)).*?<(.+?)>"
, RegExReplace("$2", "`n)`n", "", "") "`t"
. "$1`t"
. "<" RegExReplace("$3", "/", "/", "") ">`n", "" )
MsgBox,,, %var%,
return
; JAZZ AT LINCOLN CENTER
; ORCHESTRA、WYNTON MARSALIS SYMPHONY IN RIFFS <BLUE ENGINE RECORDS BE0001>
498 :
名無しさん@お腹いっぱい。
2015/11/05(木) 10:39:42.14 ID:Q7ESMVmw0
; なぜか$2の改行が消えてくれないので
var := RegExReplace(Clipboard, "`r`n", "`n", "")
var := RegExReplace(var, "`n)`n`n", "`t", "")
StringSplit, ar0, var, %a_tab%, %a_space%
Loop, %ar00% {
var := RegExReplace(ar0%A_Index%, "`n", "", "")
var := RegExReplace(var, "’", "'", "")
var := RegExReplace(var, "(?:、|&|`&)\s*", " and ")
RegExMatch(var, "im)^「(.+?)」.*?((.+?)).+?<(.+?)>", $)
var .= $2 "`t" $1 "`t<" $3 ">`n"
MsgBox,,, %var%,
;RunWait, lame Newfile%A_Index%.wav --preset 192 --ta "%$2%" --tt "%$1%" --tc "<%$3%>", %A_WorkingDir%
}
return
; みたいにしているのですが、なぜ前者は$2の改行が消えないのでしょう?
499 :
名無しさん@お腹いっぱい。
2015/11/05(木) 11:23:43.56 ID:HJOvHZVp0
>>495 >R押下後のキャンセルで右クリメニューが一瞬出るのが嫌
まさにその通りです。
>>491-494 いろいろ情報ありがとう。
>>496 未知のコマンドとか調べるのに時間が掛かるので後で試させて頂きます。ありがとう。
500 :
名無しさん@お腹いっぱい。
2015/11/05(木) 11:52:02.52 ID:PgJ2mqNv0
>>497 面倒なんでパターン解析とか検証しないで適当に答えるが
$2は上位の ((.+?)) あたり引っ張ってきたいってことか?
入れ子は末端から判定されていくので
RegExReplace("$2", "`n)`n", "", "")
では$2は文字通り"$2"として処理されてる
あと質問するならコードだけじゃなく説明ややりたいことちゃんと書いて
JAZZ ATなんたらが望む結論なんだろうけどそれならそうコメント入れれ
コードから読み取れってのは不親切つか甘え
501 :
名無しさん@お腹いっぱい。
2015/11/05(木) 15:03:18.55 ID:8+ZAP0Q20
>>478 出来ないって言おうとしたらこんな方法あったのか。すげーな変態か
502 :
名無しさん@お腹いっぱい。
2015/11/05(木) 15:32:03.76 ID:5Pzz/kk+0
キーをハンドリングした場合、
判定の結果何もしなかったとしても、アプリケーションにはイベントが渡らないと思いますが
渡す方法ありますか?
#IfWinExistなどで外で判定をするしかないのでしょうか?
503 :
名無しさん@お腹いっぱい。
2015/11/05(木) 15:47:14.74 ID:aAvc1vDl0
>>502 ホットキーに登録したキーのイベントを乗っ取りたくないなら
~で通すか自前でSendすればいい
504 :
名無しさん@お腹いっぱい。
2015/11/05(木) 17:59:48.23 ID:5Pzz/kk+0
~ってはじめて知りました
また自前でsendするという発想はありませんでした
ありがとうございます
505 :
名無しさん@お腹いっぱい。
2015/11/05(木) 21:58:20.74 ID:Q7ESMVmw0
レス遅れました。ID変わったかもしれません
>>497です
>>500 ありがとうございます。説明不足ですみませんでした。
> $2は上位の ((.+?)) あたり引っ張ってきたいってことか?
そうです。
やりたいことは「文字列1」全角( 文字列2 改行 文字列3 全角)文字列 改行 文字列4 改行 改行 の法則性がある文字列を
クリップボードにコピー(具体的には
http://www4.nhk.or.jp/jazz/5/ のサイトからコピー)してそれぞれ置換しつつ、
1〜4の文字列を取り出したいだけなのですが
入れ子の$2を"$2"としたのは、RegExReplace関数内での$変数はRegExMatchと違って"〜"で囲わなければ使えないと誤解してました。
入れ子のRegExReplaceの第1引数に$変数を使うには"〜"で囲わないと空の文字列が帰ってくるし、"〜"で囲うと変換できないし
つまりRegExReplaceの入れ子で、入れ子の外側の$変数は使えないという結論であってますか?
"$3"の全角/は半角/に正常に変換できている(と勘違いしてしまった)ので、なぜ"$2"は変換に失敗するのかなと思った次第です。
お騒がせしました。
506 :
名無しさん@お腹いっぱい。
2015/11/05(木) 22:10:08.87 ID:zDgeVp260
RegExReplaceは$nを変数として作成してるわけじゃないので たぶん
507 :
名無しさん@お腹いっぱい。
2015/11/06(金) 01:25:49.79 ID:he4vkYdS0
regexreplace(regexreplace(clipboard, "[\r\n]"), "「(.+?)」((.+?)).+?<(.+?)>", "$2`t$1`t<$3>`n")
508 :
名無しさん@お腹いっぱい。
2015/11/06(金) 03:08:05.31 ID:2EfBc8ko0
艦これの入力支援ください
ちっちゃいチェックボックスにカーソル合わせてカチカチやるの大変です
チェックボックス付近で左クリックしたらチェックボックスを押すようカーソル位置を補正するようなのおねがいしますm(__)m
509 :
名無しさん@お腹いっぱい。
2015/11/06(金) 09:34:52.17 ID:598Fhz410
スレチ
つくってスレにでも池
510 :
名無しさん@お腹いっぱい。
2015/11/07(土) 00:16:57.97 ID:bKUBtGr00
タブで最前面(表示されている)になってるウィンドウを指定する、なんてのはできませんかね。
511 :
名無しさん@お腹いっぱい。
2015/11/07(土) 00:51:05.93 ID:CBuUUJ6p0
説明不足すぎてなんとも
512 :
名無しさん@お腹いっぱい。
2015/11/08(日) 02:30:39.20 ID:loQvB1cR0
moji := "a,S,A,s"
Sort, moji, F StringSort D,
MsgBox,,, %moji%, ; A,a,s,S ; これをa,A,s,Sのようにアルファベット順かつ小文字が先にソートしたいのですが
StringSort(a1, a2) { ; 流行らせるページの例より
return a1 > a2 ? 1 : a1 < a2 ? -1 : 0
}
moji := "a,S,A,s"
Sort, moji, D`, C ; A,S,a,s
MsgBox,,, %moji%,
moji := RegExReplace(moji, "(?P<up>[A-Z,]+)(?P<low>[a-z,]+)", "$L{up}$U{low}", "")
MsgBox,,, %moji%, ;これではダメだしなんかうまい方法ないでしょうか
return
513 :
名無しさん@お腹いっぱい。
2015/11/08(日) 09:08:43.44 ID:mnZ19LQL0
ASCIIコード順で
A〜Zは 0x41〜0x5A
a〜zは 0x61〜0x7A
なので大文字小文字区別なしでアルファベット昇順ソートした後
ループで1文字ずつAsc()チェック
Asc(a1)&0x20 == Asc(a2)&0x20 (同一アルファベットチェック) かつ
Asc(a1)<0x60 (1文字目大文字) かつ
Asc(a2)>0x60 (2文字目小文字)
のとき入替えていけばいい
514 :
名無しさん@お腹いっぱい。
2015/11/08(日) 16:09:39.72 ID:GSUbphE40
;=== test.ahk ===
LButton::
Send,{LButton down}
KeyWait,LButton
Send,{LButton up}
Return
このスクリプトを動かしてAHKのウインドウのタイトルバー等をクリックすると、LButtonが押しっぱなしになってします。
どうやら {LButton down} を Send した直後にスクリプトが一時停止して、ESC か Enter を押すと再開されるみたいです。
どうしてこういう動作になるのでしょうか?
ver 1.1.22.02 ( 64bit Unicode ) / win7
515 :
名無しさん@お腹いっぱい。
2015/11/08(日) 16:14:49.13 ID:Y5RrWgWz0
516 :
名無しさん@お腹いっぱい。
2015/11/08(日) 17:24:29.13 ID:zBgd0BNB0
すみません、つい最近ahkを使い始めた超初心者ですがどうかご教授ください
ahk wikiのサンプルページの「1つのキーに3種類以上の動作割り当て」についてお伺いしたいのですが
vk1Dsc07B:: ;無変換
KeyWait,vk1Dsc07B,T0.3 ;0.3秒対象キーが押されたかどうか
If(ErrorLevel)
{
;ここに任意のコマンド 長押し
KeyWait,vk1Dsc07B ;←
Return
}
KeyWait,vk1Dsc07B,D T0.2 ;0.2秒対象キーが押されるのを待つ
If(ErrorLevel)
{
;ここに任意のコマンド 1度押し
KeyWait,vk1Dsc07B ;←
Return
}
;ここに任意のコマンド 2度押し
KeyWait,vk1Dsc07B ;←
Return
この「←」を付けた「KeyWait,vk1Dsc07B」は何のために記述してあるのでしょうか?
「無変換を押して離されるのを待つ」という意味なのは分かりますが、それぞれ「任意のコマンド」の後の
この位置に記述している意味が理解できません
初歩的な質問で申し訳ありませんが解説して頂けないでしょうか
517 :
名無しさん@お腹いっぱい。
2015/11/08(日) 18:02:27.30 ID:Y5RrWgWz0
やってみればわかる
長押しの部分になければ押しっぱなしの間、長押し部分のコマンドが繰り返される
2度押しの部分になければ2回目押したままにすると長押しのコマンドが動いてしまう
1度押しの部分になければ、ホットキーと同じキーをsendしたときおかしくなる
518 :
名無しさん@お腹いっぱい。
2015/11/08(日) 18:14:24.44 ID:zBgd0BNB0
>>517 なるほど分かりました
丁寧にありがとうございました
519 :
名無しさん@お腹いっぱい。
2015/11/08(日) 18:59:23.09 ID:7BVgqMXM0
>>513 > Asc(a1)&0x20 == Asc(a2)&0x20 (同一アルファベットチェック) かつ
ここ間違ってないですか?勘違いならすみません
a1 = a2
ASCII化は時間かかるので正規表現で判定した方が処理速度早い
>>514 AHKのタスクトレイメニューやタイトルバー選択中は
強制的に最上位のスレッドとして処理されているので下位のスレッドは全部止まる
; 確認用
Loop
tooltip % A_TickCount
>>516 キーリピートを止める為
520 :
名無しさん@お腹いっぱい。
2015/11/08(日) 19:43:20.63 ID:GSUbphE40
>>515さんのレスだけでは意味が分からなかったんですが、
>>519さんの説明を合わせてやっと分かりました。
ありがとうございました。
【初心者用メモ・・・】
AHKのウインドウのタイトルバーをクリック押下している間は、割り込み処理扱いになり、その間は元スレッドは中断されたまま。
Send,{LButton}ならdownとupが一括処理されるから、割り込みは一瞬ですぐ戻ってくる。
しかしSend,{LButton down}だとAHKのタイトルバーを選択した状態で割り込まれたままになり、デッドロックしてしまう。
521 :
名無しさん@お腹いっぱい。
2015/11/08(日) 21:06:57.03 ID:mnZ19LQL0
>>519 申し訳ないチェックするビット間違えてました
× 0x20
○ 0x40
ASCII化つーか単に数値として判断したいだけなんだけど計測結果とかあります?
処理としては正規表現のほうが時間かかりそうな気はするけど
if (RegExMatch(a1,"i)" a2) && RegExMatch(a1,"[A-Z]") && RegExMatch(a2,"[a-z]"))
のほうが分かりやすいっちゃ分かりやすいかな
522 :
名無しさん@お腹いっぱい。
2015/11/08(日) 21:54:09.15 ID:PEwgn65O0
Shift+方向キーで特定の動作が発生するという条件で
上記の動作の後、Shiftを離した際zキーを出力するようにしたいのですが
$Shift::
Send, {Shift down}
Send, {Shift up}
Send, z
return
とやった場合Shift+方向キーの動作はできるのですが、最後のzキーが出力されません
単体でShiftを押した場合はzキーが出力されますが、方向キーに限らず他のキーを途中で押すとやはり出力
されません
Shift up::Send,z
と、した場合Shift+方向キーの動作が発生しなくなります
ご教授お願いします
523 :
512
2015/11/08(日) 22:46:14.27 ID:FpDxhVsK0
>>513,519,521
せっかくお答えいただいたのに理解できなくてすみません
もうすこち勉強してみます
524 :
519
2015/11/09(月) 00:50:14.77 ID:gjmKuIWl0
525 :
名無しさん@お腹いっぱい。
2015/11/09(月) 15:11:27.21 ID:MX+Un5nc0
LButtondownの件はスレッドに割り込みかけれないようにクリティカルをおいておくとスムーズ
526 :
名無しさん@お腹いっぱい。
2015/11/09(月) 19:09:30.89 ID:gjmKuIWl0
527 :
名無しさん@お腹いっぱい。
2015/11/09(月) 22:06:40.86 ID:7AQJ6iEc0
>>526 ありがとうございました
できるようになりました
528 :
名無しさん@お腹いっぱい。
2015/11/10(火) 07:31:43.16 ID:vSrGeN6/0
#IfWinExist
のような条件文の有効範囲を終わらせるにはどうしたらいいのでしょうか?
529 :
名無しさん@お腹いっぱい。
2015/11/10(火) 07:54:37.12 ID:aGyO+ZX30
#IfWinExist とだけ書いた行までが有効範囲
530 :
名無しさん@お腹いっぱい。
2015/11/10(火) 11:18:33.76 ID:cAwuKPXY0
どちらかと言うと次の#IF系が書かれた行のひとつ前まで
531 :
名無しさん@お腹いっぱい。
2015/11/10(火) 11:43:08.14 ID:vSrGeN6/0
ありがとうございます
挙動的に、#if系の文はコードの末尾に書かなくてはいけない、ということなのか?
と思ったのですが、本当にそうなのですね。
なんともおかしな仕様ですね・・。
532 :
名無しさん@お腹いっぱい。
2015/11/10(火) 11:46:17.20 ID:cAwuKPXY0
ちょっと違う。終わる、というよりも#IFのみの場合はすべての条件に当てはまる、という解釈のほうが正しい。
533 :
名無しさん@お腹いっぱい。
2015/11/10(火) 12:39:11.72 ID:8dN7mOMv0
自分は適用範囲の終了には単に「#IF」しか書いてないな。
例えば↓な感じに・・・やっぱ、ちゃんと#IfWinExistな風に書いた方が良いのかな?
#If 条件A
a::処理A
#If 条件B
a::処理B
#If
534 :
名無しさん@お腹いっぱい。
2015/11/10(火) 13:52:37.19 ID:PemWT9dE0
明示的に#EndIf があったほうが分かりやすいなとは思うな
535 :
名無しさん@お腹いっぱい。
2015/11/10(火) 14:53:18.60 ID:VAVbo0pZ0
#IFの関係がチョット分からんとこあって
たとえばマウス下が何々の場合、ってmousegetposで判定挟んでその関数の倫理判定を#ifで見るって方法、これ一回クリックしないと動かなかったりするよな
一体どのタイミングで判断してるんだろう
536 :
名無しさん@お腹いっぱい。
2015/11/10(火) 15:24:20.01 ID:DG8wyOOo0
>>535 エスパースレじゃないんだから問題のスクリプトぐらい書け
537 :
名無しさん@お腹いっぱい。
2015/11/10(火) 15:37:34.63 ID:VAVbo0pZ0
いや大した関数じゃないよ。
それこそwikiの#IFにあるコレな。
#If MouseIsOver("ahk_class Shell_TrayWnd")
WheelUp::Send {Volume_Up}
WheelDown::Send {Volume_Down}
MouseIsOver(WinTitle) {
MouseGetPos,,, Win
Return WinExist(WinTitle . " ahk_id " . Win)
}
帰ってくるのがtrue(1)ならってものだけど、タスクバー以外に書き換えると反応がいまいち怪しくなる
538 :
名無しさん@お腹いっぱい。
2015/11/10(火) 15:59:32.14 ID:DG8wyOOo0
>>537 > タスクバー以外に書き換えると反応がいまいち怪しくなる
タスクバー以外とは?具体的に書かないと再現できない
スクロールの入力が速すぎるとかじゃないのか?
539 :
名無しさん@お腹いっぱい。
2015/11/10(火) 16:13:14.64 ID:VAVbo0pZ0
ERRORLEVEL調べても0が帰ってくるってことは成功してるってことだから、もしかしたらおま環かもしれない。
他のPCでやってみる
540 :
名無しさん@お腹いっぱい。
2015/11/10(火) 17:51:02.06 ID:ztr5AGlD0
「特定のウィンドウがアクティブになったら自動的にキー入力を送る」というスクリプトを組みたいのですが
例えばメモ帳がアクティブになったら自動的に「ファイル-開く」のダイアログを開きたい場合
#IfWinActive ahk_class Notepad
Send, ^o
#IfWinActive
では上手く行きませんでした
o::Send, ^o
などの様なキーのリマップはできますが、「自動的にキー入力」と言う動作をさせるには
どうしたら良いのでしょうか?
初歩的な質問で申し訳ないですがお願い致します
541 :
名無しさん@お腹いっぱい。
2015/11/10(火) 18:04:53.39 ID:DG8wyOOo0
>>540 監視をしたいならSetTimerで定期的にIfWinActiveを実行する
#Ifは「ホットキー」が有効になる条件を指定できる
542 :
名無しさん@お腹いっぱい。
2015/11/10(火) 18:16:24.58 ID:kUICWByQ0
543 :
名無しさん@お腹いっぱい。
2015/11/11(水) 00:04:06.82 ID:wD4GixYe0
イベント検知すごくいいよね…
544 :
名無しさん@お腹いっぱい。
2015/11/11(水) 20:38:39.55 ID:F1JSawuY0
windows updateがダウンロード済み・未適用の状態でautohotkeyの動作が妙になった
適用したら直ったけど、
未適用なのにどこかを変えられるのかな
545 :
名無しさん@お腹いっぱい。
2015/11/11(水) 20:47:50.47 ID:F1JSawuY0
ちなみにおかしくなったのは、
janeで書き込みウインドウがアクティブだったらホットキーを実行する、という処理。
updateの準備が出来たことで、
アクティブなウインドウの検知が一部不調になったということかもしれない
546 :
名無しさん@お腹いっぱい。
2015/11/11(水) 20:49:07.36 ID:jhw8UGUo0
clickImage("ファイル名",left)
みたいな記述で画面全体から画像を探し出しその中心を左クリックするという上位関数を作ろうとしてますが、
諸先輩方が既に多数の失敗と工夫をされてきた中イチから作るのもどうかと思い
「俺のこれをベースにしな」と見せていただける方がいらっしゃらないでしょうかと思います次第です
547 :
名無しさん@お腹いっぱい。
2015/11/11(水) 21:29:28.35 ID:D3CI1bSh0
どう言い繕おうがクレクレはクレクレ
548 :
名無しさん@お腹いっぱい。
2015/11/11(水) 22:29:01.84 ID:rrN1sXJ/0
車輪の再発明楽しいやろがい
549 :
名無しさん@お腹いっぱい。
2015/11/11(水) 23:18:51.41 ID:70qIbviU0
関数化するまでもなく素直に作って2行で済むコードだが
どうやったら失敗と工夫できるのかむしろ教えてみてほしい
550 :
名無しさん@お腹いっぱい。
2015/11/12(木) 15:34:11.57 ID:ee1BN3120
clickimageleft(imagefile)
{
imagesearch,x,y,0,0,A_ScreenWidth,A_ScreenHeight,%imagefile%
if ErrorLevel=0
{
mouseclick,left,%x%+3,%y%+3
traytip,%imagefile% is,X:%x% Y:%y%
}
else
traytip,%imagefile% is,not found
}
これでどうよ
画像の真ん中を算出する方法は分からん
551 :
名無しさん@お腹いっぱい。
2015/11/12(木) 17:03:55.65 ID:tFrA257K0
>>546 どうせググッて出てくる艦これのやつ既に見てんだろ?
実質画像の大きさ取得だけだろうけどこれもググったら即出てくるだろ
欲しいもののはそれで揃うぞ
つか自分で検出画像用意するなら取得するまでもないと思うけどな
552 :
名無しさん@お腹いっぱい。
2015/11/12(木) 17:12:05.98 ID:3F7hMJof0
AHKを使い始めて約2週間、出来ることが多すぎて何をしたいのか分からなくなった
553 :
名無しさん@お腹いっぱい。
2015/11/12(木) 17:39:05.84 ID:M60KXE7n0
>>552 現在常駐させている幾つかのツールをahk一本の常駐で代替させるとか、
日頃の作業を自動化させるとか、何かしら目的をハッキリ決めればいい。
例)スタートアップでタスクトレイに並ぶアイコンを常に同じ順序で配置させたい
→スタートアップで一つ一つのツールの起動を程良く遅延させるスクリプトを書く
まあ、日頃PC使ってると「あ、こういうの自動化すれば楽になるな」って気付くから、その時に作ればいいと思う。
…でも、スクリプト作成に夢中になって本来の目的見失わないようにw
554 :
名無しさん@お腹いっぱい。
2015/11/13(金) 09:38:08.76 ID:AY/3S8b/0
メモリ定期的掃除
マウスカーソル放置で隠す
スクロールをアクティブウィンド以外にも使う
クリック長押しでMクリック
ワンショットモデファイヤ
バツボタンクリックでも最小化
検索ソフトにむりやり関連付け
くるくるホイール
タスクバーで音量変更
デスクトップのファイル自動フォルダ分け
もう戻れん
555 :
名無しさん@お腹いっぱい。
2015/11/13(金) 09:46:37.27 ID:95i6dO660
> バツボタンクリックでも最小化
×ボタンクリックってどうやって判定するん?
もしかして最小化・最大化ボタンクリックも判定できます?
556 :
名無しさん@お腹いっぱい。
2015/11/13(金) 10:55:09.70 ID:QDV0Hfz10
MButton::
NumpadClear::
MouseGetPos, x, y, wID, clsNN
x += (x<0) ? 0xFFFF : 0 ;マルチディスプレイ対策
y += (y<0) ? 0xFFFF : 0 ;マルチディスプレイ対策
SendMessage,0x84,0,% x|y<<16,,ahk_id %wID% ;WM_NCHITTEST
If( clsNN = "MSTaskListWClass1" ) ;タスクバーとタイトルバーを見分ける
Send,{Blind}{MButton down}
Else If( ErrorLevel=2 || ErrorLevel=12 ) ;HTCAPTION(タイトルバー) or HTTOP(上部境界)
WinSet,Bottom,,ahk_id %wID%
Else If( ErrorLevel=8 ) ;HTMINBUTTON(最小化ボタン)
Gosub,AlwaysOnTopToggle
Else If( ErrorLevel=20 ){ ;HTCLOSE(閉じるボタン)
WinGet,taskbar_wID,ID,ahk_class Shell_TrayWnd
WinGet,active_pName,ProcessName,A
WinGet,wID,List,,,存在しないタイトル
Loop,%wID% {
StringTrimRight, this_wID, wID%a_index%, 0
WinGet,this_pName,ProcessName,ahk_id %this_wID%
If( (this_pName=active_PName) & (this_wID!=taskbar_wID) & (a_index!=wID) )
WinClose,ahk_id %this_wID%
}
}
Return
557 :
名無しさん@お腹いっぱい。
2015/11/13(金) 10:58:33.08 ID:QDV0Hfz10
最後抜けてた・・・
}Else
Send,{Blind}{MButton down}
KeyWait,%A_ThisHotkey%
Send,{Blind}{MButton up}
Return
558 :
名無しさん@お腹いっぱい。
2015/11/13(金) 11:01:32.76 ID:AY/3S8b/0
>>555 Aeroはシステム的に判定はできない。測って手打ち。
559 :
名無しさん@お腹いっぱい。
2015/11/13(金) 17:42:50.28 ID:EqPxOHTd0
560 :
名無しさん@お腹いっぱい。
2015/11/13(金) 19:18:03.64 ID:6jEoJJ1n0
再発明つーより改変じゃね
前半部分コメント一緒だし
561 :
名無しさん@お腹いっぱい。
2015/11/13(金) 19:55:37.45 ID:EqPxOHTd0
>>560 改変?ん〜〜、もし改変だとしても中ボタン押す度に処理走るのって個人的に好きくない
MUS.ahkのままなら「#IF 〜」使えるから、こっちの方が好き
562 :
555
2015/11/13(金) 20:13:21.70 ID:95i6dO660
皆さんレスありがとうございました
とりあえず
>>559氏のレスにあるMUS.ahkを使ってみる事にします
563 :
556-557
2015/11/13(金) 21:13:14.58 ID:QDV0Hfz10
>>561 確かにMUS.ahkを見て自分のスクリプトに組み込んだんだけど、
>改変だとしても中ボタン押す度に処理走るのって個人的に好きくない
>MUS.ahkのままなら「#IF 〜」使えるから、こっちの方が好き
これはどういう意味?
#IFで記述するにしても、クリックのたびに判定処理が発生することには変わりないよね?
関数MUS_GetTitleBarPosの中で
SendMessage,0x84,0,% sX|sY<<16,,ahk_id %hWnd% ;WM_NCHITTEST
このErrorLevel判定をして、
呼び出し元ルーチンでまた関数戻り値でif分岐するのだと、かえって処理ステップが増えないかね?
564 :
名無しさん@お腹いっぱい。
2015/11/13(金) 21:31:22.18 ID:6jEoJJ1n0
好き嫌いは好みの問題だしケチ付けることでもないかと
タスクバー判定とか新しい要素も入ってるし
まあ人に見せるサンプルとしてはホットキー直より関数化してるもののほうが
切り出しやすいってのは確かにあるが
565 :
名無しさん@お腹いっぱい。
2015/11/13(金) 21:40:02.19 ID:EqPxOHTd0
>>563 #IF (MUS_GetTitleBarPos(hwnd) = 20) ;20:ウインドウ[X]ボタン上
MButton::MsgBox, aaa
↑とりあえずこの2行だけ書いてやってみれば、俺が言ったことが分かると思う
566 :
名無しさん@お腹いっぱい。
2015/11/13(金) 22:13:09.31 ID:Xzp0UC+a0
めんどくさい人っぽいからお前の主張が全部正しいでいいよ
567 :
名無しさん@お腹いっぱい。
2015/11/14(土) 00:04:49.87 ID:VOxTf20d0
568 :
名無しさん@お腹いっぱい。
2015/11/14(土) 01:49:17.03 ID:QQoNNe+X0
>>565 実はソレ、Aeroだと際の際までは判定してくれないので誤作動を起こす
cornerfunk(){
DetectHiddenWindows,on
CoordMode,Mouse,screen ;絶対座標取得
MouseGetPos, x, y, win
Wingetpos,Win_X,Win_Y,width,Height,ahk_id %win%
Winrightegge := Win_X + width ;ウィンドの右端
;幅調節。残念ながらボタンの太さは取得不能。なので実測で測るしかない
return (y < Win_Y + 26) and (y > Win_Y) and (Winrightegge - 50 < x) and (Winrightegge > x)
}
結果としてこういう形になる
569 :
名無しさん@お腹いっぱい。
2015/11/14(土) 12:25:45.66 ID:vAdcucS10
>>568 これ、WM_NCHITTESTの返りが不正確って結構おおごとだと思うんだけど
ググってもよそで問題にされてるフシがないんだよね
AHK経由でだけ起こる現象なんだろうか
XY座標指定時にGET_X_LPARAM GET_Y_LPARAM通してないせいかなとも思ったけど
これ通すのは単にマルチディスプレイ上での負の座標対策だけっぽいし
570 :
名無しさん@お腹いっぱい。
2015/11/14(土) 21:21:39.96 ID:VOxTf20d0
GoogleEarthの拡大縮小で、テンキーの+と−が使えるのだけど、
#InstallKeybdHook
#UseHook
NumpadAdd::NumpadAdd ←コレだと動くけど
NumpadAdd::Send,{NumpadAdd} ←コレだと動かないのは何故でしょうか?
571 :
名無しさん@お腹いっぱい。
2015/11/14(土) 21:34:48.18 ID:QQoNNe+X0
送り方に問題がある。
NumpadAdd::Send,{NumpadAdd down}
Numpad up::Send,{NumpadAdd up}
なら動くと思われる
572 :
名無しさん@お腹いっぱい。
2015/11/14(土) 21:36:20.55 ID:QQoNNe+X0
書き間違えた、
Numpaddadd upね
573 :
名無しさん@お腹いっぱい。
2015/11/15(日) 01:04:34.10 ID:BnPH66HP0
ありがとう。動きました。しかし何故だろう。
574 :
名無しさん@お腹いっぱい。
2015/11/15(日) 01:55:02.60 ID:ghDvhSUw0
キーリピートで判定してるからだよ
sendは1度タイプした扱いにはなるけど押しっぱなしになるわけじゃない
aとaaaaaaaaaの差
575 :
名無しさん@お腹いっぱい。
2015/11/15(日) 16:34:16.39 ID:BnPH66HP0
$NumpadAdd::Send,{NumpadAdd}
でもホットキー自体にリピートが発生するんだよね?
GoogleEarthの検索ボックスにはちゃんと ++++++++ と入るし。
引き続き調べてみる。
576 :
名無しさん@お腹いっぱい。
2015/11/15(日) 16:47:46.59 ID:1MDwCJRy0
>>575 bktestみたいなキーボード入力検知ソフトを使うと違いが分かりやすいよ
NumpadAdd::NumpadAdd
だと押してる間はキーアップせずにキーダウンをリピートしてる
NumpadAdd::Send,{NumpadAdd}
だと押しっぱなしでキーダウンとキーアップを交互にリピートしてる
577 :
名無しさん@お腹いっぱい。
2015/11/15(日) 17:10:12.71 ID:CzXotjKd0
>>575 キーリピート有無のではなく送られている信号の違い
AHKのスクリプトログとキーログ見れば分かる
■押し下げ維持 5回キーリピートで発生するキーイベント
押し=Down 上げ=Up
Send → DUDUDUDUDU
通常とリマップ → DDDDDU
■GoogleEarthで試してないが対策はいろいろある
$NumpadAdd::Send,{NumpadAdd down}
$NumpadAdd up::Send,{NumpadAdd up}
SetKeyDelay, -1, 100 ; ※Auto-executeセクション
$NumpadAdd::Send,{NumpadAdd down}
$NumpadAdd::
Send,{NumpadAdd down}
KeyWait, NumpadAdd
Send,{NumpadAdd up}
return
578 :
名無しさん@お腹いっぱい。
2015/11/15(日) 17:31:39.05 ID:CzXotjKd0
>>577 訂正 消し忘れ
SetKeyDelay, -1, 100 ; ※Auto-executeセクション
$NumpadAdd::Send,{NumpadAdd}
579 :
名無しさん@お腹いっぱい。
2015/11/15(日) 23:53:09.78 ID:BnPH66HP0
580 :
512
2015/11/16(月) 11:00:18.29 ID:uZYGomWy0
>>513,519,521,524
>>524のリンク見てやっと分かった!これで合ってますか
そもそもStringSort関数のa1,a2に勝手にループで代入されて行く仕組みがよく分からない……。
とりあえず結果オーライという事でありがとうございました。
var := "a,S,A,s"
Sort, var, F StringSort D, ;A,a,s,S
Sort, var, F StringSort_a2Z D,
MsgBox,,, %var%, ;a,A,s,S
StringSort(a1, a2) {
;MsgBox,,, test`n%a1%`,%a2%, ;S,a -> A,S -> s,S -> s,a -> A,s -> A,a
return a1 > a2 ? 1 : a1 < a2 ? -1 : 0
}
StringSort_a2Z(a1, a2) {
;if ((Asc(a1)&0x40 == Asc(a2)&0x40) && Asc(a1)>0x60 && Asc(a2)<0x60)
if ((a1 = a2) && Asc(a1)>0x60 && Asc(a2)<0x60)
return 0
else
return 1
}
581 :
名無しさん@お腹いっぱい。
2015/11/16(月) 19:13:10.43 ID:Yh78S2ak0
>>580 Sortは文字列を1文字ずつA文字とB文字「比較」して末尾まで繰り返し並び替える
文字列分割ループの「比較機能」付だと思えば分かりやすいかな?
Sortの関数オプションを使うと「比較機能」の部分を指定できる
A = 第1引数
B = 第2引数
AB位置の差 = 第3引数
582 :
名無しさん@お腹いっぱい。
2015/11/17(火) 18:15:37.49 ID:/aRA2C0p0
~WheelUp::
MouseGetPos, , , PosID1
IfWinNotActive , ahk_id %PosID1%
{
WinActivate, ahk_id %PosID1%
Return
}
Return
~WheelDown::
MouseGetPos, , , PosID1
IfWinNotActive , ahk_id %PosID1%
{
WinActivate, ahk_id %PosID1%
Return
}
Return
マウスホイールを上下に廻したとき、カーソル位置のウィンドウが非アクティブだったらアクティブ化する
というスクリプトを作り、「 ~ 」を付けてホイール機能も元通り使えるようにしたつもりなのですが
IEでは不安定になりときどきホイールスクロールが出来なくなってしまいます
JaneStyleやメモ帳など他のソフトでは正常に動いてるし、IEも起動した直後は問題なく使えてるのですが
IE起動→デスクトップをクリック(IEが非アクティブになる)→IEのウィンドウ上でホイール動かす
などとするとIEがアクティブにはなるのですが、その後ホイールでスクロールができなくなってしまいます。
ちなみにその後IEの画面を改めてクリックするとスクロール可能になります。
どうやら「WinActivateコマンドによるアクティブ化」と「画面クリックによるアクティブ化」の違いが影響してる
みたいですが何とかこれを回避する方法はないでしょうか?
583 :
名無しさん@お腹いっぱい。
2015/11/17(火) 18:26:03.39 ID:o7uByFf50
MouseClickコマンド送ってアクティブ化したらいいんでね?
584 :
名無しさん@お腹いっぱい。
2015/11/17(火) 18:31:11.94 ID:/aRA2C0p0
>>583 MouseClickコマンドだと意図しないリンクを踏んでしまうので
クリックせずにアクティブ化して、スクロールも正常に使えるようにしたいのですが
585 :
名無しさん@お腹いっぱい。
2015/11/17(火) 21:25:24.43 ID:ey6yjG/o0
試しにやってみたけどうちでは普通にスクロール出来た
586 :
名無しさん@お腹いっぱい。
2015/11/17(火) 22:07:19.94 ID:IkXXz35G0
IEのバージョンがわからんからうちの9での場合だけど
IEは表示部にフォーカスがないときはホイールやキーボード効かないから1回クリックしてやらなきゃだめで、
どうやらwinactivateで引っ張ってくると表示部ではないどこかに勝手にフォーカスされる模様
shift+tabを送ってやれば表示部に移るみたいだけど、毎回ページの先頭に飛んでしまうな
587 :
名無しさん@お腹いっぱい。
2015/11/17(火) 22:09:30.03 ID:/aRA2C0p0
>>585 >IE起動→デスクトップをクリック(IEが非アクティブになる)→IEのウィンドウ上でホイール動かす
といった操作をしても正常にスクロールできるときと出来なくなるときがあります
症状の発生が不安定なので私のスクリプトの書き方に何か問題があるのかとも思ったのですが
どうにもならないバグなのでしょうか
ちなみに環境はWindows7 64bit、IE11、AHK Ver1.1です
588 :
名無しさん@お腹いっぱい。
2015/11/17(火) 22:09:30.60 ID:o7uByFf50
ほんならControlFocusかControlClickでいいんでね
589 :
名無しさん@お腹いっぱい。
2015/11/17(火) 22:20:25.81 ID:IkXXz35G0
ControlFocusでいけた
このコマンド知らなかったw thx
590 :
名無しさん@お腹いっぱい。
2015/11/17(火) 23:31:14.34 ID:/aRA2C0p0
>>588-589 申し訳ありません、wikiなども見たのですがControlFocusをどのように使えばいいのか
分からないのですがご教授願えませんか?
591 :
582
2015/11/18(水) 03:46:49.78 ID:fy4/ptgK0
>>582ですが、どうやら自己解決したかもしれません
#WinActivateForce
を追加することで、WinActivateコマンドでIEをアクティブ化したときにスクロールが
出来なくなる症状も無くなったみたいです
ただ今までも正常に動いてたときもあったのでもうしばらく様子見が必要ですが
とりあえずこれまでのところ問題なく機能しています
お騒がせしてすみませんでした
592 :
名無しさん@お腹いっぱい。
2015/11/18(水) 13:47:24.35 ID:QIfDbWGX0
左クリック長押しのヤツ、なんかまだ使えそうな気がするんだけどな
長押ししてドラッグスクロールだけじゃなくてそのままマウスジェスチャとかなんかできないかな
593 :
名無しさん@お腹いっぱい。
2015/11/18(水) 17:27:52.43 ID:SCovIktr0
>>592 何のことか一部の人にしか分からないからアンカやURLぐらい貼ったら?
594 :
名無しさん@お腹いっぱい。
2015/11/21(土) 08:24:58.42 ID:YfYXqyDG0
ゲームを操作したいと思ってるのですが、
マウスキーをリマップしてもスクリプト自体は動くのですが元のキーが無効になりません
(「LButton::」にしても「~LButton::」になっちゃってる感じです)
すみませんご存知の方いましたら、完全にマウスキーを乗っ取れる方法を教えてください
そのゲーム以外のウィンドウだと無効になっています
64bitのUnicode、最新版のAHKを使っていて、スクリプトは管理者権限で動かしています
usefookやinstallkeyboardhookなどは試しましたが駄目でした
ちなみにゲームはSAってFPSです
595 :
名無しさん@お腹いっぱい。
2015/11/21(土) 09:04:43.79 ID:nM0hieGA0
フックでダメならBlockinput
596 :
名無しさん@お腹いっぱい。
2015/11/21(土) 09:41:54.07 ID:8TROjLo70
ゲーム系アプリは大抵が直接ハードキー見てるからフック駄目なんじゃね
それにマクロやスクリプト対策してるものも多いので基本まともに動かないと思っといたほうがいい
597 :
名無しさん@お腹いっぱい。
2015/11/21(土) 10:05:53.02 ID:YfYXqyDG0
>>595 Blockinput記述しても結局、最初に動くときにLButtonは送られてしまうみたいです
常にBlockinputだと何も出来ないですし(動いたのは「on」だけでした)
>>596 無理ですか・・・
いい忘れましたがキーボードイベントは無効に出来るんですが
xbutton含めマウスだけ無効にできないので、マウス関連は別の書き方があるのかと
598 :
名無しさん@お腹いっぱい。
2015/11/21(土) 10:26:23.93 ID:hocQtEF60
>>594 確認して無いが他の方法
マウスの付属ツールなどでより上流からF13に変えて
AHKをF13に割り当てる
599 :
名無しさん@お腹いっぱい。
2015/11/21(土) 16:38:02.75 ID:GLx696vY0
ゲームじゃないけど似たような症状で、ホットキーなどを記述したAHKスクリプトを常駐させた後に
CLaunchというランチャーソフトを起動すると、#UseHookを書いて常駐させていても
「任意のキー::」が「~任意のキー::」の様な動作なってしまう
CLaunchを起動した後にReloadしたり、先にCLaunchを起動してからAHKスクリプトを常駐させれば
正常に動くけど、なぜこうなるのかは謎・・・
600 :
名無しさん@お腹いっぱい。
2015/11/21(土) 16:48:23.68 ID:8TROjLo70
CLaunchてMouseGestureL.の人?
元はぬるCさんの改造とはいえAHKには精通してるはずだから
作者さんに質問投げてみたら?
601 :
名無しさん@お腹いっぱい。
2015/11/21(土) 17:00:46.55 ID:GLx696vY0
>>600 MouseGestureL. は使用していません
自分で書いた簡単なホットキーのスクリプトを常駐させています
今はCLaunchを起動したらその後にAHKスクリプトを常駐させるように
設定しているので特に困ってはいないんですけどね
もしかしたら
>>594もSAを起動した後にスクリプトをリロードしたら
正常に動くかも?と思いまして
602 :
名無しさん@お腹いっぱい。
2015/11/21(土) 17:03:02.18 ID:GLx696vY0
>>600 おっと失礼、質問を読み違えてました
作者さんはMouseGestureLと同じ人みたいですね
603 :
名無しさん@お腹いっぱい。
2015/11/21(土) 17:09:28.28 ID:nM0hieGA0
作者がどうとかは流石に知らんが
スクリプトの書き方にもよるんだけど根本的な解決方法はLクリックにはない
だから#Ifで区切る。
#If not(プロセス名の式、正規表現、クラスなどの除外)
$Lbutton::
ここでたとえばClaunchのclassがClaunchclass、というクラス名であるのなら
#IF not Winexist("Ahk_class Claunchclass")
$Lbutton::させたい式
とかけば、Claunchが存在しないならLbuttonのスクリプトが動き、Claunchが存在するなら従来通りのスクリプトを通さないLbuttonの動きになる。
#IFの式に関しては喩え話だから条件は工夫すること。
汎用性が高いのはマウスオーバー関数を使って除外タイトルを指定するやり方。
sendモードの違いとかでも動く動かないは変わる。
604 :
名無しさん@お腹いっぱい。
2015/11/21(土) 17:18:04.74 ID:8TROjLo70
わかりにくくてすまん
MouseGestureLについて質問してみたら、ではなく
作者さんはMouseGestureを改造できるくらいにはAHKに精通してる人だし
CLanunchとAHK併用時の挙動について質問しても話通じるだろうから
直接聞いてみたら?といいたかった
AHKなにそれな作者よりは明確な答え返してくれそうだし
場合によっちゃあっち側でなんか対策してくれるかもしれないし
605 :
名無しさん@お腹いっぱい。
2015/11/21(土) 17:24:40.00 ID:GLx696vY0
>>604 こちらこそわかりにくくてすみません
とりあえず自分の場合は「そういう症状があった」というだけで対処法も判明してるので
そこまで困ってはいないということです
606 :
名無しさん@お腹いっぱい。
2015/11/21(土) 17:28:49.55 ID:/nUw6DJI0
607 :
名無しさん@お腹いっぱい。
2015/11/21(土) 17:35:02.58 ID:YfYXqyDG0
>>598 ゲーミングマウスなんでキー設定は出来るんですが、キーを一回sendするだけなんで置き換えとは行かず
色々考えてもらったのに申し訳ない
608 :
名無しさん@お腹いっぱい。
2015/11/24(火) 00:56:19.56 ID:Ai4GI3E00
秀丸エディタに対して
WinSet,AlwaysOnTop
が効かない原因は何が考えられるでしょうか?
他のアプリは全て反応します。
秀丸エディタだけ反応しません。
AHKを管理者権限にしてもダメです。
609 :
名無しさん@お腹いっぱい。
2015/11/24(火) 02:19:03.64 ID:2ua292lF0
うちの秀丸はTopmostで問題なく効いてる
win8.1 x64 AHK_L 1.1.22.06 / 秀丸32bit版 ver8.56 β8
ウィンドウの指定方法間違ってるとかじゃないの
610 :
名無しさん@お腹いっぱい。
2015/11/24(火) 02:36:56.54 ID:Ai4GI3E00
あれ??? さっきは秀丸だけ反応しなかったのに今は反応したょ。。。。
#F1::WinSet,AlwaysOnTop,TOGGLE,A
ウィンドウ指定もAのままだし。
原因不明だけどありがとう。>609
611 :
名無しさん@お腹いっぱい。
2015/11/24(火) 23:16:54.63 ID:jkphlE+O0
今は無変換キーや変換キーを使って
Everything検索やGoogle検索してるのを
CLaunchなどのランチャーをつかってやるにはどうやったらできますか?
具体的には文字列を選択してその後ランチャーをたちあげて登録したアイコン(ahk?)
をクリックするといろいろなソフトで検索されるようにしたい
いろいろ試行錯誤してるけどどうもうまくいかない
612 :
名無しさん@お腹いっぱい。
2015/11/24(火) 23:19:13.80 ID:tDk/NSFL0
試行錯誤したものを貼れば誰かがアドバイスしてくれるかも
丸投げっぽく見えるのはNG
613 :
名無しさん@お腹いっぱい。
2015/11/25(水) 00:02:08.42 ID:wRgvxYKu0
>>611 無変換キーや変換キーを使って出来ていることを
何でわざわざ別のソフト噛ましてやりたいのか理解出来ないんだが
キー1つ押すだけなのと、ランチャー立ち上げてアイコンクリックという手間を考えたら
圧倒的に前者の方が効率良いように見えるんだが
614 :
名無しさん@お腹いっぱい。
2015/11/25(水) 00:12:08.14 ID:uQGtXlrh0
マウスだけでやりたいんだろ
615 :
名無しさん@お腹いっぱい。
2015/11/25(水) 00:17:15.26 ID:wRgvxYKu0
>>614 それならマウスのジェスチャーとかに変換キーや無変換キーを割り当てればいいのでは?
何にしてもランチャーソフトを噛ます理由にならないんだが
616 :
名無しさん@お腹いっぱい。
2015/11/25(水) 00:21:27.30 ID:LhITFmz60
>>613 今はすごい便利で満足なんだけど
あとEvernote検索とかAmazone検索とか他にもいろいろ増やしたいんだ
増やした場合にショートカットキーやマウスボタンに登録するのは簡単なんだけど
1ボタンでやるにしろ、複数キーの組み合わせでやるにしろあまり使わないやつはそのうち忘れそうで
CLaunch立ち上げて各検索ボタンが並んでたらふと便利かなと
AutoHotkeyじゃなくてArttipsとかでやれって話かもしれんが・・・
617 :
名無しさん@お腹いっぱい。
2015/11/25(水) 00:41:14.09 ID:prA3L8ps0
618 :
名無しさん@お腹いっぱい。
2015/11/25(水) 01:00:07.06 ID:LhITFmz60
要はショートカットキーのショートカットファイルが出来ればいいんだろうけどそんなことはなんか
出来そうにないから、いまはバッチファイル関連をあたってる。
あとは選択しただけでコピーしてそれを渡そうとしたがどうもうまくいかない
>>617 見てみるね、ありがとう
619 :
名無しさん@お腹いっぱい。
2015/11/25(水) 01:03:56.26 ID:NkqaGppn0
>>615 なんでいちいち噛みつかないと気がすまないの?
620 :
名無しさん@お腹いっぱい。
2015/11/25(水) 01:08:23.81 ID:LhITFmz60
>>617 うほっ
Everythingに出力出来た、他のはまだ試してないけど出来そう
すげえええ
どうやってるのかもうちょっと確認してみる
あなた天才かよ
621 :
名無しさん@お腹いっぱい。
2015/11/25(水) 01:14:57.48 ID:AjPnN7dT0
staticで、1個前の情報を保管して、次回呼ばれた時にifで比較って部分、
俺もしょっちゅう使ってるけどみんな同じなのか。ちょっと安心したw
622 :
名無しさん@お腹いっぱい。
2015/11/25(水) 01:23:30.49 ID:LhITFmz60
>>617 まだ理解出来てない箇所は多いけど(初心者)
まさにやりたいことはすべて出来てる
最近で一番うれしい、本当にありがとう
623 :
名無しさん@お腹いっぱい。
2015/11/25(水) 02:05:00.84 ID:u2GsOl8N0
わからん。ギブアップ。
If文で日付の比較をして正否判定させたいんですけど式上で日付の比較ってどうやればいいんでしょう?
Priorday += 7,D ;以前チェックした時点より7日経過。
If(Priorday =< A_now)
msgbox,OK
では無理ぽい?
624 :
名無しさん@お腹いっぱい。
2015/11/25(水) 02:06:36.75 ID:byDMOqUE0
Array := Object()
Array.InsertAt(1,100,101,102)
Array.InsertAt(2,200,201,202)
Array.InsertAt(3,300,301,302)
text.=Array2[2+1]
msgbox, % text
配列arrayのkey2のvalue2である201を表示させたいのですが
上記の例だと何故か300と表示されてしまいます
http://ahkwiki.net/Object_Objects を読むと
「任意の Value2 以降の引数はそれぞれ、Index+1, Index+2 ... Index+N-1 に格納される。」とあったのですが
何がいけないんでしょう?
625 :
名無しさん@お腹いっぱい。
2015/11/25(水) 02:52:53.44 ID:prA3L8ps0
626 :
名無しさん@お腹いっぱい。
2015/11/25(水) 05:24:23.58 ID:kk8Nk2Gr0
>>624 こういうこと?
Array := Object()
Array.InsertAt(1, [100, 101, 102])
Array.InsertAt(2, [200, 201, 202])
Array.InsertAt(3, [300, 301, 302])
text := Array[2, 2]
msgbox, % text
単にキー名を指定して代入させたいだけなら
Array := Object()
Array[1] := [100, 101, 102]
Array[2] := [200, 201, 202]
Array[3] := [300, 301, 302]
text := Array[2, 2]
msgbox, % text
627 :
名無しさん@お腹いっぱい。
2015/11/25(水) 06:07:10.57 ID:gUb05cZG0
628 :
名無しさん@お腹いっぱい。
2015/11/25(水) 10:29:24.43 ID:byDMOqUE0
>>626 値を[]で囲んで指定するキーはカンマで区切らないとだめだったんですね。
おっしゃる通りにした所ちゃんと表示されました。ありがとうございます。
629 :
名無しさん@お腹いっぱい。
2015/11/25(水) 13:56:57.93 ID:9J1Vpxne0
>>623 %%で囲って変数の中参照したら動いた。
630 :
名無しさん@お腹いっぱい。
2015/11/26(木) 04:01:56.13 ID:C3ROe9Qm0
↓キーヒストリにLButtonの痕跡が残らないのは何故でしょうか?動作はしてるのですが。。。
#InstallKeybdHook
#UseHook
NumpadLeft::
Send,{LButton down}
KeyWait,NumpadLeft
Send,{LButton up}
Return
631 :
名無しさん@お腹いっぱい。
2015/11/26(木) 04:11:40.76 ID:/rCMk+V50
>>630 #InstallMouseHook
> key history
Keybd hook: yes
Mouse hook: no ←
632 :
名無しさん@お腹いっぱい。
2015/11/26(木) 10:22:15.94 ID:AS9qCb8z0
633 :
名無しさん@お腹いっぱい。
2015/11/26(木) 13:02:28.85 ID:FK4ECWgd0
ホットストリング使ってFormatTimeで英語の曜日(sunとかmon)っていうのを入力したいのですが
どうやればできるのでしょうか?現在日本語ではできているのですが英語にしたいと思いまして。
おしえてください
634 :
名無しさん@お腹いっぱい。
2015/11/26(木) 13:28:30.13 ID:5V6JTIAR0
L0x0409
635 :
名無しさん@お腹いっぱい。
2015/11/26(木) 13:56:49.54 ID:FK4ECWgd0
>>634 ありがとうございました。成功しました。
タイムスタンプのところでT1とLnとを両方使いたかったのですが、
単純にスペースで間隔あけることで両方とも動くのですね。
FormatTime, OutputVar, L0x0409 T1,ddd
636 :
名無しさん@お腹いっぱい。
2015/11/26(木) 14:09:42.63 ID:DbTWId0y0
>>611 AHKで検索ランチャーGUI作っちゃうほうが簡単じゃね?ボタン並べるだけだし
637 :
名無しさん@お腹いっぱい。
2015/11/26(木) 15:42:53.85 ID:C3ROe9Qm0
638 :
名無しさん@お腹いっぱい。
2015/11/26(木) 16:58:06.00 ID:JGdoNjTQ0
>>636 自分も思ったけどそれは多分したくないんだろう
個人的にはGUIよりアイコン付きメニューで作ってみたい
639 :
名無しさん@お腹いっぱい。
2015/11/26(木) 17:18:41.07 ID:N5/XXKNT0
最初の質問者と同じような用途で、AHKのmenuコマンドで、
自前でメニューを作って使ってるけど、まれに不具合が出る。
メニューを表示する直前のタイミングで、他のtrayTipや、タスクトレイのバルーンが出て
他へフォーカスが移ると、メニューは表示されるが、欄外を押してキャンセルする動作ができなくなる。
いったんこうなると、メニュー表示が出続けて、項目のどれかを必ず選択しないといけない。
そうしないと消えてくれず、処理も続行できない。どれも押したくない場合は困ってしまう。
AHKとは関係のない、ほかのフリーソフトでも似たような挙動を経験したので
Windows自体の仕様か放置バグかもしれないけど、防ぐ方法って、なにかある?
640 :
名無しさん@お腹いっぱい。
2015/11/26(木) 17:38:01.48 ID:QpZhTyFe0
とりあえずメニュー項目にキャンセル入れとけばよろしいのでは
641 :
名無しさん@お腹いっぱい。
2015/11/26(木) 19:35:31.81 ID:Occotz5E0
autohotkey以外のコンテキストメニューならこれで消せるけど防ぐ方法は知らない
winactivate, ahk_class #32768
send, {alt}
642 :
名無しさん@お腹いっぱい。
2015/11/26(木) 21:45:13.34 ID:XsZgqL3u0
今あるキーに割り当てている選択した文字でgoogle検索(こちらは上手く作動している)を
文字を選択後Ctr2回押しで検索にしたいのですが、どうしてもうまくいきません
Ctrl::
KeyWait, Ctrl
if (A_PriorHotkey == A_ThisHotkey) && (500 > A_TimeSincePriorHotkey)
send, ^c
Sleep 100
Run,
http://www.google.co.jp/search?num=10&as_q=%clipboard%
return
もしかするとすごく恥ずかしい質問なのかもしれませんが・・・お願いします
643 :
名無しさん@お腹いっぱい。
2015/11/26(木) 22:15:21.04 ID:bRQHQUt70
コンテキストメニューのファイルは別.ahkファイルにしてrunで呼び出すものと思いねえ。
644 :
名無しさん@お腹いっぱい。
2015/11/26(木) 22:30:31.12 ID:QpZhTyFe0
645 :
名無しさん@お腹いっぱい。
2015/11/26(木) 22:51:32.57 ID:XsZgqL3u0
646 :
名無しさん@お腹いっぱい。
2015/11/27(金) 00:20:15.35 ID:RAJevorr0
全角カナを半角カナに変換してくれるスクリプトってありませんか?
ぐぐったらクリップボード関係のスクリプトが引っかかったんですが
なんかちょっと用途が違う気がして……
647 :
642
2015/11/27(金) 00:58:37.89 ID:lQ8gymIb0
644のでイケたと思ってたけど実はCtlr1回押しでも検索しちゃってた
だから誤爆しまくる・・・
うーん全然わかんね
648 :
名無しさん@お腹いっぱい。
2015/11/27(金) 01:06:03.68 ID:hG57rMqt0
>>647 ctrl up::
if (A_PriorHotkey == A_ThisHotkey) && (500 > A_TimeSincePriorHotkey)
send, ^c
ファンクションキーはctrl下げるだけじゃ不便が多い
649 :
名無しさん@お腹いっぱい。
2015/11/27(金) 01:07:17.66 ID:hG57rMqt0
650 :
名無しさん@お腹いっぱい。
2015/11/27(金) 01:19:52.06 ID:lQ8gymIb0
>>649 検索行為はうまく動作したけど今度はCtrl+Cでコピペが出来なくなり
またファイルを複数選択するときにもCtlrが使えません・・・
難しいなあ
651 :
名無しさん@お腹いっぱい。
2015/11/27(金) 01:24:46.96 ID:BdREuqkG0
652 :
名無しさん@お腹いっぱい。
2015/11/27(金) 01:30:07.90 ID:lQ8gymIb0
>>651 あーーーそういうことかあ
動作しましたーありがとう、ここはなんてやさしいスレなんだ
みんなありがとう!
653 :
名無しさん@お腹いっぱい。
2015/11/27(金) 01:35:00.37 ID:GtlMqb/z0
654 :
名無しさん@お腹いっぱい。
2015/11/27(金) 01:36:09.22 ID:BdREuqkG0
>>652 自分も初心者なので分からないことばかりだけど
たまには人の役に立てて良かった
655 :
名無しさん@お腹いっぱい。
2015/11/27(金) 01:59:04.84 ID:QbKHgrgq0
検索クエリとして渡す場合、文字列をURLエンコードしないとちゃんとした検索結果が出ない事があるから注意な
656 :
名無しさん@お腹いっぱい。
2015/11/28(土) 01:59:35.59 ID:CpBNAMPE0
久しぶりにAHKいじっててWindowを閉じるスクリプト書きたいだけなのに
Send,!{F4}って書いてもWindow閉じない。
なんか仕様変わったんだっけ?
657 :
名無しさん@お腹いっぱい。
2015/11/28(土) 02:07:08.29 ID:qyk6bIOy0
>>656 普通にSend,!{F4}で終了できるよ
658 :
名無しさん@お腹いっぱい。
2015/11/29(日) 07:05:31.63 ID:OMAIHwT00
WinCloseかWinKill使ってええんやで
659 :
名無しさん@お腹いっぱい。
2015/11/29(日) 18:13:47.12 ID:DSNSRTMA0
F5::
KeyWait, F5, T 0.3
If(ErrorLevel)
{
PostMessage, 0x112, 0xF120,,, ahk_id %MinID%
KeyWait,F5
Return
}
MouseGetPos, , , MinID
PostMessage, 0x112, 0xF020,,, ahk_id %MinID%
KeyWait,F5
Return
F5を押したらマウスの下のウィンドウを最小化して、F5を0.3秒以上押すと最小化したウィンドウを元に戻す
というスクリプトを作ったのですが、IEやエクスプローラーなどでは正常に機能しているのですが
一部のアプリケーションで上手く機能しません
具体的にはJaneStyle(2ch用ブラウザ)だけ最小化は出来るけど元のサイズに戻すことが出来ません
WinRestoreでダメだったのでPostMessage, 0x112, 0xF120 にしてみたのですがこれでもダメでした
何か他に対策方法は無いでしょうか?
660 :
名無しさん@お腹いっぱい。
2015/11/29(日) 18:35:49.14 ID:ldLvuJP60
俺は詳しい原因わからないけど
JaneStyleの最小化復元はID指定だとなぜか上手くいかない
title使うとちゃんとできる
661 :
名無しさん@お腹いっぱい。
2015/11/29(日) 19:38:41.45 ID:DSNSRTMA0
>>660 レスありがとうございます
確かにTitleを使ったらJaneも復元できますね
最小化はIDでもできるのに不思議・・・
662 :
名無しさん@お腹いっぱい。
2015/11/29(日) 21:58:54.93 ID:Ox4+tFCj0
知りたい事
ahk_class AutoHotkeyGUI上の、背景透過かつ半透明色が含まれるpng画像を、背景透過のまま、半透明色を半透明のまま、不透明色を不透明のまま表示し、高速に画像を差し替える方法はありますでしょうか。
半透明色が使えないと、どうしてもキャラクターの外周部縁取り線がギザギザしてしまうので何とかしたい。
ダメな例
Gui, +LastFound
Gui, Color, 0000ff ;GUIの背景色を青100%にする
;WinSet, Trans, 0 ;<--後から追加したコントロールも全て透明になってしまうのでNG
WinSet, TransColor, 0000ff 255 ;GUIの青100%の部分だけを不透明度0%にする
Gui, Add, Picture, x0 y0, %A_ScriptDir%\VkXeojE.png ; (
)赤100%不透明度100%〜不透明度10%で背景透過のテスト画像
Gui, Show
Return
GuiClose:
ExitApp
test画像は上が赤100%で不透明度100%、右側の数字は不透明度で背景は不透明度0%です。
画像を単体でブラウザなどに表示すると、ブラウザの背景色が白ならば赤からピンクのグラデーションになるところが、
この例ですと半透明色部分だけが、WinSet, TransColorで透明にしたはずのGUI背景色(青)と混色して赤→紫→青になってしまいます。
試作
よくググりもせず勢いでデスクトップマスコット作ったら先人の方々がとっくにもっと高機能の作ってらして凹んだ…orz
とりあえずタイトルバーに乗っかるだけの簡易タイマー付きデスクトップマスコットです(画像は昔描いたやつの使いまわし(skin2の画像は作者様不明の拾い物を加工。勝手に使ってスミマセン))。
ahk専用うpろだの有益な情報を流してしまうのは申し訳ないのでこちらにupしました。
http://fast-uploader.com/file/7004357099551/ DLパス=AutoHotkey
お手数ですがDLして検証していただけたら幸いです。
マスコットをクリックで簡易タイマー、右クリックでメニュー表示、トレイアイコンは無しです。
どういうわけか動作中はデスクトップやエクスプローラ上で右ドラッグが出来なくなります。
663 :
名無しさん@お腹いっぱい。
2015/11/29(日) 23:29:58.85 ID:ecadPq9J0
ahklのユニコード版で文字列のバイト長を得るにはどうしたらいいんでしょうか
半角○文字・全角○文字の制限がある場所に入力する文字列が制限内かどうか知りたいだけなんです
664 :
名無しさん@お腹いっぱい。
2015/11/29(日) 23:36:54.08 ID:ecadPq9J0
すいません、過去ログに関数作ってくれた方がいたんですね
大変申し訳ありませんでした
665 :
名無しさん@お腹いっぱい。
2015/11/30(月) 16:16:18.71 ID:nASTIlfG0
>>662 とりあえず思ったこと
ウィンドウが最小化できなくなって困った
skin2にしたら右クリの当たりが小さくなって終わらせるのに手こずった
666 :
名無しさん@お腹いっぱい。
2015/11/30(月) 22:31:22.62 ID:Xuq+4IHh0
>>665 レスありがとうございます
透明部分ではGuiContextMenu発生しないんですよね…
~Rbutton::で右クリック通してMouseGetPosで座標判定するしかないのかな
667 :
名無しさん@お腹いっぱい。
2015/11/30(月) 22:32:33.80 ID:Xuq+4IHh0
あれ?今度は書き込めた(規制かかってたような?)
ahkってタイトルバー消して透過png表示できるんだスゲー
→Gui、Add, Pictureでgifアニメは1フレーム目しか表示できないな?
→Loopで画像差し替えでいけるかも?
→ならGuiごとWinMoveで動かしてダイナミックに動かせるかも?←イマココ
gifアニメはキャンバスサイズ内でしか動かせないが、これならアニメ手法のfollow(カメラが被写体と一緒に被写体の進行方向に平行移動)
を実現できるかな?と思ったんですがカクカクで・・・
実用性なしと言われればその通りなんですが。
http://fast-uploader.com/file/7004444717496/ DLパス=AutoHotkey
668 :
名無しさん@お腹いっぱい。
2015/12/01(火) 01:36:30.29 ID:1hVz3NkO0
>>667 規制じゃなくてpotato鯖がしばらく不安定になってるね
potato.2ch.netの別のスレでも弾かれたり二重投稿になったり色々起きてる
669 :
名無しさん@お腹いっぱい。
2015/12/02(水) 19:24:23.56 ID:xnnEa0MP0
すみません、他の言語で言う
str2=str1+" ";
ということをやりたい時AHKではどう表現すればいいんでしょうか?
普通に半角スペースを付けても無視されてしまうし…
670 :
名無しさん@お腹いっぱい。
2015/12/02(水) 19:27:46.96 ID:7IHLFjQJ0
AutoTrim
671 :
名無しさん@お腹いっぱい。
2015/12/02(水) 19:32:53.14 ID:kAkxFWOP0
>>671 特殊文字
A_Space 単独の半角スペースを表すのに使う。AutoTrimも参照。
A_Tab 単独のTab文字を表すのに使う。AutoTrimも参照。
672 :
名無しさん@お腹いっぱい。
2015/12/02(水) 19:41:19.25 ID:Xu/MDVyb0
= を :=
に変えると他言語と同じ感覚になる
673 :
名無しさん@お腹いっぱい。
2015/12/02(水) 20:17:33.96 ID:LJxBs+UM0
ホットキーラベルを実行するたびに変数が沢山作られて
いちいち変数をクリアしないと誤動作してしまうんですけど
何かスマートに変数の中身をクリアする方法ってありますか?
やってることが文字列分割処理+αなので変数が何個作られるかわからず
自分でVar1= Var2= と列挙しようにも全ての変数をカバーできるか自身がありません
今は仕方ないので一回ホットキーを実行するたびにスクリプトを再起動させています
素人なりに変数を使う処理を全て関数内で完結させればよいのでは?などと考えましたが
簡単な処理まで全て関数化するのもスマートでないような気がしました
何かよい方法はありませんか?
674 :
名無しさん@お腹いっぱい。
2015/12/02(水) 20:27:17.72 ID:rDayRjLz0
>>673 文字列分割時に変数が無数に作られて困ってるってこと?
配列に纏めるのはどうだろう?
675 :
名無しさん@お腹いっぱい。
2015/12/02(水) 20:32:46.78 ID:RPChhQqq0
>>673 関数にすれば?
指定しない限り、関数終了後に破棄される
676 :
名無しさん@お腹いっぱい。
2015/12/02(水) 20:33:54.19 ID:RPChhQqq0
失礼、書いてあるねw
677 :
名無しさん@お腹いっぱい。
2015/12/02(水) 21:34:18.87 ID:j0+5KAWq0
While (Var%A_Index% != "") {
Var%A_Index% =
}
スマート()
678 :
名無しさん@お腹いっぱい。
2015/12/02(水) 21:40:14.29 ID:P7BXVrRU0
把握できないほど変数使うなら関数化するべきじゃね
誤動作してしまうのは変数の使い方に問題があるようにも感じる
・使う直前に初期化する
・global変数は sub1_var1 等プレフィクス付ける
(他ルーチンで使う変数と被らないようにする)
StringSplit使ってるならLoop, Parseで随時処理できるものは置き換える
また、StringSplitの個数は末尾0変数に入るのでLoopで初期化可能
Loop,var0
var%A_index% := ""
679 :
名無しさん@お腹いっぱい。
2015/12/02(水) 22:23:39.72 ID:LJxBs+UM0
A_indexを便利な変数として使うのは思いつきませんでした……
ちょっとだけ変数を使いたい時にとっても便利ですね
まだ覚えたてなので変数の使い方がおかしいのはご指摘の通りです
変数名の規則なども踏まえて関数に切り替えていこうと思います
アドバイスありがとうございました
680 :
名無しさん@お腹いっぱい。
2015/12/03(木) 09:49:07.88 ID:89kcozzs0
タイトルバーの文字列がabcで始まるアプリケーションに対してctrlキーを無効にしたいんですが
これだと無効になりません
SetTitleMatchMode, 1
#IfWinExist ,abc
Ctrl::
Return
どこが間違ってるんでしょうか
681 :
名無しさん@お腹いっぱい。
2015/12/03(木) 11:05:18.21 ID:mHLSgMvn0
Ctrlを無効にすることとCtrl+CやCtrl+Vを無効にすることはそれぞれ別だけど、そういうことではなく?
682 :
名無しさん@お腹いっぱい。
2015/12/03(木) 12:09:41.66 ID:iqkyeOtx0
その4行だけで試してるの?既存スクリプトに追加でやってるなら
SetTitleMatchModeの前にreturnのある行ない?
Autoexecuteセクションに書かないと有効にならんよ
質問とは直接関係ないけど#IfWinExistだと
abc窓が存在する時すべての窓上でctrl無効になるよ
abc上でだけ効かせたいなら#IfWinActive
それとabcというのは例えで本当はabcじゃないんだと思うが
仮にWinTitleの指定が間違ってる場合abcからは判断できないので
アプリ名とかは変に隠さず本チャンのタイトル名で書いたほうが解決早い
683 :
680
2015/12/03(木) 12:47:20.21 ID:89kcozzs0
ctrl単独使用を無効にしたいです
この4行だけで試しています
ctrl以外の他のキーは無効に出来るのでウィンドウの指定は間違ってないと思います
このアプリケーションはウィンドウが非アクティブ時でもctrlキーには反応するので(だから無効にしたい)、そこが問題なんでしょうか
684 :
名無しさん@お腹いっぱい。
2015/12/03(木) 13:29:32.80 ID:KsqV50Cc0
だからソフト名出せっての
685 :
名無しさん@お腹いっぱい。
2015/12/03(木) 13:31:59.92 ID:O7sk50AW0
LCtrl::Return
RCtrl::Return
にしてみたらどうかな?
左右指定しないとうまく動かないケースある
686 :
680
2015/12/03(木) 21:47:39.65 ID:89kcozzs0
試しに
LCtrl::Return
の一行だけで実行してみたところ、全ソフトでctrlが無効になりCtrl+CやCtrl+Vもできなくなりましたが
該当ソフトではctrlが有効でした
グローバルフックっていうやつなんですね
助言助かりました、ありがとうございました
687 :
名無しさん@お腹いっぱい。
2015/12/04(金) 00:58:55.61 ID:ROPd7KNZ0
んーあとはSendMode変えてみるとかだなー
688 :
名無しさん@お腹いっぱい。
2015/12/04(金) 02:11:57.14 ID:ROPd7KNZ0
あ、無効化したいのにSendModeなんて関係ないかw
689 :
名無しさん@お腹いっぱい。
2015/12/04(金) 13:32:31.32 ID:GT5/T+7m0
サーバの動作状況を自分の耳へ通知する目的で、soundbeepコマンドを使ってます。
OSがxpのころから使い、サウンドカードがなくても本体から鳴るので、放置PCの状況確認で便利でした。
このたびOSをwindows10(Pro 64bit)にしたら、soundbeepコマンドでビープを鳴らすと、
10回に1回ほどの頻度で、鳴りっぱなしになって困りました。(HDMI接続のテレビのスピーカから鳴り続ける)
鳴りっぱなしの状態で、再び音を鳴らす状況が到来すると、鳴りやむ。
夜中にうるさくて何事かと思って目を覚ましたことが数回、涙をのんでsoundbeep関連のコードを無効にしました。
同じ症状の人いる?って、こんなマイナーなコマンド、使ってる人自体が少ないよなぁ。
AHKは最新版AutoHotkey112209.zip 2015-11-11 16:34 422K
にさしかえましたが、改善せず。
以下のコードを実行して、win10環境で3秒間隔で単音で鳴らせ続けてる人いたらレスお願いします。
うちの環境だと、1分以内に症状が発症します。
#Persistent
settimer,run_beep,3000
return
run_beep:
soundbeep,500,100
return
690 :
名無しさん@お腹いっぱい。
2015/12/04(金) 13:49:32.54 ID:GT5/T+7m0
>>691補足
まだ確定ではないけど、HDMIで接続して、映像と音声とを一緒に転送した場合に限って、
症状が出る気がする。オンボードのサウンドから出力した場合は、今のところ症状が出ない。
691 :
名無しさん@お腹いっぱい。
2015/12/04(金) 16:07:55.18 ID:aUn4wdnd0
モニタだけを切るコマンドって無いですかね?切ると言っても放置状態でモニタスリープするので十分なのですけど、本体はスリープさせたくないんです。
692 :
名無しさん@お腹いっぱい。
2015/12/04(金) 16:13:53.15 ID:GqcgXtHU0
powercfgコマンドでそんなのがあったような
693 :
名無しさん@お腹いっぱい。
2015/12/04(金) 16:24:59.58 ID:j/dkaqjh0
>>689 こちらでは特に異常なし
win7 x64 AHK1.1.22.09 オンボードサウンド > スピーカー (Beepスピーカーなし)
APIを直接叩いて問題が起こるならAHKの問題ではないのでは?
MBのBIOSやサウンドカードのドライバ更新してみるかSoundPlayで代用
#Persistent
settimer,run_beep,3000
return
run_beep:
DllCall("Beep", UInt, 500, UInt, 100)
; soundbeep,500,100
return
>>691 例に書いてある
http://ahkwiki.net/PostMessage SendMessage, 0x112, 0xF170, 2,, Program Manager
694 :
名無しさん@お腹いっぱい。
2015/12/04(金) 18:32:57.25 ID:Kf9g8LeK0
タスクトレイのAHKのアイコンをダブルクリックするとログウィンドウみたいなものが開きますが
これをダブルクリックしたときEdit This Scriptを実行するように変更することは可能でしょうか?
Menu, Tray, Default, Edit This Script
ではダメみたいで、根本的に記述方法が間違っているみたいですがどうしたらいいのでしょうか?
695 :
名無しさん@お腹いっぱい。
2015/12/04(金) 18:58:26.38 ID:cFiGexJB0
新しく「Edit」とかを追加してそれをデフォルトにすればできる
696 :
名無しさん@お腹いっぱい。
2015/12/04(金) 19:18:29.81 ID:Kf9g8LeK0
>>695 無事やりたいことができました
ありがとうございます!
697 :
名無しさん@お腹いっぱい。
2015/12/04(金) 22:45:10.82 ID:GT5/T+7m0
>>693 ありがとうございます。dllcallで差し替えたところ、症状が止まりました!
っと同時に、再びbeepに戻しても症状が出なくなりました・・・。あれ。
再現性が悪く、気まぐれで発症するようです。
しばらくdllcall式のままで様子見します。
698 :
名無しさん@お腹いっぱい。
2015/12/05(土) 01:13:02.77 ID:e4v3eIdT0
思いつくがまま作っていった関数を整理してます
関数の返り値についてなんですが
処理が成功した、またはなにかしらエラーがあったということを返り値で表す場合は
成功を1,失敗を0にするのが一般的でしょうか?
あと、失敗したら中断させたい場合は
If(Not 関数(引数)){
return
}
こういう書き方でいいんでしょうか?
699 :
名無しさん@お腹いっぱい。
2015/12/05(土) 02:56:51.03 ID:X21Yz5l00
整数の中で、プラスの絵数値は無数にあり、マイナスの数値も無数にある。
1つしかないものは唯一「0」なので、成功は0とするプログラムが多いみたい
プラス側の返答をしたら、成功だけどなんらかの情報をコール元に伝えたいとき、
マイナス側の返答をしたら、失敗になった原因コードを、という例が多い
ただ自分も、想定通りの結果なら1、それ以外なら0、という返答をさせる関数を
いくつも作ってしまったので、統一できていない。
統一するなら、たぶん上の法則を使うのが良いと思う。
700 :
名無しさん@お腹いっぱい。
2015/12/05(土) 02:57:40.98 ID:X21Yz5l00
絵数値→数値
701 :
名無しさん@お腹いっぱい。
2015/12/05(土) 09:06:27.07 ID:wtLNRIzm0
うちは成功時1、エラー0を基本でやってる
直接ifに突っ込んで if(関数()) とかする時に分かりやすいから
ただ完全に統一はしていない
DllCallラッピング関数の場合、boolean型だとTrue=-1なので0以外なら成功みたいになるし
呼び元でカウントアップ/ダウンしてる場合はエラーは-1の方が都合がいい時もあるし
返してほしい値が2択ではない時もある、関数名がIsError系の時は失敗が1、等
個人的に重要なのははっきり明示してあることだと思ってるので
コメントの関数説明にはパラメータと戻り値の説明は必ず入れてる
702 :
名無しさん@お腹いっぱい。
2015/12/05(土) 12:18:09.16 ID:aCszAquM0
1つ質問です。モニタの光度設定を変えたいんですけどAHKで出来ますか?
夕暮れの時間が来たらまぶしすぎるのを暗くしたいんです
時間設定はわかったんですけど光度の変更がわからなくて困ってます
703 :
名無しさん@お腹いっぱい。
2015/12/05(土) 13:54:17.01 ID:adO/aXt90
>>702 DimMonitorってのがあるから参考にしてみては
704 :
名無しさん@お腹いっぱい。
2015/12/06(日) 20:07:39.17 ID:C+hgSVsJ0
皆さん、スクリプトのバージョン管理ってどうやってますか?
自分のコードが汚すぎて後々改造しようとした時に1から解読してる状態で鬱になりそう
なんかバージョン管理システムとか導入してますか?
705 :
名無しさん@お腹いっぱい。
2015/12/06(日) 20:19:30.15 ID:dWj1hdAu0
特にしてないけど、数年経ってからスクリプトの修正が必要になったときのためにコメントを結構書いてる。
修正した部分はその部分に修正理由を書いているし、修正前のも残している(コメントアウト)。
不必要になった部分も場合によっては削除するのではなくコメントアウトしてその理由を書いていたりする。
後から見ると邪魔だと感じる時もあるけど、これらが結構役に立つ。
それでも根幹部分の方が影響している場合は解読が必要になるけど。
706 :
名無しさん@お腹いっぱい。
2015/12/06(日) 20:24:40.52 ID:dWj1hdAu0
あと、なんでこういう動作(アルゴリズム)にしたのかとか
「コンテキストメニューが表示される位置の取得」といった細かいことまで
書いてることがあるけど後から見るときに分かりやすい。
ここまでする必要はないと思うけどね。
707 :
名無しさん@お腹いっぱい。
2015/12/06(日) 21:25:28.79 ID:sWxa+3PZ0
コメントは大事
後で見て何やってるか分かんなくなりそうな箇所には念入りに説明入れる
更新内容はスクリプト先頭と実際の修正・追加行に日付とともに入れる
バックアップも当然取るけどdiffツールで比較確認作業は結構めんどい
後で苦労したくなかったらコメントの手間は惜しんじゃいかん
708 :
名無しさん@お腹いっぱい。
2015/12/06(日) 21:59:30.14 ID:GNcLFBqM0
;よく分からないが動くからおk
709 :
名無しさん@お腹いっぱい。
2015/12/06(日) 22:05:28.37 ID:BcbUNxyk0
あるある
710 :
名無しさん@お腹いっぱい。
2015/12/06(日) 22:15:05.34 ID:c3lS5I4k0
10 試行錯誤の末やっと現在の記述に至る
20 そのことをすっかり忘れて後日「あれ?ここもっと簡単に書けるんじゃね?」
30 見事に不具合発生、ようやく当初の理由を思い出す
40 復元
50 goto 20
711 :
名無しさん@お腹いっぱい。
2015/12/06(日) 23:00:07.98 ID:CcRpKoIa0
>>710 これもよくあるなぁ
あと簡潔に書き直したら他の記述で不具合が発生して、そこも書き直したらまた他の記述で不具合…とか
まぁ汚いまま放置よりは結果的にはいいけど
712 :
名無しさん@お腹いっぱい。
2015/12/06(日) 23:21:41.81 ID:CcRpKoIa0
デバッグが中々終わらなくて試行錯誤した挙句、実は前から思ったように動作してなかったことに初めて気づいて、全然関係ないと思ってた箇所に問題があったことも何度か
713 :
名無しさん@お腹いっぱい。
2015/12/07(月) 00:30:19.96 ID:N10HdXR40
コードよりコメントのほうが多くなる勢いで備忘録書いておきたい不安要素のあるスクリプトだと
なにかあったら結局ゼロから書き直したほうが速かったりするのも歴史が証明する事実
「不安要素」というのはその時使った/考えたコードやロジック自体のあやふやさももちろんだが
使用状況(たとえば頻度とか)的な意味も含めての要素
超私的なスクリプトをgitみたいなのに投げて管理するのもまた楽しいものだけどね
714 :
名無しさん@お腹いっぱい。
2015/12/07(月) 00:48:17.97 ID:F2EMxnvt0
WinGetClass, AcClass, A
if (AcClass = "Progman" or AcClass = "Shell_TrayWnd" or AcClass = "Button")
これと同じことをWinGetClassを使わずにIfWinActiveの一行で記述することは可能でしょうか?
or を使って複数を指定する方法がよく分かりません
あてずっぽうで
IfWinActive, ("ahk_class Progman" or "ahk_class Shell_TrayWnd" or "ahk_class Button")
と書いてもダメでした
初歩的な質問で申し訳ないですがご教授ください
715 :
名無しさん@お腹いっぱい。
2015/12/07(月) 00:50:21.60 ID:6KpGd2Yy0
コメントはもちろんだけど、メンテナンス性あげるなら関数化とラベル化を徹底することかなと思う
716 :
名無しさん@お腹いっぱい。
2015/12/07(月) 01:13:09.70 ID:UVYut7XH0
>>714 #If, WinActive("ahk_class Program") or WinActive("ahk_class Shell_TrayWnd") or WinActive("ahk_class Button")
こういう事?
717 :
名無しさん@お腹いっぱい。
2015/12/07(月) 01:27:15.13 ID:F2EMxnvt0
>>716 すみません端折ってたので全て書きますね
F18:: ;F18=多ボタンマウスのサイドボタン
WinGetClass, AcClass, A
if (AcClass = "Progman" or AcClass = "Shell_TrayWnd" or AcClass = "Button")
{
Return
}
Send, ^n
Return
F18(多ボタンマウスのサイドボタン)を押したときデスクトップとタスクバーとスタートボタン以外が
アクティブの場合にCtrl+Nを入力するようにしています。
#If, WinActive("ahk_class Program") or WinActive("ahk_class Shell_TrayWnd") or WinActive("ahk_class Button")
だと他のウィンドウがアクティブでも機能せず、#を消したらエラーが出てしまいました
718 :
名無しさん@お腹いっぱい。
2015/12/07(月) 01:42:04.78 ID:H76WV4Wm0
SetTitleMatchMode ,RegEx
IfWinActive, ahk_class Program|Shell_TrayWnd|Button
もしくは
If (WinActive("ahk_class Program") or WinActive("ahk_class Shell_TrayWnd") or WinActive("ahk_class Button"))
719 :
名無しさん@お腹いっぱい。
2015/12/07(月) 01:49:42.28 ID:F2EMxnvt0
>>718 レスありがとうございます
残念ながらそれだとデスクトップがアクティブでもCtrl+Nが送信されてしまいました
うーん、難しい・・・
720 :
名無しさん@お腹いっぱい。
2015/12/07(月) 02:01:14.82 ID:H76WV4Wm0
>716からコピペしたらtypoしてたわ
×Program
○Progman
721 :
名無しさん@お腹いっぱい。
2015/12/07(月) 02:07:47.81 ID:F2EMxnvt0
>>720 ああスミマセン、私も見落としてました
仰るとおりにしたら無事できました
勉強になりました、本当にありがとうございます
722 :
名無しさん@お腹いっぱい。
2015/12/07(月) 04:54:37.56 ID:L5cVMmx60
いいコーディングを気にし始めたらこれ読むといいかもよ。初版はWebで読める。
Cプログラミング診断室
http://www.pro.or.jp/~fuji/mybooks/cdiag/index.html
C言語知らんとわからん部分もあると思うけど、コーディングの考え方なんて基本は共通だから役に立つはず。
723 :
名無しさん@お腹いっぱい。
2015/12/07(月) 12:28:42.24 ID:Et6pEWLp0
どなたか助けてください
XButton1 & WheelDown::
Send,{Volume_Down 1}
SoundGet, GetVol, MASTER, VOLUME
Vol:=Round(GetVol)
ToolTip, 音量:%Vol%
Return
マウスのサイドボタンを押しながらホイール上下で音量調節して、音量値をToolTipで表示するスクリプトですが
(便宜上Downのみ記載)ここまではいいのですが、このままだとずっとToolTip表示が残ってしまうので
サイドボタンを離したときにToolTipが消えるようにしたいのですが、どうにも上手く行きません
XButton1 & WheelDown::
Send,{Volume_Down 1}
SoundGet, GetVol, MASTER, VOLUME
Vol:=Round(GetVol)
ToolTip, 音量:%Vol%
KeyWait, XButton1
ToolTip,
Return
これだとサイドを離したときにToolTipは消えますが、サイドを押しっぱなしでホイール廻し続けても
連続して音量操作が出来なくなってしまいます
何か良い方法は無いでしょうか?
724 :
名無しさん@お腹いっぱい。
2015/12/07(月) 12:57:42.31 ID:LRBO3R+Q0
SetTimerはどう?
XButton1 & WheelDown::
Send,{Volume_Down 1}
SoundGet, GetVol, MASTER, VOLUME
Vol:=Round(GetVol)
ToolTip, 音量:%Vol%
SetTimer, CloseTip, -1000 ;一秒後に一度だけラベルを実行
return
CloseTip:
ToolTip
return
なおSleepでも出来なくはないが、
Sleepは指定時間中同スレッドの再実行を受け付けないのでお勧めしない
725 :
名無しさん@お腹いっぱい。
2015/12/07(月) 13:13:07.40 ID:H76WV4Wm0
~XButton1 up:: ToolTip,
726 :
名無しさん@お腹いっぱい。
2015/12/07(月) 13:25:40.15 ID:Et6pEWLp0
>>724 なるほど、「サイドを離したら消える」とは違いますが、これはこれで良い感じですね
ありがとうございます
>>725 それも試しましたがそれだと音量調整してサイドボタンを離したときにはToolTip消えず、
もう一度サイドボタンだけ押した時にToolTipが消えるので意図した動作になりませんでした
727 :
名無しさん@お腹いっぱい。
2015/12/07(月) 13:36:48.97 ID:vki0V7sB0
XB1離したときに消えるにこだわるならタイマーでgetkeystateすればいい
728 :
名無しさん@お腹いっぱい。
2015/12/07(月) 14:09:30.72 ID:H76WV4Wm0
>>726 XButton1 upだとその動作だけど~付けたら2度押し時以外でも消えたよ
win8.1x64 AHK_L 1.1.22.06
729 :
名無しさん@お腹いっぱい。
2015/12/08(火) 02:50:21.48 ID:gV9WkKR10
GUIのエディットボックスに表示するテキストのうち一部の色だけを変えたいんですがどうすればいいんでしょう?
GUI,Colorでテキストの色を変える所まではできたんですが、一部だけ色を変えるにはどういう処理を行えばいいかわかりません・・
730 :
名無しさん@お腹いっぱい。
2015/12/08(火) 14:26:25.83 ID:6tCcbcfq0
win7 64で、ahkからsoftalkをrunして数値(変数の中身)を喋らせてるんだけどsoftalkが不規則にエラーを吐いて不正終了することが非常に多いのがちょっと不便。
原因と対策が分かる人なんて通りがからないかなぁ…
731 :
名無しさん@お腹いっぱい。
2015/12/08(火) 16:10:05.56 ID:uMc8NsSB0
>>729 テキストを分割して個別に指定
Gui,Color 背景色
Gui,Font 文字色
>>730 エスパースレではないので最低限スクリプトを書こう、話はそれから
732 :
名無しさん@お腹いっぱい。
2015/12/08(火) 17:13:57.28 ID:f7u0qI6W0
動いたり動かなかったりするならsoftalkが悪い
733 :
名無しさん@お腹いっぱい。
2015/12/08(火) 17:26:51.48 ID:4c8Nbow/0
>>730と同じことをxpとwin7-32bitで何年も前にやってたけど、同じだったな。
引数に、しゃべらせたい文字列を入れてrunするだけの簡単なコード。
softalk.exeの消費メモリ量が、しゃべらせるたびにちょっとずつ増えていき(1回の実行で4MB増えた記憶が)、
たしか800MBを超えたあたりでプログラムが不正終了した。
引数に文字列を送ってしゃべらせる使い方は、マニュアルに掲載されてる方法なので正規の方法だし、
こんなことはだれもやってないし、わかってる人はapiやdllを叩いて起動してるだろうから、
調べても事例がないから困ったな、というところで使うのをやめた。まさかの同じことをやってる人登場でワロタ
softalk.exeをしゃべらせたあとにprocess,closeで終了させると、そのたびクリーンになるからメモリリークはなくなるが、
しゃべらせるたびに最前面で起動してきてフォーカスを奪われて目障りなので、これは不採用で終わった。
そもそも、しゃべらせるたびに4MBを無駄食いするから、PCの使用に影響が出るし、
softalkが、なんらかの問題を抱えていたのだと思う。
734 :
名無しさん@お腹いっぱい。
2015/12/08(火) 17:28:33.18 ID:mVXJXXOx0
wのほう使えばいいじゃん
735 :
名無しさん@お腹いっぱい。
2015/12/08(火) 17:44:13.99 ID:4c8Nbow/0
過去に作ったコードを調べたら、苦労の跡があった。
;改行や`rが含まれていると、softalkがアプリエラーで死ぬので、ここで削除する。
stringreplace,str,str,>,,ALL
stringreplace,str,str,|,,ALL
stringreplace,str,str,`r,,ALL
stringreplace,str,str,`n,,ALL
このあと、しゃべらせたい日本語を入れた変数「str」を引数にして、runさせる流れ。
4MBのメモリリークと闘いながらであれば、使うことができる。
dll呼び出し法は、このスレで話題になったことがあった。
しかし、漢字まじりの日本語を直接投げても、解釈できないデメリットがあった。
ひらがなonlyの原稿しかしゃべらせることができない。これでは実用的に使えず、これも断念。
以下の断片コードでネット検索すると、たぶん出てくると思う
;DLLよびだし法 AHKスレにて。ひらがなしか解釈できない
; phrase: 喋る内容(音声記号列という名の文字列)
; speed:速さ(遅50〜300速)
; sync:喋り終わるまで待つかどうか(真偽値)
dll_file=AquesTalk2Da.dll
hModule := DllCall("LoadLibrary", "Str", dll_file, "Unit")
hMe := DllCall(dll_file . "\AquesTalk2Da_Create", "Unit") ; 合成エンジン作成
softalkを調べたら新しいバージョンが出ているので、いまならメモリリークは改善されてるかもしれない。
http://www35.atwiki.jp/softalk/pages/15.html 736 :
名無しさん@お腹いっぱい。
2015/12/08(火) 18:18:46.53 ID:6tCcbcfq0
>>733 ありがとうございます。同じですね。
そもそもsoftalkに発声終了後自動的にプロセスを閉じるというオプションがあったらいいんですが、要望出してみようかしら
しかし、おかげで適当に関係ない機会に(しゃべってないであろうタイミングで)softalk.exeをcloseさせるという案を思いつきました。色々やってみます。
ありがとうございます。
この問題さえ起こらなければsoftalkはahkとの相性がいいと思います
ループの進捗具合を喋らせたりすると、時間の無駄なく、部屋の掃除や洗い物ができたりして便利
737 :
名無しさん@お腹いっぱい。
2015/12/08(火) 20:01:05.69 ID:YwlzoF2L0
738 :
名無しさん@お腹いっぱい。
2015/12/08(火) 20:03:10.83 ID:7HiR8DY/0
適当に用意した音声ファイルをSoundPlayでおk
739 :
名無しさん@お腹いっぱい。
2015/12/08(火) 20:52:38.02 ID:4c8Nbow/0
最新版20140913版をダウンロードして、数年ぶりに使ってみた。
http://www.vector.co.jp/soft/winnt/art/se412443.html こちらのPCはWin10-64bitで、結果としては、改善してないっぽい。tasklistで確認すると、
SofTalk.exe 6904 Console 1 51,776 K
↓1回しゃべらせた
SofTalk.exe 6904 Console 1 52,740 K
やっぱり。1MB増えてる。
1つ発見があり、2012頃までのは、runのときにhideオプションを付けると、しゃべってくれなかった。
いまの版は、hideでもしゃべってくれる。裏で適当なタイミング、100回に1回とかでkillすれば、
メモリを際限なく使う事態は避けられる。hideで起動すれば、UIのフォーカスを奪われることもない。
>>738 しゃべらせたい目的を持ってる人は、録音済み定型句だけでは
達成できないことを、やろうとしてるんじゃないかと
俺の場合は、緊急地震速報が発令される3秒ほど前に、P2P地震速報で、
揺れを感じた人の一番多い地域名と、報告者の人数を、素早くしゃべらせる目的だった。
揺れを感じた人の画面表示をAHKで定期的に抜き取って、整形して、しゃべらせてた。
画面を見なくても、どこで地震が起きたか、わかった。
初回からいきなり報告者の人数が多い=でかい地震なので、地域名とセットで目安に。
目的は達成できたけど、softalkがどれくらいメモリを食いつぶしてるかを
定期的に確認する必要があった。強制終了ダイアログが出ているときは、
それを閉じないと、以降しゃべってくれないのが困りごとだった。
強制終了ダイアログを自動で閉じるコードは、さすがに作らなかったw・・・はずだが、
エラー時の挙動が何種類もあって対応できず、あきらめたんだった。
740 :
名無しさん@お腹いっぱい。
2015/12/08(火) 20:56:38.04 ID:2V5WQIpD0
741 :
名無しさん@お腹いっぱい。
2015/12/08(火) 20:58:16.13 ID:mVXJXXOx0
だからしゃべらせて終わらせたいならwを使えっての
AHK側の問題どこにもないスレ汚ししつこい
742 :
名無しさん@お腹いっぱい。
2015/12/08(火) 21:00:02.17 ID:mVXJXXOx0
softalkが延々メモリ増えていくなんて挙動もしねえよ
するならおま環
743 :
名無しさん@お腹いっぱい。
2015/12/08(火) 21:00:29.23 ID:4c8Nbow/0
>>737 これすごいね。劇的に改善した。
SofTalk.exe 6904 Console 1 52,740 K
↓eMem実行
SofTalk.exe 6904 Console 1 488 K
↓1回発声
SofTalk.exe 6904 Console 1 14,592 K
↓eMem実行
SofTalk.exe 6904 Console 1 488 K
これは、javaでいうところのガベコレを、手動で実行させるような動作なのかな。
これを毎回実行すると、たしかに何も困ることがなくなるね。定期killも不要だ。
settimerで1時間ごとに実行することにします。いいツールを教えてくれてありがとう。
744 :
名無しさん@お腹いっぱい。
2015/12/08(火) 21:08:40.32 ID:6tCcbcfq0
>>737 ありがとうございます、
便利そうなのでいま早速使ってみてます
他にもこういうAHKと組み合わせるお勧めソフトがあったら知りたいですねえ
スレのテンプレに入れていきたいです
>>739 検証ありがとうございます
そうなんですよね
softalkはその場でどんな文字列(漢字かな交じり英語交じり数値混じり)でも読み上げてくれるので
むしろ変動する情報を読み上げさせるのに使ってます
数値も例えば740を「ななよんぜろ」じゃなくて「ななひゃくよんじゅう」と読んでくれるのでパソコン見てなくても色々分かるので良いです
単に固定の効果音として使うだけでも、効果音ファイルを先に用意しなくていいだけでも便利。
どうせならMMLで音楽鳴らせれば…と思うことも
強制終了ダイアログが出ているときは、それを閉じないと、以降しゃべってくれないのが不便なのも同じでした
ただ僕が使い始めた時点でAHKもsoftalkも739さんのより新しかったせいか強制終了ダイアログを自動で閉じるコードは作れてましたが
ダイアログが出たり消えたりする関係でフォーカスを制御下においてなきゃいけない処理にそれらに割り込まれてしまい
そこから動作が崩れてしまう現象が時々起こっていたのでsoftalkの方を諦めるという結果になってましたね
745 :
名無しさん@お腹いっぱい。
2015/12/08(火) 21:15:22.88 ID:zMjXC85r0
この自演は何が目的なの?
746 :
名無しさん@お腹いっぱい。
2015/12/08(火) 21:25:26.88 ID:R5flJKrF0
>スレのテンプレに入れていきたいです
知らんがな
747 :
名無しさん@お腹いっぱい。
2015/12/08(火) 21:43:57.17 ID:Z8WK/ioy0
ほんとに
>>734で済む話で笑った
地震速報のくだりとか嘘です♪のコピペに通ずるものがあってほほえま
748 :
名無しさん@お腹いっぱい。
2015/12/08(火) 21:59:57.16 ID:2cO/+tuV0
eMemの有用性はsoftalkに限った話じゃないんだな
>常駐のAHKスクリプトを使っている場合もAutoHotkey.exeのメモリ使用量がどんどん増えるので
メモリ開放するとAutoHotkey.exeのメモリ使用量200KB程度になる
長時間PCを使ってると差がでかい
749 :
名無しさん@お腹いっぱい。
2015/12/08(火) 21:59:53.86 ID:cJLcnHUK0
便利ツールの紹介は別に構わんが
>常駐のAHKスクリプトを使っている場合もAutoHotkey.exeのメモリ使用量がどんどん増えるので
これはスプリクトを見直すべき
他所のexeの干渉できないメモリリークなら外部ツールに頼るのも手だが
自分が書いたコードでその解決法はどうかと思う
メモリ使用量がどんどん増えるようスプリクトは放置するべきじゃない
750 :
名無しさん@お腹いっぱい。
2015/12/08(火) 22:10:24.93 ID:xqYFnFMP0
メモリ開放ならなんかサンプルスクリプトあったろ
751 :
名無しさん@お腹いっぱい。
2015/12/08(火) 23:08:51.10 ID:cJLcnHUK0
752 :
名無しさん@お腹いっぱい。
2015/12/08(火) 23:10:57.67 ID:ucw+1LdV0
AqKanji2Koeも「ヌ」になる制限付きなのか
どっかにAqKanji2Koe.dllが同梱されてるソフト落ちてないかな…
753 :
名無しさん@お腹いっぱい。
2015/12/08(火) 23:56:48.77 ID:h2bhxtOq0
複数のウインドウ(同じソフトの)を画面に均等に並べるというahkのスクリプトを使っているのですが、
2つのウインドウの場合、画面の上下、横長のを上にひとつ下にひとつといった風に配置してくれます。
これを左右、左半分にひとつ、右半分にひとつというふうに、スクリプトをいじって変化できませんか?
教えて下さい。
スクリプトはこちらです。
http://textuploader.com/5uqjv よろしくお願いします。
754 :
名無しさん@お腹いっぱい。
2015/12/09(水) 00:35:51.66 ID:rpCi2Onq0
3年前のログのと同じ子なんだろうか・・・
755 :
名無しさん@お腹いっぱい。
2015/12/09(水) 00:49:29.45 ID:zhy4pVd00
できる
w、h、x、y それぞれの変数の値を希望のサイズと位置になるように弄ってやればいい
なおこのスレはクレクレ禁止だから具体的な答えは聞くな
考え方のヒントと答え合わせなら聞きに来ておk
じゃあな、がんばれよ
756 :
名無しさん@お腹いっぱい。
2015/12/09(水) 01:02:15.57 ID:L5v6rpCx0
たぶん同じ子です。僕の脳みそじゃわかりっこないです。どうしたらいいのかほんとにわかりません。
たすけてください
757 :
名無しさん@お腹いっぱい。
2015/12/09(水) 01:23:23.28 ID:FoczIvyt0
3年の間に少し調べれば自分で何とか出来るだろ…
758 :
名無しさん@お腹いっぱい。
2015/12/09(水) 01:23:53.02 ID:L5v6rpCx0
できました。左右二分割できました。ありがとうございました。
備忘録。以下のように変更しました。
w := (mRight - mLeft) / 2
h := (id > 2) ? (mBottom - mTop) / 2 : mBottom - mTop
x := (Mod(a_index, 2) == 1) ? mLeft : mLeft + w
y := (a_index <= 2) ? mTop : mTop + h
また次、助けてください。\(^o^)/
759 :
名無しさん@お腹いっぱい。
2015/12/09(水) 02:51:03.04 ID:pXjTI0K/0
関数内にいくつか条件をかいておいてその条件に合致した場合そのままreturnさせたいんですがどうにも動きません。
こんな感じに、例えばF1キーを押して、特定のウィンドウタイトルをもったウィンドウがあった場合に(実際に使う場合はもっと複雑な条件を作りますが)
そのまま終了させたいんですがreturnをすり抜けてsend,{F1}まで実行されてしまいます 記述が間違っているんでしょうか?
Function()
{
ifwinexist,AAA
return
}
F1::
Function()
send,{F1}
return
760 :
名無しさん@お腹いっぱい。
2015/12/09(水) 03:40:29.28 ID:xiu/lHa30
その記述だと、そうなるわな。
俺ならこうする
Function()
{
なんたらかんたら処理
return
}
F1::
ifwinexist,AAA
{
Function()
}
else
{
send,{F1}
}
return
761 :
名無しさん@お腹いっぱい。
2015/12/09(水) 03:44:56.92 ID:IxTWXF+s0
>>759 関数はGosubのような物(サブルーチン)
関数内でreturnはサブルーチンから元スレッドに戻る+返り値を設定できる
スレッド、サブルーチンを止めたいならExit
762 :
名無しさん@お腹いっぱい。
2015/12/09(水) 03:49:04.97 ID:xiu/lHa30
>>759の実装を無理にでもやりたければ、exitをつかえば可能。
ただ、そうすると、F1を押したのに、send,{F1}が実行されないパターンが出てくる。
そのシーンがどのような条件で出るかを、functionの内容を見ないと判断できないという、
非常に見通しの悪いコードとなるため、おすすめできない。
数日後に自分が見直しても、訳が分からないコードになる。
763 :
名無しさん@お腹いっぱい。
2015/12/09(水) 03:52:05.44 ID:WsTqYkaV0
returnの仕様をよく読んで
http://ahkwiki.net/Return 関数でのreturnは、値を返すために使うのであって、スレッドを終了するためにあるのではないよ
だからあなたの例では、
Functionを呼び出し、AAAが存在したら(returnの引数を指定してないので)「無」を返し、
呼び出し元に復帰する
ということになる
764 :
名無しさん@お腹いっぱい。
2015/12/09(水) 04:08:22.42 ID:pXjTI0K/0
どうもです 関数内のreturnは値を返すだけなんですね
exitも試してみましたが関数が実行されたところで処理が終わってしまうことがありました
同じアプリ内にいくつかフローティングウィンドウが存在していてそれぞれのウィンドウに個別の名前があるんですが、
WinGetTitleでタイトルを取得して、特定のウィンドウタイトルの場合には処理を止める、という條件を作り
何回も使いまわそうとしたんですが駄目みたいですね
765 :
名無しさん@お腹いっぱい。
2015/12/09(水) 04:20:30.74 ID:xiu/lHa30
えっ関数を呼んで、呼んだ先でそのまま終了させたいんじゃないの?
>exitも試してみましたが関数が実行されたところで処理が終わってしまうことがありました
これそのものじゃんw
いったいどんな動作を想定してるのか、わけがわからないから、
どっかにコードをさらすしかないね
まあ、ダメみたいですねってあきらめてるような気力じゃアレだろうけど
766 :
名無しさん@お腹いっぱい。
2015/12/09(水) 05:27:25.28 ID:pXjTI0K/0
>>765 exitで問題なかったです 自分が書いているスクリプトの別の処理で問題が発生していてちょっと勘違いしていました
767 :
名無しさん@お腹いっぱい。
2015/12/09(水) 09:31:46.48 ID:3EEToTqK0
F1::
if !winexist("AAA")
send,{F1}
return
768 :
名無しさん@お腹いっぱい。
2015/12/09(水) 09:55:01.94 ID:zhy4pVd00
>関数内のreturnは値を返すだけ
こういう言い方されると根本的なこと分かってなさそうで不安になるな
returnてのは今いる所を抜けて呼び出し元に復帰するコマンド
戻り値の有無はあるがホットキーサブルーチン関数間でReturnの機能が変わるわけじゃない
関数内で使えば関数を抜けて上位に戻るし
ホットキー内で使うと戻る上位が存在しないからExitと同様の動作になるだけ
関数内での一足飛びExitはあまりお薦めしない
やるなら関数内で丸ごと完結させる
Function()
{
ifwinexist,AAA ; Abort
return
;正常時の処理
send,{F1}
}
もしくは戻り値で返して上位で判断させる
Function()
{
ifwinexist,AAA
return 0
return 1
}
F1::
if (Function())
Send,{F1}
rerutn
769 :
名無しさん@お腹いっぱい。
2015/12/09(水) 11:17:27.62 ID:w2eh4Hyh0
768の後者が理想だけどAHKだと1行に命令詰め込めないからソースが冗長で分かり難くなるのが嫌なんだよなぁ
Function() の関数名を ifHogehogeExit() とか exit_ifhogehoge() みたいにexitという文言を入れて
exitコマンドの一種みたいに見えるようにして
呼び出し部分を見ただけでこれ呼んだらexitする可能性があるって連想できるようにするのはどうだ
770 :
752
2015/12/09(水) 13:39:44.18 ID:3KvCTtD60
771 :
名無しさん@お腹いっぱい。
2015/12/09(水) 19:25:05.49 ID:w2eh4Hyh0
softalk使いの人たちでthunderbirdの新着メール通知をうまく捉えて差出人とか件名を読み上げさせてる人っている?
772 :
名無しさん@お腹いっぱい。
2015/12/09(水) 21:06:45.54 ID:3KvCTtD60
773 :
名無しさん@お腹いっぱい。
2015/12/12(土) 19:17:10.41 ID:IDIpVmHE0
#Persistent の使い方がいまいちわかっていないのですが、
#Persistent
OnClipboardChange:
If Clipboard contains XXX
{
soundbeep
}
Return
これでクリップボードの内容を監視したいのですがこれはahkスクリプトのどこに書いたらいいでしょうか?
auto-executeセクションでしょうか?
それと#persistenの有効範囲がわからないのですが、 #Persistent の下に2つラベルが書いてあった場合2つとも#Persistent扱いになるんでしょうか?
774 :
名無しさん@お腹いっぱい。
2015/12/12(土) 20:02:24.75 ID:H5sDxpe00
>>773 「その」スクリプト全体の設定
ひとつのA.ahkにいろいろ書いてもひとつのスクリプトとして起動する
同時にB.ahkを起動させても別のスクリプトなので影響しない
775 :
名無しさん@お腹いっぱい。
2015/12/12(土) 20:04:28.45 ID:A5BCtuog0
>>773 1個書けば、スクリプト全体に効能が出る。
そのクリップボードを監視する用途なら、なにも関係ないところに書くとよい。
autoexecセクションに書かなくても、onなんたら系の処理は、状態変化時に勝手に呼び出される。
autoexecセクションに書くと、クリップボードに変化があってもなくても、
起動時に必ずクリップボード関連の処理がされてしまう。それでもよければいいけど。
776 :
名無しさん@お腹いっぱい。
2015/12/12(土) 20:21:37.39 ID:dZAzDUCW0
>>775 OnClipboardChangeはどこに書こうが起動時には必ず1回実行される
777 :
名無しさん@お腹いっぱい。
2015/12/12(土) 21:16:29.04 ID:IDIpVmHE0
778 :
名無しさん@お腹いっぱい。
2015/12/12(土) 21:25:46.60 ID:hBhR0/Mz0
>>777 #Persistent ホットキーを含まないスクリプトを常駐状態にする。
同じスクリプト内にホットキーの記述があるなら#Persistentはつける必要無いよ
>>773だけのスクリプトを常駐させるためには#Persistentが必要
779 :
名無しさん@お腹いっぱい。
2015/12/12(土) 21:53:01.19 ID:IDIpVmHE0
>>778 なるほど persistentの使い方わかりました どうもでした
780 :
名無しさん@お腹いっぱい。
2015/12/14(月) 03:08:40.33 ID:nFhcNQi50
もの凄くFAQかもしれませんが、質問させてください。ド初心者です。
1024x768のフルスクリーンゲーム(DirectX 8.1世代)・・・まあ三国志\なんですが、
これ、画面のスクロールがマウスを画面端に持っていった時限定の仕様で、キーボードでスクロールできません。
そのため、カーソルキーを押すとマウスを端まで持っていき、離すと元の位置に戻すスクリプトを書いたのですが、
件のゲームでは動作しません。他のウィンドウアプリ上では期待通りの動作をします。
DirectX/フルスクリーンと言う環境で何か特種な手法が必要なのであれば、是非ご教授頂きたく思います。
コードは以下の感じ。
----
up::
{
MouseGetPos, x, y, hwnd, ctrl, 2
if % global orgY = 65535
global orgY = y
MouseMove, x, global minY
}
exit
up Up::
{
MouseGetPos, x, y, hwnd, ctrl, 2
MouseMove, x, global orgY
global orgY = 65535
}
exit
----
「上」以外は割愛しますが処理は同じものです。また・・・やむを得ず空値に65535を使用していますが、
いわゆる「NULL」やブールがありますと、もうちょっと見られるコードになりそうです。こちらについてもお教え頂けますと幸いです。
781 :
名無しさん@お腹いっぱい。
2015/12/14(月) 04:22:26.67 ID:4BNyng1I0
sendモードを変えてみたり
キーダウンからキーアップまでの時間を100msくらいにしたり
(Setkeydelay で変更または Sleepを入れる)
ゲームがアクティブになったときにスクリプトを1回だけリロードさせるようにしたりしてみては?
ゲームによってはアクティブになる度にキーフックを再実行する仕様のものがある。
スクリプトをリロードさせる理由は後からキーフックしたほうが優先されるから。
782 :
名無しさん@お腹いっぱい。
2015/12/14(月) 05:24:35.59 ID:nFhcNQi50
貴重なご教示、ありがとうございます。
申し遅れましたが、くだんのゲームはwin7/64bit上で互換モードをXP-SP2で動作しており、
AHKスクリプトもexeにコンパイルして互換モードをXP-SP2にしないと、何から何まで反応しません。
これは恐らく、古いゲームで使おうとすると高確率で発生する問題なのでしょうね。
お教え頂いた部分を各所チェックし、何とか動作するように、試してみます。
ド素人で暗中模索の中、道筋が見えた気持ちです。
783 :
名無しさん@そうだ選挙に行こう
2015/12/14(月) 13:26:45.85 ID:E5OTPNps0
down::
WinGetPos,,, W,H, A
MouseGetPos, MX,MY
MouseMove, MX,H-20
KeyWait,down
MouseMove, MX,MY
Return
784 :
名無しさん@お腹いっぱい。
2015/12/16(水) 12:27:36.29 ID:3IBpb/0l0
TrackWheelをWindows10で使っているのでsが、
スタートメニューで表示される画面のスクロールができません。
ウィンドウクラスを取得しようとしてもやり方がわかりません。
どうすれば使えるようになるのか?
ウィンドウクラスがわかる方がいましたら教えてください。
よろしくおねがいします。
785 :
名無しさん@お腹いっぱい。
2015/12/16(水) 12:34:50.63 ID:9ElyxVzz0
786 :
名無しさん@お腹いっぱい。
2015/12/16(水) 18:12:38.10 ID:3IBpb/0l0
>>785 ありがとうございます。
Windows.UI.Core.CoreWindow
を取得できたのですが、TrackWheelで設定しても動きませんでした…
787 :
名無しさん@お腹いっぱい。
2015/12/16(水) 21:05:29.48 ID:sj6oZhSX0
TrackWheelでスタートメニューやストアアプリをコントロールできないんじゃないの?
788 :
名無しさん@お腹いっぱい。
2015/12/24(木) 02:48:24.05 ID:WD+nKZrO0
Win7 から Win10 にアップデートしたら不具合発生。
#InstallKeybdHook
#UseHook
NumpadLeft::Send,{LButton}
NumpadRight::Send,{RButton}
これがライブサムネイルの上で効きません。
(タスクバーの起動中アプリにマウスオーバーした時にポップアップするやつ)
いろいろ試行錯誤したり、キーヒストリを見たのですが、
異なる症状が何種類か発生して原因がサッパリ分かりません。
・全く無反応
・ライブサムネイルが消えるだけ(NumpadLeftやNumpadRightが送られている?)
・Sendしたイベントがライブサムネイルを突き抜けて、裏側のウィンドウに送られてしまう。
みなさんの環境では発生しますか?
対策はありますでしょうか?
AHK v1.1.22.09 / Win10 Home 64bit
789 :
名無しさん@お腹いっぱい。
2015/12/24(木) 11:43:02.98 ID:he+R2SR80
AHKは何bit版?
790 :
名無しさん@お腹いっぱい。
2015/12/24(木) 13:28:08.82 ID:WD+nKZrO0
64bit Unicode版です。
791 :
名無しさん@お腹いっぱい。
2015/12/26(土) 19:11:47.17 ID:OwMYHtHR0
792 :
名無しさん@お腹いっぱい。
2015/12/26(土) 19:25:10.61 ID:GmJLr0Gr0
>>791 スクロールが一定時間内に連続したらフラグ立てて
#Ifで判定すればいい
後は自分で書こう
793 :
名無しさん@お腹いっぱい。
2015/12/26(土) 20:23:52.23 ID:pzNno/iH0
スレ元みたが勝手ドライバ作った人はもちろん
ほかのスレ住人も結構テクニカルな話しててスキル高いな
あそこから飛んできてクレクレするようなアホは去ね
794 :
名無しさん@お腹いっぱい。
2015/12/26(土) 21:53:39.20 ID:gXeP9zqF0
そろそろマルチタッチも対応していって欲しい
中の人の態度は頑なな印象を受けるけど
795 :
791
2015/12/26(土) 22:40:44.41 ID:OwMYHtHR0
KeyWait,WheelUp
MButton::return
return
KeyWait,WheelDown
MButton::return
return
でダメでした。わからない。。。難しい
796 :
名無しさん@お腹いっぱい。
2015/12/27(日) 18:30:33.90 ID:LBOx4LyJ0
>>791 なぜ、スクロール時に中クリックを送らないようにするのか理解できない。
797 :
名無しさん@お腹いっぱい。
2015/12/27(日) 21:28:20.56 ID:5DiAbcLh0
ThinkPadの乳首キーボードは中ボタン+トラックポイントでスクロールさせる機能があり
ドライバの設定で中ボタンをスクロールトリガとどちらにするかを選択できる
上のリンク先では専用ドライバ無しで使うツール公開してるので
ついでにスクロールの機能を殺さず非スクロール時は中クリックとして動作させたいってことじゃね
TrackWheel.ahkがそれやってるけど32ビット版でしか動かないんだよな
798 :
名無しさん@お腹いっぱい。
2015/12/27(日) 21:29:29.84 ID:5DiAbcLh0
×スクロールトリガとどちらにするか
○スクロールトリガと中クリックどちらにするか
799 :
名無しさん@お腹いっぱい。
2015/12/28(月) 07:38:39.26 ID:oD0loXFU0
TrackWheelなんかはその代わりに中ドラッグを捨ててる
中ボタンを押して一定時間以内に離すと中クリック、そうでなければスクロールって処理じゃなかったっけ
それか中押したままカーソル動いたらスクロールだったか
800 :
名無しさん@お腹いっぱい。
2015/12/28(月) 07:39:22.30 ID:oD0loXFU0
TrackWheelはソースあるんだからそれ見ればいいんでねーの
801 :
名無しさん@お腹いっぱい。
2015/12/28(月) 14:17:28.51 ID:+kyM687s0
>>800 >>799 1)ThinkPad USB トラックポイントキーボード
2)ThinkPad トラックポイントキーボー ド
の順番で発売されて、TrackWheelは、1)用に開発された。
>>791は、2)のキーボードでハードでセンタークリックの扱いが違う。
802 :
名無しさん@お腹いっぱい。
2015/12/28(月) 14:38:48.93 ID:Vjj1Oxkv0
TrackWheelは自前でMクリックフックしてスクロール制御してるけど
スクロール動作を監視してどうこうしてるわけではないので
ソース見ても参考にはならないと思う
803 :
名無しさん@お腹いっぱい。
2015/12/28(月) 15:14:23.63 ID:ffRwDtCU0
Key::
の中で他のキーを無効にすることできるの?
804 :
名無しさん@お腹いっぱい。
2015/12/28(月) 23:35:35.90 ID:IWmdqPAc0
d::
flag := 1
Sleep , 5000
flag := 0
Return
#If flag = 1
s::Return
#If
こんなかんじ?
805 :
名無しさん@お腹いっぱい。
2015/12/29(火) 08:23:19.01 ID:WEC/2kjz0
806 :
名無しさん@お腹いっぱい。
2015/12/29(火) 13:26:51.51 ID:8e17npE90
OSをwin10にしたら、win7で問題なく動いていた既存の自作スクリプトが、突然終了します。
終了した場合、タスクトレイにマウスカーソルをあてると、該当のスクリプトのアイコンが消えます。
アイコンは見えてるのに実際は動いていなくて、地味に困ります。
アプリケーションエラーのダイアログは出ません。
1本道のコードではなく、時刻やフラグなど条件に応じて複数の仕事をsettimerで呼ぶ構成です。
時刻が来たらURLdownloadや、バッチファイルを生成してrunするなど。
不定期に突然死ぬので、どこでエラーになってるのか、特定できません。
なにかうまい特定方法があればよいのですが、
丹念にprintfデバッグをするしかないですか?
807 :
名無しさん@お腹いっぱい。
2015/12/29(火) 14:10:46.84 ID:xUOx0gug0
お尋ねします。
ControlGetでComboBoxの状態を取得した際に、選択されたComboBoxのテキストでは無く、
選択されたComboBoxの0,1,2等の番号で取得する事は出来ますでしょうか?。
よろしくお願いします。
808 :
名無しさん@お腹いっぱい。
2015/12/29(火) 14:30:17.91 ID:wBiW99cI0
>>806 win7のバージョン home? professional? 32bit? 64bit?
win10のバージョン 同上
AHKのバージョンもろもろ
なんで情報伏せるのか
809 :
名無しさん@お腹いっぱい。
2015/12/29(火) 16:32:02.83 ID:kpEO4FJQ0
810 :
名無しさん@お腹いっぱい。
2015/12/29(火) 19:18:37.94 ID:0vioO+hI0
Radial menu 4.23を使用しているのですが
クリックしてもメニューが消えずに数度押すことが出来るボタン設定は出来ないでしょうか?
何度も押せるキー送出するボタンを作りたいのです
ワンクリックキー送出はできたのですが
メニューを残したまま数度押せるようにはどうやったらいいのか分かりません
どなたか出来るようなら教えてください
811 :
名無しさん@お腹いっぱい。
2015/12/29(火) 19:39:40.17 ID:0vioO+hI0
Radial menu バージョンは4.43でした
812 :
名無しさん@お腹いっぱい。
2015/12/29(火) 20:34:54.41 ID:jTTZ0D3v0
>>803 押すたびにトグルしたいなら
hotkey, s, off
d::hotkey, s, toggle
s::return
押してる間無効にするなら
hotkey, s, off
d::
hotkey, s, on
keywait, d
hotkey, s, off
return
s::return
複数のキーを一気に無効トグル
keys:="qwertyuiop"
loop, parse, keys
hotkey, %A_LoopField%, key_off, off
return
d::
loop, parse, keys
hotkey, %A_LoopField%, toggle
return
return
key_off:
return
813 :
名無しさん@お腹いっぱい。
2015/12/30(水) 01:00:39.82 ID:1XfjQdHX0
HTMLの指定したタグに囲われた文字列を抜き出したいです
<div class="hoge">...<div class="foo">.....</div>....</div>
上のようにタグが入れ子になってる場合でもちゃんと対応するタグの終わりまで取得するには
<div>と</div>の数を数えながら探していくしかないでしょうか?
814 :
名無しさん@お腹いっぱい。
2015/12/30(水) 14:15:39.44 ID:586mug+r0
日本語URLをエンコードする方法はありますか?
815 :
名無しさん@お腹いっぱい。
2015/12/30(水) 16:59:12.54 ID:6zWyPyRK0
>>813 DOMを使うとか
hs := "<div class=hoge>aaa<div class=foo>bbb</div>ccc</div>"
html := ComObjCreate("htmlfile")
html.write(hs)
div := html.getElementsByTagName("div")
Loop % div.length
{
d := div[A_Index - 1]
c_name := d.getAttributeNode("class").nodeValue
text :=
Loop % d.childNodes.length
{
c := d.childNodes[A_Index - 1]
If (c.nodeType == 3)
text .= c.nodeValue
}
MsgBox % "class:" . c_name . ", text: " . text
}
Return
816 :
名無しさん@お腹いっぱい。
2015/12/30(水) 17:29:36.57 ID:6zWyPyRK0
>>814 ScriptControlを使うのが一番簡単
obj := ComObjCreate("ScriptControl")
obj.Language := "JScript"
// encodeURIかencodeURIComponent どちらを使うかは用途に応じて
obj.AddCode("function enc(s){return encodeURI(s);};")
MsgBox % obj.Run("enc", "
http://日本語えんこーど.jp")
Return
x64版でScriptControlを使うには
http://www.eonet.ne.jp/~gakana/tablacus/scriptcontrol.html
これを入れないとダメ
817 :
名無しさん@お腹いっぱい。
2015/12/30(水) 18:09:31.37 ID:qxHYbHC80
818 :
815
2015/12/30(水) 20:05:05.03 ID:6zWyPyRK0
>>815だが、テキストの順番が見た目通りにはならないので、ルートから再起的に辿って行く形にしてみた
hs := "<div class=hoge>aaa<div class=foo>bbb<div class=bar>ccc</div>ddd</div>eee</div>"
html := ComObjCreate("htmlfile")
html.write(hs)
div := html.getElementsByTagName("div")
Loop % div.length
{
node := div[A_Index - 1]
If (node.getAttributeNode("class").nodeValue == "hoge")
{
GetText(node, text)
Break
}
}
MsgBox % text
Return
}
GetText(n, ByRef ret)
{
If (n.nodeType == 3) ; text node
ret .= n.nodeValue
Loop % n.childNodes.length
GetText(n.childNodes[A_Index - 1], ret)
}
これで一応見た目通りの順番でテキストだけ拾えるはず
819 :
名無しさん@お腹いっぱい。
2015/12/30(水) 21:30:32.39 ID:1XfjQdHX0
820 :
名無しさん@お腹いっぱい。
2015/12/30(水) 21:57:36.12 ID:ABBFeQ3v0
丸投げ質問にこれだけの親切回答
殺し最後の大出血サービスだ
821 :
名無しさん@お腹いっぱい。
2015/12/30(水) 21:59:55.04 ID:ABBFeQ3v0
>>820 ノー!ノォーーッ!!間違い
殺し ← 間違い
今年 ← 正解
822 :
名無しさん@お腹いっぱい。
2015/12/30(水) 22:25:32.88 ID:vDru1nzB0
823 :
名無しさん@お腹いっぱい。
2015/12/30(水) 23:28:45.45 ID:l2aT5BCz0
殺したあとに出血してる件について
824 :
名無しさん@お腹いっぱい。
2015/12/30(水) 23:47:08.75 ID:xeCpQtJl0
クレクレを甘やかす奴は氏ねって意味かと思って読んでたわ
825 :
名無しさん@お腹いっぱい。
2015/12/31(木) 00:08:18.29 ID:+qocgk4L0
別に質問自体は丸投げじゃなくね?
htmlのはそっち方面疎いから横で見てるオレは勉強になったわ
826 :
名無しさん@お腹いっぱい。
2015/12/31(木) 03:37:44.81 ID:AkNWJHpi0
ありがとうございますしか言ってねえじゃねえか
これは答えてもらったコードを論理的に理解してない
とりあえず、DOM操作するとよく、DOMはCOMオブジェクトで弄くれるという旨を言えばよかっただけではないか
DOMに関してはスレ違いの話だし
DOM操作ができるCOMオブジェクトが色々ある中、
とても軽いhtmlfileオブジェクトを例示したいのはよく分かる
まあ上の回答者様らは、htmlfileが
一般的なブラウザで使えるはずのメソッドやプロパティをあまりサポートしていない上に
ググっても見つからないぐらい資料が少ないからドヤりたかったのかもしれない
827 :
名無しさん@お腹いっぱい。
2015/12/31(木) 04:51:20.61 ID:+qocgk4L0
どれとは言わないけどもろクレクレっぽいレスはスルーされてんだし
質問側が放置とか逆切れするケースでもないから
そんなピリピリしなくていいんじゃね
828 :
名無しさん@お腹いっぱい。
2015/12/31(木) 05:35:07.63 ID:JFrrNYoF0
実は下のdiv.outerHTMLの部分が得たかっただけなんて言えない・・・
でもおかげさまでDOMという便利なものの使い方がなんとなくわかったので感謝しとりやす
html := ComObjCreate("htmlfile")
html.write(DownloadToString(URL))
divs:=html.getElementsByTagName("div") ;divタグを集める
Loop % divs.length
{
div := divs[A_Index - 1]
If(div.getAttributeNode("class").nodeValue == "content") ;クラス名を調べる
{
MsgBox % div.outerHTML
as:=div.getElementsByTagName("a") ;aタグを集める
Loop % as.length
{
MsgBox , % as[A_Index - 1].outerHTML
}
}
}
829 :
名無しさん@お腹いっぱい。
2015/12/31(木) 14:06:41.31 ID:fTc/t7W10
妙な挙動で困っております
AHK(v2最新)
Firefox Portable(v39.03)
Firefox(フルスクリーン)がアクティブになった直後にAHKで作ったGuiをアクティブにすると
再びFirefoxがアクティブになることがあります(他のアプリのウィンドウをアクティブにした時では発生しません)
SetTimerやウィンドウメッセージ等の監視を無効にしても同じでした
Guiはこんな感じでも再現しました(実際は複雑ですが)
↓
Gui, Add, Text
Gui, Show
できればフルスクリーンで使いたいのですが、この現象を抑える良い方法はありますか?
830 :
名無しさん@お腹いっぱい。
2015/12/31(木) 14:30:39.50 ID:hPmy8xMS0
>>829 最前面にすれば?
Gui, Add, Text
Gui, +AlwaysOnTop
Gui, Show
831 :
名無しさん@お腹いっぱい。
2015/12/31(木) 14:48:38.47 ID:OKNkAuEU0
>>830 Guiは常駐させることがあるので最前面だと解除する為のフラグが至るところで必要になるので
もう少しスマートな方法があればいいのですが、根本的にこの現象は防げないと割り切るしかないでしょうか?
832 :
名無しさん@お腹いっぱい。
2015/12/31(木) 14:50:13.78 ID:OKNkAuEU0
833 :
名無しさん@お腹いっぱい。
2015/12/31(木) 15:14:36.79 ID:hPmy8xMS0
834 :
名無しさん@お腹いっぱい。
2015/12/31(木) 15:47:03.46 ID:OKNkAuEU0
>>833 Guiのアクティブ時にウィンドウメッセージで最前面&カウントを開始して
SetTimerで1.25秒後に解除するようにしたら安定しました
センキューベリマッチ
835 :
829
2016/01/01(金) 19:25:42.32 ID:G/uftquS0
余談ですが
>>829の現象の原因を探ってみましたが、#WinActivateForceで防げることに気づきました
代わりにGuiを閉じた後、直後のウィンドウではなくその一つ前のウィンドウがアクティブになる現象が発生する模様
836 :
名無しさん@お腹いっぱい。
2016/01/01(金) 22:49:52.74 ID:G/uftquS0
スレッドの割り込み&破棄についての質問です
下記を実行中に再度Enterを押したら
スレッドを破棄して最初からスレッドを起動し直したいのですがどうすればいいのでしょうか?
Thread, Interrupt, 0やCritical,offなど色々試してみましたがよく分かりません
Enter::
Loop, 10
{
Sleep, 200
ToolTip, % A_index
}
Tooltip
Return
837 :
名無しさん@お腹いっぱい。
2016/01/02(土) 06:08:28.54 ID:EdXLbnJI0
>>836 やり方いろいろだけど分離してタイマーで呼び出す方法がいいかも
Enter::
keywait, enter
running:=false
settimer, sub, -1
return
sub:
running:=true
Loop, 10
{
Sleep, 200
if(!running)
break
ToolTip, % A_index
}
running:=false
Tooltip
Return
838 :
名無しさん@お腹いっぱい。
2016/01/02(土) 08:36:03.17 ID:syLvxKnf0
>>837 専用のコマンドはなくてフラグを立てて対応するしかないんですね
実際はGui(リストビュー)のサブルーチンから起動されるスレッドなのですが
高速に項目の選択を繰り返すとたまに選択とは異なる項目の情報が取得されて困っておりました
センキューベリマッチ
839 :
名無しさん@お腹いっぱい。
2016/01/02(土) 09:02:58.95 ID:OKtEEnUz0
サンプルコートを提供してくれる人へ
感謝!
この人ってずっとがばってくれているよね?
感謝
840 :
名無しさん@お腹いっぱい。
2016/01/07(木) 17:59:58.02 ID:UEXmKOpO0
win10でwindowupdate後の再起動を先延ばしにしたまま忘れて作業中に再起動したもんだからこんなん書いた
objSysInfo:=ComObjCreate("Microsoft.Update.SystemInfo")
If(objSysInfo.RebootRequired)
{
無操作状態時に起動中のソフトの状態をチェック後再起動()
}
841 :
名無しさん@お腹いっぱい。
2016/01/07(木) 21:42:16.98 ID:5j5c2NdQ0
エクスプローラーにCtrl-CやCtrl-VをSendしても反応しない原因は、どんなことが考えられるでしょうか?
F1::
SoundBeep
Send,^c ・・・反応しない
Sleep,1000
Send,{End} ・・・反応する
Sleep,1000
Send,^v ・・・反応しない
Return
ファイル名編集中やアドレスバー編集中は3つのSendに反応しますが、
ファイル選択状態では{END}にしか反応しません。
他のアプリでは正常に反応します。
(例えば秀丸ファイラーでファイル選択状態とか。)
エクスプローラーのファイルペインに原因がありそうですが、対処法ありますでしょうか?
Win10 Home 64bit
AHK 64bit Unicode v1.1.22.09
842 :
名無しさん@お腹いっぱい。
2016/01/09(土) 20:02:30.86 ID:ikPm8Lmg0
>>841 win10 win7ともに試してみたが
ちゃんと動作してるけどな
そもそも不具合出るような内容かよ!
843 :
名無しさん@お腹いっぱい。
2016/01/10(日) 01:48:09.51 ID:n3RXJBJS0
>>842 ほとんど反応しないけど、たまに反応するんです。
成功率5%くらいだけど原因不明。
ちなみに
>>788も自分ですが、やはり5%くらいの確率で成功する。
Win7からWin10にアップグレードしたら妙な不具合続出。
総合的にはWin7より良くなったけど。
844 :
名無しさん@お腹いっぱい。
2016/01/10(日) 04:02:27.93 ID:bkzCYgEy0
109キーボードのテンキーで
SHIFTキー押下時(NUMLOCK時)のPAGEUP/PAGEDOWNの動作を無効化したいんだけど
これってAHKでも無理なのかな?
+$Numpad9::Return
って書いてもPAGEUP動作になってしまう
キーリマップツールでPAGEUPキーをESCなんかに変えてもPAGEUPが入力される
誤爆するのでなんとか消したいんだけど…
845 :
名無しさん@お腹いっぱい。
2016/01/10(日) 04:03:27.31 ID:bkzCYgEy0
あ、間違い
誤)SHIFTキー押下時(NUMLOCK時)のPAGEUP/PAGEDOWNの動作を
正)SHIFTキー押下時(非NUMLOCK時)のPAGEUP/PAGEDOWNの動作を
846 :
名無しさん@お腹いっぱい。
2016/01/10(日) 04:16:45.03 ID:bkzCYgEy0
連投すいません
スキャンコードで判明しました
大変失礼しました><
847 :
名無しさん@お腹いっぱい。
2016/01/10(日) 09:50:54.19 ID:5BBzUZm30
NumpadPgUp
NumpadPgDn
まあスキャンコードでもいいけど
848 :
名無しさん@お腹いっぱい。
2016/01/10(日) 13:16:51.88 ID:9HCE9KP40
GuiControlでコントロールの文字列の変更を短い間隔で行うと点滅する現象は防ぐことはできないのでしょうか?
Gui, Add, Text
Gui, Show
Loop, 10000
GuiControl, , Static1, あ
Gui, Destroy
849 :
名無しさん@お腹いっぱい。
2016/01/10(日) 14:06:55.61 ID:5BBzUZm30
現在と書換予定後の文字列内容を比較して変更があった時だけ書き換えるようにする
時計表示などでコンマ秒を書き換えたいとかならあきらメロン
850 :
名無しさん@お腹いっぱい。
2016/01/10(日) 14:13:40.55 ID:9HCE9KP40
>>849 わかりました。自分の用途(ファイル群の巡回)では諦めるしかなさそうです
センキューベリマッチ
851 :
名無しさん@お腹いっぱい。
2016/01/11(月) 00:47:33.29 ID:WMOI9ZDe0
A_ThisHotkeyに入る値が意味不明なんですが、誰か解説して下さい・・・・・・・・
#IfWinActive,ahk_exe notepad.exe
~NumpadEnter:: ←このラベルが格納されしまう!!
SoundBeep
Return
#If
NumpadEnter::
TrayTip,,%A_ThisHotkey%
Return
上記のコードでメモ帳以外のウィンドウでNumpadEnterを押すと、
A_ThisHotkeyの内容が
NumpadEnterではなく、
~NumpadEnterになってしまいます
なぜ2行目のラベルが格納されてしまうのでしょうか???
852 :
名無しさん@お腹いっぱい。
2016/01/11(月) 01:27:10.03 ID:z/TOirBP0
〜〜〜〜〜〜〜^^^^~~~~^^^~
//.\//.;:]p@[\^^-0===~|
853 :
名無しさん@お腹いっぱい。
2016/01/11(月) 01:29:18.03 ID:z/TOirBP0
~
854 :
名無しさん@お腹いっぱい。
2016/01/11(月) 16:14:59.87 ID:UsLtol/W0
>>852-853 ???
notepad.exeがアクティブの時に ~NumpadEnter となるのは当然ですが、
#If条件以外の時にそうなるのが意味不明なのです。
855 :
名無しさん@お腹いっぱい。
2016/01/11(月) 16:53:04.29 ID:6x6iyoSK0
条件に合わんだけでそりゃ~NumpadEnterは普通に実行されてるし
856 :
名無しさん@お腹いっぱい。
2016/01/11(月) 21:57:27.61 ID:gSN3Jyym0
Windows10にしてみたらAHKがまったく効かないソフトが出てきて何かと思ったけど、管理者権限で起動してなかっただけだった
857 :
名無しさん@お腹いっぱい。
2016/01/12(火) 09:49:02.49 ID:RvLTgbm60
>>855 #Ifの中って条件非成立の場合もホットキーラベルは処理されるんだ。。。。。。。知らんかった。
それだと #If と If の違いが無い気もしますね。。。。(;´д`)
858 :
名無しさん@お腹いっぱい。
2016/01/12(火) 15:45:15.99 ID:qolcvhpj0
Webページのデータを読み取れるか質問です。
通販サイトの価格を定期的に読み取っておき、
指定した範囲の金額になったら知らせたいのですが
そういったことは可能でしょうか?
859 :
名無しさん@お腹いっぱい。
2016/01/12(火) 16:37:56.03 ID:NedgFWBG0
該当ページのソース記述がどうなってるのかわからんと何ともいえんが
URLDownloadToFileで該当ファイル落としてきて
RegExとかで狙った金額のある箇所を特定&抽出できれば可能じゃね
金額部分が画像ファイルで値取れないとかだと厳しいが
comとかつかったらもっとスマートにできるかも
860 :
名無しさん@お腹いっぱい。
2016/01/12(火) 17:24:07.22 ID:7DMnEDHA0
>>858 ComObjCreate("WinHttp.WinHttpRequest.5.1")
861 :
858
2016/01/12(火) 19:02:29.12 ID:qolcvhpj0
回答ありがとうございます。
なにぶん未知の領域なのでこれから勉強ですが、
うまくできたら報告したいと思います。
862 :
858
2016/01/13(水) 03:43:20.34 ID:oIMZ5mxW0
863 :
名無しさん@お腹いっぱい。
2016/01/14(木) 00:28:18.48 ID:HGrpMuR70
>>858のような処理の際に、HTMLタグを綺麗に除去する方法はありますでしょうか?
正規表現だけではどうしても限界がありそうなので
なにか方法がないかと探しているのですが…
864 :
名無しさん@お腹いっぱい。
2016/01/14(木) 01:31:00.84 ID:T6raRa5l0
綺麗に除去ってどういうこと?
普通に出来そうに思えるけど
今どうやって除去してどういう問題があるのか書かないと
865 :
名無しさん@お腹いっぱい。
2016/01/14(木) 03:12:25.24 ID:HGrpMuR70
>>864 現在は、まだAHKで除去の段階にもいけていません…
HTMLタグ削除用によく見かける正規表現をテストしてみたのですが
<("[^"]*"|'[^']*'|[^'">])*>
RegExReplaceにこの正規表現を使うとエラーとなってしまい
テキストエディタで試してみてもJavaScriptの残骸や
改行を含むタグが残ってしまうので、綺麗に削除は出来ませんでした
866 :
名無しさん@お腹いっぱい。
2016/01/14(木) 03:32:45.67 ID:9MRxzvmI0
867 :
名無しさん@お腹いっぱい。
2016/01/14(木) 03:35:53.38 ID:xSFAk4Bh0
その手のコードはちょくちょく書くけど(Rubyでだけど)
s=
(
<html>
<body>
hello
</body>
</html>
)
if RegExMatch(s, "<body>(.*)</body>", $)
{
body:=$1
msgbox,[%body%]
}
こういうテストコードを積み重ねて地道にやっていくしかない
HTMLのパースを真面目にやるのではなく
InStrとか普通の文字列処理関数を使って事前に不要なゴミ行を削除して
関係ありそうな行だけを抽出してから処理するとやりやすかったりする
そもそもの話として、タグを一括削除する必要はなく
RegExMatchでタグを含む特定パターンからデータを抽出したほうが良いと思う
868 :
名無しさん@お腹いっぱい。
2016/01/14(木) 07:25:17.07 ID:xG1XgYA70
むしろタグ除去してしまうと該当箇所の特定が難しくならないか
やみくもに全テキスト抽出にこだわるより>867のいうように
必要部分にピンポイントでMatchかけたほうがいいと思う
869 :
名無しさん@お腹いっぱい。
2016/01/14(木) 11:01:12.65 ID:JPvGa/xD0
正規表現が無理なら一行ずつIf文連発でもなんでもすればいいのでは
870 :
名無しさん@お腹いっぱい。
2016/01/14(木) 11:40:20.36 ID:Bz9U5kHA0
グーグルキャッシュのテキストページ取得すりゃいいじゃん(鼻ほじ
871 :
名無しさん@お腹いっぱい。
2016/01/14(木) 16:03:22.18 ID:HGrpMuR70
"のエスケープは""なんですね、勉強不足でした…
汎用性のある処理をと考えてしまったのですが
最初にタグを一括除去に拘らず、そのページに合わせて必要な部分を抽出する
という考え方の方が良さそうですね、ありがとうございました
872 :
名無しさん@お腹いっぱい。
2016/01/15(金) 00:30:47.60 ID:kTiE4/eQ0
何回やっても画像認識しない
873 :
名無しさん@お腹いっぱい。
2016/01/16(土) 20:03:17.75 ID:370zvloy0
フルパスがフォルダかファイルか判断して
それぞれで別の動作させたいだけなんですけど
選択肢としてどういう方法がありますか?
874 :
名無しさん@お腹いっぱい。
2016/01/16(土) 20:07:36.76 ID:P+8bCcO30
875 :
名無しさん@お腹いっぱい。
2016/01/16(土) 22:26:38.90 ID:370zvloy0
ありがとうございます、助かりました
876 :
名無しさん@お腹いっぱい。
2016/01/20(水) 14:18:56.01 ID:Vy2EyGJW0
test
877 :
名無しさん@お腹いっぱい。
2016/01/21(木) 02:03:37.69 ID:IRmPZgiw0
>>7 インライン化
~~~~~~~~~~~~
てなんですか?おっしゃるようにIE11ではIME_AHK で
IME_ON(WinExist("A"), False) とやっても動いてくれませんね。(chrome ならうごきます)
878 :
名無しさん@お腹いっぱい。
2016/01/21(木) 11:57:24.40 ID:GeUu2I7K0
インライン入力とは入力中の文字をカーソル位置に直接挿入表示する機能
IME.ahkではIME窓の有無で文字の入力・変換状態を見るIME_GetConverting()関数でのみ
インライン時に情報が取れないが、ON/OFFの状態取得や制御では基本問題はない
IE11やMETOROアプリでは他にも動かない報告があるがインラインとは別の問題と思う
(IME.ahkが使ってるimm32は古いAPIなので最近のOSではサポートしなくなってきてるのが原因の模様)
それと解決の足しにはならないかも知れないが
>IME_ON(WinExist("A"), False)
関数名やパラメータ数見るに旧verのime.ahkを改造した派生版を使っているのかな
最新verでは64bitやUNICODE対応などしてるので一度ソースを確認してみることをおすすめ
http://www6.atwiki.jp/eamat/pages/17.html 879 :
名無しさん@お腹いっぱい。
2016/01/22(金) 04:25:31.30 ID:NR9XtF0x0
お知恵を拝借させて頂きたく質問させて頂きます。
当方、現行の高級言語プログラミングはおろかMATLAB、Scilabを扱うのも不得意な程の門外漢ですが
ご教授頂けるとありがたいです。
wとdを同時押しした時に:が入力されるようにと.ahkファイルに
以下の命令文を記入したのですが、下の命令だとwとdを押しっぱなしにしてもwやdが連続して入力出来ませんでした。
wとdを同時に長押しした場合は::::::::::::…と連続入力が有効になっているのですが・・
以下の命令を如何様に変えればwとdの連続入力との両立が可能になるのでしょうか。
お手数ですがご返信頂けるとありがたいです。
「.ahkに記載した命令」
w & d::Send,:
d & w::Send,:
$w::Send,w
$d::Send,d
・蛇足
wやdを押すとどうやら同時押しで:の出力命令が来ないか待機状態になっているようで
wやdを押しっぱなしにした時のdddddddddddddddd・・・といった連続入力が拒まれてる様に感じました
880 :
名無しさん@お腹いっぱい。
2016/01/22(金) 07:53:07.02 ID:pizC+ooE0
>>878 リンク先の新版で解決しました。
;旧版IME_ON(WinExist("A"), False) はIE11では駄目で
;リンク先、IME_SET(setsts,WinTitle="A"){...}を入れたうえで、IME_SET(0)で直接モード、余裕でした
881 :
名無しさん@お腹いっぱい。
2016/01/22(金) 08:02:25.37 ID:9ucgqHg40
>>879 蛇足に書いている通り、同時押しを待つモデファイキーとして待っているので両立しようとすると無理。
~w::
882 :
名無しさん@お腹いっぱい。
2016/01/22(金) 08:07:26.73 ID:9ucgqHg40
途中で書き込まれた
~w::
keywait,w,T1
flag=1
以下略
みたいに1秒長押しした場合にflagを立てて send,w をloopさせて連打させたりはできるけど
他に w を使ったショートカットキーにも同様の処理を割りこませる必要が出てくるので
一般的な文字入力を必要とするアプリケーションソフトではやめたほうがいいと思う。
>>4を参考にひらがな(かたかな)キーにF13を割り当ててそれをモデファイキーとして利用したほうが現実的。
883 :
名無しさん@お腹いっぱい。
2016/01/22(金) 18:09:39.92 ID:w5FiNfPB0
質問させてください
ある動作を「何時何分に動かす」っていう記述あります?
884 :
名無しさん@お腹いっぱい。
2016/01/22(金) 19:08:01.82 ID:54WbWovf0
SetTmerで一秒ごとに現在時刻確認して指定時刻になったら ある動作 を実行させてやればおk
885 :
名無しさん@お腹いっぱい。
2016/01/23(土) 16:13:16.05 ID:itRRLNJw0
>>884 変な方法教えるなよ。そういう用途ならWindowsのタスクスケジューラに
決まった時間にある動作.ahk みたいなの登録するのが普通。
886 :
名無しさん@お腹いっぱい。
2016/01/23(土) 16:56:54.97 ID:RR91zbbS0
「何時何分に動かす」の部分をAHKでやりたいのかと思ったんだが違うの?
887 :
名無しさん@お腹いっぱい。
2016/01/23(土) 17:24:36.46 ID:L0xsvXha0
「ある動作」がahkで記述してるってだけの話だろ
「何時何分に動かす」の部分はahkでやろうとタスクスケジューラでやろうと結果は同じじゃん
その上でどちらがスマートな方法かと言ったら断然スケジューラ
888 :
名無しさん@お腹いっぱい。
2016/01/23(土) 17:32:16.06 ID:uiYEBCKU0
記述あるかと聞いてるんだからまずAHKで書けるかどうかを答えるべき
けどその方法では問題があるというなら別の解決法を添えればいい
普通だのスマートなんて価値観の押し付けは不要
889 :
名無しさん@お腹いっぱい。
2016/01/23(土) 17:43:29.90 ID:L0xsvXha0
>>888 どう見てもお前の屁理屈のほうが押しつけがましい
890 :
名無しさん@お腹いっぱい。
2016/01/23(土) 20:53:55.78 ID:vMem4HaY0
883です
なんかすみません
両方とも助かりましたありがとうございました
891 :
名無しさん@お腹いっぱい。
2016/01/23(土) 20:54:27.95 ID:mpcUbpeV0
なんだなんだw今度はタスクスケジューラくんかよww
そんなこと誰も聞いてねえだろwやめてくれw
通常のアプリケーションの実装でタスクスケジューラ前提のほうが珍しいわw
スマートだと言えるのは細かい制御する必要ない場合だけだろ
活用してんのは構わないけどそれを常識として語るなよ
まずスレタイ100回読み直せ
892 :
名無しさん@お腹いっぱい。
2016/01/23(土) 20:57:26.87 ID:JRTkHas30
いちいち終わった話を蒸し返してファビョるガイジ
893 :
名無しさん@お腹いっぱい。
2016/01/23(土) 21:08:30.16 ID:mpcUbpeV0
>>890 大丈夫全然謝る必要ない
日時を取得する変数が用意されてるから、SetTimer以外でもLoopでもできるしどうにでもなる
どういう実装するかは何を優先するかによるんで
とりあえずサンプル見ながら組んでみたらいいよ
あとリファレンスに目を通すのは基本なので
大した量もないので眺めるだけでいいから一通り目を通したほうがいいよ
色々アイデア浮かぶこともあるし
894 :
名無しさん@お腹いっぱい。
2016/01/23(土) 21:35:58.46 ID:htKJK86V0
XP時代に時刻実行スクリプト組んでたな懐かしい
当時はメモリ節約のためにタスク(スケジューラ)はサービスごとKILLしてたっけ
あとAHK内でやるのはポータブルでも動かせるという利点もあった
888は屁理屈じゃなくまっとうな意見だと思う
895 :
名無しさん@お腹いっぱい。
2016/01/24(日) 16:26:31.52 ID:E6/fC1wu0
お世話になります。
文字列変数中にある全角英数字(と若干の記号類)をすべて半角にしたいのですが、
StringReplaceをズラズラ並べるよりもスマートな方法はないでしょうか。
どういう目的でそのコードを書きたいかというと、Windows Media Playerで
音楽CDの曲名情報を取得すると全角英数字で書かれていることが多いので、
MP3ファイルに吸い出す前に半角英数字に書き換えたいのです。
#l::
Send ^a^c
Sleep 200
s := Clipboard
; ↓ここを何とかしたい
StringReplace s, s, 0, 0, All
StringReplace s, s, 1, 1, All
:
StringReplace s, s, }, }, All
; 一部の文字は逆に全角にする
StringReplace s, s, ", ”, All
:
StringReplace s, s, ~, 〜, All
Clipboard := s
return
宜しくお願いします。
896 :
名無しさん@お腹いっぱい。
2016/01/24(日) 16:48:52.65 ID:w149VZ2+0
検索文字と置換文字の配列をそれぞれ作って、ループ内で取り出して置換する
897 :
名無しさん@お腹いっぱい。
2016/01/24(日) 16:54:07.15 ID:lsQU9n1K0
文字コードで足し算引き算
898 :
名無しさん@お腹いっぱい。
2016/01/24(日) 16:55:41.81 ID:N/7IsEzU0
899 :
名無しさん@お腹いっぱい。
2016/01/24(日) 16:58:53.68 ID:E6/fC1wu0
>>896 ありがとうございます。やってみます。
言われてみれば、AHKなら置換前後の文字をループで供給して、
各文字ごとにStringReplaceができるんですよね。
そういう関数のないVBで実装するときのこととか、対応表が循環になっている
(たとえば tr/abc/bca/)場合にも正しく動くコードの書き方とかが念頭にあって、
この単純な方法をすっかり忘れていました。
ありがとうございました。
900 :
名無しさん@お腹いっぱい。
2016/01/24(日) 17:00:10.78 ID:lsQU9n1K0
つかこのスレ内にあるじゃん
901 :
名無しさん@お腹いっぱい。
2016/01/24(日) 17:02:57.18 ID:E6/fC1wu0
>>897 それは考えましたが、「ファイル名に使えない文字は逆に全角にし、
個人的趣味で個別判断したい文字はそのまま残す」をどう実装しようかと
考えあぐねていました。
>>898 >>900 失礼しました<(_ _;)>
902 :
名無しさん@お腹いっぱい。
2016/01/24(日) 18:38:05.78 ID:iXvoY6Eo0
自分は全角から半角へは文字コードの足し算か引き算するやつ使って
ファイル名に使えない半角文字は全角に変えるものはまた別の関数として使ってる
903 :
名無しさん@お腹いっぱい。
2016/01/24(日) 19:04:43.56 ID:FursUQfA0
タイトルにアスタリスクやダッシュを入れるアーティストは頭おかしいと思います
904 :
名無しさん@お腹いっぱい。
2016/01/24(日) 20:39:33.75 ID:E6/fC1wu0
>>903 アスタリスクはまだ見たことがないけど、「?」とか「"」とかは普通にあるよ。
905 :
名無しさん@お腹いっぱい。
2016/01/24(日) 21:20:14.89 ID:U3+d6ej30
それよかハートとかやめてくれ
ファイル名にUNICODEは使いたくないんや
906 :
名無しさん@お腹いっぱい。
2016/01/25(月) 07:27:11.66 ID:wRNL+t4E0
うpろだのClipboardHistory.ahk(16/01/23)を使わせてもらってるのですが
履歴に2重に登録される時がある。
おま環かもしれないけど一応ご報告。
907 :
名無しさん@お腹いっぱい。
2016/01/25(月) 22:52:30.16 ID:1BsX6h3F0
908 :
名無しさん@お腹いっぱい。
2016/01/26(火) 00:05:17.91 ID:dSuTW03G0
スレチかもしれません
Windows10にしたりWindows7に戻したりしているうちに
ビープ音(Beep)が鳴らなくなってしまったんですが
どこに問題があるのでしょうか?
909 :
名無しさん@お腹いっぱい。
2016/01/26(火) 09:52:07.72 ID:6jBbM5ka0
>>907 頂きました。
問題ないようです。
前バージョンでもClipChanged()のSleep,50で大丈夫だったので
様子を見ていました。
ありがとうございました。
910 :
名無しさん@お腹いっぱい。
2016/01/26(火) 10:14:35.32 ID:TtZSMCWk0
もう新関数使ってんのかー
911 :
名無しさん@お腹いっぱい。
2016/01/26(火) 18:59:12.44 ID:nJYcGfOp0
進んでるなぁ
912 :
名無しさん@お腹いっぱい。
2016/01/28(木) 00:22:53.52 ID:IbXPK9wi0
画像の大きさを取得して、縦長横長それぞれの場合の処理をさせたいのですが
AHKでJPG画像の大きさを調べる方法ってありますか?
913 :
名無しさん@お腹いっぱい。
2016/01/28(木) 00:59:26.15 ID:IbXPK9wi0
すいません自己解決しました。
GDI+の機能を使って縦横を取得できるみたいです。
失礼しました。
914 :
名無しさん@お腹いっぱい。
2016/01/28(木) 15:41:31.08 ID:VNtB2bWu0
InputBoxで何か1文字を押した瞬間、Enterで確定することなく制御を返す方法を教えて下さい
915 :
名無しさん@お腹いっぱい。
2016/01/28(木) 21:25:47.11 ID:sfTIy2l50
916 :
名無しさん@お腹いっぱい。
2016/01/30(土) 17:15:46.29 ID:Cg8NniH20
お尋ねします。
Windows 10 64ビットに、AHK Ansi 32ビット Ver1.1.16.5の組み合わせなのですが、
以下のスクリプートを実行した際に、表示されたウインドウ下に数ドットのズレが生じます。
モニターの範囲全てを、AHKで作成したウインドウで覆い尽くすにはどうしたらよろしいでしょうか?。
よろしくお願いしします。
Gui, Color, FFFFFF
Gui, Show, w%A_ScreenWidth% h%A_ScreenHeight%, Window
917 :
名無しさん@お腹いっぱい。
2016/01/30(土) 17:28:14.85 ID:mzUer4wq0
>>916 ちんこ隠すのにグーで隠すよりパーで隠す方が良いでしょ?
918 :
名無しさん@お腹いっぱい。
2016/01/30(土) 17:30:22.31 ID:mzUer4wq0
あ何言ってんだオレ
>>917は撤回
スレ汚しごめん
919 :
名無しさん@お腹いっぱい。
2016/01/30(土) 18:13:37.17 ID:Cg8NniH20
916です。
すみません、何とか修正できました。
920 :
名無しさん@お腹いっぱい。
2016/02/01(月) 01:45:42.02 ID:0LHeXQek0
GUIのウインドウの出現位置がうまく変更できません。
一番左上に表示させたいのですが
Gui,Add,Button,1
Gui, Show,w0 y0 h281 w323,タイトル名
と書いても水平座標の指定がうまくいかず、画面の中央上部に表示されてしまいます。
どこがいけないんでしょう?
921 :
名無しさん@お腹いっぱい。
2016/02/01(月) 01:51:36.23 ID:XQSyaXSF0
w0
922 :
名無しさん@お腹いっぱい。
2016/02/01(月) 02:17:31.63 ID:rMuDCPig0
923 :
名無しさん@お腹いっぱい。
2016/02/01(月) 09:58:34.74 ID:0LHeXQek0
すいません、できたらもう少しヒントお願いします
CoordMode, Menu とか追加してもダメでした
924 :
名無しさん@お腹いっぱい。
2016/02/01(月) 10:11:45.86 ID:u61OUv0O0
Gui, Show,w0 y0 h281 w323,タイトル名
↓
Gui, Show,x0 y0 h281 w323,タイトル名
じゃなくて?
925 :
名無しさん@お腹いっぱい。
2016/02/01(月) 10:55:02.94 ID:xb/bkuRj0
>>923 それだけだと初期設定の相対座標のままだから意味無い
926 :
名無しさん@お腹いっぱい。
2016/02/01(月) 18:08:15.14 ID:0LHeXQek0
>>921-924 あっxとwを間違えてたとは……
目と頭が悪くてすいません。
皆様ありがとうございました。
927 :
名無しさん@お腹いっぱい。
2016/02/06(土) 18:46:51.84 ID:gHQi2V4M0
すみません質問です
DllCallを試しているんですが、パフォーマンス改善の部分でwikiに訳されていない以下のような記述があって
http://autohotkey.com/docs/commands/DllCall.htm#load [v1.0.90+]:
If DllCall's first parameter is a literal string such as "MulDiv"
and the DLL containing the function is ordinarily loaded before the script starts,
the string is automatically resolved to a function address.
This built-in optimization is more effective than the example shown above.
これに該当しそうな更新履歴がv1.0.90ではなくv1.0.48.04.のとこに
Revision 31 - September 26, 2009
Optimization:
If DllCall's first parameter is a literal string which identifies a function already present in memory,
it is replaced with the actual address of the function.
とあるんですが、これは要するに
DllCallの第1引数にDLLとそこに含まれる関数っぽい文字列があったらスクリプト起動時に自動でロードするよ
前みたいに手動でロードしなくてもパフォーマンスいいよってことなんでしょうか?
928 :
名無しさん@お腹いっぱい。
2016/02/07(日) 14:24:53.95 ID:yl/DmUMO0
スクリプト開始前に標準でロードされる kernel32 や user32 とかに含まれる関数についての記述じゃない?
929 :
名無しさん@お腹いっぱい。
2016/02/08(月) 01:58:02.63 ID:PlMBdE7f0
指定したURLに接続する為に、バックグラウンドで処理できるコマンドってありますか?。
RunコマンドにHideをつけても、既定のブラウザが起動してしまいます(当然ですが)。
よろしくお願いします。
930 :
名無しさん@お腹いっぱい。
2016/02/08(月) 08:34:49.94 ID:+XgCSbhF0
>858-862は?
931 :
名無しさん@お腹いっぱい。
2016/02/08(月) 09:48:49.65 ID:iHqSQtrr0
データ読みたいだけならurldownloadコマンドでローカルに落としたhtmlファイルを使うのもあり
932 :
名無しさん@お腹いっぱい。
2016/02/08(月) 14:26:08.15 ID:PlMBdE7f0
933 :
名無しさん@お腹いっぱい。
2016/02/08(月) 16:12:38.46 ID:Qal8acFS0
>>932 何したいのかわかないけど、このスレ上の方で出てきた
UrlDownloadToVar()
を使うとか、
ie := ComObjCreate("InternetExplorer.Application")
してIEを使とかで何かはできると思う
934 :
名無しさん@お腹いっぱい。
2016/02/08(月) 17:37:58.23 ID:f9683+hK0
935 :
名無しさん@お腹いっぱい。
2016/02/09(火) 20:59:15.43 ID:cUzoOyiz0
>>928 そこの辺はPerformanceの最初の1〜2行あたりに書いてあるので違うみたいです
"MulDiv"みたいな文字列をDllCallの第1引数に書けみたいにあるんですけど
実際にDllCall("MulDiv",〜)みたいなサンプルがなくてちょっと判断つかないんです
936 :
名無しさん@お腹いっぱい。
2016/02/11(木) 11:18:41.52 ID:nGhsXvH/0
1つの条件に当てはまる複数のウインドウ(やプロセス)の全部に同じ処理をしたいのですが
そういう処理のコードの定型というかひな形ってどこかにないでしょうか
URLを出さないで「こういうワードでぐぐると出るんじゃない」で良いです
937 :
名無しさん@お腹いっぱい。
2016/02/11(木) 12:16:22.17 ID:x7MngUCr0
>>936 GroupAdd ifWinActive ahk_group
とか、かな
938 :
名無しさん@お腹いっぱい。
2016/02/14(日) 08:43:30.59 ID:I76FbWwN0
スクリーンキーでautohotkey使いたいんだけど、スクリーンキーをハードキー
互換にすると動作するけど標準の、キーが大きい奴にするとダメみたい。
互換キー打ちづらいんで標準ので使いたいんだけど無理なの?
939 :
名無しさん@お腹いっぱい。
2016/02/14(日) 23:46:40.69 ID:A98Q66fu0
OSの言語設定が日本語だとKindle for PCというアプリで
Ctrl+Cによる選択テキストのコピーが出来なくなるというしょうもない制限が加えられてるんだけど
AutoHotKeyでなんとか選択テキストを取得する方法があったら教えて下さい。
範囲選択-検索-エディットボックス全選択-コピー
という手順で一応はできるもののマウス操作が必須になるのでかなり面倒なので
直接テキストを取得したいです。
940 :
名無しさん@お腹いっぱい。
2016/02/15(月) 00:27:28.20 ID:IFXE4lNi0
なんと投げやりな質問の連投だ
941 :
名無しさん@お腹いっぱい。
2016/02/15(月) 11:34:02.86 ID:OfdliztE0
>範囲選択-検索-エディットボックス全選択-コピー
Kindle使っとらんがこの動作をそのままエミュればできるんじゃろ?
メニューにアクセラレータついてるならキーボードショートカット投げればいいし
ないならMouseClickで頑張ればいけるいける(無責任)
942 :
名無しさん@お腹いっぱい。
2016/02/18(木) 00:26:40.08 ID:kLB4w16r0
あげ
943 :
名無しさん@お腹いっぱい。
2016/02/19(金) 15:56:02.02 ID:72zKpX180
Windows10でモダンアプリを全画面表示させるにはどうすればいい?
最大化ならWinMaximizeで出来るけど、全画面表示はわからなかった
最小化の左側にある斜めの両端矢印押してなる状態にしたいです(戻すのも判れば是非
944 :
名無しさん@お腹いっぱい。
2016/02/20(土) 09:11:54.59 ID:O1A3N3uo0
joyボタン押したらsend,rで押下sleep100のあとsend,eでjoy離すまで両方押下し続け
joy離したらrとe解除ってのがうまくいかないんだが解決方法がわからない
joy離したあともrとeが押された状態になってしまう
945 :
名無しさん@お腹いっぱい。
2016/02/20(土) 09:17:45.54 ID:Q8HPZ8rz0
添削してほしいならソース貼らないと
946 :
名無しさん@お腹いっぱい。
2016/02/20(土) 11:01:15.37 ID:O1A3N3uo0
>>945 ごめんなさい いろいろやってるうちに事故解決した
947 :
名無しさん@お腹いっぱい。
2016/02/20(土) 19:54:27.11 ID:2p5n/pNH0
>>946 何でハマっていて、何をやったら解決したの?
わかる範囲でいいからきちんと報告するのが、
質問を取り下げる際のマナーかと。
948 :
名無しさん@お腹いっぱい。
2016/02/23(火) 21:23:05.45 ID:Xp9y/2LK0
InStr(String, Needle [, CaseSensitive=false, StartingPos=1, Occurrence=1])
これのNeedleのとこって変数を%で囲ったやつってつかえないんですか?
949 :
名無しさん@お腹いっぱい。
2016/02/23(火) 21:30:20.32 ID:+Po+jle40
関数は式の一種
つまり変数は展開される
%で囲うと二重展開になる
950 :
名無しさん@お腹いっぱい。
2016/02/23(火) 21:49:59.79 ID:utaToXHm0
使えるよ
951 :
名無しさん@お腹いっぱい。
2016/02/23(火) 22:42:59.53 ID:Xp9y/2LK0
>>949 %で囲わなきゃつかえるんですか?試しにやってみたらだめでした。
952 :
名無しさん@お腹いっぱい。
2016/02/23(火) 22:52:30.21 ID:utaToXHm0
使えると言っとろーが
a := "b"
b := "2"
msgbox, % Instr("12345",%a%)
953 :
名無しさん@お腹いっぱい。
2016/02/24(水) 00:28:32.30 ID:/XAaOF2n0
>>952 ありがとうございます。もうひとつ質問なんですけどNeedleのとこに存在しない変数をいれると1が返ってくるのはなんでですか?
954 :
名無しさん@お腹いっぱい。
2016/02/24(水) 16:03:07.71 ID:wI3EFvuP0
Cのstrstrあたりのnullだった場合常に先頭アドレスを返す仕様に合わせたとかじゃない?
955 :
名無しさん@お腹いっぱい。
2016/02/24(水) 17:51:02.18 ID:4O1lOWZS0
ControlClick, TrayClockWClass1, ahk_class Shell_TrayWnd, , LEFT, 1, NA, ,
タスクトレイの蕎麦の時計を表示させるホットキーを作りたくてControlClickを上のように使ってみたんですが
上手くいきません(クリックはされるが時計が表示されない)
DetectHiddenWindows, On
DetectHiddenText, On
SetControlDelay, -1
などの設定も加えてみたけどダメでした
ClickやMouseClickを使うとちゃんと時計が表示されますが
マウスカーソルも一緒に動いてしまうのでできればControlClickを使いたいです
どこが悪いんでしょうか?
バージョン1.1.23.01
OSはVistaです
956 :
名無しさん@お腹いっぱい。
2016/02/24(水) 23:34:16.66 ID:mEzqiII20
すみませんお尋ねします。
以下の場合ですと、abcdがあった場合の処理になりますが
If Hensuu in a,b,c,d
これを逆の意味にしたい場合はどうすればよろしいでしょうか?。
inの後に!付けてみたりしましたけど、出来ませんでした。
よろしくお願いします。
957 :
名無しさん@お腹いっぱい。
2016/02/24(水) 23:48:23.57 ID:j9b25chj0
inは完全一致
not contains
958 :
名無しさん@お腹いっぱい。
2016/02/24(水) 23:49:10.64 ID:NZu0JMtd0
逆の意味の意味が分からない
959 :
名無しさん@お腹いっぱい。
2016/02/24(水) 23:56:20.24 ID:TQHwr7NV0
逆の意味の意味が分からないの意味が分からない
960 :
名無しさん@お腹いっぱい。
2016/02/25(木) 00:07:26.14 ID:aWMHhlsY0
>>957 これでやっとやりたい事が出来ました!本当に有難うございます。
961 :
名無しさん@お腹いっぱい。
2016/02/26(金) 23:37:19.06 ID:c3dUApig0
AHKでIEにユーザースタイルシートを適用させる方法ってありますか?
ページごとに毎回カスタムしたcssを適用させて表示させたいんですけど
COM?か何かで簡単にできないでしょうか。
962 :
名無しさん@お腹いっぱい。
2016/02/27(土) 06:32:55.36 ID:s4FqRL8E0
お世話になります。
あるホットキーを押したあと、modifier keys(Windowsだと何て言うんだろう)を
いったん離さないと同じホットキーが再度実行されません。
具体的には、
!#@::RunWait "C:\Users\taro\bin\臨時.ahk"
という記述を含むスクリプトを常駐させています。
で、Alt+WinL+@ を押すとこの臨時スクリプトが実行されるのはいいのですが、
AltとWinを押しっぱなしのまま @ だけを離し、再度 @ を押しても反応しません。
AltとWinも離してから再度 Alt+Win+@ を押すと実行されます。
これはAHKなりWindowsなりの仕様でしょうか、それとも何か対策があるのでしょうか?
#ところで、そろそろ次スレの時期ですね。
#このテンプレで私が建てるのは荷が重いので、どなたかお願いします。
963 :
名無しさん@お腹いっぱい。
2016/02/27(土) 06:34:04.60 ID:s4FqRL8E0
> で、Alt+WinL+@ を押すと
Alt+WinL+@ ですね。失礼しました。
964 :
名無しさん@お腹いっぱい。
2016/02/27(土) 07:47:35.49 ID:q2kyzV5F0
965 :
名無しさん@お腹いっぱい。
2016/02/27(土) 08:36:50.59 ID://5bYKsR0
966 :
名無しさん@お腹いっぱい。
2016/02/27(土) 11:18:49.95 ID:q2u7+W5a0
リンクを自動クリックしたいんだけど文字列をクリックする方法を教えてくれませんか
せめてヒントを
967 :
962-963
2016/02/27(土) 11:43:50.58 ID:s4FqRL8E0
>>965 > Alt+Win押しっぱなしでも動くよ
> 前の臨時スクリプトが終わってないとか?
うーむ。
投稿してから気づいたんですけど、他のホットキーも、
終わる前にAltを離すと効いてくれないことがあるんです。
もしかしたら、そのホットキーでAltとかCtrlとかの
キー操作をしているからかもしれませんね。
あとは前のほうで変な記述をしてしまっているとか。
>>964 次スレ(とpaqrt17も)、ありましたか。早速ブックマークしますた。
968 :
名無しさん@お腹いっぱい。
2016/02/27(土) 11:47:17.61 ID:s4FqRL8E0
>>966 一応MouseMoveとかコマンドはあるけど、ウェブブラウザの話でしょ?
どこかにフォーカスしてからTabの繰り返しで当該リンクに移動して、
Send {Space}あたりでリンクをたどるのが無難そう。
AHKスレで言うのもなんだけど、マウス操作ならUWSCのほうが重度が高いと思う。
969 :
名無しさん@お腹いっぱい。
2016/02/27(土) 19:39:00.38 ID:NpPpvizx0
VBAでIE制御するようなとこ見たら、なんかAHKでもできそうな気がした
まぁ、UWSCならIE制御機能があるから、そっち使えってのは同意
970 :
名無しさん@お腹いっぱい。
2016/02/29(月) 12:28:08.70 ID:Zb0MnwRD0
Windows7でFirefoxを使っているのですが、メニューバーや右上の最大最小ボタン、終了ボタン、ステータスバー等すべて
なくして、周りの細い枠だけにしたいのですが、AHKで出来ますか。
また、Escキーを押すと、もとに戻す、みたいなことをしたいのです
971 :
名無しさん@お腹いっぱい。
2016/02/29(月) 17:20:39.05 ID:jXgG2oK20
>>966 クリックじゃないとダメ?
ソースコードからリンクのURL読みとってRunで起動するとかはどうよ
972 :
名無しさん@お腹いっぱい。
2016/02/29(月) 17:36:14.98 ID:/ACyuXg30
>>970 ウィンドウスタイルを変更すれば出来そうだね
WinSet, Style, -0xC40000, ウィンドウクラス
例えばこれはウィンドウ枠を非表示にする
詳しくはWikiで検索
973 :
名無しさん@お腹いっぱい。
2016/03/01(火) 04:24:00.86 ID:ne5377Jg0
テキストから2chのレス番号+日付+IDの行全体を抽出して"名無し"に書き換えることは可能でしょうか
正規表現を使って特徴的な文字列を抽出しその部分だけを置換することはできたのですが行全体を置換する処理がわかりません
hogehoge := RegExReplace( hogehoge, "20\d\d/\d\d/\d\d\(.\)\s\d\d\:\d\d\:\d\d\.\d\d\sID\:", "名無し")
974 :
名無しさん@お腹いっぱい。
2016/03/01(火) 07:09:01.30 ID:HF5AuRBD0
Wikiとかで RegExReplaceの構文を見ると解決すると思うよ
975 :
名無しさん@お腹いっぱい。
2016/03/01(火) 08:10:47.24 ID:JlOZDt3R0
^.*$あたりの文字表現組み合わせればできる
行またがないなら難しくないから自分で調べてやってみ
この後ズバリの構文書いてくれる人が出てくるかも知れんけど
専ブラだとスキンで事前書き換えされてる場合もあるからマッチするかはわからんよ、と言っておく
976 :
名無しさん@お腹いっぱい。
2016/03/01(火) 23:39:54.84 ID:4IW6kk2b0
>>973 ^→行頭、$→行末、\n or \r→改行
この辺を最初と最後につければいいよ
977 :
名無しさん@お腹いっぱい。
2016/03/02(水) 13:18:12.43 ID:G8mqzm2J0
たったいまインストールしました
AutoHotkey.exeたたくと英文ヘルプが開くだけ
これ正常?
978 :
名無しさん@お腹いっぱい。
2016/03/02(水) 13:29:53.94 ID:ICfYF5in0
>>977 マニュアルも読めないなら使わない方がいい
979 :
名無しさん@お腹いっぱい。
2016/03/02(水) 13:40:58.13 ID:G8mqzm2J0
なるほど 捨てるわ
980 :
名無しさん@お腹いっぱい。
2016/03/02(水) 15:23:08.11 ID:TmGfNyxx0
exeたたくとドラえもんの絵が出てきて、声で質疑応答するだけでコード吐いてくれて、
なんでも叶えてくれるバージョンが出るまで待った方がいい
981 :
名無しさん@お腹いっぱい。
2016/03/02(水) 18:03:23.79 ID:YyxPTPzz0
このスレの消化ペース的に、次スレは980が建てるくらいでも丁度いいくらいだな
982 :
名無しさん@お腹いっぱい。
2016/03/02(水) 23:55:54.47 ID:FXsaWFES0
>>977 >AutoHotkey.exeたたくと
まさか頭叩いたんじゃないだろうな?
そりゃ怒ってへそ曲げるわ、尻叩けよ尻
983 :
名無しさん@お腹いっぱい。
2016/03/03(木) 04:54:56.74 ID:pm9hwHKc0
つまらなすぎ、お前も使うのやめろ
984 :
名無しさん@お腹いっぱい。
2016/03/03(木) 13:22:30.34 ID:ufDldIoC0
ほんとテンプレ誘導するだけでいいのになんで無意味に煽るんだろうね
985 :
名無しさん@お腹いっぱい。
2016/03/03(木) 13:56:27.94 ID:Q76jowT40
まあ捨てるわって書き込まれた後だとどんなアドバイスも無駄ではあるが
頭の悪い叩きレスが続くとウンザリするな
986 :
名無しさん@お腹いっぱい。
2016/03/03(木) 14:40:52.18 ID:oYDRVaNE0
この流れの、すべての原因は 「なるほど 捨てるわ」 だろ
987 :
名無しさん@お腹いっぱい。
2016/03/03(木) 14:59:44.95 ID:uhvT3GF70
行儀の悪い一見客を叩くなとは言わんがドラえもんとか頭だ尻だと
読んでる方が恥ずかしくなる脱力煽りはやめて欲しいわ
988 :
名無しさん@お腹いっぱい。
2016/03/03(木) 15:17:45.82 ID:WPsDe2Es0
A_OSVersion で、WIN_10が判定できないのですが、みなさんはどうやってますか?
WinMoveの座標や幅がWindows10では特殊なので判定したいと思うのですが。
989 :
名無しさん@お腹いっぱい。
2016/03/03(木) 15:30:42.96 ID:oYDRVaNE0
>>988 うちでは普通に判定できてるから、ahkのバージョンを上げてみたら?
ちなみに10から表記にbuild番号が含まれるので、アップデートでころころ変わるはず。
ifinstringで判定した方がよいと思う
A_OSVersion=10.0.10240
990 :
名無しさん@お腹いっぱい。
2016/03/03(木) 15:48:32.96 ID:WPsDe2Es0
ありがとうございます。バージョンを上げてみます。
991 :
名無しさん@お腹いっぱい。
2016/03/04(金) 12:20:45.28 ID:nqr/1isu0
うめ
992 :
名無しさん@お腹いっぱい。
2016/03/04(金) 12:23:01.83 ID:nqr/1isu0
う
993 :
名無しさん@お腹いっぱい。
2016/03/04(金) 12:23:36.17 ID:nqr/1isu0
め
994 :
名無しさん@お腹いっぱい。
2016/03/04(金) 12:38:39.04 ID:fL2QFAjG0
ぼ
995 :
名無しさん@お腹いっぱい。
2016/03/04(金) 13:59:20.74 ID:rBpRmPEZ0
レ
996 :
名無しさん@お腹いっぱい。
2016/03/04(金) 15:18:52.81 ID:AOhxcPLu0
デ
997 :
名無しさん@お腹いっぱい。
2016/03/04(金) 15:42:20.36 ID:gTzFd/Gr0
コンパイルしたexeを、Autohotkey.exeのように使う事は流石に無理ですよね?
998 :
名無しさん@お腹いっぱい。
2016/03/04(金) 15:45:12.70 ID:7dQXD5Ga0
999 :
名無しさん@お腹いっぱい。
2016/03/04(金) 19:10:33.70 ID:QoXurBCJ0
梅
1000 :
名無しさん@お腹いっぱい。
2016/03/04(金) 19:13:43.06 ID:QoXurBCJ0
UMR
1001 :
1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
1002 :
1002
Over 1000 Thread