AutoHotkey スレッド part26

■ このスレッドは過去ログ倉庫に格納されています
2018/04/25(水) 18:08:09.39ID:LmrG+Efz0
!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512

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

■前スレ
AutoHotkey スレッド part25
https://egg.5ch.net/test/read.cgi/software/1505357560/

■日本語解説等
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: default:vvvvv:1000:512:----: EXT was configured 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
2018/06/20(水) 12:08:36.98ID:W9QYsAxV0
>>260
クリックに成功した場合ボタンの表示が変わる、もしくは何かの表示が出るのならImageSearchで行けるんじゃないかね
262260 (ワッチョイ 31b2-/RsH)
垢版 |
2018/06/20(水) 16:07:09.18ID:ha/OsVg60
>>261
レスありがとうございます。
表示は変わりませんが、特徴的な音が出ます。
表示の変化に関して指摘して頂いたので、Sound関係の変化に関してコマンドを探してみましたが、使えそうなのがないです。
2018/06/20(水) 16:45:56.19ID:K//20RcR0
判断する方法ではないけど
ボタンを押してから離すまでの時間を長くすれば反応するようになるのでは?
SendならSetkeydelayで
Setkeydelay,100,200

もしくは
send,{left down}
sleep,200
send,{left up}

clickなら
click,left,down
sleep,200
click,left,up
264260 (ワッチョイ 31b2-/RsH)
垢版 |
2018/06/20(水) 17:37:47.93ID:ha/OsVg60
>>263
レスありがとうございます。
試してみます。
ただ、ビジー状態に対応できるスクリプトを組みたいので、サイトがビジー状態でないと試せません。
報告は早くて数日後になります。
2018/06/21(木) 04:48:21.38ID:AY8E+xgd0
>>264
人気商品は確定するまでカゴ入れ状態になかなかならないからやり続けるて意味だよね?
ビジー状態の意味がブラウザが固まるような表現になってるし
266260 (ワッチョイ 1fb2-E6HK)
垢版 |
2018/06/21(木) 13:46:05.91ID:uo6bOHK00
>>265
いえ、ブラウザは固まってる状態です。
その状態で酷い時は、数秒に一度、一瞬クリックできる状態になる時があって、その隙にクリックしたいのです。
2018/06/21(木) 15:01:33.74ID:VVK4xcOd0
ポップアップメニューを表示して戻り値にキーを返す関数
https://paste.ofcode.org/cpAPU8WT64bJd4WWJCiPS4

testcode()
{
menu=
(
ファイル(&F)
編集(&E)
検索(&S)

終了
)
ret := ShowPopupMenu(menu)
if ret=F
msgbox,ファイル処理
if ret=E
msgbox,編集処理
if ret=S
msgbox,検索処理
if ret=5 ; &がない場合は数値で返す
msgbox,終了処理
if ret=
msgbox,キャンセルされた
}
2018/06/21(木) 16:23:27.41ID:5cOpvXIJ0
>>264
詳しくないけどIEにぶん投げて、ComObjCreate("InternetExplorer.Application")から.ReadyStateでページ表示の完了状態を調べるとかは?
無理にahkでやる案件でもないような気がするけど
2018/06/22(金) 14:32:53.34ID:ugMFpfsi0
ControlGet SysListView321を使って、値を取得することは出来ます。
逆に、SysListView321に値をセットすることは出来ませんか。 ゲットした値の一部を変更したいのですが
270260 (ワッチョイ 1fb2-E6HK)
垢版 |
2018/06/22(金) 21:12:40.61ID:PUo1zf840
>>268
確かにIEの操作はAHKでやるより、IEから直接の方が確実なような気がしますね…。

>>263
少しスリープの時間を長めにしましたが、軽いビジー状態なら結構いけますね。
正直、長押しでいけるとは思ってもいませんでしたからびっくりしました。

とりあえず、長押しでしのいで、将来的にはVBAでIEを直接操作する方向で考えたいと思います。
予定していた方法とは異なりますが、そこそこどうにかなりそうなので、これで締め切らせて頂きます。
皆さんありがとうございました(o*。_。)oペコッ
2018/06/23(土) 07:17:36.20ID:0OH7ylO90
ヒアドキュメントがあまりにも見づらいのでクラスにしてみた
m.Add("ファイル(&F)")

m.Add,ファイル(&F)
とは書けないのな

http://textuploader.com/dzt72

testcode2()
{
m:=new PopupMenu()
m.Add("ファイル(&F)")
m.Add("編集(&E)")
m.Add("検索(&S)")
m.Add()
m.Add("終了")
ret := m.Show()
msgbox,% "ret=" ret
}
2018/06/23(土) 22:27:36.89ID:Ztr4TmAR0
>>271
>>1に「Autohotkey専用うpろだ」紹介されてるんだから、以降そっちでやってね
2018/06/24(日) 01:05:16.40ID:gl6IIcaZ0
ちなみにAHK v2のMenuはまさにそんな感じ
https://lexikos.github.io/v2/docs/objects/Menu.htm
2018/06/27(水) 17:27:43.88ID:hg8rqnbu0
iniwriteの時に書き込む値にカンマがあった場合はどうすればいいのでしょうか?
2018/06/27(水) 17:32:41.64ID:0iRb2wcH0
エスケープするor変数に入れる
2018/06/27(水) 18:25:58.86ID:hg8rqnbu0
hensuu = 111,aaa,222,bbb
iniwrite, %hensuu%, test.ini, test, test

iniwrite, 111`,aaa`,222`,bbb, test.ini, test, test

こんな事が出来るなんて知りませんでした。
どちらでもできました、ありがとうございます。
2018/07/02(月) 03:06:06.99ID:g0LGh7eu0
ATOKの日付変換が便利なんだけど、使いたいフォーマットがない。
例えば "yyyy_mmdd" とか。
now対象だけならahkで作れそうなきがするけど、ATOKみたく「あした」「あさって」とか
「げつようび」とかで、前後の日をサポートするとなると大変そう。
こんな日付変換に対応したものってありますか?
2018/07/02(月) 08:08:57.58ID:obbanbrL0
別のスクリプト同士で変数をやり取りする方法はありませんか?

情報をやり取りするためのファイルに書き込んでおき、
別のスクリプトで読み込むしかないでしょうか?
2018/07/02(月) 10:28:37.55ID:2sJUYxCT0
>>277
http://ahkwiki.net/EnvAdd

::nitiyoubi::
SUNDAY=1
send,% DateCalc(SUNDAY-A_WDay,"yyyy-MMdd")
return

DateCalc(offset,format) {
TimeStamp := A_Now
TimeStamp += %offset%, Days
FormatTime,TimeStamp,%TimeStamp%,%format%
return TimeStamp
}

>>278
http://ahkwiki.net/OnMessage()
2018/07/02(月) 12:22:32.02ID:obbanbrL0
>>279
サンクスコ助かりました
2018/07/02(月) 13:08:15.58ID:YBwm2/8CH
>>279
わぁ、作っていただけるなんて。
ありがとうございます。
これを元にメニュー化してみます。
2018/07/07(土) 02:08:28.79ID:qwGCuEP30
GUIで使われるデフォルトのフォントはコレであっていますか?
分かる人いたらお願いします。

OS日本語 MS UI Gothic (win7で確認、win10も同じ?)
OS英語 MS Sans Serif?
2018/07/07(土) 08:53:40.58ID:OoZZ3/qe00707
>>282
ググればわかることだが両方違う

win7はメイリオ、win10は遊ゴシック系
http://www.atmarkit.co.jp/ait/spv/1702/01/news038.html
英語版OSは Segoe UI
https://ja.m.wikipedia.org/wiki/Segoe
2018/07/07(土) 09:50:28.34ID:qwGCuEP300707
>>283
言葉足らずでした、AHKのGUIコマンドの話です
原文のリファレンスを読むとデフォルトはGetStockObjectのDEFAULT_GUI_FONTの事だとは思うのですが
他環境のフォント情報がなかなか見つからず質問した次第です

> Omit the last two parameters to restore the font to the system's default GUI typeface, size, and color.

Gui, Font,, メイリオ
Gui, Add, Text,, あいうえおABCDEabcde (メイリオ)
Gui, Font,, MS UI Gothic
Gui, Add, Text,, あいうえおABCDEabcde (MS UI Gothic)

A_GuiFont := GuiDefaultFont()
A_GuiFontSize := A_LastError

Gui, Font
Gui, Add, Text,, %A_GuiFont%`t%A_GuiFontSize% (デフォルト)
Gui Show
Return

GuiDefaultFont() { ; By SKAN www.autohotkey.com/forum/viewtopic.php?p=465438#465438
hFont := DllCall( "GetStockObject", UInt,17 ) ; DEFAULT_GUI_FONT
VarSetCapacity( LF, szLF := 60*( A_IsUnicode ? 2:1 ) )
DllCall("GetObject", UInt,hFont, Int,szLF, UInt,&LF )
hDC := DllCall( "GetDC", UInt,hwnd ), DPI := DllCall( "GetDeviceCaps", UInt,hDC, Int,90 )
DllCall( "ReleaseDC", Int,0, UInt,hDC ), S := Round( ( -NumGet( LF,0,"Int" )*72 ) / DPI )
Return DllCall( "MulDiv",Int,&LF+28, Int,1,Int,1, Str ), DllCall( "SetLastError", UInt,S )
}
2018/07/07(土) 11:20:45.04ID:OoZZ3/qe00707
失礼
win10も MS UI Gothic だったよ
2018/07/08(日) 18:55:55.14ID:jnfyQm1X0
ありがとうございました

他のフォント情報も見つけることができました
https://msdn.microsoft.com/ja-jp/library/system.drawing.systemfonts.defaultfont(v=vs.110).aspx
2018/07/14(土) 00:28:43.55ID:c9o5o3bi0
「コントロール+クリック」を「無変換+クリック」に割り当てられるといいんだけどな@あ
2018/07/14(土) 00:33:52.87ID:wrBaH4zb0
割り当てられますけど
2018/07/14(土) 07:29:02.66ID:TH1SIGBe0
>>287
失敗した書き方はどんな感じ?
290名無しさん@お腹いっぱい。 (ワッチョイ ea67-LQig)
垢版 |
2018/07/15(日) 09:50:14.97ID:bqpX/mGQ0
関数内でループをさせて、そのループのA_indexを使ったことをさせたいんですが、A_indexを使ったことというのを関数内で何度も使うのでその記述を簡略化したいんですが
どうすればいいですかね?やりたことは下記のようなことなんですが、labelとgosubで動くものなのかがよくわからないでいます

test()
{
loop,10
{

label:
tooltip,%A_index%
return

gosub,label
sleep,500
gosub,label
sleep,500
gosub,label
sleep,500
}
return
}
2018/07/15(日) 20:19:37.01ID:we5y7DJBM
関数内でもラベルは使えるけどサブルーチンは無理
そのコードだとtooltipの下のreturnで関数ごと抜けてしまうよ
2018/07/15(日) 21:19:24.01ID:p+q5mhPf0
>>290
サブルーチン部分をloop外に出せば動くとは思うが、正直何をしたいかよく分からん
同じA_indexで同じ処理を3回してるから、その部分をloopで回せば簡略化できると思うが…

test() {
loop,10 {
count := A_index
loop,3 {
gosub,label
sleep,500
}

}
return

label:
tooltip,%count%
return
}

長いので次レスで
2018/07/15(日) 21:19:59.91ID:p+q5mhPf0
続き

それとも、こんなことか?

test() {
loop,10 {
gosub, label1
gosub, label2
gosub, label3
}
return

label1:
tooltip,%A_index%
sleep,500
tooltip,
return
label2:
MsgBox,%A_index%
sleep,500
return
label3:
Clipboard := A_index
MsgBox,Clipboard は %Clipboard%
sleep,500
return
}

以上、かなり適当
2018/07/15(日) 21:21:21.92ID:p+q5mhPf0
>>293
かなり見づらくてスンマソン
2018/07/18(水) 16:42:54.30ID:trYB5odT0
290 ですが返事がおそくなってすみません。
結局loopでlabel部分をループさせました。ありがとうございました。
2018/07/20(金) 14:55:17.40ID:2RsjRDqU0
win7から10へマシン変えようか考えてますが
ahkスクリプトは相当書き換える必要あるのでしょうか? 今あらゆる作業でずいぶん頼ってるのでそこが悩みどころでして
2018/07/20(金) 15:09:10.38ID:wv55im470
>>296
もしWin7のUAC設定を一番下にしてオフにしてるならばWin10に移行後にUAC絡みで気を付ける必要があるかも
Win7ではUAC一番下にするだけでほぼ機能しなくなるけどWin10では一番下にしても完全にはオフにならないので
必要に応じてスクリプトを管理者権限で実行したり、標準権限で実行したりを気を付けなきゃならない
元からWin7でUACオンにして使ってるなら特に使い勝手は変わらないと思う
2018/07/20(金) 16:04:35.24ID:2RsjRDqU0
>>297
ありがとうございました!ユーザーアカウントというあたりは元々ぜんぜんいじってないです。
スクリプトそのまま移行して使い続けられそうでホッとしてます
2018/07/20(金) 16:20:15.17ID:IY43ug2o0
>>296
自分はahk以外にもWSHやAutoItも使ってるので参考になるか分からないが…

スクリプトでレジストリにアクセスしようとしてもブロックされまともに動かなかったので、
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
の"EnableLUA"=dword:00000001 → "EnableLUA"=dword:00000000
にしてUACを無効化した

自分はwin7 32bitからwin10 64bitにしたけど、特に大掛かりなスクリプトの書き換えはしなかったような気がするが、
win7時代に動いていたスクリプトがwin10で動かなくなったのはあったな
このスレにあったヤツだったか忘れたが、ウインドウに穴開けてデスクトップを見るスクリプトだった
他人作だし使う機会も少なかったのでもう使用はしていない…
2018/07/20(金) 20:57:51.00ID:GOaXWtHw0
無理矢理UAC完全無効化はストアアプリに不具合出るしMS的にはストアアプリ推しだから
将来的に大きなトラブルになる可能性もある
2018/07/20(金) 21:09:21.49ID:9LPAAB/e0
UAC無効化しなくてもUI Access有効化でよくない?
2018/07/20(金) 23:46:35.78ID:IY43ug2o0
情報サンクス

>>300
>ストアアプリに不具合出るしMS的にはストアアプリ推し
自分としては別に使う気はないからどうでも良いかなぁ
win10使う上で必須のアプリがあるなら考えるけども…

>>301
UI Access っつうのちょっと調べた限りでは、フォルダ限定される?
自分はCドライブにソフトやスクリプトは殆ど置かないので、UI Access有効化は余り意味がないかもしれない
303名無しさん@お腹いっぱい。 (ワッチョイ 77d0-pvuh)
垢版 |
2018/07/22(日) 10:19:40.82ID:OCDGBqGi0
なぜ日本語wikiのキーリストで
変換:vk1Csc079のように記載されているのでしょうか?
実際,スクリプトにはvk1Cと記載しないと動きませんよね?
誤解を招くような気がする(実際に自分も戸惑った)のですが,これにはなにか理由があるのですか?
2018/07/22(日) 10:58:23.54ID:AMD77juC0
>>303
v1.1.24まではvc○○sc○○の記述が可能だった
v1.1.27で修正されてvk○○またはsc○○の片方しか記述出来なくなった
v1.1.28で以前の仕様(vc○○sc○○が可能)に戻ったらしいけど
俺はv1.1.24からアップデートしていないので未確認
2018/07/23(月) 21:15:15.12ID:M4VJIdNm0
いや、v1.1.28でも最新のv1.1.29.01でも「vk○○sc○○」の記述はエラー出ますよ
今も「vk○○」か「sc○○」の片方のみ可能なのでwikiを直さないと新規の人には分かりにくいだろうね
2018/07/23(月) 22:11:48.54ID:ionPQ2gz0
いろんな文法を認めている割に、これに関しては厳しくしたいっていうのが良く分からんね。
2018/07/25(水) 03:34:26.75ID:gZ0Se62R0
keyhacですが、tkinterは入れたままにして頂きたい!
その方がポータブル感が高まると思います。
2018/07/25(水) 04:35:30.78ID:XXshHs+p0
すいません質問させて下さい

https://superuser.com/questions/1269772/windows-explorer-shortcut-to-go-to-next-sibling-folder

上のサイトのスクリプトはエクスプローラ上で同階層フォルダ間を移動するものですがあくまで英語圏のためのものであり
日本語のフォルダ名だとエクスプローラの表示順通りに移動できませんがどうすればいいでしょうか

Windows XP以降のソート順は特殊でShlwapi.dllのStrCmpLogicalW()というAPIを使う必要があるらしいのですが

Windows 7 64bit
Autohotkey(x64) v1.1.22.09
2018/07/25(水) 14:19:24.59ID:tDovQ0SL0
>>308
一旦兄弟フォルダを全部取得してからフォルダ名でソートすればいいんじゃないか、ということで自分でも使用したいので作った
Win10で動作確認
https://pastebin.com/sZVcY14F
オリジナルに変更を加えた部分はある程度コメントを入れてあるので詳細はそっちで

それと、親フォルダのソート状況を推察するのは難(*1)があるので、移動の順番は名前で昇順ソートされた状態を想定してる
別ウィンドウで親フォルダを日付や名前の降順でソートして表示していて、移動してみたら順番が違う!というのは諦めて

(*1)
親フォルダのソート状況を推察できる状況
・一つのエクスプローラーウィンドウで親フォルダを表示している
厳しいとき
・親フォルダを表示していない
・複数のウィンドウで親フォルダを開いていて、それぞれソート状況が異なる。(どちらを選択するのか?)
2018/07/25(水) 15:49:51.80ID:XXshHs+p0
>>309
質問者ですがwindows7でも動作確認しました
兄弟フォルダ間の移動なんて簡単て思ってたらとんでもなかったw
前提条件を認識した上で使わせてもらいます
ありがとうございました
2018/07/26(木) 17:12:06.86ID:t46bhQ3w0
https://pastebin.com/kZADqQ5P

よく分かってないけど>>309のスクリプトで最初と最後の兄弟フォルダにも移動したいときはこんな感じでいいのかな
2018/07/28(土) 17:20:36.99ID:pDAfKZEBM
こんなの聞くの申し訳ないんですがTrayTIpが動きやせん
調べでもわからなくて困った

windows10 1803 AHKL1.1.29.01(64bit)
#NotTrayIcon使用なし
全文が長くなるとTrayTIpがwin上で反映されない
LOGだと指令でてる&短い文でテストすると問題なし
コンパイルすると動いてたが更に全文長くしたらコンパイルしてもTrayTIpでない

うわーん
2018/07/28(土) 17:47:48.00ID:pDAfKZEBM
>>312
自己解決しました。win10の設定でAHKの通知取得がoffやった…
むしろなんで短いと通るのか不思議になりましたが

スレ汚しごめんなさい
2018/07/31(火) 02:10:13.15ID:GTD+3eTh0
下記サンプルコードではタスクバー上の空きスペースクリック時メニューが出てしまうので
メニューを出さずにアイコン上か空きスペースかの当たり判定ができましたら教えてください

■サンプルコード
中クリックでアプリ閉じ
問題点…空きスペースクリック時のメニュー

;タスクバー上
#If MouseIsOver("ahk_class Shell_TrayWnd", "MSTaskListWClass1")
 MButton::
  Send {RButton}
  Sleep, 250
  if WinExist("ジャンプ リスト ahk_class DV2ControlHost")
   Send {Up}{Enter}
  else
   Send {Esc}
 return
#If

MouseIsOver(WinTitle, ClassNN:="") {
 MouseGetPos,,, hWnd, ControlNN
return (!ClassNN ? WinExist(WinTitle " ahk_id " hWnd) <> 0 : WinExist(WinTitle " ahk_id " hWnd) && ClassNN = ControlNN)
}
2018/08/01(水) 01:43:23.52ID:tCZRzMJu0
サムネイル有無だとメニューは出ないがサムネイルがないとミスってしまう
SendMessageなどでの当たり判定や、そもそも閉じるのに右クリック→上→Enterではない案(AHKで)などありましたら教えてください

■サムネイル有無判定
Sleep, 250
if !WinExist("ahk_class TaskListThumbnailWnd")
 return
2018/08/01(水) 20:39:43.87ID:RFuZeACf0
タスクバー上でカーソル下がアイコンか空きスペースかの判定だけなら
Acc.ahk使えばすぐじゃないかな
Roleの値が違うはずだし
2018/08/01(水) 21:50:53.68ID:tCZRzMJu0
>>316さん
Acc_GetRole()関数利用で希望する動作になりました
今までACC.ahkはテンプレで紹介されているのは知っていましたが、用途が分からずインスコしていませんでした
めちゃ便利ですね。教えていただきありがとうございました
2018/08/02(木) 22:02:20.44ID:Ys9NGPTx0
Acc.ahkは使い方がわかればDoDefaultActionが便利だった
俺は分からず分かったのはUI Automationに手を出した後という
2018/08/02(木) 23:21:29.21ID:SOQUJBoF0
いまさらながらオミトロンのバイパス状態の見分け方が分かったので記念カキコ

;Proxomitron バイパス
1 Up::
 SavedDHW := A_DetectHiddenWindows
 DetectHiddenWindows, On
 ControlGet, BypassSt, Enabled,, Web ページ・フィルタ, ahk_class PrxTronCls
 BypassSt ? ToolTip("Bypass On") : ToolTip("Bypass Off")
 PostMessage, 0x111, 1007,,, ahk_class PrxTronCls
 DetectHiddenWindows, %SavedDHW%
return

;ToolTip() ttp://pastebin.com/uHuBttNb
2018/08/03(金) 21:43:37.48ID:pHE6KlnQ0
Acc_GetName()で一般のコピーツールなどでは取得しにくいTreeView上のテキスト取得や
Acc_GetName()とAcc_GetRole()の併用でWM_NCHITTESTではだめなタイトルバーのボタン上の正確な位置判定など
あらためて教えていただいた>>316さんには感謝

ACC.ahk ttp://ux.getuploader.com/autohotkeyl/download/76/ACC_Unicode_and_AccInfoViewer_kai.zip 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
2018/08/04(土) 02:18:49.52ID:H2OE/J7G0
acc.ahkが便利そうなのでググったら日本語解説ページがなく
クルマのワーゲンの機能らしい
accはオートクルーズコントロールみたいなのだが
ahkはよくわからない
ムキになって検索しまくり
ようやくヒットする
BMWも搭載してるようで動画で確認
クルマの下からチンコがでてきた
違う!
2018/08/04(土) 20:08:36.57ID:mW/OGX1W0
>>320
なんか凄いツールですね
AccInfoViewer_kai.ahk を使ってみたところ
メモ帳のツールバーの 編集>貼り付け のところにカーソルを合わせると

Name : 貼り付け(P) Ctrl+V
Action : 実行

と出るのですが、この情報を使ってmouseclick AHKで 貼り付け を
2018/08/04(土) 20:11:05.28ID:mW/OGX1W0
すいません途中で送信してしまいました

>>320
なんか凄いツールですね
AccInfoViewer_kai.ahk を使ってみたところ
メモ帳のツールバーの 編集>貼り付け のところにカーソルを合わせると

Name : 貼り付け(P) Ctrl+V
Action : 実行

と出るのですが、この情報を使ってmouseclick を使わずに AHKで 貼り付け を
実行させることは可能でしょうか?
もしできるならどのように書けば良いのでしょうか?
2018/08/04(土) 22:48:25.99ID:KKkpi8nV0
自分が見つけたのは↓だけど、同じもの?

Acc library (MSAA) and AccViewer download links - AutoHotkey Community
https://autohotkey.com/boards/viewtopic.php?t=26201
の「AccPack.zip」
https://autohotkey.com/boards/download/file.php?id=4049&;sid=696fb8e1246e615c3ce9d136c98f2810
に含まれる「Acc.ahk」

あと、「COM.ahk」というのも同時に必要なのだろうか?
ここ↓のでOK?
COM Standard Library - Page 44 - Scripts and Functions - AutoHotkey Community
https://autohotkey.com/board/topic/21142-com-standard-library/page-44?hl=com.ahk#entry529640

検証もせず、レスしてスマソ
2018/08/05(日) 05:48:53.94ID:KjBFiGmx0
>>324
AccInfoViewer_kai.ahk 付属のACC.ahkについては
ダウンロードボタンの少し上のコメントに
フォーラムで拾ったものって書いてあるよ
2018/08/05(日) 21:22:05.24ID:T6bMKT0H0
>>324
COM機能はいまは標準実装されているので不要
いつかはCOMが使えるようになりたいなぁ

>>320
> Acc_GetName()で一般のコピーツールなどでは取得しにくいTreeView上のテキスト取得や
と書いたけど、どこでもおもしろいほどテキスト取得できますね
いままでClipy、NNScanText、コピット!、CopitX使っていたけどおさらばしました
2018/08/06(月) 03:58:51.10ID:5wbNEfZL0
AHKでクラス使うときメソッド名のタイポがエラーにならないんだけど検出する方法ない?
これエラーにしてもらわないとつらすぎる
2018/08/06(月) 04:24:03.14ID:+DjLc0mw0
入力支援の利くエディタを使うしかないんじゃないかな…。
実行時に未定義のメソッドを呼んだときエラーを出すなら
class ErrorUndefineMethod
{
__Call(name)
{
throw Exception("This method is not defined." (name != "" ? " : " name : ": "), -1)
}
}
こんな感じの基底クラスを継承するなりすればいいけど、たぶん言ってるのはコーディング時の話だよね
2018/08/08(水) 16:55:10.42ID:Wo1vgWVl00808
google chromeでは、A_caretYでキャレット位置が取れないのですが、他になにか方法はないでしょうか?
ctrl-wにてタブ閉じは生かしつつ、入力シーンでは前単語削除に割り当てたいのですが…
2018/08/08(水) 18:35:25.42ID:byzIEboea0808
>>329
確実じゃ無いかもだけどIME.ahkの関数で取れる値が入力可能かどうかで変わると思う
2018/08/08(水) 20:06:38.93ID:Wo1vgWVl00808
>>330
ありがとうございます!

#if winactive(“ahk_exe chrome.exe”) && ime_getconvmode()
^w::send ^{bs}
return

上記、IME_GetConvMode()関数で分岐できました!
助かりました〜
332名無しさん@お腹いっぱい。 (ワッチョイ 2b3e-QxOT)
垢版 |
2018/08/18(土) 02:35:10.55ID:flWGLe7T0
r::send 7

このrを右クリックにしたいのですが何を入力すればいいのでしょうか
よろしく
2018/08/18(土) 03:23:00.41ID:aJSMzMBT0
>>332
wikiのキーリスト見なさい
マウスも書いてある
2018/08/22(水) 11:48:18.04ID:xeghXmwt0
ウインドウがAとBの2つあるとします。
Aをマウスでクリックしてアクティブにして

ControlClick, x100 y100

とすると、ウインドウAの100、100の位置をちゃんとクリックします。
ところが、ウインドウBをマウスでクリックしてからスクリプトで、

WinActivate, ウインドウのA
ControlClick, x100 y100
return

とすると、なぜかウインドウAの100、100の位置をクリックされません。また、リターンで戻るとウインドウBが
アクティブになっています。

WinActivate, ウインドウのA
MouseClick, left, 100, 100

とすればちゃんとクリックされます。また、ウインドウBがアクティブの状態で、

WinActivate, ウインドウのA
Sleep, 5000
ControlClick, x100 y100
return

とやってスリープ中にマウスでウインドウAを手動でアクティブにしてやってもダメです。なぜでしょうか。
2018/08/22(水) 12:00:43.76ID:xeghXmwt0
ちなみに、x100 y100のところにあるのはボタンなのですがそのボタンのClassNNを使って、
ControlClick, x100 y100
の代わりに
ControlClick, classNNの名前
でやってもダメでした。 ウインドウAを最初にアクティブにしてからなら問題ありません。
2018/08/22(水) 12:06:53.85ID:Tq1tthei0
試してないけど
WinActivateしただけじゃLast Found Windowが記録されないからじゃね
ControlClickは指定されたウィンドウをクリックするコマンド
必ずアクティブウィンドウをクリックするMouseClickとは違う

WinActivate, ウインドウのA
WinWaitActive, ウインドウのA ; ←ここでLast Found Windowを書き換える
ControlClick, x100 y100

もしくは

ControlClick, x100 y100, ウインドウのA ; ← 省略しないでウィンドウを指定する
2018/08/22(水) 12:23:41.78ID:xeghXmwt0
WinWaitActiveを入れて出来ました。
WinWaitActiveは一瞬で終わりました。
Sleep, 5000を入れてその間に手動でウインドウAをクリックしても出来なかったのがよくわかりませんが
とりあえず、これで行くことにします。
2018/08/22(水) 12:25:05.21ID:xeghXmwt0
ああ、WinWaitActiveをしないと、WinActivateだけだと、どんなに時間がたっても
Last Found Windowは変わらないということですか
2018/08/23(木) 01:17:55.45ID:E69zRD1X0
youtubeのプレイヤー画面の座標を取得する方法はあるでしょうか?

最近youtubeの仕様が変わって再生する元動画のアスペクト比によってプレイヤー画面のの大きさも変化してしまい
プレイヤー内の設定ボタンなどの座標が動画ごとにずれてしまいます
2018/08/23(木) 09:54:48.67ID:jFzHledS0
Acc.ahkで座標は取得可能
もしかしたらDoDefaultAction使えるかもしれないけど確かめてない
2018/08/23(木) 11:02:03.29ID:E69zRD1X0
>>340
プレイヤーの高さ h によって挙動を変えたいので

if(h > 500){ }

のように書きたいのですがその h をどうやって取得すれば良いのでしょうか?

Acc.ahk を眺めると

Acc_Location(Acc, ChildId=0, byref Position="") { ; adapted from Sean's code
try Acc.accLocation(ComObj(0x4003,&x:=0), ComObj(0x4003,&y:=0), ComObj(0x4003,&w:=0), ComObj(0x4003,&h:=0), ChildId)
catch
return
Position := "x" NumGet(x,0,"int") " y" NumGet(y,0,"int") " w" NumGet(w,0,"int") " h" NumGet(h,0,"int")
return {x:NumGet(x,0,"int"), y:NumGet(y,0,"int"), w:NumGet(w,0,"int"), h:NumGet(h,0,"int")}
}

なんかそれらしいのが書いてあるのですがどう使えば良いか全く分からないです、、
当方 java で hello world したことあるぐらいの知識しかないです
2018/08/23(木) 12:33:47.88ID:jFzHledS0
使っているブラウザ次第で取得できないのを忘れていた
できるかどうかAccInfoViewer_kai.ahkで確認してください
2018/08/23(木) 12:44:31.29ID:E69zRD1X0
>>342
サンプルを参考にfirefoxだと

#include Acc.ahk

^b::
h := % Acc_GetLocation()["h"]
MsgBox,%h%
return

Acc_GetLocation(x="",y=""){
Acc := Acc_ObjectFromPoint(ChildId,x,y)
return Acc_Location(Acc,ChildId,Location)
}

のように書いたら動きました
ありがとうございました
2018/08/24(金) 05:53:49.88ID:8BBrzI5s0
1.1.30.00 - August 22, 2018

Fixed SendInput/SendPlay to restore DownR/remapped modifiers.

Increased limit of hotkeys per script from 1000 to 32762.

Changed commands which accept On/Off/Toggle to also accept 1/0/-1 (where documented).

Improvements to debugger (DBGp) support:

Added support for the -d (stack depth) option.
Added (DBGp-only) .<base> pseudo-property to resolve ambiguity.
Fixed debugger to avoid unsupported re-entry during break state.
Fixed DBGp command parser to support quoted parameters.
2018/08/24(金) 11:51:29.97ID:PobDvvRka
質問させて頂きたい事があります

ゲーム等のバックグラウンドでは動作が止まる、もしくは動作はする物のControlSendを受け付けなくなるウィンドウにおいて
タイトルバーで左クリック押下⇒winキー⇒左クリックを離すという操作を行うと
アプリ側にアクティブであると誤認させられるのかバックグラウンドで動作し、ControlSendで操作可能になります

この疑似アクティブ状態をAutoHotkeyで再現しようとすると上記のクリックやwinキーの操作を実際に行わせるしかないでしょうか
それとも直接的に上記状態にするような方法があるでしょうか
なお、win7で確認しており、win10等でもできるかは不明です
2018/08/24(金) 12:03:59.39ID:PobDvvRka
自己解決しました

PostMessage, 0x06 , 2, , , ウィンドウ指定
といった形でWM_ACTIVATEをWA_CLICKACTIVEで送るとバックグラウンド動作できました
347名無しさん@お腹いっぱい。 (ワッチョイ 66ec-wF79)
垢版 |
2018/08/25(土) 15:41:21.65ID:3RTHsCRA0
ド素人ですみません。
新しくインストールしたら使用できなくなりました。
今まで使用できたものが出来たくなっているみたいなのですが
どの様に直したらいいでしょうか?

貰いものなので中身は、分かっておりません。

宜しくお願い致します。

vkF2sc070::Send {-} ; [ひらカタ]縮小
AppsKey::Send {+} ; [menu]拡大

#############################
^AppsKey::
WinGet, active_id, ID, A
ChangeTF(active_id,33025) ;Period +
return
^vkF2sc070::
WinGet, active_id, ID, A
ChangeTF(active_id,33026) ;Period -
return
2018/08/25(土) 16:15:36.23ID:vYU0ROV20
>>347
vkF2sc070をsc070に書き換え
349名無しさん@お腹いっぱい。 (ワッチョイ 66ec-wF79)
垢版 |
2018/08/25(土) 16:35:58.51ID:3RTHsCRA0
>>348
ありがとうございます。起動しました(^▽^)/
2018/08/25(土) 20:16:30.95ID:Z3REYl2m0
質問です。

やりたいこと
aの長押し(0.5秒以上)でctrl+c

作ってみたものの、コピーできたりできなかったり、
ctrl+aが出力されたり、
0.5秒以上推し続けているのにaが出力されたりします。

どうかご教授ください。

$a::
KeyWait, a, T0.5
if ErrorLevel
send,^c
else
send,a
keywait,a
return
2018/08/25(土) 21:22:09.82ID:vYU0ROV20
>>350
そのまま試したけどウチでは問題無く動くなぁ
見た感じも特に間違ってないと思うし
ただaが本来はキー押した時入力だけどkeywaitで離した時入力になるから
文章入力時に常駐させるのは厳しいw
2018/08/25(土) 21:53:27.97ID:Z3REYl2m0
>>351

返信ありがとうございます。
文章入力でaが出力されないことが結構あるので、
おっしゃる通り文章入力時にはダメですねー

ホームポジションから全く手を動かさずにコピペできたら
便利だと思ってやってみたんですけど、うまくいかないですね。
2018/08/25(土) 22:00:53.23ID:3wPFX9ho0
多分、長押しは待つのにイライラすると思うよ。
2018/08/25(土) 22:20:29.56ID:A9Th9uWK0
ロダにあるOSMを使うのがいいんじゃない?
2018/08/25(土) 23:23:34.42ID:Z3REYl2m0
>>353
待ち時間を0.3秒とか0.5秒位に設定して、
慣れればなかなかの使い心地になると妄想してました。

>>354
すみません
素人なもので、ちょっとどれかよくわからなかったです<(_ _)>
2018/08/25(土) 23:41:11.52ID:Zxet+5iL0
>>355
文字入力するときって無意識だけど一つのキーを押してそのキーから指を離す前に次のキーを押したりしてるから
Aだけキーを離した時に入力なんてしたら絶対に慣れるの不可能だと思うよ
2018/08/26(日) 00:12:59.70ID:BT4gFih30
>>356
そうですね
冷静に考えればそうですね

実をいうとホームポジションでコピペをしたいというよりは
無変換+○○、変換+○○に代わる手段を探してるんです。

無変換+○○、変換+○○は使いやすところは
大体割り当ててしまったので。

長押しとか二連打とかやってみたけど、
あまりうまくいかないです。
2018/08/26(日) 06:01:45.27ID:fZksv/ak0
質問です。

MS-IMEとGoogle IMEを切り替える[Ctrl]+[Shift]と、
多言語設定を切り替える[Alt]+[Shift]を無効化して
[Win]+[Space]に一本化したいのですが、

^+::Return
!+::Return

ではうまくいきません。どのようにしたらいいのでしょうか?
2018/08/26(日) 06:48:07.65ID:Th03tA680
+^!は修飾キーとして使う場合のみ
修飾キーのみに設定する場合は shift ctrl alt にしないといけない
左右個別に設定する場合は頭にL or Rをつける、shift なら lshift または rshift

^shift::
!shift::
+ctrl::
+alt::msgbox, test

というかWindowsの言語設定でキー割り当てを「なし」にしたらだめなん?
そのほうが確実だよ
2018/08/27(月) 00:11:17.60ID:j51vjZYo0
>>359
ありがとうございます。

設定の方ですが、Google IMEはプロパティの「その他」で
[Ctrl] + [Shift]の無効化をみつけましたが、
MS-IMEの[Alt] + [Shift]を無効化する設定の場所がわかりません。
どこでしょう?
Windows7の頃は自分でショートカットキーを多少選べましたが、
Windows8以降はそういうのが無くなってしまい、
あきらめていました。
今はWindows10です。
■ このスレッドは過去ログ倉庫に格納されています
16歳の水野カイトが封印の刀を見つけ、時間が裂けて黒い風と亡霊の侍が現れ、霊の時雨と契約して呪われた刀の継承者となる場面

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