AutoHotkey スレッド part8at SOFTWARE
AutoHotkey スレッド part8 - 暇つぶし2ch1:名無しさん@お腹いっぱい。
09/05/23 00:23:38 78PWRd9v0
■公式
URLリンク(www.autohotkey.com)

■解説
AutoHotkeyを流行らせるページ
URLリンク(lukewarm.s101.xrea.com)

■過去スレ
1 スレリンク(software板)
2 スレリンク(software板)
3 スレリンク(software板)
4 スレリンク(software板)
5 スレリンク(software板)
6 スレリンク(software板)
7 スレリンク(software板)

■派生版
AutoHotkey_L
URLリンク(www.autohotkey.net)

駄目文字微対策版
URLリンク(yak.myhome.cx)

関連リンク>>2以降も参照


2:名無しさん@お腹いっぱい。
09/05/23 00:24:43 78PWRd9v0
■関連記事のあるサイト

AutoHotkey メモ - Principia
URLリンク(principia.s54.xrea.com)
AutoHotKey - notitle.txt
URLリンク(kan.s151.xrea.com)
なまず日記
URLリンク(www.tierra.ne.jp)
eamatの日記
URLリンク(d.hatena.ne.jp)
おばけ日記
URLリンク(d.hatena.ne.jp)

1 Hour Software by Skrommel - DonationCoder.com
URLリンク(www.donationcoder.com)
ACConsole
URLリンク(www.autohotkey.com)
Tips N Tricks(公式フォーラムのトピック)
URLリンク(www.autohotkey.com)

3:名無しさん@お腹いっぱい。
09/05/23 00:25:48 78PWRd9v0
Q1:CapsLock(英数)キーの割り当てがうまくいかないよ
A1:日本語環境だとLock系キーの動作は不定。
  OS側がキーUp/Down情報が正しく返してこないので対処のしようがない。
  OSのローカライズ段階で発生してる問題なので、窓使いの憂鬱やChange Keyのように
  ドライバレベルで弄らないとダメだが英語圏では問題ないらしいので今後のサポートもあまり期待できない。
  対処としては前述のソフトで、CapsLock(英数)キーを別のキー(F13~F24など)に割り当ててから
  AHKで利用すべし。

Q2:「~AチЯ㌔荏柿義形港餐汁秦疏蛋伝覗描冒輿倭兪啻嫣彖拜杼歔」を含む文字列がうまく扱えないよ
A2:これらの文字の2バイト目が、AHKのエスケープ文字である0x60[`]なため。
  対処としてはこれらの文字の"直後"に「`」を記述する(例:「線形`代数」)か、
  #EscapeCharでエスケープ文字を別のものに変えるべし。

Q3:Shift, Ctrl, Alt, Winキー以外のキーを修飾キーとしてキー割り当てしたいよ
  (例:無変換 + IKJLキーをそれぞれ「↑↓←→」に割り当てたいよ)など
A3:Remap機能は記述が簡単になる反面、細かい指定がしにくい。
  流行らせるページのHotkeys, キーリスト, リファレンス→Send, #IfWinActive, GetKeyState()なども参照すること。
  なお、例の場合は以下のように記述する。
  sc07B & I::Send, {Blind}{Up}
  sc07B & K::Send, {Blind}{Down}
  sc07B & J::Send, {Blind}{Left}
  sc07B & L::Send, {Blind}{Right}

Q4:エディタの定義はどうするの?
A4:「{AutoHotkeyのフォルダ}\Extras\Editor」に各種エディタの定義ファイル及びキーワード一覧あり

Q5:GUI作るのめんどくせ~~
A5:公式( URLリンク(www.autohotkey.com) )から SmartGUI Creator をDLして使え

Q6:ファイルパスに駄目文字があるんだが、、、
A6:駄目文字微対策版( URLリンク(yak.myhome.cx) )を使え。

4:名無しさん@お腹いっぱい。
09/05/23 00:27:52 78PWRd9v0
Q7:「XX hotkeys have been received in the last XXXXms.」って怒られるんだけど、、、(XXは環境による)
A7:多分自分自身のキーを送って無限ループになっている。 例) 「a::Send, a 」
  先頭に $ を付ければ回避できる(NT系のみ)。 例) 「$a::Send, a」

Q8:AHKってマルチスレッドじゃないの?
  タイマーやMsgBox, WinWait, KeyWaitを使ってるけど思った通りに動かない。
A8:「擬似マルチスレッド」です。最後に割り込んだスレッドが終わるまで元スレッドは動きません。

> 要は処理系統が複数同時に走らないってこと。図にするとこんな感じ。
> → 実行中、 …:割り込み終了待ち
> 元スレッド   →→→→→→→→→→→……………………………………→→→→
>                           ★割込                ↑再開    
> 割り込みスレ                  →→→→…………→→→→→→END
>                                 ◆割込 ↑再開
> 更に割り込み                        →→→END

Q9:完璧なスクリプトなのに、なぜerrorが出るの?
A9:このスレではインデントに全角スペースを使ってコードを貼り付ける事があるので、
  全角スペースをタブや半角スペースに変換してみよう。

Q10:作りたいんですけど?どうすればいいのでしょうか?ご教示頂きたいです。よろしくお願いします。
A10:簡単ですから(メモ帳等を使い)自分で書いてください。
  まず、自分で少しでも書いて晒してみよう。そうしたらレスが付くかも…
  イントロダクション、使用例、使用方法、Hotkeys、キーリストに目を通した方が話が早いぞ。

Q11:具体的に何が出来ますか?どこにありますか?
A11:マウスジェスチャ、ThumbRemap、TTBaseプラグインの数種、仮想デスクトップ等
   1:「AutoHotkeyを流行らせるページ」の「My Scripts」や「BBS」の投稿スレ
   2:公式のWiki「Compilations」

5:名無しさん@お腹いっぱい。
09/05/23 00:59:07 78PWRd9v0
Q12:「a=abc」と「a:="abc"」って違いがある? / 「If a=1」と「If (a=1)」って違いがある?
A12:意味としては違いは無いけど、コマンド形式(共に前者)の方が「式」形式(後者)のほうが少し速い。
  だけど、ループで大量(数万回転↑)に回さないと実感出来ないし、複数条件を使うなら「式」を使った方が速い。

Q13:ウィンドウ毎のキーマップは簡単だけど、キーを押して切り替えたりしたい。
Q13:派生版の「AutoHoekey_L( URLリンク(www.autohotkey.net) )」を使うと便利。
  ; 変数KeyMapが1の時だけ、IKJLでカーソル移動
  #If (KeyMap=1)
   I::Up
   K::Down
   J::Left
   L::Right
  #If
  ※ 上記以外にもユーザ定義関数などを利用して様々条件でキー・マウス設定が出来る。

Q14:配列変数やハッシュ(仮想配列)は使ええないの?
A14:「式」を使うと配列やハッシュのように変数を参照できる
  以下のようにした場合、A%Index%を展開してできあがった文字列の示す変数内容が x に格納される。
   x := A%Index%
  代入しないで参照するする事も可能、
  WinGet, list, list
  Loop, %list%
  {
   WinGetClass, class, % "ahk_id " list%A_Index%
    :
  }

6:名無しさん@お腹いっぱい。
09/05/23 01:22:42 i45iLGOr0
新スレおめ

               ∧_∧
オツカレチャ━━━(´∀` )━━━ソ!!!!!
              /     ヽ
             / 人   \\   彡
           ⊂´_/  )   ヽ__`⊃
                / 人 (
               (_ノ (_)



7:名無しさん@お腹いっぱい。
09/05/23 02:26:26 EdKRGdzN0
乙です!

> A12:意味としては違いは無いけど、コマンド形式(共に前者)の方が「式」形式(後者)のほうが少し速い。
どっちが速いの?

8:名無しさん@お腹いっぱい。
09/05/23 02:29:34 j0LLn1RV0
>>7
後をきちんと読めばわかるだろう

9:名無しさん@お腹いっぱい。
09/05/23 06:24:57 Pd5cDY560
>>3の↓は
>Q:「~AチЯ㌔荏柿義形港餐汁秦疏蛋伝覗描冒輿倭兪啻嫣彖拜杼歔」を含む文字列がうまく扱えないよ
別ファイルに書いといて直接変数に読み込む手もあるね

(ahkスクリプト)
------------------
SetWorkingDir, %A_ScriptDir%
FileReadLine, OutputVar, test.txt,1
FileReadLine, HelloWorld, test.txt,2
MsgBox, %OutputVar%
MsgBox, %HelloWorld%
------------------

test.txt
------------------
~AチЯ㌔荏柿義形港餐汁秦疏蛋伝覗描冒輿倭兪啻嫣彖拜杼歔
ハロ~ワールド


10:名無しさん@お腹いっぱい。
09/05/23 08:15:38 0lga1Rqg0
前スレ >>977
Gui, Add, Hotkey はWindowsキーを修飾キーとして利用出来ず、
いずれはそれっぽいものを個人的に作ろうと思ってたので
前スレ >>978 氏のリンクを参考に書いてみた。


#SingleInstance, force
#Installkeybdhook
gosub, SetHotkeys
InputBox, OutputVar, , キーを押してください, , 180, 120
return

SetHotkeys:
Hotkey, IfWinActive, %A_ScriptName% ahk_class #32770
;リンク先のサンプルは vk?? なので入力欄ではどのキーを押したのか判別し難いので
;A-Z,0-9,F1-F12 で表示されるようにしてみただけ。他(記号やテンキー等)が必要なら要追加
keys=A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
,0,1,2,3,4,5,6,7,8,9,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12
loop, parse, keys, `,
{
Hotkey, *~%A_loopField%, AnyKey_down
Hotkey, *~%A_loopField% up, AnyKey_up
}
return


11:名無しさん@お腹いっぱい。
09/05/23 08:16:18 0lga1Rqg0
;<続き>

AnyKey_down:
B_ThisHotkey:=RegExReplace(A_ThisHotkey, "\*~(.*)", "$1")
if GetKeyState("LWin", "P") || GetKeyState("RWin", "P")
B_ThisHotkey=`#%B_ThisHotkey%
if GetKeyState("Alt", "P")
B_ThisHotkey=`!%B_ThisHotkey%
if GetKeyState("Ctrl", "P")
B_ThisHotkey=`^%B_ThisHotkey%
if GetKeyState("Shift", "P")
B_ThisHotkey=`+%B_ThisHotkey%
return

AnyKey_up:
B_KeyDelay=%A_KeyDelay%
SetKeyDelay, -1
Send, {home}
Send, +{end}
Sendraw, %B_ThisHotkey%
SetKeyDelay, %B_KeyDelay%
return


12:名無しさん@お腹いっぱい。
09/05/23 13:32:15 gAwG1DqL0
初歩的な事ですみませんが
SplashTextを中央以外に表示させる事ってできますか?
スクリーンの中央に表示するって書いてあるので、中央以外は無理なのかな?

13:名無しさん@お腹いっぱい。
09/05/23 13:39:45 aA4IMCHP0
SplashImageを使えばいいんでないの?

14:名無しさん@お腹いっぱい。
09/05/23 14:55:33 gAwG1DqL0
>>13
イメージを表示させる事ができなかったけど、やりたい事はできました。ありがとうございます
インストールフォルダに画像「splash.JPG」を置いて
SplashImage , splash.JPG, B X100 Y100, 123
sleep, 1000
SplashImage, Off
で画像が出ませんでした。文字は出せたのでいいといえばいいのですが、なぜ画像が出ないのでしょうか?

15:名無しさん@お腹いっぱい。
09/05/23 15:01:35 EUJqRyaQ0
977です。最終的にはこんなスクリプトになりました。

#SingleInstance force

currentlyRecording := 0
send_mode = Event
holddown := 10
between := 10

; register all 255 virtual keys
SetFormat,Integer,Hex
Loop, 255
{
key := substr("0" . substr(A_Index + 0, 3), -2) ; convert to hex, remove "0x", pad to two digits
Hotkey, *~vk%key%, AnyKey_down
Hotkey, *~vk%key% up, AnyKey_up
}
SetFormat,Integer,Decimal

AnyKey_down:
if (currentlyRecording)
playback := playback . "{" . substr(A_ThisHotkey,3). " Down}"
return

AnyKey_up:
if (currentlyRecording)
playback := playback . "{" . substr(A_ThisHotkey,3). "}"
return

16:名無しさん@お腹いっぱい。
09/05/23 15:02:26 EUJqRyaQ0
続き

ToolTipOff:
SetTimer,ToolTipOff,Off
ToolTip
return

~LWin::
tapcount=1
loop,
{
KeyWait,LWin
KeyWait,LWin,t0.15 d
if ErrorLevel=0
tapcount+=1
else
break
}
;---------------------ここから希望動作を入れる
if tapcount=1
{
SetKeyDelay, between, holddown
Send,%playback%
return
}

17:名無しさん@お腹いっぱい。
09/05/23 15:04:22 aA4IMCHP0
>>14
ahkがあるフォルダが作業ディレクトリになるから。
msgbox, %A_WorkingDir%

18:名無しさん@お腹いっぱい。
09/05/23 15:04:23 EUJqRyaQ0
続き

else if tapcount=2
{
if (currentlyRecording)
{
ToolTip,Stopped recording.
currentlyRecording := 0
playback := RegExReplace(playback, "(\{[^}]+ Down\})+$", "") ; remove the "^F5" from the end
} else
{
ToolTip,Started recording.
currentlyRecording := 1
playback := ""
}
SetTimer,ToolTipOff,1000
return
}
最初のとは結構変わってるけど、やりたいことができました!ありがとう!
ただ、たまに暴発するのがたまにキズw

19:名無しさん@お腹いっぱい。
09/05/23 15:36:25 gAwG1DqL0
>>17
ahkも同じインストールしたフォルダにあります。
C:\Program Files\AutoHotkey\splash.JPGでもダメでした

20:名無しさん@お腹いっぱい。
09/05/23 16:15:40 78PWRd9v0
スクリプトをどこに置いて、どうやって実行してるか、でカレントフォルダは変わるよ

21:名無しさん@お腹いっぱい。
09/05/23 17:37:09 CXZr65JJ0
新スレ立ってたのか

22:名無しさん@お腹いっぱい。
09/05/23 17:51:29 gAwG1DqL0
>>17>>20
ごめんなさい、画像ファイルの名前ミスでした・・・
初歩の初歩のミスでレス重ねてすみませんでした


23:名無しさん@お腹いっぱい。
09/05/23 20:09:00 aA4IMCHP0
>>22
ぇぃ! 
 ∧,,∧
(´・ω・)  ∧_∧
⊂( ⊆ ̄つ☆))Д`)
  \ /⊂ ⊂~ノ
  と丿⊂ と_ノ

24:名無しさん@お腹いっぱい。
09/05/24 20:30:16 UimWf5FR0
SQLiteModule.ahkの1.1の関数のSQLite_GetSelect(db, sql, text, ByRef row, ByRef col)で
データベースの列の最後の値がNULLだと次のレコードを変数に格納してくれない気がする

よく検証してないから分からないけど最後の列の値になにか入れたら次の行は一応格納してくれた

25:24
09/05/24 20:40:28 UimWf5FR0
いや、やっぱり8列目までしか対応してないだけっぽいかも
SQLはじめてやるもんで朝から苦戦しっぱなし
基本情報取るときに少しやっただけだが辛い

26:名無しさん@お腹いっぱい。
09/05/24 20:54:05 2/JStSCV0
autohotkey で sqlite を使う用途がいまいち思い浮かばない
何に使うんだろう


27:名無しさん@お腹いっぱい。
09/05/24 23:30:10 ERJmg4L+0
同一キー連打でキーマップ切り替え。AutoHotkey_L専用。
コンビネーションキーよりいい感じ。

#If
*vk1Dsc07B::
  KeyMap:=(A_ThisHotkey==A_PriorHotkey && A_TimeSincePriorHotkey<300)+1
  KeyWait, vk1Dsc07B
  KeyMap:=0
  return

#If (KeyMap==1)
  h::Left
  j::Down
  k::Up
  l::Right
#If (KeyMap==2)
  h::Home
  j::PgDn
  k::PgUp
  l::End




28:名無しさん@お腹いっぱい。
09/05/25 05:07:06 +20GCM/K0
Guiの手始めにじゃんけんゲーム作ってみたところ
勝敗引分けの統計がほぼ平均的にバラけてて
ランダムといってもあまり偏ったりしないもんなんですかね

29:名無しさん@お腹いっぱい。
09/05/25 19:06:52 K51ru5IJ0
>>26
使ったことないけど配列とかリストの代わりになるのかな?

30:名無しさん@お腹いっぱい。
09/05/25 19:49:53 ayEEflNj0
なるよ。普通の言語の配列みたな気軽さを求めると痛い目に遭うと思うけど。

31:名無しさん@お腹いっぱい。
09/05/25 20:54:05 D8xwJFNr0
前スレ1000の某所の裏ってどこ?

1000 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2009/05/24(日) 14:29:38 ID:h0rZeR9o0
1000ゲト?

あるえ?>>999 なんでドキュメントの方のリンク載せちゃったんだろ?
Class library
URLリンク(www.autohotkey.net)
こっちっすね。

Class library (OOP) - Help Thread:
URLリンク(www.autohotkey.com)
Class library (OOP) - Wish list / Bug reports thread:
URLリンク(www.autohotkey.com)

; >>994,999,1000のネタ元は某所の裏からっす。

32:名無しさん@お腹いっぱい。
09/05/25 21:36:07 K51ru5IJ0
>>30
そうかそういう手があったのか
非表示のリストビューで無理矢理リスト作ってたわ俺w

33:名無しさん@お腹いっぱい。
09/05/25 21:50:53 3ssrsEXY0
>>24
作者だけど忙しい+結構立ってるので理解が・・・
自分用にコメントつけておけばよかった

>>26
自分用TV表が欲しかった
お気に入り機能でデータ保存には何が良いだろう→SQLが一番
と考えて

34:名無しさん@お腹いっぱい。
09/05/25 22:37:00 ayEEflNj0
ぬるぽかと
URLリンク(www.3rd-impact.net)

35:名無しさん@お腹いっぱい。
09/05/25 23:47:59 3ssrsEXY0
INTEGER、FLOAT、TEXTしか判断してないっぽい
514~521を
if($result == 3)
{
if(!SQLite_Column_Text($query, $nowCount, $get))
{
$errMsg = SQLite_GetSelect->%$errMsg%
return False
}
}
else
{
$get = ""
}
で対処可能なはず
blob型ってのがよく分かってないのでとりあえず空文字で

36:名無しさん@お腹いっぱい。
09/05/26 00:05:37 3ssrsEXY0
>>35
これミスでした

URLリンク(lukewarm.s101.xrea.com)
これで大丈夫なはず

37:名無しさん@お腹いっぱい。
09/05/26 01:24:00 +TlrQY3d0
RButton::return
で右クリックを殺してるはずなのに、ゲーム中で右クリックすると無効になってません
どうしてでしょう?
ゲームのプロテクトとかそんなんですかね?

38:名無しさん@お腹いっぱい。
09/05/26 02:49:14 Y7ZtP0Kd0
そんなところだろうね。たぶんDirectInput

39:名無しさん@お腹いっぱい。
09/05/26 10:46:40 WTUueAPd0
>>38
DirectInputはキー切ったり、送ったりはできないのですか?

40:名無しさん@お腹いっぱい。
09/05/26 11:33:39 24/J68kf0
公式のFAQにあるけど、DirectInputでも一部は動くこともある
・SendPlayを使う
・SetKeyDelayを増やしてみる
  SetKeyDelay, 0, 50
  SetKeyDelay, 0, 50, Play
・ControlSendを使う

GameguardやNPro使ってるんだったら、ドライバレスでマクロができるゲーマー用のマウス買った方が楽かと

41:名無しさん@お腹いっぱい。
09/05/26 17:13:05 QN5A7Hfw0
If A > %A_Index%
 Count ++

Hoge%Count% = hogehoge

みたいに配列的に変数を使ってその数が不定の場合、これらのメモリを一括で開放する方法はなにかありますでしょうか。

Loop,%Count%
{
Hoge%A_Index%=
}

Loopで回せばいいのはわかりますが、Countの値を保持してなければならずあまりスマートな感じがしないので、「配列のメモリを解放」みたいなコマンドがあればと思って。

42:24
09/05/26 18:39:35 qcaMCxpC0
>>36
うお、よくわかんないけど直りました
ありがとうございます

>>26
ちょっとした記憶用ソフト作りたくて頑張ってました
すでにCSVで問題、答え、苦手度、最後に解いた日、間違ったフラグ(次正解すれば解除)とか記録してて
そのCSVを読み込んで出題するAHKはほとんど完成系で作ってあるんだけど

いろんな条件で抽出するときやっぱりCSVよりSQLのWHERE文があればと思ったのがきっかけ

43:名無しさん@お腹いっぱい。
09/05/26 18:48:49 24/J68kf0
>>41
内部的には配列ではなくそれぞれ独立した変数として扱われてるのだから一括解放は無理なんじゃないかな
どうしても一括解放にこだわるなら、以下のようなライブラリを使ってみるとか
URLリンク(www.autohotkey.com)
URLリンク(www.autohotkey.com)
URLリンク(www.autohotkey.com)

それから余計なお世話かもしれないけど、hoge=ではメモリが解放されない場合がある
この辺はVarSetCapacity()のヘルプに書いてあるけど、一度64にセットしてから0で解放する必要がある

44:名無しさん@お腹いっぱい。
09/05/27 06:01:02 49MLE6WY0
前スレでVista+Word2007でダイアモンドカーソルを実現しようと思った者です。
返信すごく遅くなって申し訳ありません。
今日試してみたらなぜか普通に動くようになってました。
1日潰してあんなに動かそうとしても全然動かなかったのに…。

前スレでレス下さった皆様ありがとうございました。
お騒がせしました。


45:名無しさん@お腹いっぱい。
09/05/27 22:13:25 ghabN5mP0
先輩方 初めてのAutoHokeyで書いてみたのですが
おかしなところを突っ込んで頂けると嬉しいです。


#Persistent
SetTimer, Note, 3000
Note:
Process, Exist, notepad.exe
NewPID = %ErrorLevel%
if NewPID = 0
{
Run, notepad.exe, c:\, /UseErrorLevel
}


3秒ごとにメモ帳が動いてるか確認
動いてなければ メモ帳を起動する
notepad.exeなんか存在しませんのときにエラーウインドウが立ち上がらないように処理
作業ディレクトリがc:\は良く意味がわかっていないorz
メモ帳が動いてた時の処理はループするだけだから問題ないのかな(´・ω・`)


46:名無しさん@お腹いっぱい。
09/05/27 23:03:39 2RG+Zvrk0
>>45
SetTimerの後と、最後の行にreturn入れてる?

47:名無しさん@お腹いっぱい。
09/05/27 23:19:55 HF3buD8W0
>>45
うごくから、いいんじゃないのかな。
>>46のツッコミはもっともだが、起動時に1回処理を噛ますと言う意味では処理としては良いと思う。
(SetTimerの後にreturnをわざと置いていないのだとしたら)
第2引数は作業フォルダ。ショートカットを右クリックし見たてプロパティ画面のと同じ。
メモ帳なら空でもいい。

プロセスが無くなるまで待つ方法もある。
Process, WaitClose, %pid%

48:名無しさん@お腹いっぱい。
09/05/28 00:06:27 wZfk3OyC0
>>46
>>47

ありがとうございます。

settimerの後はreturn入れると挙動がおかしかったので入れてません。
最後の行に入れてないのは入れたら終わってしまうと思っていれてないです^^;

作業フォルダのご説明大変わかりやすいです^^
この場合は特になくても大丈夫そうですね。
作業フォルダがいつか消滅したときのことを考えてエラーを吐かれると嫌だったので
絶対存在し続けるc:\にしてみました。

returnを入れてもう一度ためしてみます。

49:名無しさん@お腹いっぱい。
09/05/28 00:10:25 wZfk3OyC0
#Persistent
SetTimer, Note, 3000
return
Note:
Process, Exist, notepad.exe
NewPID = %ErrorLevel%
if NewPID = 0
{
Run, notepad.exe, c:\, /UseErrorLevel
}
return


言われた通りにretrun二つ突っ込んで見ましたがちゃんと動きますね
return入れてないと処理がきちんと修了しないからだんだん重くなっていったりしますかね?
違いが全くわかりません^^;

50:名無しさん@お腹いっぱい。
09/05/28 00:14:22 wZfk3OyC0
Return
GosubやHotkeyのサブルーチン処理から戻る

Remarks
GoSubでジャンプしていないときにReturnを実行すると、
Exitを実行したときと同様にスレッドを終了する。



サブルーチン処理をしていない場合はなくてもよいのかなと思い込んでみる。。

51:名無しさん@お腹いっぱい。
09/05/28 00:18:11 k3jZrIoJ0
これだけでいい気がする

Loop
RunWait, NotePad.exe

52:名無しさん@お腹いっぱい。
09/05/28 01:23:49 g2Gpk75K0
SetTimerって待機スレッド(プロセス?)がどんどん溜まって
重くなったりしないかと不安であまり使ってない…。実際のところどうなんでしょ?

53:名無しさん@お腹いっぱい。
09/05/28 05:19:31 UHCBZ4+L0
Autohotkeyの中で疑似スレッド的に動いてるだけで、OSから見たら常に単一プロセス単一スレッドだから
CPUやメモリリソースへの負荷はあまり考える必要が無いと思うけど。

疑似スレッドの制御は本物のプロセス/スレッドのように複雑じゃないので、
実質上の負荷は、実際にタイマースレッドで動作するAHKコードの量で判断してもかまわないと思う。

それにスクリプト実行中はSetBatchLinesで指定した間隔で10msのスリープも入って、
OS全体の負荷を高めないような作りにもなってるし。

54:名無しさん@お腹いっぱい。
09/05/28 16:22:04 ar6yU5aO0
AutoHotKey、さっきはじめて知りました。
スクリプトとか全然わかりませんし、わかるのはBASICぐらいですw
でもなんとかマニュアルを参考にして10分ぐらいいろいろやってるのですが。。。

たとえば、Winキー+y で、iTunesがアクティブなときだけ最小化したいんですが、
スクリプトは、これでOKでしょうか?
一応動いているのですが、なにか問題があるでしょうか?

>>>>>>>>>>>>( iTunesがアクティブなら最小化 )<<<<<<<<<<<<<

#y::
IfWinActive iTunes
WinMinimize,iTunes
IfWinActive
return

レベルが低い質問でごめんなさい...orz

そもそも、なにがやりたくてAutoHotKeyを知ったのかといいますと、
任意のホットキーを押したとき、
(1)任意のアプリが起動していなければ起動する。
(2)任意のアプリが起動していて、かつ、最小化状態またはバックグラウンド状態なら、アクティブに(最前面に持ってくる)。
(3)任意のアプリが起動していて、かつ、最前面(アクティブ)ならば、最小化する。

こういうのをやりたかったんです。

55:名無しさん@お腹いっぱい。
09/05/28 16:24:36 ar6yU5aO0
そもそもなぜそんなことをやりたいのかといいますと、、、

最近、プログラマブルキーボードを買ったのですが、
1つのキーだけで、任意のアプリのアクティブ化と最小化をトグルしたい。
あるキーを押したら指定したアプリのウィンドウが最前面に来て、
そのアプリが最前面にあるときに、そのキーをもう一度押したら
そのアプリのウィンドウが最小化する、みたいな感じです。

でもそんな簡単なことすらプログラマブルキーボード付属のユーティリティーではできず。。。
で、いろいろ考えて、その任意のアプリにWindows標準のホットキーを割り当て、
プログラマブルキーボード側の任意のキーにそのホットキーをアサインすれば、
上記の(1)と(2)だけは実現できるんですが、(3)がどうしても実現できないんですよね。

んで、国内外のフリーウェアをかなりいろいろ試したんですが、(1)(2)と同時に(3)ができるものが
数時間探しても見つけられず、また、こういうのって、
検索ワードがホットキーとか最小化とか一般すぎる言葉になっちゃって
自分の求めているソフトを検索エンジンで探しにくいんですよね。。。。

てなわけで、長くなってしまいましたが、AutoHotKeyにこれからハマってみる予定です
GUIまで作れちゃったりするみたいで、恐ろしいほど高性能でびっくりですよ、ほんと。

56:名無しさん@お腹いっぱい。
09/05/28 16:25:18 ar6yU5aO0
コメントアウトは
>>>>>>>>>>>>
で大丈夫でしょうか?

57:名無しさん@お腹いっぱい。
09/05/28 16:32:10 Rj+x9ILK0
まだ初心者の俺が、試しもせずにしゃしゃり出てみる

#y::
IfWinActive, iTunes
{
WinMinimize,iTunes
}else{
Process,Exist,notepad.exe
If ErrorLevel<>0
WinActivate,ahk_pid %ErrorLevel%
else
Run,notepad.exe
}
return

58:名無しさん@お腹いっぱい。
09/05/28 18:06:51 ar6yU5aO0
>>57
早速、ありがとうございます!
notepad.exeになってしまってますが、
iTunes.exeに変えると動きますね!

59:名無しさん@お腹いっぱい。
09/05/28 18:08:03 ar6yU5aO0
>>55,56を書き込んだあとに、自分で考えたものは以下でした。
以下でも一応ちゃんと動くみたいです。
でも、>>57さんのように、ちゃんとahk_pid %ErrorLevel%みたいに
指定したほうが確実ですよね?

#y::
IfWinActive,iTunes
{
WinMinimize,iTunes
}
else
{
WinActivate,iTunes
Process,Exist,iTunes.exe
If ErrorLevel=0
{
Run,iTunes.exe
}

}

;;;IfWinNotExist iTunes
;;; Run,iTunes.exe

return

ただ、iTunesって名前が付いたフォルダとかアプリが開いていると
そっちのほうが最小化しちゃったりしますけど、それも本当は、キッチリPIDを調べてやれば、誤動作もなくなるんですよね?
数時間いじったらかなりわかってきました!ありがとうございます!!
本当に面白くて可能性を感じるソフトですよね!

60:名無しさん@お腹いっぱい。
09/05/28 18:08:51 ar6yU5aO0
ありゃりゃ、
;;;IfWinNotExist iTunes
;;; Run,iTunes.exe
の部分はコメントアウトでした..orz

61:名無しさん@お腹いっぱい。
09/05/28 19:31:15 Rj+x9ILK0
ちなみに>>57のやつはAutoHotkeyを流行らせるページに載ってたヤツのコピペです。
暇なときにでものんびり読んでみるといいよ。

62:名無しさん@お腹いっぱい。
09/05/28 21:32:48 jz4l290M0
>>36
これはいいね。使わせてもらうよ
ところでライセンスは何?

63:名無しさん@お腹いっぱい。
09/05/28 22:02:37 k3jZrIoJ0
マウス周囲のを指定した大きさの正方形でデスクトップまで穴をあける。再度呼び出すと元に戻す。

~RCtrl::ClipWindow()
ClipWindow(size=200, ignoreClassPattern="Shell_TrayWnd|BaseBar") {
 static clipped
 If (!clipped) {
  DetectHiddenWindows, Off
  CoordMode, Mouse, Screen
  MouseGetPos, mx, my
  WinGet, list, List
  Loop, % (list-1) {
   IfWinNotExist, % "ahk_id " list%A_Index%
    continue
   WinGetClass, class
   If ignoreClassPattern && RegExMatch(class, ignoreClassPattern)
    continue
   WinGetPos, x, y, w, h
   mx1:=mx-x-size//2, my1:=my-y-size//2, mx2:=mx-x+size//2, my2:=my-y+size//2
   If (mx1>w || my1>h || mx2<0 || my2<0)
    continue
   WinSet, Region, 0-0 %w%-0 %w%-%h% 0-%h% %mx1%-%my1% %mx2%-%my1% %mx2%-%my2% %mx1%-%my2% %mx1%-%my1% 0-%h%
   clipped := list%A_Index% . (clipped ? "|" : "") . clipped
  }
 } else {
  DetectHiddenWindows, On
  Loop, PARSE, clipped, |
   WinSet, Region,, ahk_id %A_LoopField%
  clipped=
 }
}

64:名無しさん@お腹いっぱい。
09/05/28 22:33:50 qyNknqLm0
>>63
これいいね
ちょっと感動した
使わせてもらいます。

65:名無しさん@お腹いっぱい。
09/05/29 00:36:46 DA5drrjA0
Vistaじゃ動かないな

66:名無しさん@お腹いっぱい。
09/05/29 00:37:02 u1yo0xzx0
>>63
面白いな
穴あいてるときにSetTimerでマウス追従するとさらに便利
堪能するためにわざわざ壁紙張ってしまったw

67:名無しさん@お腹いっぱい。
09/05/29 00:40:11 0CBSOWcu0
もちろんエロい壁紙だよな

68:名無しさん@お腹いっぱい。
09/05/29 01:12:50 ZNykQa940
s = %A_thishotkey%

s1 = %s%%

msgbox,%s1%
return

s の変数の値の末尾に % を付け加えて
それを s1 に保存したいのですが
(A_thishotkey が a だとすれば "a%")
こうかくとエラーになります。
どうすればこれを実現できますか。

69:名無しさん@お腹いっぱい。
09/05/29 01:19:50 keMVWhB40
敷居が高いのもあるからどんどん流行ってくれ

70:名無しさん@お腹いっぱい。
09/05/29 01:25:55 5w+b34I70
>>68
s1 = %s%`%
最後の % をエスケープする(デフォならShift + @)

71:名無しさん@お腹いっぱい。
09/05/29 01:27:23 y2qE0/Pv0
>>68
エスケープ
s1 = %s%`%
MsgBox, %s1%

式を使う方法もあり
s2 := s1 . "%"
MsgBox, % s2

72:名無しさん@お腹いっぱい。
09/05/29 01:29:55 ZNykQa940
>>70-71
ありがとうございます!


73:名無しさん@お腹いっぱい。
09/05/29 08:36:17 HnnwY0C40
少しお聞きします。

無変換とシフトと任意のキーというホットキーの定義の仕方はありませんでしょうか?

vk1Dsc07B & +g::
 SplashTextOn,,, Test...
 Sleep, 600
 SplashTextOff
return

などとやっても、無変換+シフト+Gを拾ってくれないのです・・・
+vk1Dsc07B & gだと読み込み時にエラーがでるし…。

74:名無しさん@お腹いっぱい。
09/05/29 08:42:33 vciG3EmH0
>>73
コンビネーションキー
「&」を使うことで、2つの任意のキー(ジョイスティック以外)の組み合わせをホットキーに指定することが可能。
3つ以上のキーを指定したり、+^!#で修飾キーを追加したりは出来ない。

If GetKeyState("Shift","P")

75:名無しさん@お腹いっぱい。
09/05/29 08:54:53 vciG3EmH0
最初に
vk1Dsc07B & g::
If !GetKeyState("Shift","P")
return
を追加すれば大丈夫か

76:1/2
09/05/29 13:22:46 u1yo0xzx0
>>63 のマウス追従Ver 作ってみた。 タイマ未使用、Shiftで固定、ESCで終了

#1:: ClipWindow_MouseFollows()
ClipWindow_MouseFollows(size=200, Pause="Shift",endKey="ESC", ignoreClassPattern="Shell_TrayWnd|BaseBar")  {
  static list
  IfNotEqual,list,, return ;semaphore
  DetectHiddenWindows, Off
  CoordMode, Mouse, Screen
  WinGet, list, List
  Loop, %list%
    l := list%A_Index% . (l ? "|" : "|0x0") . l
  While !GetKeyState(endKey) && Instr(l,WinActive("A"))  {
    if GetKeyState(pause) {
      KeyWait,%pause%
      pmode := (pmode!=1 ? 1 : 0)
    }
    IfEqual,pmode,1,  continue
    MouseGetPos, mx, my
    if ((mxs-10 < mx) && (mx < mxs+10) && (mys-10 < my) && (my < mys+10))
      continue
    mxs:=mx, mys=my


77:2/2
09/05/29 13:24:56 u1yo0xzx0
    Loop, % (list-1) {
      IfWinNotExist, % "ahk_id " list%A_Index%
        continue
      WinGetClass, class
      If ignoreClassPattern && RegExMatch(class, ignoreClassPattern)
        continue
      WinGetPos, x, y, w, h
      mx1:=mx-x-size//2, my1:=my-y-size//2, mx2:=mx-x+size//2, my2:=my-y+size//2
      If (mx1>w || my1>h || mx2<0 || my2<0)
        continue
      WinSet, Region, 0-0 %w%-0 %w%-%h% 0-%h% %mx1%-%my1% %mx2%-%my1% %mx2%-%my2% %mx1%-%my2% %mx1%-%my1% 0-%h%
      if !Instr(clipped,list%A_Index%)
        clipped := list%A_Index% . (clipped ? "|" : "") . clipped
    }
    Sleep,50
  }
  DetectHiddenWindows, On
  Loop, PARSE, clipped, |
   WinSet, Region,, ahk_id %A_LoopField%
  list=
}

>>67
プリインスコのメーカーロゴ、エロいの持ってねぇ(´・ω・`)

78:名無しさん@お腹いっぱい。
09/05/29 13:36:25 tLIgPVbp0
最小化したときにタスクトレイにアイコン化するアプリを
タスクトレイに入った状態からアクティブ化するのは無理でしょうか?
その手のアプリ、みんなWinActiveが効きません...orz

79:名無しさん@お腹いっぱい。
09/05/29 15:06:40 +GBy9qZg0
DetectHiddenWindows, On

80:名無しさん@お腹いっぱい。
09/05/29 15:41:21 tLIgPVbp0
>>79
そんなコマンドがあったとは!
即レス本当にありがとうございます!
ほんと、ahkってなんでもできるんですねー


81:名無しさん@お腹いっぱい。
09/05/29 22:49:46 y2qE0/Pv0
昨晩のやつの改造版。アクティブウィンドウ以外に黒いシェードを掛ける。2K/XP用。ビデオ鑑賞にでもどぞ

Gui, +LastFound -Border +ToolWindow +AlwaysOnTop -Caption +0x02000000 -0x0CC00000 +E0x00080020
Gui, Color, 000000 ; ここで色をかえてもおk
WinSet, Transparent, 200 ; 透明度(1-255)
Gui, Show, NA x0 y0 w%A_ScreenWidth% h%A_ScreenHeight%
SetTimer, Timer1, On
Timer1:
SetWinDelay,-1
WinGetPos,x,y,w,h,A
x1:=x, y1:=y, x2:=x1+w, y2:=y1+h
If (lx1==x1 && ly1==y1 && lx2==x2 && ly2==y2)
return
Gui, +LastFound
Gui, +AlwaysOnTop
WinGetPos,,,ww,hh
WinSet, Region, 0-0 %ww%-0 %ww%-%hh% 0-%hh% %x1%-%y1% %x2%-%y1% %x2%-%y2% %x1%-%y2% %x1%-%y1% 0-%hh%
lx1:=x1, ly1:=y1, lx2:=x2, ly2:=y2
Return


82:名無しさん@お腹いっぱい。
09/05/29 23:08:59 IKD+qEU60
おもしろいな
解除はどうやるんすか?

83:名無しさん@お腹いっぱい。
09/05/29 23:13:54 y2qE0/Pv0
タスクトレイw

84:名無しさん@お腹いっぱい。
09/05/30 06:17:34 84IZ3aep0
>>74-75
2つ以上ダメなんですね。以外に不便…。というかホットキー扱いじゃないのかな
ありがとうさんです。試してみまする

85:名無しさん@お腹いっぱい。
09/05/30 13:39:34 pp0cJZID0
>>36のSQLite_GetSelect関数ってフィールドの数が10個以上あると変数重複するよね?
例えばLV111の場合11行目の1列目、1行目の11列目で重複みたいに
俺が頭悪いだけ?

86:名無しさん@お腹いっぱい。
09/05/30 14:25:44 yxno/H630
それが仕様だと思うよ。
> %接頭辞%%行番号%%列番号% := 値
って風に代入してるし

> %接頭辞%_%行番号%_%列番号%
とかにすれば平気なんだろうけど

87:名無しさん@お腹いっぱい。
09/05/30 14:40:43 pp0cJZID0
なるほど。
ライブラリいじらないとだめか。

88:名無しさん@お腹いっぱい。
09/05/31 01:53:08 jQyIS5jG0
>>36関連でわからないことがあったので便乗して質問します

SELECT * FROM test WHERE ~

というところで、 ' が含まれる項目をうまく探し出してくれません
autohotkey 特有のエスケープ処理か何かのせいか?と思ったのですが
いまいちよくわかりません

' が含まれる項目を処理するときに同じような症状に出会った人はいますか?

89:名無しさん@お腹いっぱい。
09/05/31 20:18:32 g4+Xfjng0
引数の基準フォルダと対象ファイルパスを元に相対パスを返す関数ってありますか?

90:名無しさん@お腹いっぱい。
09/05/31 21:26:54 3pSi+qBb0
Path_RelativePathTo(From,atrFrom,To,atrTo)
; 相対パスを作成
; From : ベースパス
; To : 相対にするパス
; atr : ファイル属性を指定
; ディレクトリ 0x10 (FILE_ATTRIBUTE_DIRECTORY)
; ファイル 0x20 (FILE_ATTRIBUTE_ARCHIVE)
{
VarSetCapacity(t,260,0)
DllCall("SHLWAPI.DLL\PathRelativePathToA", Str,t , str,From, Uint,atrFrom, str,To, Uint,atrTo)
return t
}

Path_CommonPrefix(p1, p2)
; 2つのパス名の先頭から共通するディレクトリ名を取得する
{
VarSetCapacity(t,260,0)
DllCall("SHLWAPI.DLL\PathCommonPrefixA", Str,p1, Str,p2, str,t)
Return t
}

91:名無しさん@お腹いっぱい。
09/05/31 21:59:11 g4+Xfjng0
>>90
ありがとうございます
無事できました

92:名無しさん@お腹いっぱい。
09/06/01 01:21:39 nMoGzHYT0
AutoHotkey v1.0.48.03.L30

93:名無しさん@お腹いっぱい。
09/06/01 15:00:23 KxOltqgo0
変数%aaa%の中に変数%bbb%を組み込みたいです。
%aa%bbb%%では駄目でした。
どうすれば出来ますか?


94:名無しさん@お腹いっぱい。
09/06/01 15:57:15 nMoGzHYT0
「%aaa%」と書いた場合、
 ・コマンド内は、変数に格納された値
 ・式や関数の中では、%~%を展開した文字列が名前となる変数
となるけど、
「組み込みたい」の意味が分からないから具体例で。

95:名無しさん@お腹いっぱい。
09/06/01 16:27:57 5kiaGP5n0
よくわからんが多分 Transform,Deref, String あたりではないかとエスパーしてみる

96:名無しさん@お腹いっぱい。
09/06/01 16:33:11 9Rwj7uYk0
流行るページを参考にしたのですが、わからない箇所があるので教えてください

Ctrl-x,Ctrl-sで保存(Ctrl-S)の実行、Ctrl-sで検索(Ctrl-f)の実行をしたいと思っています
ところが下記のスクリプトでCtrl-x,Ctrl-sを実行すると、Ctrl-fが送られてしまいます

このように置き換え対象のキーも別のキーに置き換えてしまっている場合、どのように対処すれば意図した動きになるのでしょうか?

^x::
    Transform,CtrlS,Chr,19
    Input,InputChar,C I M L1 T1,{ESC}
    If InputChar=%CtrlS%
        Send,^s
Return

^s::
    Send,^f
Return

97:名無しさん@お腹いっぱい。
09/06/01 17:02:21 nMoGzHYT0
いろいろやり方はあるけど、^s:: のところでA_PriorHotkeyで分岐すりゃいいんじゃないの

^x::Return
$^s::
 If A_PriorHotkey = ^x
  Send, ^s
 Else
  Send, ^F
 Return

98:名無しさん@お腹いっぱい。
09/06/01 17:36:14 9Rwj7uYk0
>>97
試してみたところ意図した動きになりました。感謝です!
^x::Returnでキーの動きを無効化しても組み込み変数に値は入るんですね
勉強になりました。ありがとうございました><
2ストロークで設定しているキーバインドが多く、書き換えが面倒なので、
勉強もかねて関数をつくってやってみたいと思います

99:名無しさん@お腹いっぱい。
09/06/02 18:58:42 xwgWw2A40
対象窓で、文字入力中or変換中なら1を、変換候補窓が出ているなら2を、それ以外なら 0を返す。
ATOK2007とMS-IME8.1で確認。クラス名がバージョンの数値違いだけなら別verでも通用するかも。

IME_IsConverting(winTitle="A") {
 hwnd:=WinExist(winTitle)
 WinGet, pid, PID, ahk_id %hwnd%
 tmm:=A_TitleMatchMode
 SetTitleMatchMode, RegEx
 ret := WinExist("ahk_class ATOK\d+Cand|imejpstCandList\d+ ahk_pid " pid) ? 2
  : WinExist("ahk_class ATOK\d+CompStr|imejpstcnv\d+ ahk_pid " pid) ? 1
  : 0
 SetTitleMatchMode, %tmm%
 return ret
}


100:名無しさん@お腹いっぱい。
09/06/02 19:44:30 rJZ7jJ5w0
>>99
昔から何度も質問に出てましたよね。IMEで変換中かどうかを知る方法。
ついに実現できる人がいたとは。
さっそく試してみます。

101:名無しさん@お腹いっぱい。
09/06/02 19:56:13 osRS2DeA0
>>99
おおーありがとう
これがあったら無変換にIMEOFF、変換にONにする関数割り当てられる

102:名無しさん@お腹いっぱい。
09/06/02 20:18:55 ftcLo5Gk0
けっこう既出な気がするけど
他のIMEでもウィンドウクラス一覧表示するスクリプト書けば怪しいクラス名が分かる
注意する点はWinActiveで判断するんじゃなくExistで判断するところ

103:名無しさん@お腹いっぱい。
09/06/02 20:23:03 xwgWw2A40
BOOLを返さないのに Is~ とは変な名前だったorz。好きに替えてくらはい。
自分が使ってるIMEしか調査してないから、
SKK、VJE、WXG、松茸、その他IMEへの対応は出来ないので自分で追加してくれ。

あああ ← 入力窓の上で MouseGetPos,,,hwnd して hwndからクラス名をとって正規表現に追加
 ̄ ̄ ̄

|愛   | ← 候補窓の上で MouseGetPos,,,hwnd して hwndからクラス名をとって正規表現に追加
|亜依  |
|あい  .|
|藍   |
| :   .|
 ̄ ̄ ̄

104:名無しさん@お腹いっぱい。
09/06/02 20:30:06 xwgWw2A40
>>102
おっしゃるとおりで

#IfWinNotExist, ahk_class 入力窓|変換窓
vk1Csc079::IME_Set(!IME_Get())

とかのほうが楽ではある

105:名無しさん@お腹いっぱい。
09/06/02 21:37:03 Kr4mD/Ke0
MS-IME2000までなら
WinExist("ahk_class msime")
でいけそう

106:名無しさん@お腹いっぱい。
09/06/02 22:31:33 P6oxe9UG0
autohotkey以外の任意のウィンドウをタスクバーから消す方法ってありませんか
toolwindow作ってSetParentすればいいのかなと思ったけど同じプロセスじゃないとできないみたいで

107:名無しさん@お腹いっぱい。
09/06/03 09:37:26 fHhPIlcJ0
ここのTrayIcon.ahkの中にあるTaskButton.ahk
URLリンク(www.autohotkey.com)

108:名無しさん@お腹いっぱい。
09/06/03 09:43:09 cMFaAOnD0
実行中のスクリプトのファイル名を取得する方法を教えてください。
実行中と同じスクリプト名のiniファイル読み込みにしようしたいです。

109:名無しさん@お腹いっぱい。
09/06/03 09:58:06 fHhPIlcJ0
組み込み変数 A_Script○○○

110:名無しさん@お腹いっぱい。
09/06/03 11:03:28 cMFaAOnD0
>>109
ありがとう。

111:名無しさん@お腹いっぱい。
09/06/04 00:17:18 QQ0YUUDy0
任意のアプリケーションのメニューバーを非表示にする方法ってあります?
AU3_Spy.exe で調べてもメニューバーの Class_NN なんかが判らなくて…。

112:名無しさん@お腹いっぱい。
09/06/04 01:01:23 duXuCFzc0
クラスが取れないのは昔ながらのメニュー(メモ帳、電卓など、Ahkもそう)、非クライアント領域と言われているところ。

^F12::
 hwnd := WinExist("A")
 hMenu := DllCall("GetMenu", "UInt", hwnd, "UInt")
 If (hMenu) {
  DllCall("SetMenu", "UInt", hwnd, "UInt", 0)
  Sleep, 2000
  DllCall("SetMenu", "UInt", hwnd, "Uint", hMenu)
 } else {
  MsgBox, Menu not found
 }
 return

URLリンク(msdn.microsoft.com)
URLリンク(msdn.microsoft.com)

113:名無しさん@お腹いっぱい。
09/06/04 01:16:22 6AUpOLN+0
処理が終わるまでの間を進歩状況を表示させたいんだけど
Gui,Add,Progress見つけたけどできそうなのか使い方がさっぱりわからなかった

114:名無しさん@お腹いっぱい。
09/06/04 01:49:52 QQ0YUUDy0
>>112
おおお、ありがとうございます!助かりました

115:名無しさん@お腹いっぱい。
09/06/04 08:17:20 SXDlYEUH0
>>113
URLリンク(www.autohotkey.com)

Progress, R0-200 W400 H70 Hide
Progress, Show
Loop, 200
Progress, %A_Index%, Number:%A_Index%, Counting..., Title
Progress, Off

Gui, Add, Progress, W300 h10 cBlue vMyProgress
Gui, Add, Button, Default, Start
Gui, Show
return

ButtonStart:
Loop, 300
GuiControl,, MyProgress, %A_Index%
return


116:名無しさん@お腹いっぱい。
09/06/04 09:19:45 dyra48CT0
マウスの下のWindowTitleを取得する方法を教えてください。

117:名無しさん@お腹いっぱい。
09/06/04 11:24:00 39eHpjNw0
>>116
URLリンク(lukewarm.s101.xrea.com)

#Persistent
#SingleInstance, force
SetTimer, MouseShitaWindowTitle, 50
Return

MouseShitaWindowTitle:
MouseGetPos, , , HWND
WinGetTitle, Title, ahk_id %HWND%
Tooltip, %Title%
Return


118:名無しさん@お腹いっぱい。
09/06/04 15:38:47 dyra48CT0
>>117
助かりました。ありがとうございました。

119:名無しさん@お腹いっぱい。
09/06/04 16:13:54 6AUpOLN+0
>>115
処理完了までの時間がどのくらいなのか取得したいんで
Loop,200だか300なんて固定じゃしょうがない

120:名無しさん@お腹いっぱい。
09/06/04 16:31:03 39eHpjNw0
>>119
固定も何も>>115のサンプルを応用すればいいよってことじゃないのかい。


121:名無しさん@お腹いっぱい。
09/06/04 16:48:28 SXDlYEUH0
>>119
すまなない
何が分からないか分からない
完了時間の予測なら、全体量と1回の処理時間から自分で毎回計算するしかないと思う

122:名無しさん@お腹いっぱい。
09/06/04 17:06:34 6AUpOLN+0
なるほど
そういうことならしょうがないですね
ありがとう

123:名無しさん@お腹いっぱい。
09/06/04 17:40:27 TWv1vctD0
具体的な秒数を事前に出すのはAHKに限らずむづかしいと思うけど。
ダミー進捗が嫌なら、メクラループやめて具体的気に処理が終わるたびに更新すればいいだけっしょ

やらなきゃいけない処理の数(分母)と、そのうち何個目が終わった(分子)か、で
進捗グラフ更新してくのがProgressなんだから

124:名無しさん@お腹いっぱい。
09/06/04 19:36:13 nKWMwvxe0
>>99
Firefox3.0.10上だと文字入力中をうまく検出できないんだけどどうしてだろう
0が返ってくる

125:名無しさん@お腹いっぱい。
09/06/04 21:14:42 6pR9OPq00
>>99-101
窓使いの憂鬱でIMEのON/OFFでキー割り当て変えられることに気づいた・・・
もしかしたらAPI一発で取得できたりして・・・
窓使いのソース見たらよいかも

126:名無しさん@お腹いっぱい。
09/06/04 22:05:15 TWv1vctD0
ん? >99がすごいって言われてんのは「IME ONかつ変換中か」を見てるからっしょ

ON/OFF状態や変換モードだけなら SendMessageのWM_IME_CONTROLでとれるよ
URLリンク(lukewarm.s101.xrea.com)

127:99
09/06/04 22:10:50 duXuCFzc0
IMEが描画する窓の存在を見てるんで、インライン描画するタイプだと検出出来ないのはしょうがない...
IE, FireFox, Office系とか、、ダメじゃんorz
でも、API一発で取れないのは数々の先人達が試みて失敗してる(スレ1で既出)

>>125
ちょっと見てみた・・・
URLリンク(mayu.cvs.sourceforge.net) の428行目あたりから
グローバルフックでメッセージとらえているようだ。
IL (IME_Lock、 On/Off)はAPIで取得しているみたい(実質的には IME.ahkと同じ)
IC(入力中かどうか)は WM_IME_(START|END)COMPOSITION を見て内部でフラグ管理しているみたい

低水準マウス/キーボードはフックできるけど、これだとDLLが必要だぬ。俺には無理ぽ。

128:名無しさん@お腹いっぱい。
09/06/04 22:51:48 hfmiG/aI0
メールの内容を読み込んで、そこにあるフレーズで次の処理をするっていうのを作りたいのですが
何かいい方法ないでしょうか?どうにかしてメールをtxtファイルにしてFileReadで変数に読み込む
ぐらいしか思いつかないんですが

129:名無しさん@お腹いっぱい。
09/06/04 22:56:27 gv6ECyM30
ごりむちゅうで何がなにやら。
次の処理が何かわからんのに、答えるのは難しい。

130:名無しさん@お腹いっぱい。
09/06/04 23:23:25 hfmiG/aI0
>>129
情報不足過ぎですみません
家で常時動いているPCにメール送って、PCを遠隔操作したいんです。
具体的には本文にAいう単語があったら、そのあとの文をファイルとして保存するとか
Bという単語があったらaというソフトを起動するとかです。

131:名無しさん@お腹いっぱい。
09/06/05 00:13:11 e7k/ar4E0
>>126
IME.ahkでは Office 系の IME の On / OFF を
正しく取得出来なかったと思う
改善された?

132:名無しさん@お腹いっぱい。
09/06/05 01:31:04 T3bmGBtQ0
ウチでは IME.ahkで Office 系「で」 IME の On / OFF を正しく取得出来る

133:名無しさん@お腹いっぱい。
09/06/05 02:44:19 fBYNAlWU0
>>130
常時起動ならリモートデスクトップでいいんでないの?
それとも携帯からかな?
メールでやるなら、面倒くさそうだね。

134:名無しさん@お腹いっぱい。
09/06/05 10:57:01 TiIrn5XK0
>>128
>どうにかしてメールをtxtファイルに
あるかどうかわからないけど、ログをテキストで保存してるメーラーを使えばいいんじゃないか。
今見てるメールに対して処理をしたいだけなら、スマートではにけどCtrl+A & Ctrl+Cで本文を内容読めばいい

135:名無しさん@お腹いっぱい。
09/06/05 12:30:07 TL25cwxb0
POPなりIMAPのプロトコルが分かるなら英語のフォーラムにあるWinSockのライブラリ使えば
メールをファイルに落とさなくても直接接続して処理できるけど、エラーハンドリングなどかなり面倒。

次点は、コマンドラインレベルのクライアントを探して連携するとか。
POPならこういうやつとか>URLリンク(www.codeode.com)

普通のWindowsのMUAでも、大抵は開けば普通にtextで読めるからそれでもいいかも。
メール毎に個別にファイルに保存するやつの方が楽だとは思うけど。

136:名無しさん@お腹いっぱい。
09/06/05 12:38:48 gplHJn2c0
スレどころか板違いだが、sshで入れるようにすると楽なんじゃないかな。
携帯用のクライアントアプリもあるみたいだし URLリンク(mutil.jp)
鯖にするのはリ便利さと管理コストのトレードオフだけど。

ahkでやるならメーラによると思うけど、メールデータをテキストそのままで
保存してるメーラも結構あるんでファイル監視でいくのもアリ。

現段階でメールのヘッダと本文の解析の仕方を知らないなら、敢えてメールチェッカ入れて
新着通知の窓が出るのを監視してその本文を取得ってのもありかも。

あとはBASP21あたりで自前でPOP3鯖見に行くとか。。。

137:名無しさん@お腹いっぱい。
09/06/05 13:58:03 SxfMtifS0
出先からメールで自宅のPCを操作できるソフトて結構あるような気がするんだが

138:名無しさん@お腹いっぱい。
09/06/05 19:52:28 BSIYPVRTO
TaskTrayIcon.ahkを眺めてたんだが、
クリックされたトレイアイコンの番号は取得できないのかな?

139:名無しさん@お腹いっぱい。
09/06/05 19:56:05 esdfKZUa0
出先から指定ラベル実行できたらちょっと面白いな

140:名無しさん@お腹いっぱい。
09/06/05 20:40:42 O6B2s5Qx0
>>133,134,135,136,137
レス遅れてすみません。携帯は焼かれているもので
いろいろな手段を教えてくださってありがとうございます。
じっくりググって作りたい物を作ってみます。また行き詰ったら質問に来るかもしれません
そのときはよろしくお願いします

141:名無しさん@お腹いっぱい。
09/06/05 23:04:28 NwioFG9O0
z::yのようにリマップし、alt+zとやると、
余計なCtrlが入力されます。なぜでしょうか。

Key history
74 03F u 0.08 F5
A4 038 d 2.25 Alt
5A 02C h d 0.05 Z
59 015 i d 0.00 Y
A4 038 u 0.16 Alt
A2 01D i d 0.00 Ctrl
A2 01D i u 0.00 Ctrl
5A 02C h u 0.03 Z
59 015 i u 0.00 Y
74 03F d 0.53 F5


142:名無しさん@お腹いっぱい。
09/06/06 19:35:48 RpRz7vLw0
Guiでボタンを押すとListBoxが更新されるようにしたいのですが、
Gui, Add, ListBox, vList,
Gui, Add, Button, gTest1, Button1
Gui, Add, Button, gTest2, Button2
Gui, Show,
Return

Test1:
GuiControl,, List, test||..
Return
Test2:
GuiControl,, List, hoge|..||
Return
これだとリストの末尾に追加される形になってしまいます。
リストを入れ替えるようにするにはどうしたら良いでしょうか。

143:名無しさん@お腹いっぱい。
09/06/06 19:44:21 nz9UkNk/0
先頭にデリミタ。
GuiControlの頁を要再読。

144:名無しさん@お腹いっぱい。
09/06/06 20:09:54 RpRz7vLw0
>>143
即レスありがとうございます。
見落としてました...orz

145:名無しさん@お腹いっぱい。
09/06/07 03:46:36 6gUtZr/R0
しつもーん。
指定アプリ上でzを押した時、aの動作→bの動作→cの動作→aの動作→bのry
と言った事をやりたいんですが、どう記述したらいいですか。。。

#IfWinActiveを使うって事と、個別の動作(sendでいくつかキーを送るだけ)は分かってできたんだけど、
それを同じキーで繰り返したいです。

ご教授願います。。。

146:名無しさん@お腹いっぱい。
09/06/07 04:20:29 64k7gMDb0
>>145
質問がいまいちわかりにくいけど、こういうこと?

#IfWinActive 指定アプリ
z::
Loop,n ;nは繰り返したい回数
{
aの動作
bの動作
cの動作
}
Return
#IfWinActive

147:名無しさん@お腹いっぱい。
09/06/07 09:24:01 tkyz3VGy0
同じキーで
1回目押したら aの動作
2回目押したら bの動作
3回目押したら cの動作

って意味じゃなかろうか

148:名無しさん@お腹いっぱい。
09/06/07 09:37:04 ZORhP0Gy0
z::
count++
if(count=1){
tooltip, aの動作
}else if(count=2){
tooltip, bの動作
}else if(count=3){
tooltip, cの動作
count=0
}
keywait, z
Return


149:145
09/06/07 16:40:24 6gUtZr/R0
>>146
質問がわかりにくくてすいませんしたっ_| ̄|○

>>147
そうです。その意味です。。。

>>148
希望通りの動きが出来ましたっ!
ありがとうありがとう(つД`)

リファレンス読んで処理内容を解読できるようにがんばってみます(´・ω・)、

150:名無しさん@お腹いっぱい。
09/06/08 01:08:14 mPjxZMt70
AutoHotkey.ahkの書き換え、再起読み込み
を自動化した。
Aキーを押したらA用途のAutoHotkey.ahkを
Bキーを押したらB用途のAutoHotkey.ahkを
読み込んでそれ用の設定になるので、便利。
perl使って書き換えしてるだけだが。

151:名無しさん@お腹いっぱい。
09/06/08 02:18:59 VN+15O/CP
何故ahkでやらない

152:名無しさん@お腹いっぱい。
09/06/08 10:20:12 aCqJ4TQP0
流行らせるページの中の人、ネトラン関係者になってたのか

153:名無しさん@お腹いっぱい。
09/06/08 10:20:50 Gscpj3Zd0
書き換えって、毎回 マイドキュにある AutoHotkey.ahkを削除だのリネームだのしてるのか?
スクリプトは別に「AutoHotkey.ahk」の名前じゃなきゃ動かないわけじゃないし
多重起動もできるんだが。

154:名無しさん@お腹いっぱい。
09/06/08 15:15:28 mPjxZMt70
>>153
AutoHotkey.ahkの指定箇所A~B部分をキー一発で交換します。
マウスのM、X1,X2ボタンやテンキー機能は衝突するしな。
複数キーバインドで使い分けってめんどいし。なんかのキー押しながらマウスのX1ボタン押すっても・・

155:名無しさん@お腹いっぱい。
09/06/08 16:48:40 VN+15O/CP
何によって用途が違うのか知らないけど、
ホットキーラベル内に条件分岐作ればいいだけの話じゃ

156:名無しさん@お腹いっぱい。
09/06/08 16:53:37 mkWh48Pk0
----- ScriptA.ahk ------
#include common.ahk
; 以下A用キー定義

----- ScriptB.ahk ------
#include common.ahk
; 以下B用キー定義

----- common.ahk ------
A::Switch("ScriptA.ahk")
B::Switch("ScriptB.ahk")
Switch(script){
Run,"%A_AhkPath%" "%A_ScriptDir%\%script%"
ExitApp
}
; 以下共通用キー定義

157:名無しさん@お腹いっぱい。
09/06/08 17:01:01 NOGmzyJY0
AutoHotkey_L 使えば楽

158:名無しさん@お腹いっぱい。
09/06/08 18:08:44 WA7XkMG90
ahkで起動するのとexeに変換して起動するのではどっちが高速ですか?

159:名無しさん@お腹いっぱい。
09/06/08 18:26:19 mkWh48Pk0
exeの場合は、起動時に解凍する処理が入る
その後はどっちも同じ

160:名無しさん@お腹いっぱい。
09/06/08 19:42:44 GcGcBK5q0
すいません教えてください。
Loop, Read, exclude.txt ; 削除したい行を改行区切りで列挙したファイル
{
 match := A_LoopReadLine
 Loop, Read, %1%, *temp.txt
 {
  if (A_LoopReadLine != match)
   FileAppend, %A_LoopReadLine%`n
 }
 FileMove, temp.txt, %1%, 1
}
こんな感じでマッチした行を削除したいのですが、元の場所に改行が残ってしまいます。
削除した行だけ改行を詰めるにはどうやったら良いでしょうか。
FileReadして Loop, Parse, var, `n, `r, でも同じでした。

161:名無しさん@お腹いっぱい。
09/06/08 19:50:53 WA7XkMG90
>>159
なるほど
ありがとうございました

162:名無しさん@お腹いっぱい。
09/06/08 20:48:11 NOGmzyJY0
>>160
ループの入れ子が想定と逆だったから分かりづらかった。
それと、ファイルI/O多すぎじゃない?
どっちのファイルも巨大(100M~)ならしょうがないけど、
どっちかをメモリに積んだ方がいいと思う。

俺ならこうする。
FileRead, ExcludeLines, *t exclude.txt
ExcludeLines = `n%ExcludeLines%`n
Loop, READ, src.txt, output.txt
 If InStr(ExcludeLines, "`n" . A_LoopReadLine . "`n")==0
  FileAppend, %A_LoopReadLine%`n

163:名無しさん@お腹いっぱい。
09/06/08 21:55:55 GcGcBK5q0
>>162
ありがとうございます。
うーm、しかし他の場所の改行も削除されてしまうYO

FileRead, ExcludeLines, *t exclude.txt
ExcludeLines = `n%ExcludeLines% ;改行残る
Loop, READ, src.txt
{
 if InStr(ExcludeLines, "`n" . A_LoopReadLine . "`n")==0
  var = %var%`n%A_LoopReadLine%
 else
  count = %A_Index%`,%count%
}
StringTrimLeft, var, var, 1
StringTrimRight, count, count, 1
Loop, Parse, var, `n, `r
{
 if A_Index not in %count%
  FileAppend, %A_LoopField%`n, output.txt
}
;FileMove, output.txt, src.txt, 1
return
こんなんしか思いつきません><;

164:名無しさん@お腹いっぱい。
09/06/09 18:41:24 wStbLZev0
Hayateというフリーソフトでキーのリピート速度やリピート開始時間を変えても
AutoHotKeyのホットキーラベルを介すとデフォルトのリピート速度になってしまいます
 ex) Down:: Send, {Down}
Hayate側のキーリピート速度でホットキーラベルを実行する方法はないでしょうか
ちなみにHayateというフリーソフトは検索してもなかなか出てこないですがURLリンク(frozenlib.net)にあるものです

165:名無しさん@お腹いっぱい。
09/06/09 18:50:30 Ezplb6lV0
SetKeyDelay
SendやControlSendコマンドでの1キーごとに挿入される間隔を変更

166:名無しさん@お腹いっぱい。
09/06/09 18:56:50 wStbLZev0
SetKeyDelayを小さく設定することは試したのですがキーリピートが開始されるまでの時間が変化無しです

167:名無しさん@お腹いっぱい。
09/06/09 19:12:29 Ywd4Dynt0
SendPlay

168:名無しさん@お腹いっぱい。
09/06/09 19:31:21 wStbLZev0
試しに以下のように設定してみましたが改善されませんでした
SetKeyDelay,-1,-1
SendPlay, {Down}

SendPlay以外も一応試しましたがうまくいきませんでした
あきらめるしかないですかね

169:名無しさん@お腹いっぱい。
09/06/09 19:35:48 N+aijEuz0
その何とかってのは知らないけど、仕組み的に両立は無理なんじゃないのかね

170:名無しさん@お腹いっぱい。
09/06/09 19:57:24 wStbLZev0
そうですか。残念
ありがとうございました

171:名無しさん@お腹いっぱい。
09/06/09 21:58:14 kA+0+7DI0
>>162
ごめんなさい163です。すんごい初歩的な所で勘違いしてました。
>>162のでバッチリです。本当にごめんなさい

172:名無しさん@お腹いっぱい。
09/06/09 22:18:00 o631qgYJ0
>>160
perl使えばいいよ。2GBのテキストでもperlなら処理できる。

173:名無しさん@お腹いっぱい。
09/06/10 20:49:55 i0OR+VsR0
キーの取りこぼしが生じるときには
どのパラメーター設定をいじればいいのでしょうか
現在この5つを設定しています

SetWinDelay, 0
SetControlDelay, 0
SetKeyDelay, 0
SetBatchLines, -1
SendMode Input


174:名無しさん@お腹いっぱい。
09/06/10 21:42:19 tNiIalHL0
キー入力イベントの取りこぼしだとしたらどうしようもない(原理的には無いはず)
GetKeyState などでの状態取得で取りこぼしがあるのだとしたらスクリプトが悪い

もしくは AutoHotkey_L の #If でものすごく重い関数呼んでいるとか

175:名無しさん@お腹いっぱい。
09/06/10 22:03:41 i0OR+VsR0
>>174
ふむふむ
スクリプトを見直します

176:名無しさん@お腹いっぱい。
09/06/10 22:11:54 OK2G++4p0
ホットキーラベルを実行した後そのホットキーの修飾キーが押され続ける現象がよくあります
根本的に起こらなくすることは出来ないのでしょうか
もしくは発生しやすいホットキーの設定の仕方とかあったりするのでしょうか

過去ログにあった押され続けていることをツールチップで知らせる対策は一応やってます

177:名無しさん@お腹いっぱい。
09/06/11 13:54:37 RYxlht2m0
ホットキーの修飾キーが押されっぱなしになる現象は
ウチの環境では発生した記憶は無いけど
考えられる可能性としてCPU負荷が高いときに発生してるのかな?
CPU負荷が高いときは各Delayを長くしたり、一時的に停止させたりすると発生率が下がるかも。
CPU使用率を取得するには流行らせるページ(↓)の「システムモニタ用関数群」を使うと簡単
URLリンク(lukewarm.s101.xrea.com)

178:名無しさん@お腹いっぱい。
09/06/11 20:40:44 nqDZEveb0
>>176
自分も <+WheelUp::ShiftAltTab
を使った後によくShiftが押されっ放しになります。
CPU負荷は10%くらいでも起きますね。なんでだろう

179:名無しさん@お腹いっぱい。
09/06/11 20:53:04 Jqjy1sE50
Safari4を使われている方は、御存じだと思うのですが
このブラウザはリンクを新しいタブで開くのに
control + クリックの操作となり非常に不便でして
AutoHotkeyのスクリプトで、リンクをクリックだけで
タブを開く事は可能でしょうか

180:名無しさん@お腹いっぱい。
09/06/11 21:50:16 tOyf+Vjo0
状態に応じてタスクトレイアイコンが3種類に変化するスクリプトを
コンパイルしてexe化することを考えています。
ahk2exeでコンパイルするときにiconを埋め込むことができますが、
ここで3種類のiconを埋め込むことも可能なのでしょうか?
外にiconを用意せずに、内部に埋め込んで利用するにはどうすればよいのか
お知恵を拝借したくて参りました。どうぞよろしくお願いします。

181:名無しさん@お腹いっぱい。
09/06/11 23:40:41 Act1V8T40
>>176
>過去ログにあった押され続けていることをツールチップで知らせる対策
どういうものですか?
興味があります。

182:名無しさん@お腹いっぱい。
09/06/11 23:45:35 wKap2oAj0
>>181
これです

782 :名無しさん@お腹いっぱい。:2008/11/27(木) 01:43:58 ID:pOwnMABe
よく分からんけど、 Ctrl とかが押しっぱなしになる。解決はよく分からんが対処法としてアラートだすようにした。
if書きたくないから、三項演算子だいすきif書きたくないから、三項演算子だいすき

#SingleInstance
#Persistent
keys = Ctrl|Shift|Alt|LWin|RWin
alertDur = 3000 ;(ms)
SetTimer, Alerter,200
return
Alerter:
alert =
Loop, PARSE, keys, |
{
%A_LoopField% := !GetKeyState(A_LoopField) ? 0 : !%A_LoopField% ? A_TickCount : %A_LoopField%
alert .= (%A_LoopField% && (A_TickCount - %A_LoopField%) > alertDur) ? "[" A_LoopField ": " (A_TickCount - %A_LoopField%) "ms]" : ""
}
Tooltip, %alert%
return

183:名無しさん@お腹いっぱい。
09/06/11 23:47:40 Act1V8T40
>>182
ありがとうございます。
勉強になります

184:名無しさん@お腹いっぱい。
09/06/11 23:56:12 g3bI05W70
WheelScroll.ahk の作者さん、見てらっしゃいますかー? (´∀`)ノ
前スレ809でご相談した、 マルチモニタで座標がマイナスのときスクロールしない件、ようやく調査できました。
どうやら Firefox と Google Chrome に特有の問題?だったようです。

> 1.スクリプト殺したノーマルの状態で通常のホイールが効いているか
Yes

> 2.ToolTip,mx=%mx% my=%my% とか追加して値がマイナス値になってるかどうか
OK

> 3.互換モード(WM_SCROLL)で動かした場合も動かないのか
アプリによって違う
[初期設定]
OK: Word 2007, Excel 2007 (ClassNN=XLDESK1), VBE, Explorer, Hidemaru,
NG: Firefox 3.0.10, Google Chrome 2.0,
[互換モード] ※
OK: Word 2007, Excel 2007, VBE, Explorer, Hidemaru, Google Chrome 2.0,
NG: Firefox 3.0.10 (プラス座標でも動かない),

※「if (!scmode)MOUSEWHELL() 」の部分をコメントアウトして「SCROLL()」だけが使われるようにした

> 4.管理人さんのホイールリダイレクト で正常に動くかどうか
OK: Word 2007, Excel 2007 (ClassNN=XLDESK1), VBE, Explorer, Hidemaru,
NG: Firefox 3.0.10, Google Chrome 2.0,

というわけなのですが、何かおわかりになりますか?

185:名無しさん@お腹いっぱい。
09/06/12 09:13:09 xwya5VPS0
>>182
三項演算子を使えるのか
AutoHotkeyでは使えないものだと早とちりしていた


186:名無しさん@お腹いっぱい。
09/06/12 20:35:06 UekHVJ+l0
>>179
済みません、このスクリプトの作り方を
ご存じの方、教えて頂けないでしょうか
宜しくお願いします。

187:名無しさん@お腹いっぱい。
09/06/12 21:03:44 bITW0WaS0
それってSafariに限らずIE7以降やFirefoxでも一緒なのでは…。人間側が対応すれば?

どうしても作りたいなら、単に左クリックにCtrl+左クリックのショートカット割り当てて
常駐させればいいんじゃね?

188:名無しさん@お腹いっぱい。
09/06/12 21:09:54 36hO0FeI0
IEはデフォでミドルクリック新タブに対応したけど
Safariはまだなのか

189:名無しさん@お腹いっぱい。
09/06/12 21:20:51 ZrrVWnQk0
>>184
作者とは関係ないけど、

MOUSEWHELL関数内の

; lParam: XY座標
lpalam := (my << 16) | mx

って所を

VarSetCapacity(tmp, 4), NumPut(mx, tmp, 0, "Short"), NumPut(my, tmp, 2, "Short")
lParam := NumGet(tmp, 0, "UInt")

に変えてみたら動くかな?

190:名無しさん@お腹いっぱい。
09/06/13 00:15:39 dhbOZypN0
>>184
どもです。XPSP2で現象確認しました。
>189氏でも突っ込み入ってますがバッファサイズと符号の問題っぽいですね。
ただ、VarSetCapacity() & NumPut()は自分もやってみたんですが上手くいかず。
泥臭いけど↓の記述でいけました。

; lParam: XY座標
my += (my < 0) ? 0xFFFF : 0
mx += (mx < 0) ? 0xFFFF : 0
lpalam := (my << 16) | mx

初めはアプリ固有の問題かと思ったけど、問題が起こってたのはlParamの値を
ちゃんと見てるアプリだったですね。
(逆に言うとほとんどのアプリはlparam値をデタラメに指定しても動くんだな)

いづれ修正版を上げ直したくはあるんですが、色々手を入れたいとこがありすぎるんで
ちょっといつになるかわからんです。
とりあえず当座は個々でのモデファイで対応をお願いします。

191:名無しさん@お腹いっぱい。
09/06/13 08:25:43 FZfPnSVw0
AutoHotKeyではないあるウィンドウに
ファイルがドロップされたことを知りたいんですが何か方法ありませんでしょうか

192:名無しさん@お腹いっぱい。
09/06/13 09:59:23 tz1EHr/W0
三項演算子の話が出ていたので便乗して質問します

if (key = "q" or key = "w" or key = "e")
{
key = ok
}
の条件の部分を
if key in q,w,e
{
key = ok
}
のように省略化して三項演算子を書きたいのですが無理でしょうか

193:名無しさん@お腹いっぱい。
09/06/13 10:20:05 zUCF2v8d0
>>191
他のウィンドウへのD&DはWM_DROPFILESを検知しないとダメかも
hook用のdllが英語のフォーラムにあったような記憶

>>192
一般論で言えば無理だけど、
instr("qwe",key) ? "ok":key
みたいなことは書けると思う

keyが複数文字なら instr("_q_ww_ee_","_" . key . "_") ? "ok":key とも書けるけど、
選択肢の数によっては普通に or で結んだ方が速いかも

194:名無しさん@お腹いっぱい。
09/06/13 11:49:58 tz1EHr/W0
>>193
どうも
この手は思いつきませんでした

195:名無しさん@お腹いっぱい。
09/06/13 13:15:03 TEt0QNw/0
高級なツールチップ表示関数を作ろうと思ってます
ツールチップ番号ごとに独立した表示時間を持たせたいのですが
作り方が分かりません
ツールチップ削除用ラベルも関数内で完結させようと思ってます
とりあえず現時点のツールチップ削除機能がない関数です↓

ToolTip(msg, dur=2000, tipNumber=20, x="88%", y="95%")
/******************************************
* スクリーンの絶対座標にツールチップ表示
*
* @param msg - 表示メッセージ
* @param dur - 表示時間(ms)
* @param tipNumber - ツールチップ番号(1~20)
* @param x - スクリーン座標。絶対値または%指定が可能
* @param y - スクリーン座標。絶対値または%指定が可能
*******************************************
*/
{
ifinstring, x, `% ; xに%が含まれていた場合の座標を算出する
{
StringReplace, x, x, `%
x := A_ScreenWidth * x / 100
}
ifinstring, y, `% ; yに%が含まれていた場合の座標を算出する
{
StringReplace, y, y, `%
y := A_ScreenHeight * y / 100
}
CoordMode, ToolTip, Screen
ToolTip, %msg%, %x%, %y%, %tipNumber%
return
}

196:名無しさん@お腹いっぱい。
09/06/13 13:32:17 uM8h8kxB0
チップ番号毎に消去用のタイマ設置じゃないの

197:名無しさん@お腹いっぱい。
09/06/13 13:37:14 TEt0QNw/0
20個ラベル作るってことですか?

198:名無しさん@お腹いっぱい。
09/06/13 19:06:14 TEt0QNw/0
とりあえずラベル20個作って望み通りの挙動になりました
ありがとうございます

199:名無しさん@お腹いっぱい。
09/06/14 04:29:55 uW112SM80
プログラマブルテンキーのリマップで困っているのですが
VK SC Type Up/Dn Elapsed Key
------------------------------------------
A4 038 d 43.83 Alt
60 052 d 0.05 Num 0
60 052 u 0.02 Num 0
66 04D d 0.02 Num 6
66 04D u 0.00 Num 6
61 04F d 0.02 Num 1
61 04F u 0.00 Num 1
A4 038 u 0.02 Alt
こんな入力があって発動するスクリプトは可能でしょうか?

200:名無しさん@お腹いっぱい。
09/06/14 10:26:41 aFW/syKk0
ALT押しながらテンキーの061ということでいいのかな。
前にも似たようなスクリプト貼られた気がするけど。

seq:="!Numpad0!Numpad6!Numpad1|UPUPDOWNDOWNLEFTRIGHTLEFTRIGHTba" ; 検出するキーシーケンス
endkeys:="{Backspace}{Enter}{Left}{Right}{Up}{Down}{Delete}{Insert}{Escape}{Home}{End}{PgUp}{PgDn}"
. "{Numpad0}{Numpad1}{Numpad2}{Numpad3}{Numpad4}{Numpad5}{Numpad6}{Numpad7}{Numpad8}{Numpad9}"
. "{NumpadDot}{NumpadDiv}{NumpadMult}{NumpadAdd}{NumpadSub}{NumpadEnter}"
. "{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}{Pause}{Break}{PrintScreen}"
. "ba" ; endkeysには検出するキーを含める
hist:=""
Loop
{
Input, var, L1 V, %endkeys%
if ErrorLevel=Max
hist:=""
else if InStr(ErrorLevel,"EndKey:")
{
hist.=GetKeyState("Alt","P") ? "!":""
hist.=SubStr(ErrorLevel,8)
}
Loop,Parse,seq,|
if ( SubStr(hist,StrLen(hist)-StrLen(A_LoopField)+1) = A_LoopField )
Gosub % A_LoopField . hist:=""
}

!Numpad0!Numpad6!Numpad1:
TrayTip,, %A_ThisLabel%:%A_TickCount%
return

UPUPDOWNDOWNLEFTRIGHTLEFTRIGHTba:
TrayTip,, FullPower:%A_TickCount%
return

201:名無しさん@お腹いっぱい。
09/06/14 16:34:29 uW112SM80
>>200
ありがとうございます。
参考にさせて頂きます。

202:名無しさん@お腹いっぱい。
09/06/14 23:30:20 DC/htVT+P
つい2,3日前に,このツールの存在を知りました。

いままで自分で欲しかった,
 1 ブラウザやエディタ上で範囲選択
 2 ホットキーでポップアップメニュー
 3 Firefoxに送る,EBViewに送る,Googleで検索,Wikiで検索……
などの機能を持つスクリプトが,見よう見まねで書けたんですが,
(かなり細かくTPO次第の条件分岐になるので,自動認識はさせない方針)
ただ一つ「IE8にURLを送る」だけがうまくいきません。

仕事でどうしてもIE8が必要なので,あとここだけ動くと
言うことなしなんですが,何か良い手はありませんでしょうか。

Run, C:\Program Files\Internet Explorer\iexplorer URLリンク(%Clipboard%)

は駄目でした。

203:名無しさん@お腹いっぱい。
09/06/15 00:27:40 t4Kz1iJG0
#1:: run, "C:\Program Files\Internet Explorer\iexplore.exe" "%clipboard%"

http::// はいらんでしょ。そういう使い方してるんだったらごめん。

204:名無しさん@お腹いっぱい。
09/06/15 00:37:59 DfoIckCV0
>>202
IE8をインストールしていないけど
iexplorer.exe ではなく iexplore.exe じゃないかと。

それとパス中に含まれる半角スペースは %A_Space% に置き換えた方が確実に動くと思う
Run, C:\Program%A_Space%Files\Internet%A_Space%Explorer\iexplore.exe URLリンク(%Clipboard%)

205:202
09/06/15 00:54:56 jQythkfVP
>203 さん
動きました! ありがとうございます。
http://は意図的です。仕事で使うシステムが,
どういう意図なのかhttp://抜きのURL(←毎回違う)を
送ってくるシステムなので,苦し紛れの方法です。
でもよく考えたらこのほうが(どうせ人間が選択するなら)
便利だということにも気づいて,割と気にいってます。

>204 さん
返信見たときにかなり焦りましたが,iexplorerでした。
%A_Space%の件は気づいてなかったので,
試しに203さんの解に入れ込んでみたけどやはり駄目でした。
今後は気をつけて使うことにします。ありがとうございました。


206:名無しさん@お腹いっぱい。
09/06/15 01:01:22 YLFCYF1c0
>%A_Space%
これは流石にやりすぎだと思うが
行頭行末以外で勝手にtrimされるわけじゃないし

207:名無しさん@お腹いっぱい。
09/06/15 01:14:24 YLFCYF1c0
なんかねぼけてた
AutoTrimで設定できる範囲でどうのこうのって意味ね

208:名無しさん@お腹いっぱい。
09/06/15 01:30:23 cH860UQK0
うちのは iexplore.exe だな、環境によって変わったりするものなのかw

209:名無しさん@お腹いっぱい。
09/06/15 01:42:15 Rpm4wJtQ0
ウイルスじゃねw>iexplorer.exe
昔の名残でWindowsに最初から入ってるプログラムは
基本的に8文字までになってるから

210:202
09/06/15 01:51:19 jQythkfVP
ホントだ,Iexploreですね……なに寝ぼけてるんだろう。
すいません。。。

ランチャー代わり&さっきのメニューだけで,
個人的にはとても満足。
次はマウス右クリック1秒でメニュー出るようにしてみます。

こういうのBasic以来だ。楽しい。

211:名無しさん@お腹いっぱい。
09/06/15 01:54:33 Qf1MbZOM0
>>205
補足
""で括るとそのままパスの文字列として扱われるので%A_Space%に置き換えると動かない。
(%A_Space%が半角スペースとして処理されない)
""で括らない場合は %A_Space% に置き換えると確実に動く。

>>206
半角スペースが区切りとして処理される場合があるので
""で括れるときはいいけど、括れないときに半角スペースを %A_Space% に置き換えてる。
前後に半角スペースやTabスペースが欲しいときにこういう方法がありますよー、ってことで。

212:名無しさん@お腹いっぱい。
09/06/15 19:01:59 x31IQNlX0
XPのデスクトップ上で、たとえば、マイコンピュータが選択されている などのように、
現在選択されているアイコンを調べる方法はないでしょうか。

F2でリネーム→コピー→キャンセル というローレベルな方法で一応動いています。

#IfWinActive ahk_class Progman

F1::
send,{F2}
sleep,5
send,^c
send,{ESC}
sleep,5
var=%clipboard%
if var=マイ コンピュータ
msgbox,マイコンピュータが選択されている
return
#IfWinActive

が、デスクトップの空き領域でこの操作をした場合、「空」になってもらいたいのに、
直前まで選択していたアイコンに強制的にフォーカスが移り、
意図しない動作になってしまいます。
それと、この方法だと「ゴミ箱」が検出できません。

もっとスマートな検出方法はないでしょうか。

213:名無しさん@お腹いっぱい。
09/06/15 19:56:45 OJANZZ8e0
ゴミ箱のショートカットをつくり、デスクトップにそれを置く。


214:名無しさん@お腹いっぱい。
09/06/15 20:16:07 uHI5LVh90
デスクトップの空き領域・ゴミ箱・普通のアイコンのそれぞれに
SHIFT+F10で個別のコンテクストメニューがだせる
あとは場合分け汁

215:名無しさん@お腹いっぱい。
09/06/15 20:45:43 x31IQNlX0
>>213
なるほど、最悪そのようにしてみます。

>>214
どうもです。Shift+F10を押した後の場合分けの方法が思いつかないのですが、
コンテキストメニューの情報をテキストで取得する方法って有りますか?

コンテキストメニューが出ているとき、最前面ウインドウから情報を
抜き取ってみましたが、デスクトップそのものの情報しか得られませんでした。

216:名無しさん@お腹いっぱい。
09/06/15 20:54:51 Eq0wz7dd0
礼も言わず「最悪そうします」とかw

217:名無しさん@お腹いっぱい。
09/06/15 21:07:27 cPBSw7WG0
>>212 COMを使う方法がある

エクスプローラの場合 ShellFolder()
URLリンク(www.autohotkey.com)

デスクトップの場合 ShellDesktop()
URLリンク(www.autohotkey.com)

必要なライブラリ com.ahk, acc.ahk
URLリンク(www.autohotkey.com)

218:名無しさん@お腹いっぱい。
09/06/15 21:33:37 PR1YLCAc0
>>190
ご確認ありがとうございます。
ご教示いただいた方法を試してみたいと思います (が、また数日~十数日先になるかもしれません)。


219:名無しさん@お腹いっぱい。
09/06/15 21:36:25 x31IQNlX0
>>217
これでイケそうです。ありがとうございます!

220:名無しさん@お腹いっぱい。
09/06/16 20:41:51 DCCAcnmU0
タスクスケジューラに登録しているタスクの
プロパティ(っていうんでしょうか?)を開くにはどうしたらいいでしょうか?

Winキーや矢印キーを何回かSendして・・・という方法は思いつきますが
タスクを追加や削除して順番が変わると書き換えが必要になるので、
できれば直接開く方法はないでしょうか?

やりたいことは、プロパティを開いて「実行する」のチェックボックスを
トグルするスクリプトを書くことです。

221:名無しさん@お腹いっぱい。
09/06/17 10:10:53 WpDhJ6Es0
>>220
タスク名をタイプすればいいんじゃない?
Send,task1
Send,{AppsKey}r
日本語なら流行らせるページの日本語コード変換とか使えばいけるハズ。

もしくは、Task Scheduler APIでゴニョゴニョするか、
ここのataskみたいなのを使うとか
URLリンク(www.piedey.co.jp)
atask --set タスク名 TASK_FLAG_DISABLED 1

222:名無しさん@お腹いっぱい。
09/06/17 21:09:40 QQe2Egi20
Gui, Add, ListView, w200 r10 Grid -Multi NoSortHdr AltSubmit vTEST gLV, aaa|bbb
Gui, Add, Button, gXX, &XX
Gui, Show
Return
LV:
Lv_Add("", 1, 2)
Return
XX:
Gui, 2:+Owner1
Gui, 2:Add, Button, w200 gHH, &HH
Gui, 2:Show,
Return
HH:
Gui, ListView, TEST
Lv_Delete()
Gui, 2:Destroy
Return
すみません、これでGui2のHHボタンを押したときに、Lv_Delete()が実行されず行き詰ってます。
Lv_Delete()を実行するボタンをGui1に追加してラベルに飛んだり、リストダブルクリックを
A_GuiEvent で拾ってLV: の分岐で実行するようにしても上手くいかず、
Gui1にボタンを増やしてHHを押したら、Gui1側のボタンをクリックするようにしたらなんとか動作しました。
ControlClick, Button2, ahk_class AutoHotkeyGUI
ControlClick, Button2, ahk_class AutoHotkeyGUI ;一回だけだと反応しませんでした
本当はどう書いたら良いのでしょうか。よろしくお願いします。

223:名無しさん@お腹いっぱい。
09/06/17 22:29:36 6WNHPMfr0
>>221
ありがとうございます
ataskを使うことにしました

224:名無しさん@お腹いっぱい。
09/06/17 22:31:13 jrmVfvzF0
>>222

HH:
Gui, 1:Default

225:名無しさん@お腹いっぱい。
09/06/17 22:33:03 jrmVfvzF0
>>223
一応
URLリンク(www.atmarkit.co.jp)

226:名無しさん@お腹いっぱい。
09/06/17 23:28:11 JeuLn3PH0
>>176
最近これがやたらと起きてまじで困る
何がいけないのか分からない
AutoHotKeyのバグなの?

227:名無しさん@お腹いっぱい。
09/06/18 06:11:05 HZFIWwq10
>>226
Logiのsetpointつかってない?

228:名無しさん@お腹いっぱい。
09/06/18 06:44:39 turBMvGA0
>>227
マウスが路地のだからつかってる・・・

229:名無しさん@お腹いっぱい。
09/06/18 06:44:58 VsQab8Ck0
>>193
規制やら何やらで返事遅れてしまいましたが
フォーラムを漁ったらdllcallでole32\RegisterDragDropというのを使えばいいみたいでした

自分もSetWindowsHookExなどでWM_DROPFILES検知しようとしてたんですが、
Windowsって方法が色々あってむずかしいですね

230:名無しさん@お腹いっぱい。
09/06/18 07:02:32 d+H9MLdZ0
>>224
おお、これだったんですか、ありがとうございます出来ました。

231:名無しさん@お腹いっぱい。
09/06/18 07:55:11 Ojx5UvYg0
基本的なことで申し訳ないんだけど
テンプレなどのページでキーの変更などのことはわかったのですが、
どのようにして変更するかがわかりません。

たとえば「Ctrl+0」というのをF1に割りあげる場合どのソフトを起動し
どのような設定にすればいいのですか?

232:名無しさん@お腹いっぱい。
09/06/18 08:03:38 ts3k5Em40
それって結局何も分かってないってことじゃね?

233:名無しさん@お腹いっぱい。
09/06/18 09:14:25 LcGKoNtW0
>>226
マウスのサイドボタンに setpoint で shift や ctrl を割り当ててない?

234:名無しさん@お腹いっぱい。
09/06/18 13:20:46 7JmYAkRj0
LogiのMarbleMouse(トラックボール)を使ってるけど
SetPointはカスタマイズ系ソフトと競合してたのでSetPointを入れてないな。
ボタンのカスタマイズはAutoHotkeyでやってる。
MSのIntelliPointも同様のことが発生するという書き込みを見たことあるけど
使ったことが無いので解らない。

SetPoint(ユーティリティソフト)をアンインストールしても
ドライバはロジのままだったので手動で標準ドライバへ変更した記憶がある。
(標準ドライバにする必要があるかどうかは分らない。)
それとキーボードのドライバもいつのまにかロジのドライバに書き換えられてたので
それも標準ドライバに変えた。
現在のSetPointの仕様がどうなのか知らないけどね。

235:名無しさん@お腹いっぱい。
09/06/18 17:46:14 CJ45cLgq0
メーカー純正のマウスドライバって微妙だよな。
かといってXPだとOS標準じゃでチルトホイール使えないし。
せっかくWheelLeft/Rightがサポートされたのに残念だ。

236:名無しさん@お腹いっぱい。
09/06/18 17:59:54 HZFIWwq10
SetPointは、ノートPCのタッチパッド感度を勝手に初期化して加速を無効にしたり、
>>176の押しっぱなし症状が出たりと、多岐にわたって殺意が沸くほど悪影響がある。
が、こいつを入れないとせっかくのチルトボタンが有効にできないから、涙をのんで入れてる。

チルトボタンだけをF13~F24にまわすような代替のソフトなんて、ないよね?
あったら、速攻でアンインスコしたい。

いまは、CtrlかAltが20秒以上押しっぱなしになってることを検出したら
Setpointを強制Killして、2秒後に、あらためて起動させるようにした。
けど、これも完璧な対策にはならない。

237:名無しさん@お腹いっぱい。
09/06/18 18:07:05 Ojx5UvYg0
特定のウィンドウもしくはソフトがアクティブの場合の指定などがわかりません。

Ctrl+0をF1に割り当てる場合どうすればいいですか?



238:名無しさん@お腹いっぱい。
09/06/18 19:35:35 HZFIWwq10
1年ぶりにロジクールのスレを覗いてみたんだが、

>Q. SetPointの設定が勝手にデフォルトに戻るんですが?
>A. キャンセルやクローズ(「×」)を押さないようにしましょう。
>
>Q. SetPoint 入れたくない(使いたくない)んで違う神ドライバありませんか?
>A. そんな都合のいいものがあったら是非教えてください。

添付アプリの糞加減は、なにも変わっていなかった・・・

239:名無しさん@お腹いっぱい。
09/06/18 19:41:07 JJ+I/19Q0
路地はハードは良いんだけどね

と言うかマウスユーティリティで良いものってあまり見ない。
絶対使わなそうなランチャとかイラネ。
古いInteliPointとエレコムホイールユーティリティは良いと思う

>>237
もうちょい頑張ろうぜ
URLリンク(lukewarm.s101.xrea.com)

240:名無しさん@お腹いっぱい。
09/06/18 20:16:32 7JmYAkRj0
AutoHotkeyをインストールする
(インストーラーでインストールするとahkファイルの関連付けが一緒に行われる)
Autohotkey.exeと同じフォルダに 新規テキスト 作成する。
新規テキスト.txt を AutoHotkey.ini に変更する
※AutoHotkey.ini ではなく、任意の名前.ahk (ahkファイル)でもいい。
※ahkファイルならどこに作成してもOK。

テキストエディタ(メモ帳など)で Autohotkey.ini を開く。

ウィンドウの識別方法はいくつかあるけど、ウィンドウクラスで識別する方法を。
ウィンドウクラスを調べる方法はいろいろあるけど同梱されている AU3_Spy.exe を使うと簡単。
(AutoHotkey.exeと同じフォルダにある)
取得した ahk_class をクリップボードにコピーする。
例えばメモ帳のウィンドウクラスを調べると Notepad ということが分かる。

#IfWinActive, ahk_class Notepad ; メモ帳がアクティブなら
^0::F1

これを AutoHotkey.ini に貼り付けて保存し、Autohotkey.exe を実行。
(任意の名前.ahk に貼り付けて保存した場合は 任意の名前.ahk をダブルクリック)

最初の取っかかりで躓いているのだろうけど
後は>>239のリンク先に殆ど書かれている。

241:名無しさん@お腹いっぱい。
09/06/18 21:10:14 Ojx5UvYg0
いまんとこできたのがソフトの起動のみ・・・

WinTitle Mozilla Firefox
^PgDn::F2

#IfWinActive MozillaUIWindowClass
^PgDn::F2

これでできません・・・何が間違ってるのでしょうか?

242:名無しさん@お腹いっぱい。
09/06/18 21:23:46 wnsiLCT/0
F2::^PgDn
じゃないの?

ってか、とりあえず流行らせるページひととおり読もうぜ

243:名無しさん@お腹いっぱい。
09/06/18 21:49:21 7JmYAkRj0
「Ctrl+0にF1を」として書いてた・・・
「Ctrl+0をF1に」なら
F1::^0
だった

他の方も言ってるけどAutohotkeyを流行らせるページを見た?
(主に関連する解説ページはウィンドウの指定方法、ホットキー、Remap)

244:名無しさん@お腹いっぱい。
09/06/18 21:52:18 SVpnwZUO0
>>241
Sendを使う
Remapは修飾キーを離してくれないので
それだとCtrl+F2が押されたことになっている

245:名無しさん@お腹いっぱい。
09/06/19 00:10:42 nmCnAcVn0
スレッド動作中に、ほかのキーが押されているかは「GetKeyState」で
できますが、マウスのホイールが回ったかどうかを調べる方法は、ありますか?

マウスの左右チルトを倒してスレッドを開始し、
そこでループさせながらホイールの上下入力を検知したいのですが、
ホイールの回転検出方法でつまずいてしまいました。

246:名無しさん@お腹いっぱい。
09/06/19 00:46:58 IlTer6q60
こんな感じか

~WheelUp::wheel:=1
~WheelDown::wheel:=-1

WheelLeftl::
 wheel = 0
 Loop
 {
  ほげほげ
  If (wheel!=0)
   ふがふが
 }
 Return

247:名無しさん@お腹いっぱい。
09/06/19 01:32:42 nmCnAcVn0
>>246
ありがとうございます。うまくいきました。
なるほど、1スレッドにこだわるあまり、思いつきませんでした。

248:名無しさん@お腹いっぱい。
09/06/19 01:47:13 yGrRFejp0
#IfWinActive MozillaUIWindowClass
F2::
Send ^
Send PgDn
return

これでも駄目だった・・・なぜかしらん?


249:名無しさん@お腹いっぱい。
09/06/19 01:59:10 pArZgo1w0
いいかげん解説くらい読んでくれ

250:名無しさん@お腹いっぱい。
09/06/19 13:42:58 567XQ0M40
>>248
ctrlとPgDn別々に押してるんだから動かなくて当然
あとSendのページ読めば{}やら,やら必要なのもわかるはず
それと、なんで>>242試してみないの?

251:名無しさん@お腹いっぱい。
09/06/19 18:13:40 fIAAihen0
まあ ahk_class 付いてない時点でウィンドウ判定に失敗してるんだけどな

252:名無しさん@お腹いっぱい。
09/06/19 19:46:31 yGrRFejp0
ここ2、3日騒いでいた者ですがなんとか設定できました。
F2::^PgDnで問題なくできました。

問題は、251さんの指摘しているところですw

253:名無しさん@お腹いっぱい。
09/06/19 19:53:11 YBCNr5+M0
もう二度とこないでね^^

254:名無しさん@お腹いっぱい。
09/06/19 20:18:25 hGBhDH/a0
>>226,227,228,233,234
自分>>178なんですが、ロジのマウス使ったことないですがやっぱりShiftが押されっぱなしになりますね。
マウスドライバはMSの純正で、ボタン割り当てはAutoHotkeyのみでやってます。
LShift & WheelDown::AltTab
LShift & WheelUp::ShiftAltTab
だけで走らせてみたところ、LShift & WheelDown::AltTab でフォーカスを移したあと、マウスクリックで
元のウィンドウに戻ってくると、毎回 Shiftが押されっぱなしになることが分かりました。
TeraPadとJanedoeViewで確認。
LShift & WheelUp::ShiftAltTab では大丈夫みたいです。

マウスはサンワのTB38という5ボタンのトラックボール、メーカーのドライバを入れた前歴はありません。
キーボードがへたってるのかなあ

255:名無しさん@お腹いっぱい。
09/06/19 20:29:17 IlTer6q60
■ キー押しっぱなし俺的まとめ ■

症状
i) キーはCtrl や Shift が多い
ii) 物理キー押下・押上で解除される

原因となっていそうなもの
A) SetPoint(ロジクール製マウスユーティリティ)
B) 窓使いの憂鬱(のどか)
C) VMWare / VirtualPC

A単独、もしくは (B または C) + デュアルコア以上のCPU

※ ソースは繭スレとか

----
俺はCore2のPCにした時 B で一度なってAHKに完全移行(OS再インスト)で
いったん無くなったけど、VMWareを入れて(C)再発した。
今はどちらも入れていないので特に問題は起きていない。

256:名無しさん@お腹いっぱい。
09/06/19 20:59:14 NFr4v0Hr0
何分後に動作
とか
何時何分に動作
っていうタイマーってできないかな?
1分ごとに監視するのは無駄な動作が多い

257:名無しさん@お腹いっぱい。
09/06/19 21:11:27 NFr4v0Hr0
何分後ってのはタイマーで指定すればいいだけか
時間指定できないかな

258:名無しさん@お腹いっぱい。
09/06/19 21:24:32 hGBhDH/a0
>>255
AとCは該当なし、Bは使った事ないですがChangeKeyで前変換とカタカナキーを殺していたのを思い出して
リセットして再起動してみましたが駄目でした。自分もCore2DuoのE8400です。
OS再インストールするしかないのかな・・・ orz

259:名無しさん@お腹いっぱい。
09/06/19 21:59:46 RvBowY+q0
結局これといった解決方法は無しかorz

260:名無しさん@お腹いっぱい。
09/06/20 12:28:49 Z+MpXoRr0
>>256
SetTimer,OnTimer,60000
return

OnTimer:
FormatTime,NowTime,,HHmm
If (NowTime >= 0659) && (NowTime <= 0701) && (!Compleate) {
Msgbox, 7:00になったよ
Compleate := 1
} Else{
Compleate := ""
}
return

1分ごとに時間チェックするだけなら大した負荷にはならんと思うけど
(どっちにしろどこかで何かしらが定期時間チェックする必要はあるので
自分でやるか、他人に任せるかの違いでしかないのだし)

どうしても1分Timerが嫌なら単独スクリプトにしてOS標準のタスクスケジューラに登録したらいい

261:名無しさん@お腹いっぱい。
09/06/20 14:09:37 J9kUfX5s0
>>190
遅くなりましたが、動作確認できました。

> いづれ修正版を上げ直したくはあるんですが、色々手を入れたいとこがありすぎる
期待しています。

とりあえず WheelAccel.ahk に修正を加えてアップしておきました。
URLリンク(lukewarm.s101.xrea.com) の 111.zip

>>189氏ともども、ご教示ありがとうございました。今後ともよろしくお願いいたします。

262:名無しさん@お腹いっぱい。
09/06/20 16:45:22 yzkbbsVb0
ソフトのタイトルの一部で判断し
各キーを対応させるにはどうすれば
いいのでしょうか?

263:名無しさん@お腹いっぱい。
09/06/20 16:48:52 m9lSj1Vi0
複数のキーボードを接続している状態で、特定のキーボードについてのみ
キー配置のリマッピングを有効にする方法はあるのでしょうか。
Alphagripというイロモノキーボードを買ってみまして、AutoHotkeyで
リマップして キー配置を変更したのですが、普通のキーボードも同時に
使っているので そちらは出来ればそのままのキー配置にしたいのです。
一応関数は探してみたつもりですがそれっぽいのが見つかりませんでした。

264:名無しさん@お腹いっぱい。
09/06/20 17:46:05 Kh84drTR0
>>262
SetTitleMatchMode と #IfWinActive

>>263
ドライバレベルで対応出来るものじゃないと出来ない。無理。

テンキーなら URLリンク(ioenc.net) で出来るけど、
でもこれもやっぱりドライバ置き換え。

265:名無しさん@お腹いっぱい。
09/06/20 18:01:50 yzkbbsVb0
>>264
レスどうも
タイトルに AutoHotkeyというのが含まれてる場合
SetTitleMatchModeで指定するにはどうすればいいのでしょうか?

#IfWinActiveの場合は、付属のソフトでahk_class○○といった
感じでできました。

266:名無しさん@お腹いっぱい。
09/06/20 18:09:21 m9lSj1Vi0
>>264
レスありがとうございます。やっぱ無理なんですか、残念。

267:名無しさん@お腹いっぱい。
09/06/20 18:47:56 Kh84drTR0
>>265
#IfWinActive などのウィンドウの状態を見てのキーアサインを振り分ける機能は
Autoexec セクション内での SetTitleMatchMode コマンドの指定したやり方で判定をする
(指定がなければ前方一致をデフォルトとする)


意味が全然分からないならスクリプトの「1行目」に以下を書く
SetTitleMatchMode, 2


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