AutoHotkey スレッド part18at SOFTWARE
AutoHotkey スレッド part18 - 暇つぶし2ch150:名無しさん@お腹いっぱい。
14/05/14 01:59:44.61 RkcpF9pr0
画面の縦が狭いノートをずっと使っているんだが、
画面の一番下をクリックするとタスクバーが消える/表示をトグルする単純なスクリプト作ったがとても便利
もっとはやくつくればよかったw

151:名無しさん@お腹いっぱい。
14/05/14 02:12:27.70 fk1aU+Mo0
タスクバーを自動で隠すのとどう違うの?

152:名無しさん@お腹いっぱい。
14/05/14 02:18:11.49 RPGHyF0D0
自動で隠すと、出てほしくない時に出てきたりするからすごい邪魔なときある

153:名無しさん@お腹いっぱい。
14/05/14 02:25:08.19 62OzpCou0
そもそもタスクバーがなくなったら困らないかという気もしなくもない俺のタスクトレイはインジケーターまみれ

154:名無しさん@お腹いっぱい。
14/05/14 03:54:57.10 /HIG7Vl00
さいしょAHKで試行錯誤してたけど
俺は「タスクバーをほかのウィンドウの手前に表示する」のチェックを外すだけで解決した

155:名無しさん@お腹いっぱい。
14/05/14 08:08:37.26 DM5mvBPn0
うちは横置き&小さいタスクバーボタン
アイコンだけじゃなくウィンドウタイトルも表示されるので分かりやすい

156:名無しさん@お腹いっぱい。
14/05/14 13:40:45.04 ryadNrAh0
どうしてもやり方が分からないので知りたいのですが。
bmpでボタン作りたいのですがやり方どうすれば良いのでしょう?

別窓では無くイメージとしては アプリ開いている状態で画面の一部にbmpを上乗せして(濃度%いじれると良い)
クリックするとsend遅れたりするけどフォーカスは下のアプリの方(使っているアプリ)のままって感じですね。
bmp表示する方法は分かってもボタン化が分からないんですよね・・・

157:名無しさん@お腹いっぱい。
14/05/14 14:59:05.43 txyddDiZ0
マウスオーバーでgui時に判別が基本だろうけど

ていうかそういうのってもうビジュアルベーシックとかCのほうが早くねぇか?

158:名無しさん@お腹いっぱい。
14/05/14 15:46:22.32 /fXX0Y8P0
AHKでファンクションキーが使えるのか
で、私は使えたのですが、ここにこんな記述がありますねえ
これって誰が書いているのでしょうか。ちょっとびっくりです
ちなみに、ファンクションキーは普通に
F10::
Send, {F10}
return
などで出来ますよねえ。何か別の意味があるのでしょうか

URLリンク(autohotkey.blog.fc2.com)

159:名無しさん@お腹いっぱい。
14/05/14 15:48:30.51 ryadNrAh0
どちらも疎いので・・・何とか分かる範囲でコレで行けるならこれでやれればなと言うのも有りまして。

160:名無しさん@お腹いっぱい。
14/05/14 15:52:29.82 RPGHyF0D0
>>158
重大な勘違いしてる

161:名無しさん@お腹いっぱい。
14/05/14 15:56:27.54 NeDEmuCb0
>>158
ノートパソコンて知ってる?

162:名無しさん@お腹いっぱい。
14/05/14 16:08:24.99 /fXX0Y8P0
ああ、ひょっとして、F1からF12のことではなくて、キーボードの左手前にあるFnキーのことですか
なんかありましたねえ
Fn(ファンクション)キーってわざわざファンクションとかって書いてあるし、なんかややこしい
もう少しちゃんと書いてほしいです
でもよくわかりませんが

1.人がキーを押す
2.キーボードが押されたキーの情報をパソコンに送信する
3.パソコン(Windows)が受け取る
4.Windowsが対象ウィンドウにキー情報を送る
5.AutoHotkeyが暗躍する
6.ウィンドウがキー情報を受け取って反応する

本来この順でキーを押したことがウィンドウに通知されますが、
2でキーボードが「Fnキー+○キーは×キーにする」という処理を行います。
Windowsが受け取るのは×キーのキー情報だけでFnキーや○キーのキー情報はWindowsには届きません


と書いてあります。では、この処理後の×キーのキー情報で動作を行うことって出来ないのかな
まあ、Fnキーは使うことはないと思うので余計なお世話かもしれませんが

163:名無しさん@お腹いっぱい。
14/05/14 17:09:57.46 t46m9pW+0
gui,add,pictureの縮小拡大でアルゴリズムの指定はできないの?
サイズ変えると糞きったなくなるんだけど

164:名無しさん@お腹いっぱい。
14/05/14 17:54:19.83 HUSPdTgC0
>>159
ラベル指定すると画像クリックしたときの動作を指定できるけど
それじゃ駄目なのけ

>>162
できると思うよ

165:名無しさん@お腹いっぱい。
14/05/14 20:28:20.50 fDgDPOOw0
トリガーキーのトグル動作でキーリマップを切り換えるスクリプト作成中なんですが、
リマップAからリマップBにした時、何らかの視覚情報で知らせられたらと思っています。

一応、リマップBにした時にタスクトレイにアイコンを表示するだけのスクリプトを走らせ、
リマップAに戻した時そのスクリプトを終了する、というのは出来たのですが、
それよりもCaretの色または太さを変える方がより視認性が高いのではないかと思い始めました。

そこで質問です。
Caretの色または太さはどうすれば変更できるんでしょうか?
また、この他にアイデア有りましたら教えていただけないでしょうか。

166:名無しさん@お腹いっぱい。
14/05/14 21:17:19.20 Tl56DF4L0
tooltipで表示するのがいいんでない?
俺は何かを切り替える系での告知はtooltipでやってる

167:名無しさん@お腹いっぱい。
14/05/14 21:42:41.64 DM5mvBPn0
>>165
なまずIME あたりが参考になるかも
中見てないけどAHKにはキャレットをカスタマイズする機能は(たぶん)ないので
GUIでキャレット位置に貼り付けてるんじゃないかな

168:名無しさん@お腹いっぱい。
14/05/14 22:12:33.98 fDgDPOOw0
>>166-167
回答ありがとうがざいました。

>キャレットをカスタマイズする機能は(たぶん)ないので
そうですか、わかりました。

なまずIMEのスクリプト流し読みですが、ちょっと見かなり複雑な処理してる見たいですね。

お二人の意見を参考にスクリプト書いてみます。

169:名無しさん@お腹いっぱい。
14/05/14 22:48:46.91 DM5mvBPn0
>>156
よくわらんがGui,Add,Buttonの上に Gui,Add,Picureでbmp貼って
GuiControlでbmpをDisableにしとけばいいんちゃう?
透明指定は WinSet,Trans とか WinSet,TransColor あたり

ボタンの形のbmp使うからButtonオブジェクトいらんってことなら
OnMessage() でWM_LBUTTONDOWNイベント発生させる

170:名無しさん@お腹いっぱい。
14/05/14 23:11:01.08 2sIhPzGT0
#ClipboardTimeoutの値を一つの処理(スレッド?)でのみ変更する方法ってありますか?

171:168
14/05/14 23:44:02.72 fDgDPOOw0
以下のようにしてCaretの位置へToolTip表示させれるようになったのですが、
秀丸エディタではCaretの位置へToolTip表示させることが出来ませんでした。(ウインドウ枠の所に表示される)
秀丸エディタでは無理なんですかね?
それから、ToolTipを半透明で表示させることって出来ますか?

;keyLayout_ChangeはリマップBになったかのフラグ
Indicator(keyLayout_Change) {
if (keyLayout_Change) {
SetTimer, Indicator_ToolTip, 1000
}else{
SetTimer, Indicator_ToolTip, Off
ToolTip,
}
}
Indicator_ToolTip:
CoordMode, ToolTip, Relative
CoordMode, Caret, Relative
ToolTip, ., A_CaretX - 10, A_CaretY - 16
CoordMode, ToolTip, Screen
CoordMode, Caret, Screen
return

172:名無しさん@お腹いっぱい。
14/05/15 00:56:11.64 gvWGefzm0
>>164,169

ん!
何となく分かった気がしますありがとう御座います。
頑張ってみます

173:名無しさん@お腹いっぱい。
14/05/15 02:48:10.08 smf5mgep0
>>162
> 処理後の×キーのキー情報で動作を行う
はできるけど、もとの×キーの動作も変えてしまう
Fn単独の動作を変更できたら便利だけど、AHKではできないって意味だな
FnキーのFnがfunctionだから(ファンクション)と書かれてるのも間違ってないな
ということで君がおばかさんだったってことだ

174:168
14/05/15 04:19:57.92 2vMbrIyM0
以下のように改良して秀丸エディタでも確認できるようになりました。

;keyLayout_ChangeはリマップBになったかのフラグ
Indicator(keyLayout_Change) {
if (keyLayout_Change) {
SetTimer, Indicator_ToolTip, 500
}else{
SetTimer, Indicator_ToolTip, Off
ToolTip,
}
}
;ウインドウ枠左端に縦長のToolTipを表示(ウインドウに追従し、ウインドウサイズによりToolTip縦サイズを調整する)
Indicator_ToolTip:
WinGetPos, X, Y, Width, Height, A
c := Round(Height/22)
Loop, %c% {
str .= "`n"
}
ToolTip, % str, X, Y + Round(Height/5)
str := ""
return

175:名無しさん@お腹いっぱい。
14/05/15 04:22:58.12 2vMbrIyM0
>>174
名前覧の168は>>171が正しいです。

176:名無しさん@お腹いっぱい。
14/05/15 21:34:12.75 x+Bh3TdJ0
昔はTooltipとかキャレットとかやったけど今はSoundBeep使って音階で識別してる

というのもトグル状態の確認が必要で情報表示するけど、
うざくて消したくなるから一定時間で消すような仕込みをした
でも一定時間操作してないと状態がどうなってるかよく分からなくて
再度キー押したりして本末転倒になった

今はやりたい操作は指連打と音で判断するようにしてる

*vk1Dsc07B::KeyCounter()

KeyCounter() {
 global $KeyMap
 static keyCount
 ListLines, Off
 $KeyMap:=keyCount:=(A_ThisHotkey==A_PriorHotkey && A_TimeSincePriorHotkey<300) ? keyCount+1 : 1
 SoundBeep, $KeyMap * 400, 10
 KeyWait, % RegExReplace(A_ThisHotkey, "^\W+", "")
 $KeyMap:=0
}

#if ($KeyMap = 1) ;
 h::Left
 j::Down
 k::Up
 l::Right
#If ($KeyMap = 2)
 ; Home, End, PgUp, PgDn とか
#If ($KeyMap = 3)
 ; WinMoveとか

177:名無しさん@お腹いっぱい。
14/05/17 20:17:48.37 CGpqRpBF0
このように書けば問題ないのですが、表示名が「TestToggle&Check」じゃなく、「TestToggle Check」と「半角空白」を使いたいのです
Menu, tray, add, TestToggle&Check
TestToggle&Check:
Menu, tray, ToggleCheck, TestToggle&Check
Return

でも、ラベルに半角空白含む名前は使えないらしくエラーになります
Menu, tray, add, TestToggle Check
TestToggle Check: ;<<<<<ここでエラーになる
Menu, tray, ToggleCheck, TestToggle Check
Return

何とかメニュー名に「半角空白」使えませんかね?
「全角空白」では間延びしたような見栄えでちょっとよくないです
無理なら諦めます

178:名無しさん@お腹いっぱい。
14/05/17 21:22:07.01 aSpGMjn80
A_Space

179:名無しさん@お腹いっぱい。
14/05/17 23:08:57.41 CGpqRpBF0
>>178
レスありがとうございます
すいません、どうしても分かりません。
間違ってる所を指摘して下さい

Menu, tray, add, TestToggle%A_Space%Check ;<<<<<ここでエラーになる
TestToggle%A_Space%Check:
Menu, tray, ToggleCheck, TestToggle%A_Space%Check
Return

180:名無しさん@お腹いっぱい。
14/05/17 23:18:18.07 JvJaXAuL0
URLリンク(ahkwiki.net)

ちゃんとラベル指定しろ

181:名無しさん@お腹いっぱい。
14/05/17 23:47:50.76 CGpqRpBF0
>>108
ありがとうございます
解決しました

一応そのwikiのサンプルコード使って格闘してたんですが
そのコードに肝心の「Menu, tray, add, MenuItemName, Label」の例が無く
メニュー名=ラベル名になるものと思い込んでいました

182:名無しさん@お腹いっぱい。
14/05/18 14:13:52.93 azfgwDu90
MGLスレかどっちか迷ったんだけど、こっちで質問。

キーのリマップスクリプト(ホットキー)を一時的に無効化するのに「Suspend」使うと思うけど、
リマップスクリプトをMGLのプラグインとして使ってると、他プラグインと共にMGLがSuspendしてしまう。

他プラグインとMGLに影響出ないようホットキーのみ一時的に無効化させる方法何か有る?
あ、MGLは再起動させたくないです。

183:名無しさん@お腹いっぱい。
14/05/18 14:28:08.85 SkEzxV/c0
何らかのキー::
if(flag_hotkey <> 1)
 flag_hotkey = 1
else
 flag_hotkey =
return

#if (flag_hotkey)


ホットキー、
キーリマップ


#if

184:名無しさん@お腹いっぱい。
14/05/18 16:02:07.69 azfgwDu90
レスサンクス。
でも、パターン(1)の場合、「#If (flag_hotkey)」は無視されてうまく行かない。
で、パターン(2)のようにすれば問題なく動く。
しかし、「#If (flag_c) && (flag_hotkey)」みたいに一つ一つ書いていくのはつらい。
何か簡単な方法ないものか。

flag_hotkey := 0
flag_a := 1, flag_b := 1, flag_c := 1, flag_d := 1
return

;パターン(1)
#If (flag_hotkey)
#If (flag_a)
a::MsgBox, a
#If (flag_b)
b::MsgBox, b
#If

;パターン(2)
#If (flag_c) && (flag_hotkey)
c::MsgBox, c
#If (flag_d) && (flag_hotkey)
d::MsgBox, d
#If

185:名無しさん@お腹いっぱい。
14/05/18 16:36:22.04 SkEzxV/c0
わかりにくかったかな。例えば以下のようにすると、
ctrl+spaceを押すと#ifで囲まれているホットキーがonになってもう1回押すとoff(サスペンド)
ONOFFスイッチのキーは好きな奴に変えて

^Space::
if(flag_hotkey <> 1)
 flag_hotkey = 1
 ToolTip, HotKeyON, 1710, 0
else
 flag_hotkey =
 ToolTip
return

#if (flag_hotkey)

a::Msgbox, a
b::Msgbox, b
c::Msgbox, c

#if

186:名無しさん@お腹いっぱい。
14/05/18 16:44:52.71 SkEzxV/c0
ifのところで{}忘れてたわ

187:名無しさん@お腹いっぱい。
14/05/18 18:01:12.11 azfgwDu90
>>185-186
レスサンクス。
何度も申し訳ない。こっちも質問の仕方が悪かったかもしれない。

とりあえず、flag_hotkeyのフラグ切り替えの方法は理解しました。

問題は>>185の例みたいに、元々のホットキーに条件が付いてない場合はうまくいくが、
#if (flag_hotkey) ;リマップが有効か無効か
a::Msgbox, a
  ・
  ・
>>184のパターン(1)ように元々のホットキーに条件が付いてる場合うまくいかない。
#if (flag_hotkey) ;リマップが有効か無効か
#If (flag_a) ;←元々付いてる条件
a::MsgBox, a
  ・
  ・
>>184のパターン(2)のようにすれば、条件に忠実に動くようになる。
#If (flag_a) && (flag_hotkey)
  ・
  ・
でも、一つ一つ「 && (flag_hotkey)」を付け足していくのはつらい。
一つ一つに「 && (flag_hotkey)」を付け足していくのではなく、何か他に簡単な方法はないか…というのが>>184の質問でした。

#If (flag_a) && (flag_hotkey)←こういう方法しか無いですかね?

188:名無しさん@お腹いっぱい。
14/05/18 18:20:09.13 Pm+XAqGi0
俺もMGLかこっちか迷ったんだけどこっちで質問

;選択範囲をコピー
Lclickcopy(){
MouseGetPos, x0,y0 ;クリックした時の座標取得
keywait,Lbutton ;離すのを待つ
MouseGetPos, x1,y1 ;クリックを離した時の座標軸
if (x1-x0 > 5 or x1-x0 < -5 or y1-y0 > 5 or y1-y0 < -5){
   clipnow := ClipBoardAll ; save old clipboard
   send,^{c}
   ClipWait 1, 1
   IfEqual ClipBoard,, SetEnv ClipBoard, %clipnow%
return
}
}

こんな関数を作ったんだけどMGLのLbuttonに設定したらエラー吐く。
かといって
~Lbutton::Lclickcopy()

としたらロッカージェスチャのRB_LB__が動いてくれない
八方ふさがりなんだけどどうしよう(´・ω・`)

189:名無しさん@お腹いっぱい。
14/05/18 18:25:07.06 azfgwDu90
>>187追加
いわゆる「入れ子?」が#ifでは出来ないって言うことなんかな?
なら、#If (flag_a) && (flag_hotkey)←こういう方法しか無いみたいね。
元々の考えを改めて別の方法捜してみるわ。

>>185-186
お騒がせしました、あありがとう。

190:名無しさん@お腹いっぱい。
14/05/18 20:07:10.13 TWeApKh00
>>188
スレチ、専用スレにエラー内容とサンプルコードを書こう

【AHK】MouseGestureL.ahkを語るスレ【ジェスチャ】
スレリンク(software板)

191:名無しさん@お腹いっぱい。
14/05/18 20:40:52.59 PE4IKbR20
せっかく専スレあるんだからあっち使ってあげなよ

192:名無しさん@お腹いっぱい。
14/05/18 21:05:27.57 SkEzxV/c0
>>189
あーそういうことか。
だったら&&で繋げるくらいしかないかな。

代替案としてはサスペンドしたいホットキーだけで別にahkスクリプト作って独立させて
その作ったスクリプトを起動、終了するホットキーを今まで使ってた本体ahkに登録すればいいかもしれない
ホットキーを有効にしたいなら別ahkを起動、サスペンドしたいなら別ahk終了、みたいな感じで


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch