AutoHotkey スレッド part21at SOFTWARE
AutoHotkey スレッド part21 - 暇つぶし2ch310:名無しさん@お腹いっぱい。
15/09/25 21:31:03.19 xYWWmgj10.net
>>307
もしくはAuto-executeセクションにアクティブになったウインドウを監視するものをいれるとか
URLリンク(pastebin.ca)

311:名無しさん@お腹いっぱい。
15/09/25 21:58:05.04 KV4jiEIL0.net
>>303
ワーオ、最高!イエース!グレート!
望み通りの動作ですし、keyWaitで試行するより
入力のレスポンスがかなり良くなってます
応用すれば他のキーでも自由に設定できそうですね
これを元にして更に色々チャレンジしてみます
本当に助かりました。ありがとうございます

312:名無しさん@お腹いっぱい。
15/09/25 22:15:33.21 rFOJjuhL0.net
エンコーディング変換という、
ごく当たり前の処理の情報が何故こんなに少ないのでしょうか?

313:名無しさん@お腹いっぱい。
15/09/25 23:23:39.30 T68s/oJQ0.net
>>1スレ立て乙

314:名無しさん@お腹いっぱい。
15/09/25 23:43:31.50 TnffJdgb0.net
>>307
頭に中で考えただけなんで、動くか分かんないけど。
#IfWinActive, ;サイト名
q::
Toggle:=!Toggle
if(Toggle){
SetTimer, z, 500
}else{
SetTimer, z, off
}
return
#IfWinNotActive, ;サイト名
q::
Toggle:=false
SetTimer, z, off
return

315:名無しさん@お腹いっぱい。
15/09/26 00:30:30.54 djAj203U0.net
非アクティブ化で切りたい仕様のようだから
zの中で非アクティブチェックするのがいいと思うよ

316:名無しさん@お腹いっぱい。
15/09/26 01:30:54.81 iUEIDkcX0.net
>>314だす
酔っぱらった頭で考えただけあって滅茶苦茶なコードですた・・・ハジカシイorz
もうちょっと飲も

317:名無しさん@お腹いっぱい。
15/09/26 01:51:27.08 xmb8Y91P0.net
酔っぱらいはバグ人間。人間に非ず

318:名無しさん@お腹いっぱい。
15/09/26 01:51:59.22 pjw6RnBc0.net
>>309
StrPutってこのExampleにあるStrPutVar使えばいいんじゃないの
URLリンク(ahkwiki.net)

319:名無しさん@お腹いっぱい。
15/09/26 02:09:22.78 JeI01QvY0.net
返信遅くなりました
>>308
>>310
丁寧にありがとうございます。無事思い通りの動作ができました
上記でどうにかする事ばかり考えてました・・・
>>314
私は酔っ払っていませんでしたが、助力を頂く前にそのコードを試してました・・・

320:名無しさん@お腹いっぱい。
15/09/26 03:22:33.25 djAj203U0.net
文字列の中でオブジェクトも展開できたらいいのに

321:名無しさん@お腹いっぱい。
15/09/26 09:03:26.15 LL2F5NZg0.net
>>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:名無しさん@お腹いっぱい。
15/09/26 09:38:13.56 LL2F5NZg0.net
URLリンク(www.autohotkey.com)
このページの
StrPutVar(string, ByRef var, encoding)
{
VarSetCapacity( var, StrPut(string, encoding)
* ((encoding="utf-16"||encoding="cp1200") ? 2 : 1) )
return StrPut(string, &var, encoding)[color=red],VarSetCapacity(var,-1)[/color]
}
を使ったら、何かに変換されました
何故エンコーディング変換にcolorなどが出てくるのか、よく分かりませんが。
表示させても文字化けしてるので、
正しく変換されているのかはまだ分かりません

323:名無しさん@お腹いっぱい。
15/09/26 11:05:39.96 rhXvYJM20.net
nkf32.dll辺りと連携した方がいいと思う>文字コード変換
過去ログにahkから呼び出すためのスクリプトがあったはず

324:名無しさん@お腹いっぱい。
15/09/29 03:04:48.46 q4T3gI780.net
クリップボードにファイルがあるときにその総数が知りたいんですが
どうにも上手く取れないので助言をください
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:名無しさん@お腹いっぱい。
15/09/29 03:36:36.43 Rdhq11FG0.net
エクスプローラなどででコピーしたものなら
Loop,Parse,Clipboard,`r,`n
{
MsgBox,%A_LoopField%
}
こういうので数えられるけど、そういう話ではないのかな

326:名無しさん@お腹いっぱい。
15/09/29 04:50:48.76 q4T3gI780.net
いや、そういう話です。そんなに簡単に書けたとは……
昔、ファイルをコピーするとクリップボードに改行区切りのパスが入ると聞いて
メモ帳でCtrl+Vしても駄目だったので環境依存の仕様か何かだと思っていたんですが、
AHKのClipboardが動的に取り計らってくれるという意味だったんですね
今知れて良かったです。ありがとうございました

327:名無しさん@お腹いっぱい。
15/10/01 09:12:35.25 dHOVCF+u0.net
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:名無しさん@お腹いっぱい。
15/10/01 17:22:21.33 Ukp2Mk/E0.net
教えて下さい。
AHK v1.1.22.02 Unicode 64bit / Win7 64bit Home
マウス左クリックを何かのキーに置き換えます。

F9::LButton
又は
F9::Send,{LButton}
ところが、タスクトレイの自身のAHKアイコンの右クリックメニューの中では動作しません。
しかし、同時実行中の自分以外のAHKアイコンに対しては動きます。
何故このような挙動になるのでしょうか?

329:名無しさん@お腹いっぱい。
15/10/01 17:46:44.28 ORi0pFmB0.net
仕様
自メニュー表示中は他のスレッド処理止まってる
他者(他の多重起動中の他のahkスクリプト)は別タスクで動いてるので関与可能

330:名無しさん@お腹いっぱい。
15/10/01 17:47:57.52 9/SxiS2N0.net
文字化けをどうにか修正出来ませんでしょうか?。
よろしくお願いします。
FileAppend,
(
ダメ文字「~~~」
)
, .\ダメ文字.txt, CP932

331:名無しさん@お腹いっぱい。
15/10/01 17:56:12.55 9/SxiS2N0.net
すみません、エスケープ文字なしでの修正法です。
ダメ文字「~`~`~`」

332:名無しさん@お腹いっぱい。
15/10/01 19:33:38.34 Ukp2Mk/E0.net
>>329
自分の環境の問題じゃないと知って安心したよ。ありがとう!

333:名無しさん@お腹いっぱい。
15/10/02 01:17:10.85 JUesQH/70.net
>>330
旧版(Autohotkeyで検索するとTopにくる)を使ってるなら
>>1 のリンク先から最新版をDLしてみては?
どうしても旧版じゃないといけないならダメ文字対策版があったはず。
もしくはダメ文字対策の関数が過去ログにあるはず。

334:名無しさん@お腹いっぱい。
15/10/02 01:25:54.88 JUesQH/70.net
>>333 は関係なかったので無視して。

335:名無しさん@お腹いっぱい。
15/10/02 03:04:43.07 JUesQH/70.net
>>330
スクリプトを強制的にShift-jisで読み込むようにする。
スレリンク(software板:503番)
互換性
URLリンク(sites.google.com)

もしくは駄目文字関数(以前、ここで拾った関数)を通す。
エスケープ文字なしって条件なら意味ないけど
hoge = ダメ文字「~~~」
FileAppend, % RegEscape(hoge), .\ダメ文字.txt, CP932
return
RegEscape(pattern) {
Return RegExReplace(RegExReplace(pattern, "\s", "\s")
, "(?P<pre>(?:^|[^\x80-\x9F\xE0-\xFC])[\x80-\x9F\xE0-\xFC])"
. "(?P<esc>[\[\]\{\}\|\^\\])"
, "${pre}\${esc}")
}

336:名無しさん@お腹いっぱい。
15/10/02 13:05:39.25 Y7lmOL750.net
>>335
ありがとうございます。
試行錯誤してみます。

337:名無しさん@お腹いっぱい。
15/10/03 01:15:25.13 4vFDVsLh0.net
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:名無しさん@お腹いっぱい。
15/10/03 04:43:36.82 hVgXFCGi0.net
>>337
何を言いたいのかよく分からんけど、LAlt Upを無効にしたいなら
LAlt Up::return

339:名無しさん@お腹いっぱい。
15/10/03 10:06:20.40 4vFDVsLh0.net
>>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:名無しさん@お腹いっぱい。
15/10/03 10:58:49.22 hVgXFCGi0.net
>>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:名無しさん@お腹いっぱい。
15/10/03 20:02:27.44 4vFDVsLh0.net
>>339
スクリプトまでありがとうございます。
Key Historyは入力記録だけで出力判定には使えないのですね。
勘違いしていたので助かりました。
>>339を実行し、[LAlt]を押しっぱなしで KeyMillというツールで
キーイベントを見たところ、LAlt Downが1~4回(回数は毎回違う)、LAlt Up 1回を
繰り返す状態になっていました。
環境依存の可能性が高そうなので、そちらから調査してみます。
アドバイスありがとうございます。

342:名無しさん@お腹いっぱい。
15/10/03 20:04:22.86 4vFDVsLh0.net
>>341中の ">>339"は、">>340"の間違いです。失礼しました。

343:名無しさん@お腹いっぱい。
15/10/03 21:49:15.86 3qI8Ooii0.net
すいません。
最近使い始めてあまりわかってないのですが、スクリーンロックがかかった状態だとこのソフトは効かないものですか?

344:名無しさん@お腹いっぱい。
15/10/05 05:04:08.47 SOr6oONc0.net
KeyMillというツールで表示されるVK_OEM_3とはAHKではどのキーに相当するんですか?
IMEをJPからENに変えた状態で半角全角を押すとこれが押された状態になるんですが

345:名無しさん@お腹いっぱい。
15/10/05 07:57:12.97 J07/GDAU0.net
この表によると VK_OEM_3は@ (0xC0) のようだが
URLリンク(homepage3.nifty.com)
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:名無しさん@お腹いっぱい。
15/10/06 09:24:39.81 5sMIM/XR0.net
常駐スクリプトを多重起動しようとしたときに
#SingleInstance forceでもignoreでもなくて
起動中のスクリプトを終了だけして終わりってできないですか?

347:名無しさん@お腹いっぱい。
15/10/06 10:28:50.48 DiXvuaHq0.net
#SingleInstance off で多重起動許可
Autoexecuteセクション内で自力で多重起動チェックして自分以外にも起動してたら
既存スクリプトをKILLして自分もExitApp
多重起動チェックはDetectHiddenWindows,ONにして
A_ScriptHwndと同titleのahkスクリプトを
WinGet IDLastかListで探してやればいい
URLリンク(ahkwiki.net)

348:名無しさん@お腹いっぱい。
15/10/06 12:51:41.03 5sMIM/XR0.net
>>347
ありがとう
がんばって書いてみます

349:名無しさん@お腹いっぱい。
15/10/07 05:53:11.49 Z18ZPhqc0.net
>>348
>>214の方法も考慮してみては?

350:名無しさん@お腹いっぱい。
15/10/07 09:07:42.39 j68mUFxR0.net
>>349
横だが軽く試した感じ 同一スクリプト内でやるのは結構面倒そうだわ
OnMessage()→SendMessageの順だと自身が受け取ってしまう
SendMessage→OnMessage()の順でも先に起動してるスクリプトには届かないっぽい

351:名無しさん@お腹いっぱい。
15/10/07 23:15:12.19 UC2M851Z0.net
MouseIsOver(WinTitle) {
MouseGetPos,,, Win
return WinExist(WinTitle . " ahk_id " . Win)
}
これ時々下のウィンドウがアクティブになってないと動かないんですが一発で動かすにはどうしたらいいんでしょう

352:名無しさん@お腹いっぱい。
15/10/08 06:23:31.59 lCrLMnbM0.net
こんな感じでアクティブウィンドウに対応するメモファイルを開くスクリプト書いたら結構便利だ
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:名無しさん@お腹いっぱい。
15/10/08 06:24:09.10 lCrLMnbM0.net
  ; プログラミング言語、タイトルだけで引っ掛けるもの  
  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:名無しさん@お腹いっぱい。
15/10/08 09:35:43.76 GRWYlLlC0.net
hhh.exe的なものなら過去に作ったっけ
カーソル付近の単語を対応ヘルプで検索して開く奴

355:名無しさん@お腹いっぱい。
15/10/08 09:40:41.55 3yhzZ3UY0.net
Hit a Hint for Windowsなるものを見つけたのでAutoHotkeyに頼る部分がだいぶ減った

356:名無しさん@お腹いっぱい。
15/10/08 18:24:35.47 NhOt8eVQ0.net
>>351
情報少なすぎ
環境と実際に動作する問題が起こる最小限のスクリプトも書かないとわからない

357:名無しさん@お腹いっぱい。
15/10/08 18:36:47.53 GRWYlLlC0.net
コピペのクレクレ質問は相手せずスルーでよし

358:名無しさん@お腹いっぱい。
15/10/10 12:44:56.94 /vs6Y5+e0.net
>>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:名無しさん@お腹いっぱい。
15/10/11 01:51:32.72 il2hnji40.net
OnMessageでやる場合
多重起動側は自身が多重起動であることを即確認できるからフラグ立てられる
フラグ立てたら終了
終了メッセージをどっちで受け取っても終了処理することに変りないから
終了処理内でフラグ見て処理は振り分けられる
そんなに複雑にはならない気がする

360:名無しさん@お腹いっぱい。
15/10/11 01:52:50.90 il2hnji40.net
フラグ立てたらメッセージ送信して終了だった

361:名無しさん@お腹いっぱい。
15/10/11 01:55:58.30 il2hnji40.net
あれ?メッセージって1回の送出で複数のプロセスで同時に受け取れるんだっけか?
しばらくプログラミングとか遠ざかってて忘れちまったw
なんか変な事言ってるかもゴメンw

362:名無しさん@お腹いっぱい。
15/10/11 02:51:40.07 iDpfFPT60.net
OnMessage推しの人はできれば動くサンプル貼ってほしい
自分は>350でできなかったんで可能なのか検証したい

363:名無しさん@お腹いっぱい。
15/10/11 14:27:11.64 tEgT6jAh0.net
OnmassageはAuto-executeに書くこと。以上

364:名無しさん@お腹いっぱい。
15/10/11 17:05:06.98 iDpfFPT60.net
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:名無しさん@お腹いっぱい。
15/10/11 22:04:34.04 ZqM2Qzr00.net
Guiのコントロールの幅を取得する方法はありますか?
コントロールを縦に幾つか並べたら次の列に移動…を繰り返してGuiを作ってるのですが
次の列に移動する際に、列内にある一番長いコントロールの幅を取得して次の列のx座標を導き出したいのです
コントロール1 コントロール4 コントロール7
コントロール2 コントロール5 …
コントロール3 コントロール6

366:名無しさん@お腹いっぱい。
15/10/11 22:25:57.74 ZqM2Qzr00.net
おっとGuiControlGetのPosでできたのか
「コントロールの座標と高さを取得する」って説明だったから勘違いした
>>365はスルーしてください

367:名無しさん@お腹いっぱい。
15/10/12 01:58:25.53 M/8NPbHR0.net
>>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:名無しさん@お腹いっぱい。
15/10/12 08:00:23.00 stSIvn090.net
>>367
レス㌧
なるほど先に対象取得して送り先IDを直接指定して送る必要があるんですね
SendMessageの返り値で多重起動の有無をチェックしようと横着してて気が付きませんでした
WinGetでList取る時 %A_ScriptFullPath% で対象絞れば無差別爆撃も避けられますね
ただこれだとPostする前に多重起動先があるかどうか判別が付くので
>346の案件は特別な終了前処理がないときは
if (N%A_Index% <> A_ScriptHwnd)
Winclose,% "ahk_id " N%A_Index%
で済む話なのかも
なんにせよすっきりしました、ありがとうございます

369:名無しさん@お腹いっぱい。
15/10/12 18:33:07.20 ECM/Xd5t0.net
AHKでUSB接続か何かのLED制御してIMEのON/OFFやその他の通知をしたいんだけど
ハード込みで何かお勧めなものってない?
例えばXBOX360コントローラやキーボード、マウスについてるLED制御できると0円で済むんだけど
URLリンク(www.4gamer.net)

370:名無しさん@お腹いっぱい。
15/10/12 18:56:46.92 MZkgqCG90.net
少なくともAHKにはそういう機能はないし
そういう機能のあるソフトを探しているならスレチだし

371:名無しさん@お腹いっぱい。
15/10/12 18:57:04.00 gExsCg/s0.net
ahkから使えるかはわからんけどこんなんは?
URLリンク(gaming.logicool.co.jp)

372:名無しさん@お腹いっぱい。
15/10/12 20:02:33.80 M/8NPbHR0.net
>>369
キーボードLEDコントロール関数(CapsLock/NumLock/scrolllock)
URLリンク(www.autohotkey.com)
※サンプルの引数が間違っているので注意

F1::KeyboardLED(1, "on", 2)
F2::KeyboardLED(1, "off", 2)
ESC::ExitApp

373:名無しさん@お腹いっぱい。
15/10/13 00:02:54.03 anGJ1GPR0.net
ロジのk270のホットキー右4つはキーストローク割り当てして
AHKで使えるように出来たんだけど
左の4つは割り当てできないしAHKも拾ってくれません
何か良い方法ありませんか?

374:名無しさん@お腹いっぱい。
15/10/13 00:15:31.98 wlHQs/Lr0.net
>>373
割り当て変更や拾うことができないなら無理
ログもスクリプトも書かれていないからそれが本当かどうか知らない

375:名無しさん@お腹いっぱい。
15/10/13 13:59:43.45 dZeGdBQN0.net
アクティブなウィンドウがないとき、一番手前にあるウィンドウを最大化したいんだけど、一番手前のウィンドウってどうやって取得するの?

376:名無しさん@お腹いっぱい。
15/10/13 15:53:54.24 yGa4AJhq0.net
デスクトップとスタートボタン除外してwingetしたら取れるかも

377:名無しさん@お腹いっぱい。
15/10/14 03:33:07.03 8F+pZ2iI0.net
GuiってGui, DestroyじゃなくてWinCloseで終了してもリソース解放される?

378:名無しさん@お腹いっぱい。
15/10/14 03:36:37.50 XLqm5nI70.net
やってみたらいいじゃん

379:名無しさん@お腹いっぱい。
15/10/14 04:00:06.55 8F+pZ2iI0.net
>>378
質問の仕方が悪かったけどどっちで終了しても違いはない?要はウィンドウ番号の都合で分けてるということかな?
Gui, HideとWinHideもそうだけど、Guiの場合はGui系のコマンドをなるべく使った方がいいのか少し気になって

380:名無しさん@お腹いっぱい。
15/10/14 04:42:31.11 XLqm5nI70.net
>>379
終了、開放、閉じる はすべて別の動作
終了(プロセス終了) ← Process, Close
開放(開放して終了しない) ← Gui Destroy
閉じる(アプリによって違う) ← WinClose

381:名無しさん@お腹いっぱい。
15/10/14 04:57:07.00 8F+pZ2iI0.net
>>380
OK

382:名無しさん@お腹いっぱい。
15/10/14 09:00:17.41 qrqP+GcH0.net
ゲーム内の特定の画面で特定のボタンを押したときに
画面を解析してゲームのイベント終了時間を算出して
コマンドラインで外部ソフトに値を渡す という物が作りたいです
・AHKが現在どういう状態にあるのか常時表示する手段(MouseGestureL.ahkの吹き出しみたいなのが理想)
・マウスクリックを検出する手段
を教えてください
もしくは、画像と座標を書き換えるだけでいろんなゲームに対応できるひな形を作ってください

383:名無しさん@お腹いっぱい。
15/10/14 09:32:57.36 SnipqP3i0.net
・ToolTip
・~LButton
こんな基本中の基本を調べもしないテンプレも読まないで聞いてくるアホに
ゲーム操作みたいな厄介なスクリプトが組めるとは到底思えんが
このスレはクレクレ禁止なので最後の一行は無効
自力でがんばれや

384:名無しさん@お腹いっぱい。
15/10/14 09:59:46.62 qrqP+GcH0.net
>>383
悪態をつきながらもちゃんと教えてくれてありがとうございます
調べようにも何をキーワードにしたらいいかわからなかったので助かりました

385:名無しさん@お腹いっぱい。
15/10/14 22:11:49.33 Epf/wqC/0.net
explorer.exeをProcessコマンドで閉じると自動でexplorer.exeが再起動されますが、この仕様をオフにする方法を教えて下さい。
Process,Close,explorer.exe
→ 終了だけしてほしい。 再起動は不要。
コマンドプロンプトでtaskkillするみたく、プロセス終了だけしてほしいのです。
taskkill /f /im explorer.exe

386:名無しさん@お腹いっぱい。
15/10/14 22:20:47.04 uKniWlc70.net
それAHK関係ないんじゃ

387:名無しさん@お腹いっぱい。
15/10/14 23:22:49.26 Epf/wqC/0.net
???
AHKでは・・・
Process,Close,notepad.exe → 終了だけ。
Process,Close,explorer.exe → 終了後、勝手に再起動される。
コマンドプロンプトではどちらも終了だけ。
taskkill /f /im notepad.exe
taskkill /f /im explorer.exe
ということはAHKに原因があるように見えます。
それとも、Windowsはサードパーティアプリからexplorer.exeを終了されると自動的に復活起動する仕様なの?

388:名無しさん@お腹いっぱい。
15/10/14 23:36:51.43 XLqm5nI70.net
>>387
仕様
Run = コマンドプロンプト = コマンドライン

389:名無しさん@お腹いっぱい。
15/10/15 00:53:11.60 hm6rlI060.net
てか終了出来てるんならスクリプトの中にbat読む処理挟んでやりゃいいじゃんか

390:名無しさん@お腹いっぱい。
15/10/15 00:53:23.64 CBMzSms10.net
そもそもexplorer.exeってファイラーとシェルどっちのこと言ってるのかね

391:名無しさん@お腹いっぱい。
15/10/15 02:22:15.78 RSN1D9rC0.net
タスクバーを描画してるexplorerです。
ある理由でタスクバーを消滅させておきたいのです。
~~~~
コレでやるしかないのは分かりました。
Run, taskkill /f /im explorer.exe, , Hide

ただ、Process,Close,explorer.exe で自動再起動がかかるのは何故かな、と気になったもので....

392:名無しさん@お腹いっぱい。
15/10/15 08:38:15.54 CBMzSms10.net
シェルのほうは放っとくとなんかのタイミングで勝手に再起動されるで
殺して放置じゃなくてシェル置き換えしたほうがいい
タスクバーを表示させない代替シェルがあるかどうかは知らんが
URLリンク(okini.bookmarks.jp)

393:名無しさん@お腹いっぱい。
15/10/15 09:50:51.29 OqiXekhc0.net
自動で再起動されるのは昔からの仕様
シェルが落ちたら一般ユーザーはPCの再起動すらできなくなるからな

394:名無しさん@お腹いっぱい。
15/10/15 10:16:47.05 CBMzSms10.net
タスクバーを表示したくない理由がわからんから何ともいえんが
タスクバーを自動的に隠す設定 じゃあかんのかね
業務で特定の操作専用パネルとして使うなら
アプリ側で全画面表示にさせる
7~8インチのちっこいサブモニタつけてタスクバーはそっちに移動させる等
シェル落として対応ってのはシステム不安定になるしかなりの悪手

395:名無しさん@お腹いっぱい。
15/10/15 14:53:00.01 CAA/ZQ/Q0.net
ダブルコーテーションのエスケープはどうかくのでしょうか?
"\""
と書いてもエラーになります

396:名無しさん@お腹いっぱい。
15/10/15 15:08:55.20 CBMzSms10.net
""
a := """"
msgbox,%a%

397:名無しさん@お腹いっぱい。
15/10/15 15:15:46.98 CAA/ZQ/Q0.net
ありがとうございます

398:名無しさん@お腹いっぱい。
15/10/16 00:01:26.63 ED2Tckj70.net
ちなみにahkのデフォルトのエスケープ文字は\じゃなくて`(shift+@)だよ
ダブルクォートに関しては関係ないけど
でも正規表現では\使うというね

399:名無しさん@お腹いっぱい。
15/10/16 00:56:32.45 bknkoHO70.net
パスの区切り\をそのまま使いたかったってところかな

400:名無しさん@お腹いっぱい。
15/10/16 00:56:59.15 Ho1AvTvR0.net
他のエスケープに倣って「`"」としなかったのはなぜだろう
今の仕様は見辛くてかなわん
仕方なくChr(0x22)を主に使ってる

401:名無しさん@お腹いっぱい。
15/10/16 05:30:36.50 oSBPJ2ZG0.net
Guiが最前面(+AlwaysOnTop)になってるか調べる方法はある?

402:名無しさん@お腹いっぱい。
15/10/16 06:47:08.34 rU5x7sGD0.net
WinGet ExStyleでWS_EX_TOPMOSTを確認すればわかる
GetTopmost(WinTitle="A") {
WinGet,WinExStyle,ExStyle , %Window%
return WinExStyle & 0x00000008 ;WS_EX_TOPMOST
}

403:名無しさん@お腹いっぱい。
15/10/16 07:57:36.38 oSBPJ2ZG0.net
>>402
トン

404:名無しさん@お腹いっぱい。
15/10/16 11:50:55.62 AQv1b4UO0.net
>>392-394
アドバイスありがとう。
いろいろトライしてみる。

405:名無しさん@お腹いっぱい。
15/10/16 12:32:57.76 rU5x7sGD0.net
>>402
すまん関数2行目はパラメータ参照できてないね↓に差し替えで確認して
WinGet,WinExStyle,ExStyle , %WinTitle%

406:名無しさん@お腹いっぱい。
15/10/16 13:21:18.57 E0QZ/F/90.net
いつの間にかインストーラー版で32bitも選択できるようになってる
この前試した時はOSが64bitの時は決め打ちで64bitバージョンを入れてきたのに

407:名無しさん@お腹いっぱい。
15/10/16 18:30:25.55 oSBPJ2ZG0.net
>>405
トン

408:名無しさん@お腹いっぱい。
15/10/16 20:30:54.67 oSBPJ2ZG0.net
実行中の関数の呼び出し元が関数内からだった場合、その関数名を取得する方法はないかな?
引数でA_ThisFuncを渡したら済む話ではあるけどできれば省略したくて
↓みたいに組み込み変数はデフォルト値にできないんだね
Func(FuncName=A_ThisFunc)
{
}

409:名無しさん@お腹いっぱい。
15/10/17 02:51:10.24 WeS/KtN/0.net
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:名無しさん@お腹いっぱい。
15/10/17 07:26:09.23 ypfCpe+y0.net
>>391
タスクバーを消したいならShell_TrayWndを手がかりにググれば?

411:名無しさん@お腹いっぱい。
15/10/17 23:20:56.38 llzPBbJ10.net
>>409
■Logicoolマウスの問題
*Setpoint+ドライバ削除後、Setpoint最新版を使う
*管理者権限を使う
*互換性モードを使う
■ホイール上下左右の問題
AHK付属のキー履歴を見れば分かるが
Wheel***系は押し下げだけ(Upしない)をキーリピート(連打)しているので
GetKeyState、KeyWaitでの判定は意味が無い
キーリピートの回数やその時間で判定する必要がある

412:名無しさん@お腹いっぱい。
15/10/18 21:14:53.73 AMpTStWq0.net
現在のデフォルトのウィンドウ番号って取得できない?

413:名無しさん@お腹いっぱい。
15/10/18 23:56:00.88 AMpTStWq0.net
↑正確には実行中のスレッドでした(無理っぽいのかな)
てか同一スレッドで異なるウィンドウ番号のGuiが関数やラベルを通して複数起動する可能性があったら
それらの生成時にはデフォルト設定はせずに「Gui, 2:」のように1つずつ番号を当てるのが一般的なんだろうか?

414:名無しさん@お腹いっぱい。
15/10/19 01:31:20.98 FSaZz6ju0.net
IEで表示したウェブページの保存を1キーで行いたいのに
CTRL+S
ALT+S
CTRL+W
がうまく動作しない
Win7 だからか

415:名無しさん@お腹いっぱい。
15/10/19 11:17:45.85 xvq8jrZL0.net
MS謹製アプリはOSバージョンでショートカットキーが違うことはたまにある
まあでもwin8とかvistaとか他のOSでの動作実績ないんだったら
単に書き方が悪いだけだと思うよ

416:名無しさん@お腹いっぱい。
15/10/20 09:51:42.98 F7whZ6T60.net
へー、run,のあとコマンドラインのコマンド入れても動くのか。
なら
Shutdown, 1
より
run,shutdown -s -t 0
のほうがしっかり処理終わらせてシャットダウンできるな

417:名無しさん@お腹いっぱい。
15/10/20 12:53:48.49 85QvDqET0.net
>>416
どんな新発見かとおもたら・・・

418:名無しさん@お腹いっぱい。
15/10/20 13:12:31.13 F7whZ6T60.net
新発見っていうか、外付けHDがAhkコマンドで起動したまま本体だけシャッドダウンするとかいうワケわかんないことになってたから、俺としてはコマンドラインてシャットダウン呼べるのは感動した
単純にrunでcmdが使えるって知らなかったんど

419:名無しさん@お腹いっぱい。
15/10/20 14:18:29.22 PSPgOZED0.net
コントロールにスクロールバーが存在するかどうかで別の動作をさせたいのですが
スクロールバーの有無はどのように判定すればいいでしょうか

420:名無しさん@お腹いっぱい。
15/10/20 15:15:21.86 ky3Gyr1c0.net
Winget ControlListで全コントロール列挙して
ScrollBarという文字が含まれるコントロール名を探す
ただしソフトによってはコントロール名が取れないものもあるので万能ではない
その場合は個別対応が必要
ここのGetScrollBarHwnd()とか
URLリンク(www6.atwiki.jp)
ここのTW_FindScrollBar()とか (※こちらは旧仕様のため64bit版ahkでは動かない模様)
URLリンク(sites.google.com)

421:名無しさん@お腹いっぱい。
15/10/20 17:06:12.11 3kcy3KXH0.net
>外付けHDがAhkコマンドで起動したまま本体だけシャッドダウンするとかいうワケわかんないことになってた
これの意味がまったくわからない
だれか翻訳して

422:名無しさん@お腹いっぱい。
15/10/20 17:11:35.56 F7whZ6T60.net
ごめん。本来なら外部HDも一緒に電源落ちてくれるんだ。でもAHKからシャットダウンをすると外部HDがつながったまま本体がシャットダウンされたと認識されないんだ。
その結果再起動した時そのハードディスクが認識されないとか変なことになるんだ。
コマンドプロンプトからシャットダウンしたらこの問題は回避出来る。
AHKからのシャットダウンはなんだか挙動がおかしいんだ。

423:名無しさん@お腹いっぱい。
15/10/20 17:55:57.10 85QvDqET0.net
よく分からん…というか、同じ様な環境にないので実証してない(できない)のでスマンが、
電源切るなら、「Shutdown, 1」じゃなく、
;(シャットダウン + 実行後電源を切る = 1 + 8 = 9):
Shutdown, 9
でどうなんだろう?(場合によっては「強制的=4」も追加するとか)

424:名無しさん@お腹いっぱい。
15/10/20 18:15:50.58 3kcy3KXH0.net
うちも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:名無しさん@お腹いっぱい。
15/10/22 03:50:53.89 X0FJzFF20.net
超絶簡単なメニュー選択方法を思いついた
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:名無しさん@お腹いっぱい。
15/10/22 09:06:23.49 N8YHprkn0.net
見栄え的にも操作的にもコーディング的にもあまり楽ではなさそうだが
起動部分まとめたらメンテは多少楽になるか
#IfWinActive,Ahoka Launcher ahk_exe AutoHotkey.exe
q::
w::
e::
c::
ahoka_launcher(A_ThisHotkey)
return

427:名無しさん@お腹いっぱい。
15/10/23 00:09:58.39 O1iHphiL0.net
PS/2キーボードにUSB変換器をつなげて使ってる人いますか?
俺の環境だと、Shift+修飾キー+なんかのキーのように3キーを押下するときにリピートが効かない。修飾キーがリリースされてShift+なんかのキーが発動してしまう。
センチュリーのPS2W-USBでこの症状を確認して、今日CoregaのCG-USBKMSV2を買ってきたが、同じような感じでした。
ときどき修飾キー+任意のキーの2キーによるHotkeyさえ取りこぼすのでセンチュリーより悪い点もあります。
古いキーボードをUSB端子しかないPCでAHKを使う際に大きな問題になると思いますが、皆さんの環境ではいかがですか?

428:名無しさん@お腹いっぱい。
15/10/23 04:11:34.85 kB6oEzWC0.net
俺も似たような変換器を各社何個も買って、結局どれ一つとして、まともに動かなかったから
USBキーボードに乗り換えたよ。
ひどいのだと、普通のキーリピート自体がおかしい。
キーを押しっぱなしにした場合、ふつうだとこうなるはずだけど
・    ・・・・・・・・
安いのだと、こうなる
・ ・  ・・・・・・・・
なぜか知らんがup/downが2回繰り返される。

429:名無しさん@お腹いっぱい。
15/10/24 12:11:58.43 7jcVs8kq0.net
LV_GetNext等の関数ではウィンドウ番号の個別指定は不可能ですか?
LV_GetNext("1:" 0, "F")みたいにしても効果がないんだが

430:名無しさん@お腹いっぱい。
15/10/24 12:20:50.07 hBkf+BQk0.net
>>429
Gui,ListView

431:名無しさん@お腹いっぱい。
15/10/24 12:40:10.57 7jcVs8kq0.net
>>430
えっと、これは同じウィンドウ番号のGuiでリストビューが複数ある場合の指定ということですかね
ウィンドウ番号そのものの指定はGui, DefaultでできるのですがGuiControlのようにコマンド(関数)別での個別指定は無理っぽい感じですかね
トン

432:名無しさん@お腹いっぱい。
15/10/24 21:46:31.26 u4Zt3OEo0.net
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:名無しさん@お腹いっぱい。
15/10/24 21:51:32.83 r2r4w1Fn0.net
Autohotkeyでbatファイルを作成して、その後に実行させる

434:名無しさん@お腹いっぱい。
15/10/24 23:49:33.01 /X7ajDWR0.net
&

435:432
15/10/25 00:56:55.73 TsHcd+Aa0.net
>>433,434
レスサンクスです。
run, %ComSpec% /c hoge -a > aaa.txt & hage -b > bbb.txt
で行けました。

436:名無しさん@お腹いっぱい。
15/10/25 02:40:40.49 kFnvS5jN0.net
コピーした文字列を句点で分割して、各行を変数に代入してリストアップしたいんですけど
どういう処理をすればいいんでしょうか?
何となく下記のような感じでいけないかと思ったんですが
ループ中の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:名無しさん@お腹いっぱい。
15/10/25 03:48:03.86 eWto7l690.net
>>436
Loop, Parse

438:名無しさん@お腹いっぱい。
15/10/25 12:42:03.69 TW2CaBWA0.net
StringSplit

439:名無しさん@お腹いっぱい。
15/10/25 12:48:15.80 TW2CaBWA0.net
分割自体はLoop, ParseかStringSplitでいいと思うが
根本的なところで引っかかってるようなので補足
>ループ中のiを1つずつ増やしていく方法
i = i + 1 で単純にカウントアップする行を入れる
なおループのカウントだけならA_Index参照すればそもそもi変数自体不要

440:名無しさん@お腹いっぱい。
15/10/25 13:20:18.45 O+5eHiWl0.net
Loop,purgeで句読点で区切ってしまえばいい

441:名無しさん@お腹いっぱい。
15/10/25 14:43:17.13 gbJQJB+00.net
マウスのサイドボタンにジェスチャ機能を取り付けたいです
上下左右への単純なジェスチャはできたんですが
ボタンを押しながらマウスを時計回り、または反時計回りにくるくる回したことを認識させるにはどうすればいいでしょうか
URLリンク(pastebin.com)

442:名無しさん@お腹いっぱい。
15/10/25 15:12:08.47 O+5eHiWl0.net
MGLでいいんじゃねーのん?

443:名無しさん@お腹いっぱい。
15/10/25 16:12:13.65 kFnvS5jN0.net
>>437-440
Loop,Parseコマンドがドンピシャでした! 本当にありがとうございました。
リストボックス表示させるのはよくわからなかったのでチェックボックスを沢山作らせて何とかできました。

444:名無しさん@お腹いっぱい。
15/10/26 02:32:20.49 zHYr0+XK0.net
導入する為の判りやすい解説サイトないでしょうか?

445:名無しさん@お腹いっぱい。
15/10/26 04:48:58.42 umkpFuAC0.net
ahkwikiが分かりづらいと言うなら残念ながらない

446:sage
15/10/26 12:48:07.04 Jd6A5Anl0.net
ahkwiki って止まってるんすか?
この前、"あっ" 間違ってる発見、とか思ってカキコもうとしたんだけど。
目ンテナンスのためロックとかで、ダメだったんだけど。

447:名無しさん@お腹いっぱい。
15/10/26 14:27:30.54 3HPI9QM40.net
日本語でおk


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch