X



AutoHotkey スレッド part25 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。 転載ダメ©2ch.net (ワッチョイ f977-fKjf)
垢版 |
2017/09/14(木) 11:52:40.84ID:uijNj4qb0

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

■前スレ
AutoHotkey スレッド part24
http://egg.2ch.net/test/read.cgi/software/1487149472/

■日本語解説等
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)
0386名無しさん@お腹いっぱい。 (アウアウエーT Sa7f-yEAn)
垢版 |
2017/11/13(月) 17:54:41.25ID:fTwFmDsma
なぜそうしたいのかなんて書く必要ねーからだろアホ
0387名無しさん@お腹いっぱい。 (アウアウエーT Sa7f-yEAn)
垢版 |
2017/11/13(月) 17:56:04.52ID:fTwFmDsma
質問に答えねーでケチつけるだけのゴミがでてくることこそあるある
0392383 (アウアウエーT Sa7f-yEAn)
垢版 |
2017/11/13(月) 20:15:26.75ID:fTwFmDsma
>>389
すいませんその方法も使えないんです。
>>391
そうですソフトウエアホットキーを使いたいということです。
ですが#usehookや$がないと無限ループがおこるとかリスクがあるみたいなのでもう少し調べてなかったらあきらめます。
ありがとうございました。
0399名無しさん@お腹いっぱい。 (アウアウエーT Sa0a-KWQn)
垢版 |
2017/11/18(土) 01:29:01.86ID:/66QZllda
だいぶ説明不足でしたすいません。
3つの数字は常に変動してて、ホットキー押したときにそのとき一番大きい値のを選択するってことがしたいです。
ifを沢山書けばできるけど一行でやる方法ないかなあと調べたのですが分からず。
一つ増えまして4つで比較ができればいいのですが。
0400名無しさん@お腹いっぱい。 (ワッチョイ e187-8CrJ)
垢版 |
2017/11/18(土) 02:02:09.20ID:s0iz+kxI0
z := (a >= b ? a : b) >= ( c >= d ? c : d ) ? (a >= b ? a : b) : ( c >= d ? c : d )

1行で書けるけど、1年後とかに見たら何をやってるのか分かり難いので
ifで書いといたほうが視認性はいいんじゃないかな
0403名無しさん@お腹いっぱい。 (ワッチョイ 4156-ijJr)
垢版 |
2017/11/18(土) 02:26:47.34ID:vo5Qrzy00
可変長引数を取るmax関数でも定義すればいいじゃない

Max(params*) {
t := params[1]
Loop % params.MaxIndex() - 1 {
b := params[A_Index + 1]
t := t > b ? t : b
}
Return t
}

a := 10
b := 20
c := 30
d := 40
MsgBox % Max(a, b, c, d)
Return
0407395 (アウアウエーT Sa0a-KWQn)
垢版 |
2017/11/18(土) 17:29:00.55ID:9x5Xxm/fa
>>400
>>403
>>405
おー、すごい
できるようになりましたありがとうございました。
ahkを一年以上使ってるけどwiki読んだり検索して似たようなことやってる人のスクリプトを見てもわからなくてちょっと改変して移植もできない場合が多すぎて自分のポンコツぶりが悲しいw
0409名無しさん@お腹いっぱい。 (ワッチョイ 41c6-RjUU)
垢版 |
2017/11/19(日) 12:25:42.07ID:S3PDgYNS0
>>406
大昔に無理やり実装してた人はいた、オリジナルANSI版の頃のだからたぶん今だと動かないと思うが
ここの プロセスを起動して標準出力を読み書き
http://lukewarm.s101.xrea.com/myscripts/

最近のだとこの辺とか?
AutoHotKey_Lで、標準出力を得る方法。
http://poimono.exblog.jp/22219786/

単純に出力見たいだけだったらファイルにリダイレクトしちゃうのが簡単だけど
(書き込み規制に引っかかるので全角化)
RunWait, cmd.exe /c es.exe 検索文字列>temp.tmp,,Hide /UseErrorLevel
FileRead,var,temp.tmp
msgbox,%var%
0411名無しさん@お腹いっぱい。 (ワッチョイ 4156-ijJr)
垢版 |
2017/11/19(日) 16:27:40.09ID:wn0nPePn0
>>406
例えば rmdir を使ってフォルダとその中にあるファイルを削除する場合

app := ComObjCreate("WScript.Shell").Exec(ComSpec)
app.StdIn.WriteLine("rmdir /s D:\DeleteMe") ; D:\DeleteMe と DeleteMe フォルダの中にあるファイルを削除するコマンド
While (1) { ; DeleteMe フォルダの中に一つでもファイルやフォルダがないと無限ループするから注意
msg .= app.StdOut.Read(1) ; ReadLine だとこちらの入力待ちの時にデッドロックする
If (InStr(msg, "よろしいですか (Y/N)?")) {
MsgBox % msg
app.StdIn.WriteLine("Y") ; 確認を求められたので y を入力して削除を実行
break
}
}
app.StdIn.WriteLine("exit")
Return

こちらの入力待ちになるまでの処理は色々なやり方があると思う
0413406 (HappyBirthday!WW 9209-xFaz)
垢版 |
2017/11/20(月) 09:16:01.49ID:r9poHEzN0HAPPY
いろんなご意見ありがとうございます!

>>408
対話型には向いてなさそうな…

>>409
url一つ目のやつは試してみたけどahk_lだと動きませんでした
url二つ目のやつはout of memoryとでて、こっちもダメでした😭

>>411
これです!
なるほどこうやってCOMオブジェクトを使うんですね
すごい勉強になりました

>>412
原理的には411とほぼ一緒みたいですね
WINAPIはいまだにさっぱりよくわかりません

高速でControlSendを使うと
キーボードからの入力がたまにロックされて使えなくなってしまうことがあったので
COMオブジェクトで直接読み書きできるならそれにこしたことないですね
0414名無しさん@お腹いっぱい。 (ワッチョイ f987-ijJr)
垢版 |
2017/11/22(水) 03:26:57.07ID:DaaBsnMY0
キーの長押しすり抜け病って修正されてるのかな?
未だなら早よ!
これがちゃんとできないとカーソル移動とか怖くてAHKは使えないんだよ
致命的な不具合だ!
0416名無しさん@お腹いっぱい。 (ワッチョイ 4787-sSls)
垢版 |
2017/11/23(木) 11:33:48.10ID:IP8Uaqwm0
>>415
こんなポンコツよく使ってると感心する 信じられないw
もちろんこれがゆえにkeyhacに移行したわ!
0419名無しさん@お腹いっぱい。 (ワッチョイ df8e-067h)
垢版 |
2017/11/23(木) 14:25:49.30ID:ekf0KvoP0
>>416
>>246
0421名無しさん@お腹いっぱい。 (ワッチョイ 4787-sSls)
垢版 |
2017/11/23(木) 21:58:00.87ID:IP8Uaqwm0
本当にAHKは使いもんにならんのよ!
キーログを見るツールとかを立ち上げてAHKの動作を確認したんだが
スクリプトがまともに動かんのよ、ダメだろこれは!
ちゃんとフックできてないんよ、笑うわw
0426名無しさん@お腹いっぱい。 (アウアウエーT Sa1f-9XXY)
垢版 |
2017/11/24(金) 00:28:07.79ID:VrzeCVMba
             /ヽ       /ヽ
            / ヽ      / ヽ
  ______ /U ヽ___/  ヽ
  | ____ /   U    :::::::::::U:\
  | | ハサミ が  // ___   \  ::::::::::::::|
  | | 使エネーヨ |  |   |     U :::::::::::::|
  | | ヽ(`Д´)ノ.|U |   |      ::::::U::::|
  | |  >>421  | ├―-┤ U.....:::::::::::::::::::/
  | |____ ヽ     .....:::::::::::::::::::::::<
  └___/ ̄ ̄      :::::::::::::::::::::::::|
  |\    |           :::::::::::::::::::::::|
  \ \   \___      ::::::
0427名無しさん@お腹いっぱい。 (ワッチョイWW 07c6-ZBcO)
垢版 |
2017/11/24(金) 00:40:22.15ID:2kxbHRR30
いうても困らない範囲内でしか使ってないからなあ
そもキーリピート発生するキーをホットキー長押ししようとは思わんし
ahkは名前こそAutoHotkeyだがキーカスタマイズだけが目的なソフトじゃないしな

ウィンドウ制御とかいらんならahkである必要性は薄い
ソフトによって得手不得手あるんだし自分の目的に合ったもん使えばいいよ
0428名無しさん@お腹いっぱい。 (ワッチョイ 0777-+V5r)
垢版 |
2017/11/24(金) 05:53:07.19ID:nG64IX5N0
GUIについての挙動についてです
GUI,Add, GUI,Showなどで作ったウインドウ上でスペースキーを押したときの挙動
ってどこかに書いてあるでしょうか
このときに別の挙動をするように、
#IfWinActive
でこのGUIがアクティブになったときに
Space:Msgbox TEST
としても反応しないのです
で、このGUIウインドウ上でアクティブなボタンが実行されます
GUIがアクティブのときにSpaceキーで別の挙動をするようにする方法を
教えてください
0429名無しさん@お腹いっぱい。 (ワッチョイ 4787-sSls)
垢版 |
2017/11/24(金) 05:59:36.57ID:FhfG+MVc0
AHKでは長押しカーソル移動がまともにできませんよ
ソースコードをテキストエディタで開いてカーソル移動したら
意図しない文字が入力されてしまうなんて怖くて使えませんな
0430428 (ワッチョイ 0777-+V5r)
垢版 |
2017/11/24(金) 06:10:17.36ID:nG64IX5N0
テスト用のサンプルスクリプトを作りました
スペースキーが出来ません

Gui,Add,Button,GButton1 W242 H30,ボタン1
Gui,Add,Button,GButton2 W242 H30,ボタン2
Gui,Show, , テスト
return

Button1:
MsgBox ボタン1
return
Button2:
MsgBox ボタン2
return

#IfWinActive, テスト
Space::MsgBox SPACE
Up::MsgBox UP
#IfWinActive
0437名無しさん@お腹いっぱい。 (ワッチョイ a77d-DWFp)
垢版 |
2017/11/24(金) 12:58:05.32ID:RTDitcQE0
ネットワーク上にあるファイルをFileCreateShortcutでショートカット作りたいんですが、
処理が異常に遅いんですけど、10秒くらいかかるんですけど、何か対処法
知っていたらご教授お願いします。
0439名無しさん@お腹いっぱい。 (ワッチョイ a77d-DWFp)
垢版 |
2017/11/24(金) 13:33:56.53ID:RTDitcQE0
>>437です。
自己解決したので報告します。
FileCreateShortcut, "%filePath%", %shortcutName%
といった具合に%filePath%にはダブルクオーテーションを付ける。
以上です。
0441名無しさん@お腹いっぱい。 (ワッチョイ 7ff3-Iy5Q)
垢版 |
2017/11/24(金) 14:55:45.26ID:uBW3Ah/90
>>431
自分は>>249じゃないが>>136試してみたら確かに"すり抜け"っつうのは発生した
例えばメモ帳でctrl押しながらhを押しっぱなしにして十数秒〜数十秒そのままにしてると
文字の「h」が入力されたり「置換」ダイアログが現われたりした
win7 32bit home ahk 1.1.26.01

自分はこんな操作しないから困らないな
0443名無しさん@お腹いっぱい。 (アウアウカー Sadb-d0L7)
垢版 |
2017/11/24(金) 15:59:58.59ID:hNkbZ/Nua
>>442
俺が引っかかった事例としては関数呼び出しのときにエラー吐いたり、文字化け起こしたり、ファイルの保存形式によってはそのまま貼るとエラー吐いたりして二度手間になったり、コンパイルする時エラー吐いたりした
0444名無しさん@お腹いっぱい。 (ワッチョイ 6785-+V5r)
垢版 |
2017/11/24(金) 16:50:37.32ID:MGSGyO6j0
GUIのボタンです
Gui,Add,Buttonで作ったボタンの色を変えることは出来ますか
Gui, Color, Red, Blue
とかやってみたのですが、ウインドウの背景は変わってもボタンの色が
変わりません
ボタンはひとつづつ個別に色を変えたいです
オプションのBackgroundもやってみたのですが、良くわかりません
Cnもボタンのテキストの色が変わりません
0446名無しさん@お腹いっぱい。 (ワッチョイ 07c6-5mWG)
垢版 |
2017/11/25(土) 00:41:35.70ID:LFO66Rjj0
7-zip32.dll使いたくて↓を参考にDllcallのめぼしいところを Astrに直してみたんですがA32.exeでしか上手くいかないです
http://mimizun.com/log/2ch/software/1265518996/420-422

U32.exeはLPCSTRの型をAStrにすると戻ってこなくなっちゃう
Strのままだと文字化けしちゃう
VarSetCapacityのポインタ回りだと思うんですがどう直したらいいかわかる方いますでしょうか

ArcGetName(){
/*** int WINAPI SevenZipGetFileName(HARC _harc, LPCSTR _lpBuffer, int _nSize) ***/

global
;;;size:=VarSetCapacity(buf,256)
;;;DllCall(ArcLibPrefix . "GetFileName",UInt,hArc,Str,buf,Int,size,Int)
size:=VarSetCapacity(buf,256*2)
DllCall(ArcLibPrefix . "GetFileName",UInt,hArc,AStr,buf,Int,size,Int)
return buf
}
0450名無しさん@お腹いっぱい。 (ワッチョイ 5f67-cO/U)
垢版 |
2017/11/25(土) 10:20:06.46ID:96jiAY9X0
>>444
基本的にできない
応用的には超めんどい(http://anago.5ch.net/test/read.cgi/software/1317156599/659,661
Pictureで代用するのが早いと思う

ButtonではなくCheckbox, ComboBox, DropDownList, Edit, ListBox, Radio, Textのいずれかなら以下を使うとできる
[CLASS] CtlColors - color your controls (2017-10-30)
https://autohotkey.com/boards/viewtopic.php?f=6&;t=2197
0452名無しさん@お腹いっぱい。 (ワッチョイ 0777-+V5r)
垢版 |
2017/11/25(土) 11:56:20.53ID:lMhgyyaw0
たとえば、
label1:
filename=test1
gosub routine
return
label2:
filename=test2
gosub routine
return
label3:
filename=test3
gosub routine
return
と、番号が違うだけでほかは同じスクリプトが20個くらいある場合、これって
ずらっと書かないとダメなのでしょうか。 それともAHKらしく、

loop,20
{
label%A_index%:
filename=test%A_index%
gosub routine
return
}
みたいな技って使えませんか。これではダメだと思いますが。スクリプト生成まではやってくれないのでしょうか
0455名無しさん@お腹いっぱい。 (ワッチョイWW 27ec-ZBcO)
垢版 |
2017/11/25(土) 12:28:22.23ID:YtrqIety0
ラベルの省略はできないが処理はまとめられる
label1:
label2:
label3:
label4:
label5:
label20:
StringReplace filename, A_thisLabel,label,,ALL
gosub routine
return

ラベルごとループで作成したいなら一旦ファイルに書き出して .ahkスクリプトとして実行するしかないのでは
loop,20
{
FileAppend,label%A_index%:,temp.ahk
FileAppend,gosub routine,temp.ahk
FileAppend,return,temp.ahk
}
run,temp.ahk
0456名無しさん@お腹いっぱい。 (ワッチョイ 0777-+V5r)
垢版 |
2017/11/25(土) 12:39:03.92ID:lMhgyyaw0
>>455
なるほど、A_thisLabelを使うというのは思いつきませんでした
ちょっとやってみましたが、これは使えそうです
それと、temp.ahkを出力するやり方ですが、これもインクルードファイルを自動生成させて
それを読み込ませるという方法が出来そうですね
ahkがインクルードファイルを読み込むタイミングを確認する必要がありそうですが
ちょっと期待できそうですw
インクルードファイルがなければ自動生成させてreloadで再実行し、ファイルが出来てれば
自動生成処理は飛ばすとか
0464名無しさん@お腹いっぱい。 (ワッチョイ 7fe0-DWFp)
垢版 |
2017/11/26(日) 08:14:54.78ID:Dha5Tkpk0
ホットキーを押したら特定の変数をリストビューに追加する事って出来ますか?
リストビュー初期化時にLV_Addで追加する事は出来たのですが、リストが作られた後に追加する方法が分かりません。
0465464 (ワッチョイ 7fe0-DWFp)
垢版 |
2017/11/26(日) 08:25:47.32ID:Dha5Tkpk0
自己解決しました。
LV_Addで変数を%で囲ったらダメでした。外したらいけました><
0466名無しさん@お腹いっぱい。 (ワッチョイ 0767-DWFp)
垢版 |
2017/11/26(日) 20:16:06.88ID:dJtA2dZF0
現在のCoordModeを参照する方法ってありますか?
関数内でのみScreenにしたいのですが。
0468名無しさん@お腹いっぱい。 (ワッチョイ 0767-DWFp)
垢版 |
2017/11/26(日) 20:57:46.19ID:dJtA2dZF0
A_CoordModeToolTipみたいな感じなんですね
A_CoordModeだけで試してて「出ないじゃん」とか思ってました
ありがとうございます
0469名無しさん@お腹いっぱい。 (ワッチョイ 5ff4-DWFp)
垢版 |
2017/11/27(月) 19:53:12.22ID:EWIA3ZBQ0
Visual Studioで AutoHotKeyを動かす方法はないでしょうか
Win10 + Visual Studio community 2017 では動きませんでした
Win7 + Visual Studio 2013(管理者権限で実行) もダメでした
Win7 + Visual Studio 2013(管理者権限でない) はAHKきちんと動いたのが謎ですが・・
0470469 (ワッチョイ 5ff4-DWFp)
垢版 |
2017/11/27(月) 19:56:01.38ID:EWIA3ZBQ0
すいません、
Win10 + Visual Studio community 2017 も
管理者権限だとAHKは動かなくて
管理者権限でないとAHKが動きました。
これは何なんだろう
0471名無しさん@お腹いっぱい。 (ワッチョイ 4787-sSls)
垢版 |
2017/11/28(火) 01:35:37.31ID:mrDQFh/p0
確実にAHKがダメだから
この際、keyhacに乗り換えるのが賢明、時間が勿体無い
0473469 (ワッチョイ 5ff4-DWFp)
垢版 |
2017/11/28(火) 03:26:21.76ID:xNQcaR7I0
KeyHacも試してみましたが、こちらもやはり
Visual Studioを管理者権限で実行するとキーリマップが効かないみたいですね・・
0477名無しさん@お腹いっぱい。 (ワッチョイ 0735-+V5r)
垢版 |
2017/11/28(火) 14:03:02.90ID:marODPdK0
ウインドウのハンドルを取って来て、そのウインドウ上に絵を描くことって出来ますか?
Dll等を使っても構いません

あるウインドウがあって、特定の場所がはっきりわかるように色を上書きして塗りたいのです。
既存のウインドウにデコレーションするというか

AHK以外でも、もしそういうことが出来る方法をご存じなら教えてください
0478469 (ワッチョイ 5ff4-DWFp)
垢版 |
2017/11/28(火) 16:51:01.37ID:xNQcaR7I0
>>474
ありがとう!解決しました!
おっしゃる通りAHKを管理者権限で実行したらVisualStudioでもきちんと動きました
■ このスレッドは過去ログ倉庫に格納されています

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