AutoHotkey スレッド part25 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1名無しさん@お腹いっぱい。 転載ダメ©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)
2017/10/22(日) 19:36:09.31ID:Dcuxbaqr0VOTE
>>260
あれれ、ウィキ見直したら確かに混在してる…表組みのほうはスペースなしで例示されてて、コード用例ではスペース入ってますね
でも自分の場合、今まで不要なShift押下げが発生してた(どうやらShiftとUpとが発生していた?)のがスペースなくすことによってスッキリ根絶されたので、ううむ謎です
2017/10/22(日) 20:33:35.27ID:L96ui5KXr
>>261
つ公式Help
2017/10/22(日) 23:00:48.87ID:h+7LhoKm0
>>259
失礼しました
うちのwin8 & ロジマウス(M505、M570)では問題が起きないため確認できないのですが
Hotkeysの先頭に以下追加でアクティブ時に機能OFFできると思います

#IfWinActive ahk_exe thunderbird.exe
WheelDown:: Send,{WheelDown}
WheelUp:: Send,{WheelUp}
#IfWinActive


蛇足ですがWheelAccel.ahkでは加速OFFにはできないようなので加速が不要な場合は
ここのWheelScroll.ahkで以下の設定にしてみて下さい
AcclMode = 0
AcclSpeed = 0
https://www6.atwiki.jp/eamat/pages/30.html
2017/10/23(月) 20:33:30.32ID:IGQCHjjB0
F8を押したら画面範囲内にあらかじめスクショ&ペイントで抽出しておいたjpg画像と一致する箇所があれば
そこにマウスカーソルが移動して一致箇所の左上でCtrl+右クリをするマクロを作りたいと思い、
始めてコードというものを書いているシロウトです。

F8::CtS()

CtS(){
BlockInput On
ImageSearch, foundX, foundY, 1266, 584, 1904, 856, *50 \Users\HK\Desktop\pics\alc.jpg
if ErrorLevel = 0
SendInput, {Click, %foundX%, %foundY%, Left, 1}
  Else If ErrorLevel = 1
MsgBox Icon could not be found on the screen.
If ErrorLevel = 2
MsgBox Could not conduct the search.
  BlockInput Off
}


上記を実行したところ(このときエラーはありません)
ErrorLevel = 2 の結果が返ってきます。
考えられる要因を教えてくださるエスパーの方、いらっしゃいましたら。。。(;´Д`)
2017/10/23(月) 20:44:49.90ID:oxsVTEnZ0
>>264
全角スペース
2017/10/23(月) 20:47:54.03ID:WCeYnLa+0
>>265
>>264の書き込みではつかっちゃいましたが

全角スペースは使用してないと思います(><;)
2017/10/23(月) 21:08:58.83ID:oxsVTEnZ0
>>266
画像ファイルをフルパス指定すれば
2017/10/23(月) 21:14:49.38ID:IGQCHjjB0
\Users\HK\Desktop\pics\alc.jpg

C:\Users\HK\Desktop\pics\alc.jpg
のフルパス指定にしましたが同じでした><;
2017/10/23(月) 21:17:38.32ID:vqubHTur0
>>264=266
デスクトップスクショの場合、自分は劣化の無いBMPで保存してそれ使ってたな
一度BMPで試してみては?(PNGも使えるようだけど自分は試したことない)
2017/10/23(月) 21:19:32.28ID:vqubHTur0
あ、リロードしてなかったorz
解決したみたいね>>269は忘れて良いよ
2017/10/23(月) 21:22:53.81ID:IGQCHjjB0
>>269
BMPで保存したところ
できました!!!!!!!
感動です!
皆さんありがとうございました
2017/10/25(水) 17:03:51.19ID:ypp7UERA0
>>263
ご返信賜り誠にありがとうございます。
なんだと言われてしまいそうですが、setpointにスムーズスクロールがあり
それをoffにすることで、何十ノッチも発生することはなくなりましたが、挙動がおかしかったため
setpointをアンインストールし、無事解決しました。
一部機能を使ってましたが、autohotkeyでまかなえますし!

firefox quantumのタブスイッチのため、autohotkeyを導入しましたが
ztopをやめて、一本化出来ました。
ありがとうございました。
2017/10/26(木) 00:31:46.15ID:X6UNjp0Ir
var =
(
<tag1 value1="0.0" value2="1.0">
<tag2>1.0</tag2>
</tag1>
<tag1 value1="2.0" value2="3.0">
<tag2>2.0</tag2>
</tag1>
) ;文の一番最後に改行が1個入ります
;これが連続するUTF-8(BOMなし)/改行LFの440KBの文書test.xmlを
;#MaxMem 1000 ;#MaxMemありなしで変化無し
FileEncoding, UTF-8-RAW
FileRead, var, *t %A_ScriptDir%\test.xml ;440KB
RegExMatch(var, "s)^<(tag1).+/\1>\n", $)
FileAppend, %$%, *%A_ScriptDir%\output1.xml ;test.xmlとまったく同じものになります(1)

;これを以下のようにするとvar変数を72.0KBに削らないとマッチしませんでした
2017/10/26(木) 00:32:21.09ID:X6UNjp0Ir
Loop
{
if(!RegExMatch(var, "s)(?:^<(tag1).+?>\n<(tag2)>\d+(?:\.\d+)?</\2>\n</\1>\n)+", $)) {
var := RegExReplace(var, "s)(^.+)(?:<tag1.+$)", "$1") ;マッチするまで末尾を削る
continue
}else {
MsgBox, %A_Index%周目でマッチした, ;4430周目でした
FileAppend, %var%, *%A_ScriptDir%\output2.xml ;72.0KB(2)
break
}
}
MsgBox, おわり
(1)の$変数には440KB代入できるのに
(2)ではvar変数が72.0KBになるまでマッチしないのはなぜでしょうか
#MaxMem 1000 では結果は同じでした
Loopの手前にVarSetCapacity(var, 1000000)を入れたらスクリプトがフリーズしました
環境古くてすいません v1.1.26.01 u32版 win7です
2017/10/27(金) 20:04:09.15ID:EJJiT1eZ0
AHKのエディタですが
Notepad++
サクラエディタ
秀丸エディタ
EmEditor
sublime
などがあるようですが、これらの中で、ラベルやホットキーへジャンプ出来るものは
どれですか
SciTEではラベル名を選択してF12を押すとラベルの個所へジャンプしてくれるし
ホットキーのリストも表示してくれるのですが、同じ機能を持っているエディタは
どれでしょうか
ちなみに、秀丸ではなさそうでした
2017/10/27(金) 21:59:52.86ID:rnKjM+z20
sakura 秀丸 その他のブラウザにタグジャンプ機能があるけど・・・
c言語専用?
2017/10/28(土) 01:37:13.87ID:3WINCwSX0
AHKはメジャー言語ではないので大抵のエディタではデフォルト対応はしていないと思う
AHK用のプラグインなりカスタマイズなりが必要になるのでは

ちなみに秀丸の場合はAHKシンタックスの強調表示定義ファイルを作ってやると
それを元にTagsファイル生成や単語補完などが可能になる
Tagsファイルを作っておくことでダイレクトタグジャンブで飛べるようになる

他のエディタも大抵はctags使えるみたいだし ctags形式のタグファイル吐き出せるスクリプトさえ書けば
お好みのエディタでダイレクトタグジャンブできるようになると思われ
2017/10/28(土) 01:43:48.93ID:LU+IQveF0
http://ahkwiki.net/Tools

AutoHotkey用のシンタックスハイライト、オートコンプリートなどの定義ファイルあり
2017/10/28(土) 02:09:08.35ID:kOR4GWlf0
DPIが高すぎるとMouseGestureLのジェスチャーツールチップが小さくて見えない & RR、LL、UU、DDのピクセル数判定が緩くなっちゃうのだけど、これってなんとかなんない??
2017/10/28(土) 06:26:09.85ID:Ctf6COgz0
>>276-278
秀丸エディターで、AutoHotkey_L.hilight、AutoHotkey_L.txt は入れています

タグジャンプですが、tagsファイルの作成でする方法と、Exuberant Ctagsを使ってプログラム実行でする方法を
やってみましたが、AHKには対応していませんでした。 ラベルは認識されません
ちなみに使い方が違うのかと思って、cppファイルで試してみましたがこちらは関数等はちゃんと認識されていました
ということで、ahk用には何か別の専用スクリプトとか用意しないとダメなようです
2017/10/28(土) 06:33:37.89ID:Ctf6COgz0
秀丸エディターではダイレクトジャンプを選ぶとgrepで探すというのがあるので
当分はこれでしますか
2017/10/28(土) 08:40:24.48ID:coB4BUvsr
ctagsは自分でルールを書けば解析されるよ
2017/10/28(土) 13:24:55.08ID:kOR4GWlf0
よく考えたらマルチディスプレイで高DPIと通常DPIのディスプレイが混在しているとジェスチャーの判定もおかしくなるしもうだめだ/(^o^)\
100px移動でジェスチャー判定していたとしたら、200%スケールしているディスプレイでは200px移動に変えないと実態としてずれる。
アドバンスナビのほうもソースコード見てみたけど辛うじて描画領域確保しているのがわかるだけでフォントが小さく表示される原因がわからん・・・
2017/10/28(土) 15:19:16.97ID:Ctf6COgz0
秀丸エディターですが、AutoHotkey_L.hilightファイルをいろいろ触ってみました
もともと入っていたC-function.hilightを参照しながら触ったのですが
91,^[a-zA-Z0-9]+:
として、これをtagsファイルの作成のときに選択すると出来なかったのですが
21,^[a-zA-Z0-9]+:
としてやると、tagsファイルにラベルも出てきてダイレクトタグジャンプが出来るようになりました
この91や21で協調文字の種類を決めているのはわかるのですが、タグの生成にも関わっているとか
いろいろとめんどくさいそうですが、タグ生成用のためのファイルは出来そうです
あとは、スレチなので、秀丸さんの方で聞いてきますか
2017/10/28(土) 19:06:53.26ID:3WINCwSX0
>>284
あらら自己解決してたかな
こっちでも調べてたんだけど飛び先ラベルとして認識させるには「行の強調」にしてやらないとダメっぽいね

> 21,^[a-zA-Z0-9]+:
これだけだとホットキーラベルとサブルーチンラベルにしか飛べないので関数にもジャンプさせるなら
149,^[_a-zA-Z0-9]*\(.*\)
を追加すると良さげ

ちなみにうちの.hilight
独自構築モノなのでwikiの強調定義とは互換ないです
https://ux.getuploader.com/autohotkeyl/download/124 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
2017/10/28(土) 20:25:45.14ID:g6R5313m0
>>285
わざわざありがとう。DLして参考にさせてもらいました
hilightファイルの構造がどうなってるのかググっても良くわからなかったので試行錯誤してやるしかないです
でも目的はtagsファイルを作ることなので、tagsファイルは中を見ると構成が簡単そうなので、直接外部アプリ(DosやGnu)で
tagsファイルを作成することを考えてもいいかなとも思ったのですが、助かりました
2017/10/28(土) 21:30:38.60ID:3WINCwSX0
ごめん.hilightの中に構造説明のコメント付けてたんだけど長くなるので削っちゃった
秀丸エディタマクロヘルプのloadhilight文の項に強調定義フラグの意味が載ってるので
興味当たったら調べてみて下さい
2017/10/29(日) 06:33:32.61ID:QNF+jVue0
>>287
マクロヘルプのloadhilight見てきました。ありがとう。こんなところに書かれても見つからんわw
でも良くわかりました。 あとはColorSetだな
2017/10/29(日) 06:41:23.64ID:QNF+jVue0
>>287
ColorSet、こちらもわかりました。 マクロヘルプのconfigcolorにありました
頂いたahk20171028.hilightのColorSetのコメントの意味はこれだったのですね
これでもうほぼ理解できました。ありがとうございました
290名無しさん@お腹いっぱい。 (ニククエ 497d-xXVv)
垢版 |
2017/10/29(日) 13:56:57.31ID:KzWRlc+C0NIKU
開いているメモ帳のファイルパスを取得し、エクスプローラで開きたいんですがうまくいきません。

ComGet(WinTitle) {
if(WinTitle = "ahk_class XLMAIN"){
ControlGet, hwnd, hwnd, , Excel71, %WinTitle%
}else if(WinTitle = "ahk_class OpusApp"){
ControlGet, hwnd, hwnd, , _WwG1, %WinTitle%
}else if(WinTitle = "ahk_class PPTFrameClass"){
ControlGet, hwnd, hwnd, , paneClassDC1, %WinTitle%
}else if(WinTitle = "ahk_class Notepad"){
ControlGet, hwnd, hwnd, , Edit1, %WinTitle%
}
Window := Acc_ObjectFromWindow(hwnd, -16)
Loop,10
try{
Application := Window.Application
}catch{
if(WinTitle = "ahk_class XLMAIN"){
ControlSend, Excel71, {esc}, %WinTitle%
}else if(WinTitle = "ahk_class OpusApp"){
ControlSend, _WwG1, {esc}, %WinTitle%
}else if(WinTitle = "ahk_class PPTFrameClass"){
ControlSend, paneClassDC1, {esc}, %WinTitle%
}else if(WinTitle = "ahk_class Notepad"){
ControlSend, Edit1, {esc}, %WinTitle%
}
}
Until !!Application
return Application
}
291名無しさん@お腹いっぱい。 (ニククエ 497d-xXVv)
垢版 |
2017/10/29(日) 13:57:59.50ID:KzWRlc+C0NIKU
;エクスプローラでフォルダを開く
WinTitle := "ahk_class Notepad"
oNotepad := ComGet(WinTitle)
filePath := oNotepad.ActiveWindow.FullName
RunAs, %USERNAME%, %PASSWORD%
Run, explorer `/select`,"%filePath%"
RunAs

この様に書いたらエクセル、ワード、パワーポイントまではうまくいったんですが、メモ帳だけうまくいきません。どうかご教授を。
2017/10/29(日) 14:58:41.15ID:NgmpJOSW0NIKU
ifwinexist
winget processpath
run
2017/10/29(日) 15:57:39.21ID:oo5Bc3OZ0NIKU
メモ帳にはCOMが用意されていないみたいだね
素直に、名前を付けて保存
294名無しさん@お腹いっぱい。 (ニククエ 497d-xXVv)
垢版 |
2017/10/29(日) 16:17:30.91ID:KzWRlc+C0NIKU
>>293
ありがとうございます。スッキリしました。
2017/10/29(日) 23:34:38.22ID:sce/LU2/0NIKU
スクリプト&AutoHotKey初心者です
欲しいものは、アプリケーションキーAppsKeyを押すと
1回目 wキーを長押し
2回め wキー+8キーを長押し
3回目 動作無し
以降繰り返し
というものです。
何から手を付けていいのかわからないのでここで質問させて頂きました。
https://sites.google.com/site/ahktips/howto/helloworldにあることは確認しています。
どうか御教授お願いします。
2017/10/30(月) 04:09:49.70ID:dZnUwqZQ0
Run,http://www.google.com/search?q=%Clipboard%
このスクリプトで検索しているのですが、以下の(1)〜(3)のようなことはできるのでしょうか?

(1)エディタで文字列を選択してこのスクリプトを実行した時、ブラウザをActiveにしない。
(2)新しいTabを開かないで検索する。
(3)新しいTabで検索するが、現在のTabに留まる。

(1)は検索したあとにもう1度エディタをActivateさせているのですが、もっとうまくできないかと。
2017/10/30(月) 04:34:56.79ID:vmv0acd+0
>>295
wikiのサンプルコード集に「キーを押す度に機能を切り替え」ってのがあるからそれ参考にするといい
http://ahkwiki.net/SampleCodes
何から手を付けていいか分からないならとにかくwikiをよく読みな
急がば回れ
2017/10/30(月) 10:16:54.38ID:vMir4n9d0
>>296
どれもブラウザ依存だからAHK側からは基本ムリ
ブラウザ側で設定したり、ショートカットキーやコマンドラインオプションをAHK側から利用するしかない

ブラウザ側でできないなら、(1)は検索する前にエディタを最前面固定するといくらかマシに見える
(2)(3)は諦メロン
2017/10/30(月) 10:17:43.96ID:jNVZDUzg0
>>296
ご使用中のブラウザのコマンドラインパラメータをご確認ください
2017/10/30(月) 12:35:59.54ID:dZnUwqZQ0
>>298
>>299
分かりました。ブラウザの機能も調べてみます。ありがとうございます。
2017/10/30(月) 22:34:34.80ID:BusKigX60
>>297
回答ありがとうございます。およそ次のような枠組みになることはわかりました。
AppsKey::
Flag += 1
If Flag =1
{
「コマンド1」
Return
}
If Flag =2
{

Return
}
Flag = ;3回目変数をカラ
Return

「コマンド1」に関してhttp://ahkwiki.net/Sendを参照すると
Loop
{
Send {w down}
sleep 30
}
Send {w up}
のように書くのかと思いましたが、 loopを脱出する条件やAppsKey:: Flag += 1などを考えるとわかりません。
サーチが不足しているかも知れませんが、どうかお助け願います。
2017/10/31(火) 00:01:07.53ID:IArYTqnO0
>>301
何をやりたいのか良く分からないんだが>>295
1回目と2回目押した時の「長押し」って押しっぱなし状態で固定して
3回目押したときにwと8を離すってことじゃないの?
2017/10/31(火) 05:01:26.49ID:7gNoBxwg0
ahk初心者です。よろしくお願いします。
環境(win10 64bit、AHK v1.1.26.01)
最初にアクティブだった窓で再生したスクリプトが違う窓に切り替えた後でも、バックグラウン
ドの最初の窓で終了(動作)させたくて、下記を書いたのですが反応なしです(IEなら動作しま
した)。chromeやoperaをWintitle指定でControlsendをさせる方法がありましたら教えてください

r::
WinGetTitle, title, Yahoo! JAPAN
ControlSend, ahk_parent, {f5}, Yahoo! JAPAN
Sleep, 2000
ControlSend, ahk_parent, {f5}, Yahoo! JAPAN
Sleep, 2000
ControlSend, ahk_parent, {f5}, Yahoo! JAPAN
return
2017/10/31(火) 09:19:18.89ID:HXbL+oKY0
>>303
WingetClassを使おう

>>301
脱出条件が書けないのは動作イメージがあいまいだからでは?
「長押し」をどういう挙動にしたいのか考えてみて
n秒以上押下 なのか AppsKey離されるまで押下 なのか等
2017/10/31(火) 10:31:49.91ID:7gNoBxwg0
>>304
回答ありがとうございます
下のをやっても反応なしでしたorz
諦める系なのかな?。。
;r::
DetectHiddenWindows, on
WinGetClass, Chrome_WidgetWin_1, A
ControlSend, ahk_parent, {f5}, Yahoo! JAPAN
return
r::
WinGetClass, Chrome_WidgetWin_1
ControlSend, Chrome_RenderWidgetHostHWND1, {f5}, Yahoo! JAPAN
return
2017/10/31(火) 12:48:17.99ID:HXbL+oKY0
タイトルやclass名が固定でわかってるときはGetしなくていいよ
とりあえずウィンドウ指定の方法からわかってなさそうなのでwikiを読もう
http://ahkwiki.net/Window


(別タブではなくあくまで別窓という前提で)
確認してみたがアクティブ化後は効くけど非アクティブ時は効かない
この手の挙動のアプリはControlSendでは無理な場合が多い

WinActivate, Yahoo! JAPAN ahk_class Chrome_WidgetWin_1
ControlSend, Chrome_RenderWidgetHostHWND1, {f5}, Yahoo! JAPAN ahk_class Chrome_WidgetWin_1
2017/10/31(火) 16:35:05.33ID:zqELyNoa0
SysListView32ですが、値をとってくるのはGetContorolを使えば出来るのですが
リストの任意の場所の値をセットすることって出来ますか
今はその場所へmousemoveでカーソルを移動してクリックさせて
Sendで値を入れるみたいなことをリストのひとつひとつにしているのですが、時間がとてもかかります
2017/10/31(火) 16:36:10.72ID:zqELyNoa0
→ControlGet
2017/10/31(火) 19:20:47.45ID:7gNoBxwg0
>>306
無理なんですね・・・
わざわざ確認とスクリプト、ありがとうございました
2017/11/01(水) 13:04:59.67ID:oLVxkSWa0
新しいPCでahkファイルへのD&Dで引数が正常に取れないと思ったら8.3形式のファイル名が無効になってた
Win10ではシステムドライブ以外のフォーマットは8.3形式のファイル名の無効がデフォになったのかな?
2017/11/01(水) 22:15:18.71ID:0XbH3Oow0
>>302
解決しました。指摘通り単に一回目がSend {w down}...etcで動作しました。
動作チェックがテキストエディタ上のみで、またその挙動が物理キーを押し続けた場合と違ってwがリピートされなかったため、
仕様を誤認していました。混乱させてしまい申しわけありませんでした。
アドバイスくださった方々、ありがとうございました。
2017/11/02(木) 11:23:34.64ID:F6tfVhm+0
AHKで、任意のウインドウのWinTitleを変えることって出来ますか
2017/11/02(木) 11:58:51.92ID:aI4Kc6yj0
>>312
出来ます
2017/11/02(木) 14:38:27.28ID:gLmdbRIP0
```
result2 := VarSetCapacity(point, 64, 0x00)
result := DllCall("kernel32\GlobalMemoryStatusEx", "Ptr", &point, "int")
lasterror := Dllcall("GetLastError")
ListVars
msgbox
```

このようなものを書いたのですが、GlobalMemoryStatusExが失敗しているようで、
Global Variables (alphabetical)
--------------------------------------------------
0[1 of 3]: 0
ErrorLevel[1 of 3]: 0
lasterror[2 of 3]: 87
point[0 of 32]:
result[1 of 3]: 0
result2[2 of 3]: 64

と表示されてます。
error codeの87は"パラメータが正しくない"だそうです。なにがだめなのでしょうか?
環境はwin8.1 64 のAutoHotkeyU64.exeです。
プログラム言語やスクリプトはAutoHotkey以外ほとんどやった事がないです。
2017/11/02(木) 15:00:05.60ID:k9JkDB2u0
>>314
https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa366770(v=vs.85).aspx
NumPutで構造体のdwLengthを指定しないとだめでしょ
2017/11/02(木) 15:02:04.54ID:VfmNp1pV0
dwLength

The size of the structure, in bytes. You must set this member before calling GlobalMemoryStatusEx.
2017/11/02(木) 17:44:56.54ID:gLmdbRIP0
>>315
ありがとうございます!解決しました。
```
result2 := VarSetCapacity(point, 64, 0x00)
NumPut(64, point , 0, "int")
result := DllCall("kernel32\GlobalMemoryStatusEx", "Ptr", &point, "int")
;dwLength := NumGet(point, 0, "Int")
dwMemoryLoad := NumGet(point, 4, "Int")
ullTotalPhys := NumGet(point, 8, "Int64")
ullAvailPhys := NumGet(point, 16, "Int64")
ullTotalPageFile := NumGet(point, 24, "Int64")
ullAvailPageFile := NumGet(point, 32, "Int64")
ullTotalVirtual := NumGet(point, 40, "Int64")
ullAvailVirtual := NumGet(point, 48, "Int64")
;ullAvailExtendedVirtual := NumGet(point, 56, "Int64")
MsgBox,
(
メモリ使用率:%dwMemoryLoad%`%
全物理メモリ:%ullTotalPhys%B
利用可能メモリ:%ullAvailPhys%B
ページング可能な最大ファイルサイズ:%ullTotalPageFile%B
現在ページング可能なファイルサイズ:%ullAvailPageFile%B
全仮想メモリ:%ullTotalVirtual%B
利用可能仮想メモリ:%ullAvailVirtual%B
)
```
2017/11/03(金) 14:40:06.50ID:l+MEYLy90
これはバグでしょうか。 ツールチップなのですが
下記のスクリプトで、tipwindowというのを表示させてこれをアクティブにして
ActiveWindowsInfoを見てもWindowTitleのところに
tipwindow
というのが出てきません。にもかかわらず
WinGet, aid, ID, tipwindow
WinGetTitle, t1, ahk_id %aid%
とすると拾えて、t1にはtipwindowと入っています

これにExcludeTitleを加えて
WinGet, aid, ID, tipwindow,,ahk_exe AutoHotkey.exe
WinGetTitle, t1, ahk_id %aid%
とすると取れないだろうと思ったのですが、これでも
t1には、tipwindow
が入ってきます。 なぜでしょうか
idでもpidでも同じ結果です

^a::
ToolTip, tipwindow, 100, 500, 2
WinSet, AlwaysOnTop, On, ahk_class tooltips_class32
WinGet, aid, ID, tipwindow,,ahk_exe AutoHotkey.exe
WinGet, apid, PID, tipwindow,,ahk_exe AutoHotkey.exe

WinGetTitle, t1, ahk_id %aid%
WinGetTitle, t2, ahk_pid %apid%
MsgBox aid=%aid%`napid=%apid%`nt1=%t1%`nt2=%t2%
return
2017/11/03(金) 14:46:15.58ID:l+MEYLy90
あ、AHKのバージョンは、v1.1.24.04です
ToolTip, tipwindow, 100, 500, 2の最後の2にはなんの関係もありません。これはなしでも同じ結果です
2017/11/03(金) 16:03:16.16ID:bkVry8BK0
#If MouseIsOver("ahk_class Shell_TrayWnd")
このコードがwikiにありますが
タスクバー上で、Wheelの左右が効かないのはなぜでしょうか?
2017/11/03(金) 16:58:12.94ID:oAKaFRrm0
>>318
少し試してみた感じだと、Tooltipの内容をタイトルとして取得できるのは同一のプロセス内だけっぽい?
AWIは別スクリプトだから取れてないのかと

あとExcludeTitleにはahk_??は使えなかったような
2017/11/03(金) 17:24:02.39ID:l+MEYLy90
>>321
ToolTipsのときは、ActiveWindowsInfoのWindowTitleには出てないのに
WinGet等で取れるっていうのがなんとも気持ち悪いです
デバッグするときにあれって思う
2017/11/03(金) 17:29:54.20ID:l+MEYLy90
ああ、ActiveWindowsInfoっていうのは
Window Spyのことね
2017/11/03(金) 17:45:24.63ID:AEQ8+teS0
>>318
WindowSpyがTooltipの内容をタイトルとして拾えないのは昔から仕様扱いだったと思う。
ahkとWindowSpyの両方から全く同じコードでGetWindowText()を呼び出しても、
ahkからしか取得できないので、OSの仕様じゃねーの?という扱いだったような。
ahkのcppソースのコメントにWM_GETTEXT()とGetWindowText()のどちらを使うかってのが説明してあって、
WindowSpy改造すればタイトルとして取得できるけど、問題のほうが多そうということで仕様扱い。

まあ、tooltipにはタイトルなんてない、で誰も困らないような。
2017/11/03(金) 18:03:00.03ID:l+MEYLy90
>>324
複数のアプリを立ち上げていて、そのWinTitleがたとえば
アプリ1
アプリ2
アプリ3
となっていて、ToolTipsにアクティブになってる同じタイトル名を表示する、ということをしたのですよ
で、WinGet, v, PID, アプリ1
ってやったら、なぜかAutoHotkey.exeのPIDを取ってきたのです
で、なんで? ってなって今回の話になりました
ToolTipsはWindowSpyで見たらタイトルにはなかったのでテキストに入ってるのかと思ってて
原因究明にめっちゃ時間がかかりました。まさかToolTipsのPIDを取って来てたなんて思っても
いなかった

結局、こういう場合、WinTitleからは確実にアプリ1のPIDをとることが出来ません
現状ではアプリ1のexe名を憶えておいて、それを利用するとかしか出来ません
ExcludeTitleも使えないなんてなあ
でもexe名もWinTitleからは得られないんですよね。AutoHotkey.exeになっちゃうから
2017/11/03(金) 18:14:40.56ID:AEQ8+teS0
>>325
やろうとしたことは大まかにわかったけど詳細がわからないので解決できるのか知らないけど、
WinGet使う前にtooltip非表示にしてしまえばいいのでは?
2017/11/03(金) 18:25:55.44ID:l+MEYLy90
>>326
WinGetで取る前にtooltip非表示にして取ってから
再度表示にする、ということですね
非表示にすると取らなくなるのかな
でも可能性はありますね
でもなあ、ExcludeTitleが使えたら解決するんですけどねえ

ahk_XXのときは使えないとか、なんでやねんw
今日は疲れました
2017/11/03(金) 18:37:53.97ID:l+MEYLy90
>>324
>まあ、tooltipにはタイトルなんてない、で誰も困らないような。

それとここですが、結局、Tooltipsの場合は、そこに表示されている内容も
WinTitleになる、ということですね。でもWindowSpyには出ないので要注意です

ほんとこれこそちょっとしたTIPSになりましたw
2017/11/03(金) 19:28:22.49ID:oAKaFRrm0
ActiveWindowInfo.ahkをモジュール化して組み込んだら
自分のtooltipはちゃんとタイトル表示されるようになったわ
2017/11/05(日) 14:42:30.14ID:lmZ+8dDx0
>>325
俺も似たようなことやってるけど
「アクティブウィンドウ:t1」みたいに表示させてたおかげで無自覚回避できてたようだな

というか真面目な話、バグとして報告していい案件なんじゃないの
2017/11/05(日) 23:42:34.65ID:mfJuW1tS0
>>325
>ToolTipsにアクティブになってる同じタイトル名を表示する
この部分がよく分からないんだけど、アクティブになってるウインドウのPIDを取得して、
それを元にウインドウタイトルを取得して、
そのタイトルをtooltipに表示する
ということだろうか?

だとしたら、
^a::
WinGet, v, PID, A
WinGetTitle, title, ahk_pid %v%
ToolTip, % title, 100, 500, 2
return
というのは?

wingetにおけるPIDの説明には
PID 条件に一致する一番最初(前面)のウィンドウのPID(プロセスID)。
となっており、「一番最初(前面)」というのは必ずしも「アクティブ」とは限らないと思うんだが…

間違っていたらスマン
2017/11/06(月) 08:39:10.84ID:+3FFCnlR0
1.app1というアプリが起動してあり、さらに
2.tooltipにapp1と表示させてた状況で
3.WinGetでタイトルがapp1のappを釣ろうとしたら、tooltipの中身のほうにひっかかった
という話でしょ。
2017/11/06(月) 17:03:32.17ID:whGphSg+0
で、そのとき
appとtooltipを区別して釣ることができない、ということ
2017/11/06(月) 18:29:26.02ID:M//XmyI50
タイトル指定でツールチップを除外したいだけなら普通にやりようあるけど
あまり相手したくない感じの人だから関わらないほうがいいかな
2017/11/07(火) 11:44:49.50ID:C4uwBzlx0
TrayTip の Seconds って機能してるのかな
10 も 30 も変わりないように感じるけど
2017/11/07(火) 12:02:59.88ID:wPhF9P5t0
Note: This parameter has no effect on Windows Vista and later.
2017/11/07(火) 12:06:09.50ID:FUUC0b2I0
>>335
本家ヘルプによるとvista以降で機能しない

>>334
横からだけどよかったら触りだけ教えて
2017/11/07(火) 13:05:31.04ID:C4uwBzlx0
>>336
>>337
書いてあったんですね、ごめんなさい。
ありがとうございます。
2017/11/07(火) 17:19:49.83ID:SgV85eZs0
>>337
ahk_class ^(?!tooltips_class32$)
2017/11/08(水) 12:57:11.90ID:FQHhkSa+0
>>339
その正規表現の意味がわからなかったけど試したらできたわありがとう
正規表現の勉強しなおしてくる
2017/11/08(水) 21:20:19.90ID:Aynw/XIa0
aaa()
{
実行文字列
}
で読み込んだ関数が

この後に
v::
while (GetKeyState("v","p") )
{
aaa()
}
return

で読み込めないのなんでだ…
aaaの実行ラインは
v::
の後に書き込むと問題なく動いてる

1.関数化できてない?
2.引数できてない?

あまり恥ずかしい内容なので中身を詳しく書けませんが
原因として考えられることがあれば教えてください
2017/11/08(水) 21:50:37.38ID:D9XhZkru0
よーわからんがとりあえずtooltipで試しすとちゃんと動くので
恥ずかしい内容の中身に問題があるのでは?


v::
while (GetKeyState("v","p") )
{
aaa()
}
tooltip
return

aa(){
tooltip,aaa
}
2017/11/08(水) 23:12:20.37ID:Aynw/XIa0
>>342
確かにtooltipで動かすと問題なく作動してますね
中を確認してみます
ありがとうございます
2017/11/10(金) 00:56:44.09ID:far4pfand
1つの処理だと問題ないんですが
a::
の中と

b::
の中に
同じ処理を入れようとすると
Duplicateエラーが出るのは同じ関数を使っているから?
対応策はありますか?
2017/11/10(金) 01:37:54.01ID:a/DVTS050
記述を隠したがるやつ妙に増えたな
2017/11/10(金) 03:14:31.48ID:U5SA2Xv00
a::
goto label1
label1:
return

b::
goto label1
label1:
return

だとエスパー
2017/11/10(金) 05:39:27.48ID:a1txFjAv0
最近、AHKが動かないソフトが増えている気がするけど、俺だけかな?
トライアル版を試したこれも動かなかった。
HippoEDIT
https://www.hippoedit.com/

俺のバージョンはv1.1.22.04。OSはWin7 64bit。
外国ののソフトは動かないのが多い気がする。
2017/11/10(金) 09:21:13.07ID:rAX5gFmOa
一年半まえに使い始めたわいので
v1.1.23.05やで

最新の
v1.1.26.01
試してみたらどうや
アプデって言っても置き換えるだけだし
2017/11/10(金) 18:02:19.75ID:a/s4mTF+0
>>344
>>347
AHKの「なにが」動かない?
書かなければ「分からない」
2017/11/10(金) 18:23:39.05ID:a1txFjAv0
>>349
ホットキーが無視されてしまいます。v1.1.26.0.1でも同様です。キーをフックする優先順位がAHKよりも高いような印象です。
皆様はいかがでしょうか?
最近、海外のソフトでは案外ひんぱんに経験します。AHKを管理者権限でインスコすればいいのかな?
2017/11/10(金) 18:33:22.48ID:e6Htw9YT0
管理者権限で試すのはインストールではなくスクリプトの起動では
2017/11/10(金) 18:38:52.24ID:a/s4mTF+0
>>350
問題が起こる最小限のスクリプトを書いていれば話がスムーズに進む

F1::MsgBox フックなし
$F2::MsgBox フックあり

フックの有無
管理者権限 >>10
2017/11/10(金) 18:38:58.39ID:uMNzoQ5c0
質問が頓珍漢過ぎて、さすがに釣りとしかw
2017/11/10(金) 18:43:51.83ID:a1txFjAv0
>>351
おお、動きました。ありがとうございました。
管理者権限で起動する方法は↓にありましたので早速やってみます。

管理者権限で実行しなければいけない常駐アプリのスタートアップ設定方法
http://tanweb.net/2015/10/21/5101/
2017/11/10(金) 19:04:38.60ID:a1txFjAv0
>>352
私はいわゆるSpaceFNをやっていまして、それがSpace押下でSpaceが入力されて困っていました。
何故外国のマイナーなソフトだとこういう現象が起きるのか不思議ですね。定番のソフトでは経験したことありませんでした。
356名無しさん@お腹いっぱい。 (ワッチョイ 5f87-p++X)
垢版 |
2017/11/10(金) 22:15:32.90ID:Oslygo4n0
windows APIのABM_SETSTATE messageを使って「タスクバーを自動的に隠す」をオンにしたいのですが、 APPBARDATA構造体のlParamメンバーには何を入れればいいのでしょうか?また、hWndメンバーに入れるのはタスクバーのハンドルということでいいのでしょうか?
2017/11/11(土) 01:35:11.41ID:gMztQec90
ABS_ALWAYSONTOP = 0x0002
ABS_AUTOHIDE = 0x0001
358名無しさん@お腹いっぱい。 (ブーイモ MM0f-mI+x)
垢版 |
2017/11/11(土) 07:52:33.31ID:IBbBqaBiM
>>357
よろしければ出典を
2017/11/11(土) 16:56:54.15ID:F5Z3qywF01111
「タスクバーを自動的に隠す」とは全く違う内容だが、こんなのあったの思い出した

1 Hour Software by Skrommel - DonationCoder.com
http://www.donationcoder.com/Software/Skrommel/index.html

【RunAndHide】

#NoEnv
#SingleInstance,Force
#NoTrayIcon
SetWinDelay,0

IfWinExist,ahk_class Shell_TrayWnd
{
 WinHide,ahk_class Shell_TrayWnd
 WinHide,Start ahk_class Button
}
Else
{
 WinShow,ahk_class Shell_TrayWnd
 WinShow,Start ahk_class Button
}
2017/11/11(土) 17:01:34.05ID:F5Z3qywF01111
>>359

「Start」は「スタート」と日本語にしないとスタートボタンに適用されないはず

ま、どうでもいいけどスレ汚しスマン
■ このスレッドは過去ログ倉庫に格納されています
16歳の水野カイトが封印の刀を見つけ、時間が裂けて黒い風と亡霊の侍が現れ、霊の時雨と契約して呪われた刀の継承者となる場面

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