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/09/24(日) 01:34:28.38ID:0aSErUDh0
>>81
質問するならもう少し具体例を挙げるとかとかした方がいいんじゃないかな
2017/09/24(日) 03:46:08.78ID:EkpWsIry0
>>81
if (式1) {
 ・・・
} else if (式2) {
 ・・・
} else if (式3) {
 ・・・
}
2017/09/24(日) 05:24:39.24ID:rm7yR9v00
>>83
多分コレジャナイ感
2017/09/24(日) 09:42:45.44ID:199+CCx20
じゃあ
>>81
if (式1) {
 ・・・
}
if (式2) {
 ・・・
}
if (式3) {
 ・・・
}
86名無しさん@お腹いっぱい。 (ワッチョイ a777-LePR)
垢版 |
2017/09/24(日) 13:45:20.15ID:vmDjT91J0
>>81
概略こんなコードになるはず。

何か適当な名前の関数()
{
  マウスムーブ1回目を実行
  当該キーの状態を取得
  if (押されていない)
    return

  マウスムーブ2回目を実行
  当該キーの状態を取得
  if (押されていない)
    return
   :
}

で、回数が多いようならこんな感じで1回分の作業単位の関数を書いたほうがいい。
MouseMoveAndKeyCheck(dx, dy, strKeyName)
{
  MouseMove, dx, dy,. , R
  return ( GetKeyState(strKeyName)=="D" )
}

この場合、この関数を
if ( !MouseMoveAndKeyCheck(10,10,"LShift") )
  return
if ( !MouseMoveAndKeyCheck(10,-20,"LShift") )
  return
とかかいて呼び出してやればいい。

#テストしてないので誤字とかあったらごめんね
2017/09/25(月) 17:03:34.64ID:FNSh64gG0
if (3 < %A% < 5) とかの3項比較すらできないとか何このクソ言語
一つづつ比較しろってのかよ
一々%がついたりつかなかったりもウザいし
2017/09/25(月) 19:15:51.75ID:b7qo8gsc0
if A between 3 and 5
2017/09/25(月) 19:32:18.57ID:dkkQJqva0
サルが迷い込んでてわろた
2017/09/25(月) 22:47:53.97ID:gWdFgzgp0
サルのふりをすると素早く結果が得られるのか
よいなウキキ
2017/09/25(月) 22:57:58.76ID:E5zwZhHI0
サルまねは簡単に見抜かれるがな
ウッキー
2017/09/27(水) 23:26:25.74ID:8l6buZma0
お尋ねします。
FileReadからのStringReplace何ですが、よく理解していないので以下のように変数から変数へリプレイスしています。
もっとスマートな方法はありますか?。

unko0 =
(
unko chan
geriguso chan
bichiguso chan
)
StringReplace, unko1, unko0, unko chan, unko kun
StringReplace, unko2, unko1, geriguso chan, geriguso kun
StringReplace, unko3, unko2, bichiguso chan, bichiguso kun
msgbox, リプレイス前`n%unko0%`n`nリプレイス後`n%unko3%
2017/09/27(水) 23:54:13.76ID:5X3wI39C0
A32.exeってUTF-8のスクリプト読み込ませても普通に動くしL版の追加機能も使えるのか
今まで本家版そのままと勘違いしてた
2017/09/28(木) 01:00:06.89ID:ZCT1JF0Y0
Outputunko is allowed to be the same unko as an Inputunko.
2017/09/28(木) 02:29:17.50ID:GQSksrr90
>>94
なるほど、変数を複数作らなくてもいいんですね。
確かにスマートですね。
勉強になりました、有難うございます。
2017/09/28(木) 11:06:02.36ID:sWQkFnkH0
キーリピートできない多ボタンマウスに
キーリピートできるようにはできないんでしょうか?

左クリック押しながら、マウスの別ボタンを押すと
ロジクールの多ボタンマウスだとちゃんと書いたコードが機能しますが、今のやつは無理です。

たぶん、キーリピートが関係している?気がするんですが。
2017/09/28(木) 11:43:16.41ID:tPmB9WEX0
>>96
どんな挙動しているか自分で確認しよう
キーリピートやキーUp/Downの時間など

#InstallMouseHook
KeyHistory
2017/09/28(木) 13:37:56.81ID:sWQkFnkH0
>>97
Auto Hot Keyにだけマウスのボタンの入力が行ってませんでした。
左クリックだけしか反応がありません……。
2017/09/28(木) 16:18:29.95ID:mqOcEldg0
>>98
質問するなら自分がどういうコード書いてるのが具体的に書けよ
エスパースレじゃねえんだから
2017/09/28(木) 17:18:30.28ID:sWQkFnkH0
たぶんマウスの問題なんだと思います。
いろいろ実験したんですけど、そのマウスだけAuto Hot Keyが認識しませんでした。
KeyHistoryを教えてくれた方、ありがとうございました。
これを知らなかったら、認識しないのに無駄にコードを書いて悩んでたと思います。感謝です。
2017/09/28(木) 17:26:18.24ID:a7Erhn8f0
>>100
普通多ボタンマウスならボタンのカスタマイズやキーアサイン機能あるだろ
俺の場合ならRazerNagaにF13〜F24など割り当ててAHK側でキーリピートさせたりも出来る
どこのマウス使ってんだよ
2017/09/28(木) 17:38:54.39ID:tPmB9WEX0
ひょっとしてマウスソフト設定がキーボードのキーになってるのでは?
さっきは書いてなかったが#InstallKeybdHook書けばそちらもログにでる
サイドボタンのマウス設定が「Z」ならAHKは「Z」と認識する

#InstallKeybdHook ; キーボードログON
#InstallMouseHook ; マウスログON
KeyHistory
2017/09/28(木) 17:45:34.30ID:a7Erhn8f0
だから具体的なこと一切書かないから悪いんだよ
>>96の「別のボタン」とは何ボタンなのか、多ボタンマウスの特殊ボタンならばそこに何を割り当ててたのか
「今のやつ」とはどのマウスのことなのか
2017/09/28(木) 17:54:32.61ID:sWQkFnkH0
>>101
「エレコム ワイヤレスマウス 無線 2.4GHz レーザー 8ボタン チルトホイール Lサイズ ブラック M-XGL20DLBK」です。
KeyHistoryでは、左右クリックとホイールの上下左右しか認識がありませんでした。サイドボタンは認識していません。

サイドボタン(5番)にPgDnを、右クリックにPgUpをマウスアシスタントドライバで割り当てて、
以下のようにコードを書きました。

~LButton & PgDn::Send,{RButton} ;@左クリックを押しながらサイドボタン(5番)(PgDn)
~LButton & PgUp::Send,#d ;A左クリックを押しながら右クリック(PgUp)

このコードはロジクールのG700Sなら動くんですが、エレコムマウスでは動かないです……。
2017/09/28(木) 18:51:25.73ID:Mhj4kady0
単にエレコムのマウスアシスタントの使い方を間違ってる可能性
2017/09/28(木) 19:27:11.97ID:sWQkFnkH0
Auto Hot Keyとこのマウスの相性が悪いのかもしれません。
もしくはエレコムのマウスアシスタントとの相性か。
エレコムの有線ゲーミングマウス(ドライバはゲーミング用)だと@もAも動いたんですけどね。
2017/09/28(木) 19:45:30.11ID:Mhj4kady0
そもそもPageUp/Downは効いてるのかい?
2017/09/28(木) 20:03:04.75ID:sWQkFnkH0
>>107
効いてますね。
2017/09/28(木) 20:45:00.19ID:Mhj4kady0
それなのに>>102のキーボードログONにしてもAHKはPagUp/Dnを検出しない?
2017/09/29(金) 03:11:51.19ID:r2OLOVvo0
>>104
横だけどエレコムのマウスアシスタントを切ってAHKだけででリピートできないかな
2017/09/29(金) 08:53:16.46ID:r/lUdNoa0
>>102
>>109
アシスタントで割り当てたキーが検出されませんね。

>>110
マウスアシスタントを切ってKeyHistoryを試してみたら、
サイドボタンの「XButton1」と「XButton2」は検出されましたが、それらにAHKでKeyを割り当てても、
KeyHistoryで「XButton1」「XButton2」と認識されるだけで、割り当てできませんでした。

もはや何が原因か分かりません。
2017/09/29(金) 09:44:16.78ID:r2OLOVvo0
>>111
目的の操作と動作を書いてみて
2017/09/29(金) 12:12:15.51ID:fLOXyM62aNIKU
ブラウザ(IE)の倍率を取得する方法ないですか?
2017/09/29(金) 21:28:26.66ID:mExGP7Np0NIKU
File.RawRead()でバイナリとして読み込みたいときに
BOM付テキストだとBOMの3バイト勝手に削られちゃうのどうしたらいいの
2017/09/29(金) 22:28:58.15ID:ZjfVNOK80NIKU
何がしたいのか知らんけど、BOM付きで保存したいならFileOpen()でエンコーディングを指定すればいい

File := FileOpen("a.txt", "r")
Enc := File.Encoding
Len := File.Length
VarSetCapacity(Buf, Len, 0)
Len := File.RawRead(Buf, Len)
File.Close()

File := FileOpen("b.txt", "w", Enc)
File.RawWrite(Buf, Len)
File.Close()
2017/09/29(金) 23:03:04.15ID:mExGP7Np0NIKU
>>115
保存はしない ただ丸ごと取り込みたい
5行目の時点でLenが3行目のLenより3少なくなってるのが困る
2017/09/30(土) 00:16:35.49ID:B2QZrWW30
File.RawReadのまえにFile.Seek(0)する
2017/09/30(土) 00:34:10.13ID:Cebj4y3r0
へー、File.Seek(0)でいけるのか
2017/09/30(土) 00:42:17.41ID:nKssOyMy0
>>117
バッチリです ありがとう
2017/09/30(土) 00:58:39.63ID:B2QZrWW30
公式のドキュメントにBOMがある時はポインタを進めるってちゃんと書いてあるよ
https://autohotkey.com/docs/commands/FileOpen.htm
2017/09/30(土) 08:43:40.77ID:Cebj4y3r0
やっぱ、ちゃんと公式のドキュメント読まんといかんね
2017/09/30(土) 11:15:24.15ID:1lMD47790
あるウィンドウにあるメニューバー、文字メニューでリスト内テキストと付随したチェックマーク有無を取得する方法はありますか?
例えばあるソフトで「☑」夜間モード、みたくなっていて
そのチェックありなしでキーボード操作が大幅に変わってしまうようなものに対応したホットキー(意図しない暴発を避けるため、片方のモード時にはスルーする、など)を設定したく調べでいるのです。
2017/09/30(土) 11:40:52.35ID:8Huw1vzT0
>>122
メニューバーの左から3番目のプルダウンの8番目のサブメニュー内の4番目の状態を取得する例。
メニューアイテムはゼロから数える。セパレータも数える。

hWnd:=WinExist("a")
hMenu:=DllCall("GetMenu","uint",hWnd)
hSmenu1:=DllCall("GetSubMenu","uint",hMenu,"uint",2)
hSmenu2:=DllCall("GetSubMenu","uint",hSmenu1,"uint",7)
St:=DllCall("GetMenuState","uint",hSmenu2,"uint",3,"uint",0x0400)
MsgBox,%St%

チェックされているかどうかでstの値が違う。
IEやchromeだと、このやり方ではメニューのハンドルが取得できない。(MDIだからかな)
できれば、>>113 も解決すると思う。
IEのメニューのハンドル取得方法を知っている人求む。
2017/09/30(土) 13:15:40.77ID:1lMD47790
>>123
ありがとうございます!使用したいソフトに数値あてはめてテストしたら問題なく動きました。
最近ahkを触り出したので、ご紹介いただいたDllCallなど、まだ触ったことのないコマンドでした。さっそくwikiを見つつ理解しようとしてますが頭がパニックになってます!アリモノの関数から値を引き出している?うーむ
またじっくり勉強していこうと思います、ありがとうございましたm(_ _)m
2017/09/30(土) 14:39:05.78ID:0PNJ6R9f0
>>112
サイドボタンに割り当てた任意キー(PgDnなど)がAHKに入力されないのは原因不明で
まだ解決してないんですが、いろいろいじってたら
Xbutton1と2がAHKに認識してくれるようになりました。

Xbutton2::
Send,{PgDn}
Sleep,200
While (GetKeyState("Xbutton2", "P"))
{
Send,{PgDn}
Sleep,30
}
Return

こんな感じで、リピート機能がないサイドバタンにリピートさせてます。
こんなコードでいいのか分かりませんが。
2017/09/30(土) 15:50:31.87ID:O67+Avl20
>>125
はじめとリピート中は
Send {PgDn down}
で、return前に
Send {PgDn up}
2017/10/01(日) 08:25:25.42ID:5/Rqy1jY0
>>126
添削ありがとうございます。
たしかにそれのほうがスマートですね。
128名無しさん@お腹いっぱい。 (ワッチョイ 1587-bz6c)
垢版 |
2017/10/01(日) 08:37:12.64ID:gRVszgej0
Ctrlのショートカットでカーソル移動をしてるのですが、
長押しすると文字のすり抜けが発生します。
どうすればこのすり抜け現象が解決するのでしょうか?

<^h::switchKeyByWindow("{Home}", "^h")
<^;::switchKeyByWindow("{End}", "^;")
<^l::switchKeyByWindow("{Right}", "^l")
<^j::switchKeyByWindow("{Left}", "^j")
<^i::switchKeyByWindow("{Up}", "^i")
<^k::switchKeyByWindow("{Down}", "^k")
2017/10/01(日) 09:12:52.31ID:Zz0Wp6Pe0
そんな関数知らねーよ
2017/10/01(日) 09:16:25.09ID:CNkKl/UV0
>>128
ググったら、1ページだけヒットした。
その作者に知らせてあげるのが一番良いよ。
131名無しさん@お腹いっぱい。 (ワッチョイ 1587-bz6c)
垢版 |
2017/10/01(日) 09:25:13.81ID:gRVszgej0
申し訳ありませn( ^ω^ )
;----------------------------------------------------------------
; Window によって送信するキーを振り分ける
;
; defaultKey デフォルトで送信するキー
; ctrlKey Ctrlを送信するウィンドウのとき送信するキー
;----------------------------------------------------------------
switchKeyByWindow(defaultKey, ctrlKey)
{
if (isCtrlKeyWindow())
{
Send,%ctrlKey%
}
else
{
Send,%defaultKey%
}
Return
}
132名無しさん@お腹いっぱい。 (ワッチョイ 1587-bz6c)
垢版 |
2017/10/01(日) 09:38:47.57ID:gRVszgej0
さらに、、、
;----------------------------------------------------------------
; Ctrl キーを送信する Window かどうかを判断する
;----------------------------------------------------------------
isCtrlKeyWindow()
{
; GVim
IfWinActive,ahk_class Vim
{
return 1
}
; Poderosa
IfWinActive,ahk_class WindowsForms10.Window.8.app.0.20f9772
{
return 1
}
; Mingw
IfWinActive,ahk_class ConsoleWindowClass
{
return 1
}
Return 0
}
2017/10/01(日) 09:44:20.65ID:ibUzHhgP0
自力で直せないならその関数使うのやめて#ifで書き直したほうがいいと思う
2017/10/01(日) 10:15:37.57ID:J6v0aHef0
SendMode, Playにすると動かないマシンがあるんだけどどういうことなんだろう
Win8やWin10のマシンではちゃんと機能するのにWin7のマシンではPlayにすると全く動作しなくなる
135名無しさん@お腹いっぱい。 (ワッチョイ 1587-bz6c)
垢版 |
2017/10/01(日) 10:16:23.02ID:gRVszgej0
単純にSendだけでもキーを切り替えた瞬間にすり抜けが発生してしまいます
136名無しさん@お腹いっぱい。 (ワッチョイ 1587-bz6c)
垢版 |
2017/10/01(日) 10:29:42.68ID:gRVszgej0
以下のスクリプトで、Ctrl+通常キーとのショートカットを長押して
カーソル移動しているのですが、上下左右を切り替えた瞬間に
通常キーがすり抜けます。何か手立てはありますか?

<^h::Send,{Home}
<^;::Send,{End}
<^l::Send,{Right}
<^j::Send,{Left}
<^i::Send,{Up}
<^k::Send,{Down}
2017/10/01(日) 13:36:43.12ID:CNkKl/UV0
>>136
SendMode,Input
#InstallKeybdHook
#UseHook
この設定だとどうなる?
2017/10/01(日) 15:24:44.69ID:gRVszgej0
>>137
レスありがとうございます
試しましたが、結果は変わりませんでした( ˘ω˘ )
Ctrlキー押しっぱなしで通常キーを切り替えた瞬間、
一文字だけすり抜けてしまいますね
2017/10/01(日) 18:45:43.89ID:rJfDiFvr0
MouseGestureLで画面端に接触って機能がありますが
autohotkeyではどのように再現すれば良いのでしょうか?
2017/10/01(日) 19:10:22.42ID:k6gLp1+F0
>>139
MouseGetPos
141名無しさん@お腹いっぱい。 (ワッチョイ 1587-bz6c)
垢版 |
2017/10/01(日) 20:28:29.75ID:gRVszgej0
Ctrlキーを使ったカーソル移動で、
Ctrlキーと通常キーの両方を押しっぱなしにしただけでも
時々すり抜けが起きますね、、、困ったな(''_'')
2017/10/01(日) 23:10:27.69ID:s8qjH76V0
>>141
Ctrlが押されてる間ループで自前処理はどうでしょう
2017/10/02(月) 18:40:04.60ID:aXY7sAIp0
>>142
それってどうやるのでしょう?教えて
2017/10/03(火) 11:26:31.37ID:k2wSjcMy0
わりと最近何度も話題になってたので過去ログさがせばすぐ出てくると思う
2017/10/03(火) 17:29:15.20ID:Z94A9/610
Win7ですが、プロセスの優先度を変更するのに、MSDOSでは
wmic process where name=
を使って変更できますが、AHKでも出来ますか
アプリを起動するごとに複数のアプリの優先度を組み合わせによって変更したいのです
アプリの起動はAHKで行うので、AHKで優先度も変更できれば楽です
MSDOSのバッチファイルを作っていちいちそれを起動するというのは避けたいのですが
2017/10/03(火) 17:41:40.86ID:y7JHy7Th0
Process
2017/10/03(火) 17:59:47.31ID:Z94A9/610
ありがとうございました
やってみたのですが、firefox.exeなのですが複数のプロセスがありますが1つだけしか変わりません
DOSではすべてが変わるのですが、全部を変える方法はありますか
WinGetのListで取ろうとしてもPIDは取れないし、同じイメージ名が複数ある場合は1つだけしか変えられないのでしょうか
2017/10/03(火) 18:09:22.57ID:ApSdm6mu0
winget List取得後にLoopで winget PIDしていけばよいのでは?
それかrunコマンド経由でwmic.exeの実行はできないん?
2017/10/03(火) 18:18:34.78ID:Z94A9/610
Firefoxはウインドウは1つだけ(タブは複数)起動しているんです
で、WinGet Listで取得すると、IDが1つだけしか取れません
でも、firefox.exeの同名のプロセスが3つ存在しています
150名無しさん@お腹いっぱい。 (ワッチョイ b54c-RH3k)
垢版 |
2017/10/03(火) 18:31:52.02ID:tZYykB2i0
なにをやりたいのかわかってないんだけど、
AHKで起動してるんだから、RunコマンドのOutputVarPIDでいいんじゃないの?
Run Firefox.exe, , , NewPID
Process, priority, %NewPID%, Low
でこのスクリプトで起動されたfirefox processは全部Low priority

OneTabのせいで、Firefoxのマルチプロセスが無効だったことに気がつかせてくれてありがとう
Firefox削除した
2017/10/03(火) 18:38:15.32ID:jR7/UGDJ0
頭悪い人の意見だけど
For process in ComObjGet("winmgmts:").ExecQuery("Select * from Win32_Process")
で全部取得しつつfirefox.exeならprocessで変えるようにすればいいんじゃない
2017/10/03(火) 18:51:40.20ID:Z94A9/610
>>150
やってみました
まず、Firefoxを全部閉じて、タブも1つだけ起動するようにして普通にFirefoxを起動しました
すると、firefox.exeという同名のプロセスが3つできます
次にこれをProcess, priorityで変更しようとすると、1つだけしか変更できず、2つは変更できません

次に
Run Firefox.exe, , , NewPID
MsgBox %NewPID%
Process, priority, %NewPID%, Low
としてやってみました。 MsgBoxでPIDを確認したかったからです
すると、確認している間にプロセスが3つ立ち上がって、結局変更できたのは1つだけ

ところが、MsgBoxをコメントアウトして
Run Firefox.exe, , , NewPID
Process, priority, %NewPID%, Low

でやれば、3つとも、プロセスがすべて低になりました
多分最初に起動したプロセスが親で、これをすぐに低に設定したら、それに続く2つのプロセスも
低のプロセスから派生したものだから低になるのでしょうね


この方法で出来ることはわかりました
でもすでに起動しているものを変更することはできないのかな
2017/10/03(火) 19:14:51.43ID:ApSdm6mu0
隠しプロセスだったらdetecthiddenwindows ONにしてからwingetは?
2017/10/03(火) 19:24:52.04ID:Z94A9/610
>>153
やってみました。 驚いたことに
detecthiddenwindows on
すると、1つだったIDが8つ出てきました。
これらはもちろん異なるIDだったのですが、WinGetでこれからPIDを求めるとすべて同じ多分親のPIDしか
出てこず、残りの2つのPIDは出ませんでした
155名無しさん@お腹いっぱい。 (ワッチョイ 1587-bz6c)
垢版 |
2017/10/03(火) 22:12:00.42ID:aFw/sdPM0
Ctrlキー押しっぱのカーソル移動のすり抜けは
以下のメソッドを追加したら少し改善した。
少なくとも一定時間の移動ではすり抜けなくなってみたい。
但し、方向切り替え時に通常キーの同時押し状態になってしまう瞬間はダメですが、

SendMode Event
#UseHook
#InstallKeybdHook
#HotkeyModifierTimeout 100
SetKeyDelay,0
2017/10/03(火) 22:41:37.06ID:v5TBqoIN0
>>155
それキーボード側の同時押し可能数の問題じゃね
ゲーミングキーボードとか多同時押し対応したものなら起きないかもな
2017/10/03(火) 23:05:38.81ID:aFw/sdPM0
>>156
自分が使ってるのはリアフォかHHKBPro2だから同時押し6つのヤツ
恐らくCtrl+I,J,K,Lの2つのキーのSendだから3つ目が来た時に
単独押しの判定になるのかな?
少し改善したのはHotkeyModifierTimeoutを追加したのが効いてると思う。
158名無しさん@お腹いっぱい。 (ワッチョイ 236e-e2we)
垢版 |
2017/10/03(火) 23:30:28.37ID:Fa/rtAAh0
>>157
Ctrl+Iが押されたときAHKはまずCtrl upをSendしてから↑をSendし↑ upをSendしCtrlをSendする
この処理中にJ,K,Lを押すとスルーするかな
2017/10/04(水) 00:35:32.62ID:QCRp6QYx0
コマンドラインのツールのフロントエンドを作ろうとしたんですけど
Runwaitするとタイマーも割り込めないんですね…
Runの後にループでスリープしながら見張るのが無難でしょうか?
2017/10/04(水) 15:56:38.38ID:rfwLN1/G0
>>157
Send, {Blind}{Up}
2017/10/04(水) 16:53:46.41ID:LAY40rLs0
>>160
Ctrl+上 になってしまうのでは
2017/10/04(水) 23:43:40.87ID:eAdJsIi70
wikiに「1つのキーに3種類以上の動作割り当て」っていうサンプルがありますが
なぜあれで2度押しができるんですか?
解説お願いしたいです。
2017/10/05(木) 00:56:48.37ID:6h/nzYUE0
押された::
Q.すぐに離されましたか?
↓yes  no→ A.長押しです
Q.またすぐに押されましたか?
↓yes  no→ A.1度押しです
A.2度押しです
2017/10/05(木) 01:09:31.71ID:L8qoU5mE0
あれはキーダウンでラベルが呼び出されてから
keywaitでキーアップを待っているわけよ
0.3秒以内にキーアップがこなければ長押し
0.3秒以内にキーアップが来てそこから0.2秒以内にまたキーダウンが来たら2度押し
そうでなければ1度押し
2017/10/05(木) 08:37:47.60ID:YdyjWLJj0
解説必要かな
コメント適切すぎてどこで何してるのか一目瞭然だし
あれ以上の説明って逆に難しい気がするんだけど
2017/10/05(木) 09:00:00.95ID:6h/nzYUE0
押されているのが離されるのを待つコマンドで
離されることなくタイムアウトしたら
errorlevelが trueになる

ちょっと理解が混乱するのはいたしかたない
2017/10/05(木) 17:46:10.09ID:lN6wv7uW0
あるアプリにEditのコントロールがたくさんあります。50個くらい
これらのテキストをControlGetTextで取っているのですが
ひとつひとつクリックして選択してからGetしているので時間がとてもかかるのです
なので、このコントロールのメモリアドレスを取得することはできませんか
そうするとメモリから直接すべてのテキストを取得することができそうな気がするのですが
ControlGetTextでテキストを取得しているということは当然メモリにアクセスしているので
AHKはアドレスをゲットしているはずですね
一度すべてのEditコントロールのメモリアドレスをゲットしておけば以降はメモリアクセス
だけでゲットできるか考えているのですが
2017/10/05(木) 17:56:02.37ID:/O7vn0vF0
WinGetのControlListかControlListHwndとか?
2017/10/05(木) 18:26:18.76ID:lN6wv7uW0
>>168
controlHWNDをゲットして出来そうですね。 ありがとうございました
2017/10/05(木) 18:44:26.59ID:Mw/WW6ff0
>>160
Send, {Blind}でやってみたが、カーソルの動きが
変な動きをするんだけど、、、
2017/10/05(木) 19:01:28.37ID:pHsu3ccW0
説明を聞いたら分かりました。ありがとうございます!
「KeyWait,vk1Dsc07B,D T0.2」は0.2秒経過してもdownされてなかったらそのまま通すんですね。
そこが分かってなかったです。
2017/10/05(木) 23:48:46.74ID:ZYF3rk8J0
>>170
{Blind} は変換キー+JKLi とかで使う時が良いよ。
2017/10/06(金) 12:38:18.47ID:TXUF7LvYa
左クリックでsetkeydelayを効かせるにはどう書いたらいいんですか?
3パターンともディレイがききません。

setkeydelay,400
send,{LButton 4}
send,{LButton}{LButton}{LButton}{LButton}
Click,Left 4
return
2017/10/06(金) 12:46:51.83ID:PVKvJFle0
SetMouseDelay
2017/10/06(金) 12:59:37.03ID:TXUF7LvYa
>>174
ディレイできるようになりました。
ありがとうございます。
176名無しさん@お腹いっぱい。 (ワッチョイ 0d87-BYga)
垢版 |
2017/10/06(金) 22:23:31.17ID:qJK6Bjjm0
>>172
Ctrl+通常キーの長押しは、ほぼこれでOKのようです。
同時押し時のすり抜けはまだ解決してませんが
今のところはキーの切り替え時に同時押しにならないようにすれば、
なんとかイケてます(^^♪
177名無しさん@お腹いっぱい。 (ワッチョイ 0d87-BYga)
垢版 |
2017/10/08(日) 06:34:31.46ID:QHNb58xD0
HHKBで単独のDelキーがほしいのでバッククォートに割り当てたんだけど
バッククォート自体の入力をCtrl+バッククォートでSendしたけどうまく出来ません。
対処方法を教えてください
2017/10/08(日) 07:05:56.35ID:PU2F6qYD0
質問するならまず自分が書いたスクリプトを貼るのが筋
2017/10/08(日) 08:08:29.49ID:QHNb58xD0
>>178
`::Send,{Blind}{Delete}←バッククォートをDelキーに割り当てはOK
^`::Send,{Blind}`←Ctrl+バッククォートでバッククォート入力がうまくいかない
2017/10/08(日) 08:17:56.19ID:PU2F6qYD0
>>179
仮想キーコード{vkC0}を使えば?
2017/10/08(日) 08:19:10.59ID:PU2F6qYD0
てかその使い方なら{Blind}は付けたらダメでしょ
■ このスレッドは過去ログ倉庫に格納されています
大学生アイラと影の怪物と戦うリョウが、深夜3時3分の静止した世界で交錯する超常スリラーの概要

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