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/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です。
2018/08/27(月) 05:09:22.24ID:qoV6L4Op0
スタート → 歯車アイコン(設定) → 時刻と言語 → 地域と言語
 → キーボードの詳細設定 → 言語バーのオプション
で「テキストサービスと入力言語」のウィンドウが開くので
「キーの詳細設定」タブを選択
2018/08/27(月) 06:00:44.94ID:j51vjZYo0
>>361
うわ〜。こんなところにあったのか。ありがとうございます!!
2018/08/29(水) 12:27:49.35ID:XA7hyTCr0NIKU
みなさんAHKは管理者権限で起動している?
標準ユーザーで使ったら、管理者権限ウィンドウがアクティブになってるとホットキーが動かなかった
2018/08/29(水) 13:58:59.59ID:DhwLeReA0NIKU
常駐スクリプトは管理者権限で起動してる
2018/08/29(水) 14:46:26.91ID:HiQLd3YZ0NIKU
win8までは管理者だったけどwin10は標準で使ってる
win10は標準←→管理者間でのD&Dが効かなくなったり
管理者完全上位じゃなくなってるのでかえってめんどい
2018/08/29(水) 18:17:12.05ID:XA7hyTCr0NIKU
>>364-365
参考になりました
そう、標準←→管理者間でやりとりができなくなって混乱しました

管理者アプリでも動かしたければ素直にAHKも管理者権限で使うしかないんですね
367名無しさん@お腹いっぱい。 (ワッチョイ 1d3e-1nOF)
垢版 |
2018/09/02(日) 12:28:08.49ID:65ZZk5O+0
キー::
click
return

ブラウザ、5chビュアはクリックができるのですがFXや株のインストールをして使うツールは
クリックができるものとできないものがありました。
これは何が原因だと考えられるのでしょうか?
2018/09/02(日) 14:03:06.99ID:nZZGk0pR0
>>367
管理者権限
369名無しさん@お腹いっぱい。 (ワッチョイ 1d3e-1nOF)
垢版 |
2018/09/02(日) 20:22:05.84ID:65ZZk5O+0
>>368
管理者は自分になってるんですよね。
検索をしてみても答えが見つからないので困っています。
2018/09/02(日) 20:27:04.05ID:9vYX/DMY0
自分になってるっていうのはログインしているアカウントのことだろうけど
管理者権限はAutoHotKeyのスクリプトの話
普通の起動ではなくちゃんと管理者権限で動かしていますかってこと
2018/09/02(日) 21:40:12.12ID:wIEhSDDaM
株やFXは知らんけどゲームなんかだとマクロ系ツール対策してるソフトもあるで
2018/09/03(月) 00:18:46.94ID:aJN4MKIL0
>>367
キーやクリックを押す時間が短すぎると反応しない場合がある
SetKeyDelayのPressDurationを長めに設定して、Send, {Click}ならできるかも
2018/09/04(火) 04:16:10.63ID:g5h2GCQp0
SetKeyDelayのPressDurationってSend, {Click}ならマウスにも効くんだ?
2018/09/05(水) 19:34:21.37ID:TPq6AWrzH
controlsend で非アクティブウィンドウにキー送信したいのですが、そのアプリの仕様上アクティブ化しないとキーを受け付けないみたいなので一瞬だけアクティブ化してキー送信を試みたのですが当然画面がちらついてしまいます
それを回避するために、バックグラウンドでこれを実行するようなことできませんか?何かほかの手立て等もありましたらアドバイスください よろしくお願いします
2018/09/06(木) 21:42:11.58ID:bqZN8RaO0
Win10からかな? Ctrl+Alt+Tabでタスク切り替え画面が表示されるようになり
Excelのインデント機能が使えなくなった。
このキーアサインをWindowsじゃなくてExcelだけに渡す方法ってありますかね?
(もしくは前者を無効にする方法でもいいけど)
詳しい方よろしくお願いします。
2018/09/06(木) 21:52:26.32ID:ehmDNxzA0
>>375
EXCELの使い方の問題でAHK関係無いので完全にスレチ
2018/09/06(木) 22:17:54.18ID:bqZN8RaO0
>>376
AHKでもどうにもできないんだ。ふ〜ん。
回答ありがとう。
2018/09/06(木) 22:40:25.04ID:dWFCDbiN0
あきらめてアクセラレータキー使え
https://tips.oreism.com/2018/01/10/%E3%80%8C%E3%82%A4%E3%83%B3%E3%83%87%E3%83%B3%E3%83%88%E3%80%8D%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88-%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB-excel/
2018/09/06(木) 22:44:24.39ID:bqZN8RaO0
試しにExcel起動時のみ、明示的に同じキーを送信するように書いてみたら
OSに取られる確率が減りました。
やってみるもんだね。

#IfWinActive ahk_class XLMAIN
 !^Tab::
  Send !^{Tab}
  return
 +!^Tab::
  Send +!^{Tab}
  return
#IfWinActive

慌てて操作すると取られることがある。もっといい方法ないかな?
2018/09/06(木) 22:48:53.53ID:bqZN8RaO0
>>378
それは最初にやってみた。元々Altコマンド派なので。
でもこの操作には合わないんだよね。落としたり上げたり連続で操作するので。
AHKで明示的に指定したらExcelに優先的に送られるようになりました。
でもWin7と同じ感覚でやると、時々取りこぼしてしまうみたい。
381名無しさん@お腹いっぱい。 (ワッチョイ 173e-Mpq2)
垢版 |
2018/09/07(金) 00:48:59.43ID:gH8vzFoz0
>>368
>>370
管理者権限が原因でした
ありがとうございます
2018/09/07(金) 00:51:57.73ID:9MzFgxMt0
>>375
https://www.sevenforums.com/customization/56867-disabling-ctrl-alt-tab-function.html
Win7の説明(英語)だけどWin10も同じ(Win10 Pro 64bit環境で確認済み)。

ファイル名を指定して実行(Win+R)に「Regedit」を貼り付けてEnter

レジストリエディタで下記キーを開く
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer

右側(名前、種類、データ側)を右クリックして
新規 → DWORD(32ビット)値
名前を「AltTabSettings」にしてEnter
作成したAltTabSettingsをダブルクリックしてデータを1にする

Windowsを再起動

これでCtrl+Alt+Tabでタスク切換えが表示されなくなる。
但し、Alt+TabやShift+Alt+Tabでのタスク切換えが簡易表示(アイコン表示のみ)になる
2018/09/07(金) 03:20:53.84ID:ER2VoJ180
AutoHotkey_L v1.1.30.00でAccelerated Scrolling Script
ttps://autohotkey.com/board/topic/48426-accelerated-scrolling-script/
を参考にしてホイールの加速を作ってるんだけど
A_TimeSincePriorHotkeyが15〜16msぐらいの精度しか出ないので
WheelDown/WheelUpの間隔が16ms、31ms、それ以上、の3段階くらいしか
実質ホイールの回転速度が区別できなくて
急加速したり思ったほど加速しなかったりでうまくいかない

もっとホイールの回転速度を精度高く区別する方法ない?
2018/09/07(金) 03:49:05.04ID:2guTp2kD0
>>382
情報ありがとうございます。
自分も阿久津さんのサイトでその情報に辿り着きました。
https://news.mynavi.jp/article/windows-358/
ご指摘のエントリ追加でShell再起動したら懐かしのスイッチャーが、、
これでCtrl系のショートカットが落ちるんですね。
おかげで前OSと同様にサクサク動作するようになりました。

AHKの情報漁ってキーアサインの送信先アプリを限定するような
コードがないか捜しましたが、、ないみたいですね。
自分が試したスクリプトに Set, Enable,,(Win...) とか追加して
みましたが、高速操作で取りこぼすようでした。

一先ず問題回避できて良かったです。お騒がせしました。
2018/09/08(土) 15:09:39.61ID:HTbX78bG0
下記の目的を実現させようと書いたスクリプトが意図したとおりに動作しません。
無変換&BSの結果としてのBSに対して、1)が反応してしまっていると推測しますが、お助けください。

【目的】
  1) バックスペースを押す     → デリートとして認識させる
  2) 無変換&バックスペースを押す → バックスペースとして認識させる
【スクリプト】
  1) BS::Send,{Delete}
  2) vkEB & BS::Send,{BS} ;vkEBは私のPCでの無変換キーに対応するコード
【動作】
  1) バックスペースを押す     → デリート ;これはOK
  2) 無変換&バックスペースを押す → デリート ;ここをバックスペースとして認識させたい
2018/09/08(土) 15:24:46.05ID:yEblPpJT0
>>385
>vkEBは私のPCでの無変換キーに対応するコード
この部分に原因があるんだろうな
普通の日本語キーボード環境なら

BS::Send,{Delete}
vk1D & BS::Send,{BS}

で無変換&BS押せばちゃんとバックスペースとして動作する
2018/09/10(月) 22:58:19.55ID:aSONhD2l0
教えてください。
アクティブではないウインドウの中から、あるタイトルウインドウを探し、
そのようなウインドウがあったらそのウインドウをアクティブにしたい
と考えています。
どのように実現したら良いでしょうか?
よろしくお願いします。
2018/09/10(月) 23:04:41.89ID:D7YSHUJz0
>>387
WinActivate
使い方は自分でwiki見て勉強して
2018/09/11(火) 01:16:50.41ID:opTLw1oT0
>>388
wikiは見ているんだけど、アクティブでないウインドウの中からウインドウを探す方法が分からないのです。
2018/09/11(火) 01:28:10.85ID:yuiWPBQK0
>>389
IfWinExist
IfWinNotActive
ウィンドウを探すというよりタイトルを指定すりゃいいだけ
それで分からないならahk使うには厳しいから諦めた方が良い
2018/09/11(火) 06:43:59.14ID:opTLw1oT0
>>390
ahkは難しいね。できるということなので色々試してみたいと思います。
2018/09/11(火) 10:25:20.78ID:dJjlfJEo0
エディタに、SciTE4AutoHotkeyを使っています

gosub のあとのラベル名とかにカーソルを当ててF12を押すと、ラベルの場所へ飛ぶはずなのですが
飛ぶ場所がちょっとずれるという不具合があるようですが、これはどうにかなりませんか
2018/09/11(火) 16:59:18.96ID:yuiWPBQK0
>>389
そもそもアクティブにしたいウィンドウのタイトルが決まってるならそれを指定すりゃいいだけ
なのでウインドウを探す必要なんて無いんだけど?
2018/09/11(火) 17:09:13.47ID:QORl+FtnM
>>393
現在アクティブなウインドウのタイトルもアクティブにしたいウインドウと一緒なため、現在アクティブなウインドウを除外して検索したいのです。
2018/09/11(火) 17:14:42.91ID:WMEQYVqo0
>>394
そういうの後出しじゃ答える側には何も伝わらないから質問する時に先に書こうな
タイトルが同じならPIDなどで指定すりゃいい
2018/09/11(火) 19:19:39.78ID:QORl+FtnM
>>395
WinGetとLoopを使って出来ました。
2018/09/17(月) 10:32:49.30ID:pVCkClPH0
こないだのWinUpdate以降、偶にMouseGestureLがずっとジェスチャー監視状態になって
タスクマネージャーで切らない限りマウスが他の操作を受け付けなくなる症状が出る
同じ症状の人or対策ってあるのかな
2018/09/18(火) 06:16:13.17ID:AXc2/XZs0
すみません質問なんですが
コンビネーションキーを使わず一時的にキーを入れ替えるということは可能でしょうか?
#IfWinActiveでというわけではなくひとつのソフト内で一時的に入れ替えを繰り返したいです

具体的にはコンビネーションキーを使わずアローキーとASDWを入れ替えたいです
ASDWはそれぞれ単推しが条件です
どのようなロジックにすればいいのかヒントをください
2018/09/18(火) 06:56:10.45ID:OjuHwNNl0
フラグで管理すればいい

f1::flag := !flag ; F1でフラグ変更

#if !flag
a::msgbox, 0
s::msgbox, 1

#if flag
a::msgbox, 10
s::msgbox, 11
2018/09/18(火) 07:07:04.43ID:AXc2/XZs0
>>399
ありがとうございます出来ました
2018/09/19(水) 10:16:39.44ID:3FfattUq0
ちょっとお伺いしたいんですけど、XYplorerなんかのアプリケーションで
WinSet, Style, -%WS_CAPTION%, ahk_id %hWnd%
でタイトルバー隠しつつウィンドウ最大化すると、
Altキー送るかごく一部のパーツ(アドレスバーの役割をするやつ)にマウスを乗っけるかするまで、
マウス操作に反応しなくなってしまうんですけど、何かスマートな復帰方法ってありますでしょうか?
2018/09/19(水) 12:28:31.23ID:hbmu9zXt0
無変換、変換キーとのコンビネーションが余りに良過ぎて絶頂快感レベルなんだが。
2018/09/19(水) 21:02:10.87ID:gnJBXJJ7M
>>402
わかる
2018/09/20(木) 01:47:33.71ID:z3KDZezp0
>>401
そのアプリでは確認してないがコレでどうかな?

擬似フルスクリーン関数 / Pseudo Full Screen Function
https://pastebin.com/PddjCJhY
2018/09/20(木) 09:17:32.37ID:C98ZhkQO0
>>404
回答ありがとうございます
ですがどうやってタイトルバー隠して最大化するかという話ではなく、
ウィンドウ回りのメッセージいじくった副作用で、
マウスイベントが変になったウィンドウを正気に戻すにはどうすればという話ですので……

リンク先のコードもホットキーで最大化みたいな見た目にさせるものであって、
ウィンドウサイズを記憶するアプリケーションで嫌なことになるでしょうし、
HCBT_MINMAXイベントにフックして発火させてる自分のコードの参考にはなりませんでした
2018/09/20(木) 09:24:43.44ID:C98ZhkQO0
正直、他の大抵のアプリケーションでは何の問題もありませんし、
ControlSend, , {Alt}{Alt}, ahk_id %hWnd%でもだいたい治るのですが、
ほんの一部だけ変なままのコントロールがあったりしますし、
何かパッと全て解決する冴えた命令とかないのかなと思ってお伺いしたかったのです
2018/09/20(木) 10:12:39.47ID:z3KDZezp0
>>405
作者の意図しないスタイル変更で不具合起きても
再起動以外の万能な解決方法なんて「存在しない」と思うので
最大化すると狂うならしなければいいんじゃね?って答えです
2018/09/20(木) 19:54:17.92ID:U81pDOFs0
任意のアプリをつかっているときに、押したキーボードをファイルへ保存するために下記のようなものを作ろうと思っています。

a::
send, a
FileAppend a, filename
return

b::
send, b
FileAppend b, filename
return

c::
send, c
FileAppend c, filename
return

試しに少し作ってやってみたらうまく行きました。
でもこれをa-zまで、また、1-9,0まですべてのキーに対して作ろうと思うと、ちょっとげっそりします
なにかいい方法はありませんか
2018/09/20(木) 20:24:53.66ID:A/yRjkVr0
>>408
その方法のまま、ちょっと簡単にするなら、
~a::
~b::
~c::
k:=RegExReplace(A_ThisHotkey,"~","")
FileAppend %k%, keylog.txt
return
2018/09/20(木) 20:51:41.61ID:U81pDOFs0
>>409
なるほど。A_ThisHotkeyってのがミソですね
ちなみに、頭についているチルドはなんですか。ついてるのとついてないのではどういう違いがありますか
2018/09/20(木) 21:26:41.46ID:A/yRjkVr0
>>410
キーの動作はそのままに、ついでに実行する感じ。
だから、本来の動作をさせるために書いていたsendが不要になります。
2018/09/20(木) 22:07:05.65ID:U81pDOFs0
なるほど、ありがとうございました。 sendがいらないのですね
2018/09/21(金) 19:26:27.97ID:JRAgMbwQ0
includeで関数をまとめたahkを相対パスで読み込むスクリプトがあります
このスクリプトを普通にダブルクリックで起動した時は問題ないんですが
別のスクリプトでrunコマンドで起動するとincludeできないエラーがでます
なぜでしょうか
2018/09/21(金) 19:34:26.42ID:SEg6ZgdL0
カレントが includeで関数をまとめたahk のパスになってないから
2018/09/22(土) 01:31:57.12ID:107FtndLr
Array := ["平成","昭和","大正","明治","慶應","…"]

この配列の要素数を取得するにはどのようにすればいいのでしょうか?
2018/09/22(土) 02:08:16.24ID:F6Zy33Bn0
length()
2018/09/23(日) 10:43:20.32ID:FekjhB1ra
StringGetPosで文字の場所を特定したあと、そこへ即座にキャレットを移動するにはどうすればよいでしょうか?
行中で最初に見つかる特定の文字(ここでは「様」)を消す、というスクリプトを作ったのですが
{Right}をル−プしているせいか、offsetの値が大きめのときにガタガタと動作が遅くなってしまいます。
(等幅フォントなら、文字の横幅を計算するという力技も使えそうですが……)
^Right::
{
x := A_CaretX
y := A_CaretY
Send, +{End}
Send, ^c
MouseMove, x, y, 0
MouseClick, Left
content := Clipboard
StringGetPos, offset, content, 様
If offset = -1
{
Send, {End}{Right}
Return
}
Else
{
Loop, %offset%
{
Send, {Right}
}
Send, {Delete}
Return
}
}
2018/09/23(日) 10:48:16.10ID:FekjhB1ra
一応補足ですが>>417はStringReplaceで一括処理していい場面ではなく、
ひとつひとつ視認しながら作業したいとき用に作ったものです。
2018/09/23(日) 11:58:20.92ID:FekjhB1ra
>>417をいろいろ試してみましたが、文字サイズが小さいときはキャレットの位置がずれて変な挙動をしてしまいますね…
2018/09/23(日) 12:19:11.53ID:FekjhB1ra
度々すみません。
A_CaretX A_CaretY MouseMove の部分は、{Left}で事足りたようです。

しかし肝心の、{Right}をル−プしている部分の動作の遅さは改善できていません。

AppsKey::
{
Send, +{End}
Send, ^c
str := Clipboard
Send, {Left} ;何故かこれで選択文字列の先頭へキャレットが移動する
StringGetPos, offset, str, 、
If offset = -1
{
Send, {End}{Right}
Return
}
Else
{
Loop, %offset%
{
Send, {Right}
}
Send, {Delete}
Return
}
}
2018/09/23(日) 12:28:15.56ID:FekjhB1ra
あ…ループせずとも、これでよかったですね。
いずれにせよ処理速度はやはり遅いままですが…

AppsKey::
{
Send, +{End}
Send, ^c
str := Clipboard
Send, {Left}
StringGetPos, offset, str, 様
If offset = -1
{
Send, {End}{Right}
Return
}
Else
{
Send, {Right %offset%}
Send, {Delete}
Return
}
}
2018/09/23(日) 13:48:06.18ID:ZOALMWKL0
特定のプログラムが起動 (アクティブや最前面) されたら、特定のプログラムが自動で起動出来るスクリプトは、可能でしょうか?
2018/09/23(日) 16:24:42.95ID:VYcnd+gw0
可能
2018/09/23(日) 18:03:43.65ID:ZOALMWKL0
#IfWinActive アクティブウィンドウ指定
RUN 起動したいプログラム
#IfWinActive

だけでは、出来ませんでした。

どなかた教えて頂けますでしょうか?
2018/09/23(日) 21:17:47.22ID:BliL24p00
Windowsのイベントを拾う - hoge
https://sites.google.com/site/agkh6mze/howto/winevent
2018/09/23(日) 21:36:47.03ID:31DDKA4n0
>>417
; --- TEST ---
; カリン様の仙豆様様です
; カリン様の仙豆様様です
; ------------

SendMode Input

F1::SearchAndDestroy("様")
Esc::ExitApp

SearchAndDestroy(SearchText) {
BlockInput On
ClipSave := ClipboardAll
Clipboard =
Send {Home}+{End}^c
ClipWait 1
ClipStr := Clipboard
if (RegExMatch(ClipStr, "(.*?)" SearchText "(.*)", Str)) {
Clipboard := Str2
Send ^v{Home}
Sleep 100
Clipboard := Str1
Send ^v
Sleep 100
} else
Send {Down}{Home}
Clipboard := ClipSave
BlockInput Off
}
2018/09/24(月) 05:20:00.81ID:BRuHDRmp0
>>424
#if〜(頭に#付き)はホットキー用
settimerを使って1〜2秒毎に ifwinactive で監視すればいい

#Persistent
settimer, hoge, 1000
return

hoge:
ifwinactive ウィンドウタイトル
{
run 実行するプログラム
settimer, hoge, off
settimer, hage, 1000
}
return

hage:
ifwinnotactive ウィンドウタイトル
{
settimer, hage, off
settimer, hoge, on
}
return
2018/09/24(月) 11:54:00.95ID:ZlvdI27na
>>426
おぉっ、ありがとうございます!
実際には消さずに1つ飛ばして次へ行きたい場合もあるので、そういう機能も追加してみようと思います
429名無しさん@お腹いっぱい。 (ワッチョイWW b184-1vXo)
垢版 |
2018/09/24(月) 15:34:23.11ID:9OJkCbcr0
>>427
ありがとうございました。
2018/09/25(火) 08:04:19.41ID:3R3+W8UO0
1.1.24から1.1.30へアプデしたら
ALTキーの空押しトリガーでアクセラレーターキー発動しまくりメニューが反応してしまう
大抵大丈夫なソフトが多かったがそれらのバージョンによっても反応しちゃったりしなかったり
酷いのはメニューがいきなりプルダウンする乱暴な奴とかいたり
トリガー変えたりなんだりいろいろやって納得行かず調べた結果どうやら1.1.27以降で仕様が変わったみたい

で対策(反応するっちゃするけど速攻で無効化)
#MenuMaskKey vk07
*~○○○::(LAlt、RAltを抜いた全部のキー)いっぱいなので割愛
*~LAlt::Send {Blind}{vk07}
*~RAlt::Send {Blind}{vk07}

プログラムによっちゃ無効化出来る設定あるけどOSレベルで無効にできんのかなぁ
■ このスレッドは過去ログ倉庫に格納されています
16歳の水野カイトが封印の刀を見つけ、時間が裂けて黒い風と亡霊の侍が現れ、霊の時雨と契約して呪われた刀の継承者となる場面

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