X



AutoHotkey スレッド part24 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
0001名無しさん@お腹いっぱい。 転載ダメ©2ch.net (ワッチョイ 997d-+Qhn)
垢版 |
2017/02/15(水) 18:04:32.01ID:kshCKhXn0
!extend:checked:vvvvv:1000:512と次スレを立てる際は1行目に記入してください

■配布元
http://ahkscript.org/download/

■前スレ
AutoHotkey スレッド part23
http://potato.2ch.net/test/read.cgi/software/1470936221/

■日本語解説等
AutoHotkey Wik
http://ahkwiki.net
AutoHotkeyを流行らせるページ(ミラー)
http://ahk.xrea.jp/ (不調時は http://hdd.s300.xrea.com/ahk/ )
AutoHotkeyJp(過去ログdatあり)
http://sites.google.com/site/autohotkeyjp/
Autohotkey日本語ヘルプ(chmファイル)
http://www6.atwiki.jp/eamat/
Autohotkey専用うpろだ
http://ux.getuploader.com/autohotkeyl/
簡易スクリプト掲示板
http://pastebin.com/

■派生版
IronAhk (.NET製、クロスプラットフォーム)
https://github.com/polyethene/IronAHK
AutoHotkey.dll (真のマルチスレッド対応など, AHKLの派生)
http://www.autohotkey.com/board/topic/39588-autohotkeydll/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
0952名無しさん@お腹いっぱい。 (ワッチョイ 3e67-xkdj)
垢版 |
2017/09/10(日) 05:56:51.93ID:Gp5DYXYz0
MButton::
if(clickEnable = true)
clickEnable := false
if(clickEnable = false)
clickEnable := true
loop{
click
sleep 250
if(clickEnable = false){
break
}
}
return

ミドルキーを押すと連打、もう一度押すと連打解除のスクリプトを作りたくて組んだのですが、
連打解除が出来ない状態です。
どなたかアドバイスをお願いします。
0957名無しさん@お腹いっぱい。 (ワッチョイ 3e67-xkdj)
垢版 |
2017/09/10(日) 09:07:45.68ID:Gp5DYXYz0
clickEnable := false

MButton::
if(clickEnable = true)
clickEnable := false
else if(clickEnable = false)
clickEnable := true
loop{
SetTimer, click , 250
if(clickEnable = false){
break
}
}
return

すいません。
やはり動きませんでした。
更に助言を頂ければ幸いです・・・。
0960名無しさん@お腹いっぱい。 (ワッチョイ 0b87-x/0H)
垢版 |
2017/09/10(日) 09:46:26.55ID:HxrW5Xht0
最近やり始めた。

ファイルがあればおkとか初めの?にも書いてあるし
ネットの入門ページにもEXEダブルクリックでおkとか書いてあるのに
結局ファイル取らせないと起動しない上
?ページの英語頑張ってよみつつ検索してもencordでマッチしないし
webページはバージョン違いで参考にならないから
コンテキストメニューからの生成で8Bってわかって変えてやりかたかった
win+Tへのリマップいきなりできたからイイけど

そもそも同じ場所に3つもEXEあるしソレゾレの説明が無い。
まぁこのスレの説明から恐らくU32がオススメなんだとは思うが
沢山あるネット入門ページが変なのは今までの歴史の重積のセイだと思うんだけど、
コレじゃ新規ゆとりんには流行らんわコレ

あまりに案内がメチャクチャ過ぎる
0961名無しさん@お腹いっぱい。 (ワッチョイ 0e67-njbG)
垢版 |
2017/09/10(日) 10:33:39.93ID:ZLodYEhw0
>>960
ほんとそれ

> ファイルがあればおkとか初めの?にも書いてあるし
> ネットの入門ページにもEXEダブルクリックでおkとか書いてあるのに
> 結局ファイル取らせないと起動しない上

EXEファイルと同じ名前のAHKファイルを起動するだけならEXEダブクリでおk

> そもそも同じ場所に3つもEXEあるしソレゾレの説明が無い。
> まぁこのスレの説明から恐らくU32がオススメなんだとは思うが

A32→Ansi/32bit版、U32→Unicode/32bit版、U64→Unicode/64bit版
PCが32bitなら32bit版、64bitなら64bit版
基本はUnicode版推奨だけど、一部の古いスクリプトを動かしたいだけならAnsi版が都合のいい時があったりなかったり

> 沢山あるネット入門ページが変なのは今までの歴史の重積のセイだと思うんだけど、
> コレじゃ新規ゆとりんには流行らんわコレ

Unicode版の登場と、最近A32・U32・U64が同じパックで配布されるようになって入門のあたりはだいぶ信用できなくなってるけど
それ以外は昔の記事でも役に立つから…(震え声)
0962名無しさん@お腹いっぱい。 (ワッチョイ 17ec-x/0H)
垢版 |
2017/09/10(日) 10:57:13.22ID:9Ln2fu6j0
むかし流行らせた本人はもう流行らせたくないつってサイト閉めちゃったからねぇ
正直>960が何言ってるのかよくわからんが AHK分かりにくいよ何参考にしたらいいんだよ ってこと?

アプデ追従常時最新じゃないにしろ AutoHotkey Wikiなら情報古すぎて役に立たないってことはない
AHK v2についてはα版だし解説も少ないので初心者がいきなり手を出さないほうがいい
0963名無しさん@お腹いっぱい。 (ワッチョイ 0e67-njbG)
垢版 |
2017/09/10(日) 11:43:33.03ID:ZLodYEhw0
>>952>>957
勘違いだったら悪いけど、スクリプトがどういう順番で動いているかの理解がいろいろ間違ってる

@最初にミドルを押すとMButton::ラベルが実行されるけど、もう一度ミドルを押したときは実行されない(正確にはスレッドの割り込みが行われない。詳しくはThreadとか)
Aループ中にclickEnableをfalseにする処理がないから、一度目のループが永遠にbreakしない(動かないように見えるだけで、実際はずっと必死にループしてる)
BSetTimerは別にラベルが必要

やり方としては、一度のMButton::ラベルの中だけで全部終わらせるようにする
具体的にはloopの中に、2回目のミドルクリックをkeywaitかinputとかgetkeystateとかで感知してbreakする処理を入れてやる
keywaitおすすめ
0966名無しさん@お腹いっぱい。 (ワッチョイ 17ec-x/0H)
垢版 |
2017/09/10(日) 17:54:59.37ID:9Ln2fu6j0
キーボードだったらキーリピート発生するから>893みたいな例でKeyWaitやGetKeyState使えるけど
マウスの場合 Send, {Lbuton Down}してもクリック連打にはならないので
MButton::スレッド内で完結させるのは難しい

KeyWait中はクリック連打させられないしGetKeyStateでBreakしちゃったら
その後の再押下までやっぱりクリック連打されない
Loopは諦めて素直にSetTimerにしたほうがいい
0968名無しさん@お腹いっぱい。 (ワッチョイ 0e67-njbG)
垢版 |
2017/09/10(日) 20:08:04.68ID:ZLodYEhw0
>>954
俺の書き方が悪かった、その調整で大体あってるけどそれだと
ループに入った後に次のミドルクリックをひたすら待って2回目のミドルクリックでbreakしてるか
あるいは1回目のミドルクリックが離される前にkeywaitの判定に入っちゃって即座にbreakしてる
どちらにしろループの1回目でbreakしてるから連打できてない

>>967の人ので動いてくれると思う
クリック

ミドルクリックが押されるのを待つ、ただし250ミリ秒たったらタイムアウト(sleepの行の節約にもなる)

タイムアウトしなかったら(errorlevelが0なら)、つまり2回目のミドルクリックされたらbreak
タイムアウトしたら(errorlevelが1なら)次のループへ

ループの前のkeywaitは、1回目のミドルクリックが離されるのが遅くて即座にbreakしてしまうのを防ぐ保険だと思う

あと最初に言えばよかったんだけどlistlinesかタスクトレイメニューのOpenでスクリプトの流れが見えるから
今回くらいの短さのやつならそっちを確認しながらやるといろいろ捗る
0969名無しさん@お腹いっぱい。 (ワッチョイ 0e67-njbG)
垢版 |
2017/09/10(日) 20:56:51.46ID:ZLodYEhw0
せっかくだからタイマー使うやり方も
スレッドが2つになるのがあんまり好みじゃないけど、こっちの方が最初に希望してた動作に近いかな?

MButton::
clickEnable := clickEnable ? false : true
if(clickEnable = true)
settimer, clicktimer, 250
else if(clickEnable = false)
settimer, clicktimer, Off
return

clicktimer:
click
return
0972名無しさん@お腹いっぱい。 (ワッチョイ ff77-WPj4)
垢版 |
2017/09/11(月) 12:47:39.81ID:rdkmRnoo0
>>961
今から始めるなら基本はU32版。
これなら普通に使っている限り、Windowsが32bitでも64bitでもきちんと動いてくれる。
U64版は64bit版のWindowsにしかない機能を使うときのためのもの。
A32版はWindows95/98/Me/NT4をまだ使っている人と、
その時代のスクリプトを手直しせずに使いたい人のためのもの。

ちなみに俺の場合、64bitマシンのProgram Filesには素直に64bit版を入れているけど、
Ahk2ExeでコンパイルするときはA32・U32・U64 を3つとも作るようにしている。
…で、ほとんどの場合は持込先が64bit OSでもU32のEXEファイルだけで事足りている。
今のところ、Win64のDLLを使うとか、よほど巨大なデータを扱うとかしない限り、
「迷ったらU32版」で何も問題ないと思うよ。
0975名無しさん@お腹いっぱい。 (ワッチョイ 0e67-njbG)
垢版 |
2017/09/11(月) 21:30:39.92ID:gvgo1xfh0
>>971
settimerはコマンドで、settimerのパラメータにユーザー定義ラベルを指定する必要があって
ユーザー定義ラベルの代わりにユーザー定義関数が最近使えるようになった、てのが正確なところだけど…
まあ当初の目的が達成できたならよかったよ
0983名無しさん@お腹いっぱい。 (ワッチョイ 5a87-HP8N)
垢版 |
2017/09/12(火) 10:45:08.23ID:T5YGvLqj0
すみません質問いいでしょうか?
何枚か重なったウィンドウで1番裏にあるウィンドウをアクティブにするコードなんですが
グループを指定しなくても出来ますか?
特に指定や除外条件が無いので簡単に最裏を指定したいです。

;Auto-execute Section
;〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
GroupAdd, UraWindow, ahk_exe firefox.exe
GroupAdd, UraWindow, ahk_class WindowsForms10.Window.8.app.0.141b42a_r14_ad1
GroupAdd, UraWindow, ahk_class MontBlancApp_mtvGuide
Return
;〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
#x::
WinActivateBottom, ahk_group UraWindow
Return
0990983 (ワッチョイ 5a87-HP8N)
垢版 |
2017/09/13(水) 03:27:48.82ID:fOGI8mDI0
無理みたいですね
+!{tab}は使えませんでした
私の環境だとAlt+Tabはモニタ毎にそれぞれで起動してるタスクを表示させてるので
全体のタスクから拾えないんです
どのみち最少化してるのまで含んでしまうし駄目ですけどね

試行錯誤しながらクラス名書き出してたらとりあえずいっぱいになったので
このまま突き進みます

ありがとうございました。
0992名無しさん@お腹いっぱい。 (ワッチョイ 714d-b7qB)
垢版 |
2017/09/14(木) 00:43:31.34ID:bO4XyPKz0
>>990
DllCallでGetWindow関数を使えば、
最裏(つまりデスクトップの一つ上)のウィンドウを取得することができるかもしれない
申し訳ないがDllCallに詳しくない自分のテストではデスクトップを取得するだけに至り、その上のウィンドウ取得ができなかった
しかしGetWindowはアプローチとしては良いと思ったので提案
0993名無しさん@お腹いっぱい。 (ワッチョイ 2bf3-BM26)
垢版 |
2017/09/14(木) 07:56:08.61ID:21FBV48V0
ただの発想なので欠陥だらけかも…
それに、うまく行ったとしてもタイムラグ激しそう

-------------------------
WinGet, OutputVar, list
で存在する全てのウィンドウを列挙し、(loopで回すのが賢い)
GroupAdd, UraWindow, ahk_id OutputVar1
GroupAdd, UraWindow, ahk_id OutputVar2
      ・
      ・
で取得した全ウインドウハンドルを次々にグループに登録し、
WinActivateBottom, ahk_group UraWindow
で実行
-------------------------

例えばこのスクリプト↑を「a.ahk」とし、

-------------------------
#x::
run, a.ahk
Return
-------------------------

という「b.ahk」スクリプト↑を常駐させる
0994名無しさん@お腹いっぱい。 (ワッチョイ 2bf3-BM26)
垢版 |
2017/09/14(木) 08:02:12.92ID:21FBV48V0
>>993>>990へのレス
そして訂正
>で存在する全てのウィンドウを列挙し、(loopで回すのが賢い)
の(loopで回すのが賢い)は、間違い
正しくは↓
で取得した全ウインドウハンドルを次々にグループに登録し(loopで回すのが賢い)、

ですた、スマンOTZ
0997名無しさん@お腹いっぱい。 (ワッチョイ c977-fKjf)
垢版 |
2017/09/14(木) 12:08:58.65ID:uijNj4qb0
次スレです。

AutoHotkey スレッド part25
http://egg.2ch.net/test/read.cgi/software/1505357560/

連投規制でテンプレを最後まで貼れなかったので、誰かヨロ。
0998名無しさん@お腹いっぱい。 (ワッチョイ c977-fKjf)
垢版 |
2017/09/14(木) 12:12:14.96ID:uijNj4qb0
あ、しまった、いま気付いたけど、
「!extend:checked:vvvvv:1000:512と次スレを立てる際は1行目に記入してください」
>>1の頭に2回書かないといけないのか。
最近の2chは色々と難しいなあ…。
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
SLOT Results
🎰🎰🎰 Excellent!! 0
🎴🎴🎴 Gratz!! 0
🌸🌸🌸 OPPAI Ban!! 0
💣💣💣 Backingum!! 0
Win!! 1
Points 7 pts.

life time: 210日 18時間 27分 44秒
10021002
垢版 |
Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/

▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況