AutoHotkey :sendの使い方,DllCallの使いかた他Tips

AutoHotkeyの関数を使おうと思うと、引数の使い方で迷うことしばしばあります。迷い、いろいろ試し、うまく行ったのを記録として残しておきます。
すぐに忘れるのだから。

DllCallでは、構造体がありませんが工夫するとできるようです。

AutoHotkeyの本家英語サイト:

文字の連結は 空白+ .ピリオド + 空白

空白 . 空白   = ピリオドの前後にスペース(空白)が必要

ブロック{}は先頭にないとダメ

{
  ~~~~
}

一番左にないとうまく認識してくれません。

Send, keys(文字列) を早くする。 IMEの影響を受けないように

;Wordpress
^LButton::
;マウスのXY取得
	MouseGetPos, mx, my
	mx := mx+150
	my := my+100
;最初のGUI
    Gui, Font,s11  ;フォントの大きさ
    Gui, +AlwaysOnTop ;always TOP
    Gui, Add, Button,y5 w50 gBrog , Box
    Gui, Add, Button,y5 w50 gYoutube, You
    Gui, Add, Button,y5 w50 gCode, Code
    Gui, Add, Button,y5 w50 gTable, Table
    Gui, Show, w280 h40 x%mx% y%my%, Google
Return
;---------------------------
GuiClose: 
    ExitApp
;---------------------------
Brog:
    SetTitleMatchMode, 2
    WinActivate, WordPress
	tmp := clipboard
	clipboard =
	sleep, 100
	clipboard = box
	clipWait
	Sleep, 200
    Send, ^v
	clipboard := tmp
Return

Youtube:
    SetTitleMatchMode, 2
    WinActivate, WordPress
	tmp = %clipboard%
	clipboard =
	clipboard = Youtube
	clipWait
	Sleep, 150
	Send, ^v
	clipboard = %tmp%
Return

Code:
    SetTitleMatchMode, 2
    WinActivate, WordPress
	tmp := clipboard
	clipboard =
	clipboard = Code
	ClipWait
	Sleep, 100
	Send, ^v
	clipboard = %tmp%
Return

Table:
    SetTitleMatchMode, 2 ;部分一致
    WinActivate, WordPress
	clipboard = Table
	Send, ^v
Return

send, aaaaaaaaaaaa のようにすると少し時間かかります。
クリップボードを使うと、早いです。

ただし、ClipBoardのデータ書き換えに時間が必要です。それともバグ、うまくクリップボードの内容が書き換わらないときがたまにあります。
Sleepを入れ、ちゃんと動くように調整しましょう。

Send, IMEがONだと、影響を受けます。

Send, A と Send, a は別物

F1::
    Send, a
Return

DllCall、の使い方で読むべき記事

こちらの記事を読んで、だいぶ理解が深まりました。
ぜひ読んで下さい。

ポインタが出てくるところから、難しい。

LONG型整数は32ビット(=4バイトX8)

VarSetCapacity(point, 8, 0x00) ;変数名、確保するバイト数、内容を0で消去

コメント

タイトルとURLをコピーしました