AutoHotkey スレッド part24 [無断転載禁止]©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
!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) >>850
環境と状況と問題のスクリプトが書かれていないのだけど? >>849
なるほど、そういう方法ですね
ウインドウのIDから直接そのウインドウにお絵かきすることはさすがに出来ませんか
Dllとか使ってもいいのですが Win10のupdateを高速化・安定化するスクリプトください >>852
MouseGestureL(.ahk)でジェスチャーの軌跡を描画できてるから、
いわゆる"お絵描き"は可能と思われるのでスクリプト解析してみては? PixelSearchは指定した色が存在するときにヒットしますが
逆に指定した色が存在しないときに、座標を取得することはできますか?
PixelGetColorをLoopしてやってみましたがかなり遅かったので・・ 失礼しました具体的に書きますね
ブラウザ上でyoutubeの動画が再生されている座標(とりあえずX座標)を取得したいです
背景が0xF1F1F1ですので
左から色を検索して、0xF1F1F1ではなくなるX座標を取得すればいいと思いますが
それができないです >>857
flash playerの現在位置を知りたいってことだよね?
だったら、ControlGetPos でflash playerのControl class名(aPluginWinClass1)を元に左上角の位置が取得できる
あとはSetTimerで回しとけばスクロールして場所が変わっても常に最新の位置が取得できる >>858のレス取り消し
あーとんだ間違いを犯してしまった
今はhtml5なんだっけか >>858
そうですplayerの現在位置です
情報有難うございます Array := Object()
Array[0] := [1,2,3]
Array[1] := [10,20,30]
Array[2] := [100,200,300]
こんな感じの配列のそれぞれのキーの値を1つずつ取り出して
1,10,100、1,10200、1,10,300、1,20,100……
という全ての組み合わせが欲しい場合、どういう処理をすればいいですか?
上の例ではキー3つ、値3つずつしかありませんが、実際に処理したい内容は
配列のキーの数は1〜13、1つのキーに含まれる値は1〜25程度あります。 >>861
msgbox, % Array[0,1]
msgbox, % Array[1,2]
msgbox, % Array[2,3]
他にもっと良い方法があるのか分からないが、後は自分でガンバってね >>862
すまん、なんか質問の答えじゃなかったな
単に数値を引っ張り出しただけだったorz 書き込めるようなのでお聞きしたいのですが。
ローカルにあるファイルを書き換えたり、開いたりしたくて
・・・・(動作記述) C:(以下フルパス).test.txt
・
・
・・・・(動作記述) C:(以下フルパス).test.txt
・
・
・・・・(動作記述) C:(以下フルパス).test.txt
のように同じファイルを扱う記述を何回かくりかえすのですが
場所を変えるたびに何か所も書き換えるのが面倒なんで
一か所変数にフルパスを入力して以下そこを参照してって構造にしたりできませんか? なんのコマンドか知らんけどファイルパスはたいてい変数使えるでしょ ありがとうございます
今は記述見られる環境にないのですが、fileappendとRunだったと思います
具体的にどのように記述したらよろしいのでしょうか?
fileappend,Text,C:・・・.test.txt
Run,C:・・・.test.txt WikiのFileAppendのページの例の通り普通に変数に入れて使うだけだが…… >>867
答えもらったら再質問は最低限調べてからにしなよ
何度も書いてるけどここはドンピシャのコードもらうためのスレじゃないから 調べてはいますけど、今調べても試す環境がなく
試せる環境に戻るとここで質問ができない環境になるんでより精度の高い回答が欲しかったんです Win10になってからAHKいじる気起きなくなってきた(そもWin10自体いじりたくない) classNNやウィンドウハンドルで区別できないボタンを押すのに、座標を指定してクリック以外の方法で押す方法ないですか? 近くのボタンからtabや矢印キーで移動もできません >>861
k:=Array.MaxIndex()
a:=[]
f(0)
f(i){
global Array,a,k
Loop,% Array[i].MaxIndex()
{
a.Push(Array[i][A_Index])
if (i < k)
f(i+1)
else
ここに来るごとに各組み合わせが取れる(配列a)
a.Pop()
}
}
適当に書いたが上手くいってるように見える
ほめられたやり方なのかどうかは知らない >>870
そのものずばり 変数 って回答もらってるんだからそれ以上の精度の回答なんてない思うが…
あなた過去にも咀嚼しないで再質問繰り返してる人だよね?
言っちゃ悪いけどこんなの 僕は自分で調べる気一切ありません て宣言してるのも同じだよ?
1. 質問する前にwikiの スクリプト仕様 を読み返す
2. 回答もらったらwikiの検索BOXにキーワード入れて検索
これが実行できないのならAHK使うの諦めたほうがいいよマジで
悪いけど質問していいレベルの事柄ですらない >>875
こういうのさらっと書けちゃう人すごい……ありがとうございます! スルーすりゃいいのにわざわざ嫌味だけ置き土産してくやつもどうかと思うわ 嫌みを言ってストレス解消のために
ここにいる人だから
その人の存在意義を否定しないでw >>873-874
他にはボタンのスクショを予め撮って置き、それをImageSearchで捜す
あとは、例えばボタン文字列が「開く(O)」みたいになってたら、send,!oでも行けそう
もっと有るかもしれないけど↑以外自分は分からない
そもそも何で座標を指定するやり方が嫌なのか分からないが、
もし、該当のボタン含むウインドウが表示する度に場所が変わるってことなら、
CoordMode, Mouse, Window で基準をウインドウ左上の角にすれば良いだけだと思うが・・・
でも、ボタンの位置がコロコロ変わるってんなら話は別で、やっぱ上記のやり方かなー 英語キーボードなんですが左altに無変換を同時に割り当てることってできます?
左altを無変換に割り当てたところalt+f4で閉じるが使えなくなったので
できれば慣れてるやり方で使えればと思いまして >英語キーボード
無変換の付いていない欠陥キーボードを窓から投げ捨てるのが一番手っ取り早い >>885
まず、レジストリ系のキー変更アプリで、左alt を f13 キーにしておく。
そして、↓のように書けば良いんじゃないかな。
f13 & f4::Send,!{f4}
f13::Send,{sc07B}
装飾キーはそのまま使うとたまに誤動作するから。 alt+F4の他にもaltキーなんて多用するんだからそもそも左altを無変換にすること自体が無謀だがな >>886
ノートなんで
>>887
やってみます。ありがとうございます わざわざPCを不便にするためにAHK使う人もいるんだな QorEを押したらもう一度押すまでおしっぱにされているスクリプトを見つけたんですが
シフトを押した場合おしっぱを解除したいんですが下記にどのようなコードを追加すればいいでしょうか?
https://autohotkey.com/boards/viewtopic.php?f=19&t=32339 keywaitの代わりにloop+getkeystate
追加というより書き直しになるんじゃね ahk 64bit unicode版 / windows10
UTF-8で保存すると文字列の閉じquoteの手前が「し」で終わるとエラーになります。
aaa := "かかし"
UTF-16だと無問題
これはバグですよね?? 指定時間に実行するタイマーを作りたいのですが、
ミリ秒を取得することはできますか? 多分簡単な内容かも知れませんが宜しくお願いします。
SPLASHとかてにWINSET等の方法又は 最前面に固定したアプリ又は画像ウィンドウの領域を反応させないで
表示させたまま下のウィンドウの操作をしたいのですが組み方としてはどうすれば良いんでしょう?
WinSet, AlwaysOnTop 等では画像分のアクティブになってしまうようでして。 >>901
透過ウィンドウのことだね
Gui, Add, Edit, h500 w500
Gui, Show, NA, TEST
WinSet, Transparent, 50, TEST
Gui, +AlwaysOnTop +E0x00000020
; WinSet, AlwaysOnTop, On, TEST ; 最前面
; WinSet, ExStyle, +0x00000020, TEST ; WS_EX_TRANSPARENT(透過ウィンドウ)
return >>902
あーーー!!!
コレです!
これだけわかればもうOKです。
有難うございます。こう指定すればよかったのですか…勉強になりました。 すみません質問いいでしょうか
やりたいのは アクティブなら最少化、非アクティブならアクティブに、起動してないなら起動です
他のプログラムではうまくいくのですがExplorer(ブラウザじゃない方)が起動しないです
" Run,C:\Windows\explorer.exe"以外の書き方ってありますか?
windows7です。よろしくお願いします
#E::
Process, Exist, explorer.exe
If (ErrorLevel <> 0)
{
IfWinActive, ahk_class CabinetWClass
{
PostMessage, 0x112, 0xF020, , , ahk_class CabinetWClass
}
Else
{
WinActivate, ahk_class CabinetWClass
}
}
Else
{
Run,C:\Windows\explorer.exe
}
Return エクスプローラのクラスはCabinetWClassの他に
ExploreWClass というのも(XPの頃は)あった
win10とか最近のOSはわからんけど
上手く行かないエクスプローラのクラスを調べなおしてみては ウインドウを1つも開いてなくてもexplorer.exeは常に起動しているものだけどそこを勘違いしてる? >>905
>Process, Exist, explorer.exe
>If (ErrorLevel <> 0)
だとどうやっても"Run,C:\Windows\explorer.exe"の行にはいかなかったので
IfWinExist , ahk_class CabinetWClass
にしたら動いたよ ところで話は逸れますがElseって書く必要あるんですか?
if{}で囲ったらElseって書いても省略しても挙動は変わらないですよね?
それとも何か違いがあるんでしょうか? >>910
やっぱりそうなんですね
ありがとうございます elseはifじゃないときの処理を書く
ifの時にはしたくない処理をelseに入れる
例)
Aが1の時は"OK"と表示する (if)
そうじゃない時は"NG"と表示する(else) >>912
はい
でも{}で囲ったらElse無くても同じ意味ですよね
{}の外は"そうじゃない時"になるので 俺なんかelse ifで12分岐してるで
自慢にもなりゃしないけど { }の外はもうifに支配されないので
そうでもそうじゃなくても実行される
{ }の中にreturnやgoto突っ込んで強制的に行き先変えてる場合は別だが >>907
失念してました
>>908
ありがとうございます解決できました
プロセスが常に起動してることを失念してたのが原因ですかね
プロセスじゃなくウィンドウが存在するかどうかで処理すればよかったのですね
>>909
ご指摘どうもです
上のElse 1つ余計で要らなかったですかね?
#E::
IfWinExist, ahk_class CabinetWClass
{
IfWinActive, ahk_class CabinetWClass
{
PostMessage, 0x112, 0xF020, , , ahk_class CabinetWClass
}
{
WinActivate, ahk_class CabinetWClass
}
}
Else
{
Run,C:\Windows\explorer.exe
}
Return >>914-916
ああ、なるほど
Returnを書いてない場合はElseが必要になるんですね
自分はいつもReturn付けてたので複数分岐してもElseは全く使っていませんでした >>917
Elseを使わない場合はこうですね
#E::
IfWinExist, ahk_class CabinetWClass
{
IfWinActive, ahk_class CabinetWClass
{
PostMessage, 0x112, 0xF020, , , ahk_class CabinetWClass
Return
}
WinActivate, ahk_class CabinetWClass
Return
}
Run,C:\Windows\explorer.exe
Return
書き方の違いだけでElse使っても同じ動作させられるので好みだと思いますが >>919
なるほど Returnを使うのですね
でもやっぱりElseがある方が条件分岐してるというのが分かりやすいかな
Elseを"そうでない場合は..."という感じで使ってるので。 >>919
うーん…
それ己が好きで使う分にはいいかも知れんけど人に薦めないほうがいいような
出口をむやみに増やす書き方は好みと呼ぶには変態すぎる
多重loopの深い階層から一気にアボートしたい場合時は自分も中途return使うけど基本的に変則処理だから
>>917
そこのelseは必要
行数減らしたいなら1行しか処理内容がない場合の{ }は省略可能
#E::
IfWinExist, ahk_class CabinetWClass
{
IfWinActive, ahk_class CabinetWClass
PostMessage, 0x112, 0xF020, , , ahk_class CabinetWClass
(else)
WinActivate, ahk_class CabinetWClass
}
Else
Run,C:\Windows\explorer.exe
Return >>921
別に人に薦めてるわけじゃないですよ
ただ初心者向けのwikiのサンプルコード集とかも{}の中にReturnを付けてElseを使わない書き方が
多かったので、たまたま自分はそれに慣れてしまったというだけですので
完全に独学なので何が変則とか分からないですしね >>919のコードも変則でも変態でもない
好きなように書けば良いんやで マウスのサイドボタン+ホイール上下で
firefoxのyoutubeの音量を調整するために下記のように設定したのですが
;Firefox音量調整
#IfWinActive ahk_class MozillaWindowClass
xbutton1::Send,^w
xbutton1 & WheelUp::send,{Up}
xbutton1 & WheelDown::send,{Down}
#IfWinActive
初めのうちは問題なく動作するのですがしばらくすると音量の上げ下げを受け付けなくなります
その際も xbutton1::Send,^w の方は受け付けています
その後、Reload This Script すると再び動作しますがしばらくするとまた
マウスの2ボタンを使ったスクリプトは受け付けなくなります
firefoxの問題かとも思ったのですがIEでも同じ挙動になります
どうすれば安定して動作するでしょうか? >>924
参考になるか分からんけど、自分もwheel操作にキーを送るスクリプト(>>819と同等の)使ってるが、
以前、「マウス関数群 (MUS.ahk)」ていう関数を使う別のホットキーのコードも併記していたら同じようになった
でも、MUS.ahk使うコードが不要になり、この関数を使わなくなったら以降同現象は発生しなくなった
※MUS.ahkが悪さしてたというより自分の書き方が悪かったのかもしれないので念のため 質問とは関係ないけど、うっかり閉じそうなキー設定だな >>925
ありがとう
自分は他のスクリプトは併用していないし念のため32ビットと64ビット両バージョンで試したけど
だめだった
仕様だと思って諦めます
>>926
そうなのよ、急に ^w だけ認識するようになって音量調整しようとしたらてタブが閉じるようになった 今頃気づいた
自分使ってないので分からないが、firefoxってホイールクリックでタブ閉じないのかな?
ホイールクリックでタブ閉じする方が誤爆率低そうなんだが…
そうすればxbutton1は別用途で使えるようになるから良いと思うがな
スレ違いand大きなお世話ですまん うちのfirefoxはタブ閉じるよ
マウス、タブ操作関係のアドオンは入れてない
Debian sid 64bit / Firefox 55.0.2
あとMozzilaのホームページでもそう説明されてる >>928
ホイールクリックでも閉じるけどタブのとこまでカーソル持って行かずにボタン一つで
連打してがしがしタブを閉じたいので ctrl+w をサイドボタンに当ててます モディファイアキー単独押しに、誤発動したら困る機能を割り当てるのは、自分ならやらないなぁ。 マウス動かさずガシガシ閉じたいときは左手でctrl+w連打してるな
寝PCなんかでキーボード触りたくない時はマウスだが マウスに削除機能や閉じる機能を割り当てると
誤爆した時めっちゃ面倒だから割り当てない。 wikiのサンプルコード集 - 1つのキーに3種類以上の動作割り当て
どうしてもxbutton1に拘りたいなら、これでxbutton1のダブルクリックに^w割り当てれば誤爆減るかもね。
あとは、ホイールクリックに^w割り当てる手もある。(パンて言うのかオートスクロールって言うのかの機能殺すだろうけど)
firefoxの機能に「このタブより右(左)を全て閉じる」みたいな機能(拡張)あるならそれ使えば良いのに、、、とも思う。 >>935
「このタブより右(左)を全て閉じる」も使ってるけどだいたい10から20くらいのタブの間を
行ったり来たりするから細かく素早くタブを消したいのよ
誤爆してタブ消すことあるけど拡張のマウスジェスチャーで 右ボタン→← を
ctrl+shift+T に割り当ててるから一瞬でタブ復活できて読んでたページのスクロール位置も記憶してて
そこまで戻ってくれるから自分にはサイドボタンを ctrl+w に割り振るのが1番使いやすいです マウスが壊れると一気に不便になるから
サイドボタンには頼らなくなった >>937
自分の使ってるのはエレコムの安い2000円くらいの5ボタンマウスだけど
壊れて他の使うと手になじむまで結構かかるからまとめて同じの10個くらい買ってる
1個の寿命がだいたい3年くらいもつのでたぶん自分が呆けるか死ぬかUSBの規格が
終わるくらいまではもつかなw
ゲームとかで激しく使うわけじゃないから壊れたと思っても分解清掃したら復活して全然壊れないw WinActivateでwindowを指定したいんですけど、
同じアプリで2つwindowを開いてるからタイトルもクラスも同じだから、
先に起動したほうのwindowがアクティブになるんです。
後に起動したwindowをアクティブにしておいてからやっても、先に起動したほうの
windowがアクティブになってしまう……。
何か解決方法ありますでしょうか? >>939
絶対にAutoHotkeyを使って起動させると決めておけば、runの時に指定したプロセス名で自由自在じゃないかな >>940
再起動したら、2つあるうちのactiveな方のwindowを操作できるようになってました……。
よく動作が分からない……。 >>939
ウィンドウハンドル(ahk_id)で指定 >>939
ウィンドウハンドルで指定
https://msdn.microsoft.com/ja-jp/library/cc344590.aspx
> Windows では、作成されたウィンドウにハンドルを割り当て、ウィンドウが削除されると、割り当てているハンドルを解放します。
> ウィンドウが存在する限りそのハンドルは保持されますが、ウィンドウを一度削除して再作成したときに同じハンドルが割り当てられるとは限りません。
> ハンドルを変数に保持する場合は、ウィンドウが削除されるとそのハンドルは無効になることに注意してください。 >>942
>>943
ありがとうございます。またコードを改良してみます。 Win7です。 WindowsUpdateを起動するとき、
Run, wuapp
とすると、WindowsUpdateのウインドウが出てきますが、一発で更新プログラムの確認をしたいのです
今は、このウインドウを起動して、あとは手作業でマウスを動かしてやっていますが、
一発で更新プログラムの確認が出来る方法、コマンドってありますか コマンドライン調べて無理そうなら
send でtabenterするなりcontrolclickするなりしてみたら Tabキー連打からのEnterキーを送れば良いんではないでしょうか なるほど。やっぱりTABで回してからEnterしかないのかな
ありがとう Hotkey Explorerなんてツールがあるんだな
大昔に割り当てたまま忘れ去ってたホットキー発見できた レス数が950を超えています。1000を超えると書き込みができなくなります。