[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 10/25 04:39 / Filesize : 194 KB / Number-of Response : 535
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

AutoHotkey スレッド part7



1 名前:名無しさん@お腹いっぱい。 [2008/12/31(水) 12:39:34 ID:ROX9gd900]
■公式
www.autohotkey.com/

■解説
AutoHotkeyを流行らせるページ
lukewarm.s101.xrea.com/

■過去スレ
1 pc7.2ch.net/test/read.cgi/software/1098531338/
2 pc7.2ch.net/test/read.cgi/software/1129836713/
3 pc11.2ch.net/test/read.cgi/software/1157043396/
4 pc11.2ch.net/test/read.cgi/software/1184556627/
5 pc11.2ch.net/test/read.cgi/software/1201502896/
6 pc11.2ch.net/test/read.cgi/software/1219130051/

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

2 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/31(水) 12:41:04 ID:ROX9gd900]
■関連記事のあるサイト

AutoHotkey メモ - Principia
principia.s54.xrea.com/index.php?AutoHotkey%20%A5%E1%A5%E2
AutoHotKey - notitle.txt
kan.s151.xrea.com/?AutoHotKey
なまず日記
www.tierra.ne.jp/~aki/diary/
eamatの日記
d.hatena.ne.jp/eamat/
おばけ日記
d.hatena.ne.jp/obake/

1 Hour Software by Skrommel - DonationCoder.com
www.donationcoder.com/Software/Skrommel/
ACConsole
www.autohotkey.com/forum/topic7831.html
Tips N Tricks(公式フォーラムのトピック)
www.autohotkey.com/forum/topic8795.html&highlight=gui

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

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

4 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/31(水) 12:42:53 ID:ROX9gd900]
Q:Shift, Ctrl, Alt, Winキー以外のキーを修飾キーとしてキー割り当てしたいよ
  (例:無変換 + IKJLキーをそれぞれ「↑↓←→」に割り当てたいよ)など
A: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}

※ いくつかのエディタについてははキーワード定義が以下に添付されているので参考に。
  {AutoHotkeyのインストールフォルダ}\Extras\Editor

5 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/31(水) 13:01:29 ID:ROX9gd900]
勝手に追加FAQ?

Q: GUI作るのめんどくせ〜〜
A: 公式( ttp://www.autohotkey.com/download/ )から SmartGUI Creator をDLして使え

Q: ファイルパスに駄目文字があるんだが、、、
A: 駄目文字微対策版( ttp://yak.myhome.cx/junks/#ahk.cp932 )を使え。

Q: 「XX hotkeys have been received in the last XXXXms.」って怒られるんだけど、、、(XXは環境による)
A: 多分自分自身のキーを送って無限ループになっている。 例) 「a::Send, a 」
  先頭に $ を付ければ回避できる(NT系のみ)。 例) 「$a::Send, a」

Q: AHKってマルチスレッドじゃないの?
A: 「擬似マルチスレッド」です。最後に割り込んだスレッドが終わるまで元スレッドは動きません。

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


6 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/31(水) 13:48:04 ID:nnSK+Aaz0]
Q: 完璧なスクリプトなのに、なぜerrorが出るの?
A: (文頭に)全角スペースを使ってませんか?目に見えないものもあります。

Q: 作りたいんですけど?どうすればいいのでしょうか?ご教示頂きたいです。よろしくお願いします。
A: ご勝手に。簡単ですから(メモ帳等を使い)自分で書いてください。
  ここの住人は親切ですが、それはある程度努力してきたからです。
  主人でも客人でもなく、努力も見えない貴方の命令には従えません。

Q: それでも作りたいんですけど?
A: 題材によっては、期待以上のスクリプトが出現する可能性もあります。

7 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/31(水) 14:11:09 ID:nnSK+Aaz0]
Q: 具体的に何が出来ますか?どこにありますか?
A: マウスジェスチャ、ThumbRemap、TTBaseプラグインの数種、仮想デスクトップ等
   1: 「AutoHotkeyを流行らせるページ」の「My Scripts」や「BBS」の投稿スレ
   2: 公式のWiki「Compilations」

8 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 11:43:21 ID:3YMBcArZ0]
AかつB、かつ更にCまたはD。の時のif文はどう書きますか?
if A && B
if C or D
という風に書いているけど、1文で書けたらスマートだと思うんだけど。

9 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 16:30:57 ID:dpIHoV0B0]
if (a && b) && (c || d)

10 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 17:14:38 ID:dpIHoV0B0]
新春 Mini Tips
■ ヒアドキュメント

文字列をメタキャラ(`t や `n など)を用いずに定義できる
※ 必ず行頭に ( ) が無ければならない。

; = 演算子での文字列代入。かなり楽ちん。%hoge% とすれば変数参照も出来る。
str1 =
(
aaa = %aaa%
bbb = %bbb%
)

; := 演算子でも利用できる

str2 := "
(
aaa = " . aa . "
bbb = " . bb . "
)"

;変態的な利用方法
MsgBox, % "
(
ああ = " aa "
いい = " bb "
うう = " cc "
)"



11 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 17:19:37 ID:dpIHoV0B0]
■簡易オンスクリーンディスプレイ(OSD)関数 ・・・ 全角スペースを Tab に変えること!
OSD_Msg(title, msg, dur, pos="BL", fc="Aqua", fs1=28, fs2=36) {
 global Progress2 ; タイマで呼ぶラベルは static 変数は見えないので
 static _fs1,_fs2,_fc,_pos
 if (pos != _pos || fc != _fc || f1 != _f1 || f2 != _f2)
  Progress2 := false
 if (!Progress2) {
  Process, Exist
  MyPid := ErrorLevel
  opt:=InStr(pos, "L") ? "C00" : ""
  w := A_ScreenWidth, h := fs1 + fs2 + 40
  x := A_ScreenWidth - w, y := InStr(pos, "B") ? A_ScreenHeight-(h+30) : InStr(pos, "M") ? Round((A_ScreenHeight-h)/2) : 10
  Progress, 2:Hide B x%x% y%y% w%w% h%h% CW000001 CT%fc% ZH0 ZW0 ZY0 ZX0 FM%fs1% FS%fs2% WM1000 WS1000 %opt%, %msg%,%title%,%A_ThisFunc%
  DetectHiddenWindows, On
  WinGet, hwnd, ID, %A_ThisFunc% ahk_class AutoHotkey2 ahk_pid %MyPid%
  WinSet, TransColor, 000001, ahk_id %hwnd%
  WinGetPos, ,,,h, ahk_id %hwnd%
  WinMove, ,%y%,,,ahk_id %hwnd%
 }
 Progress2 := true
 Progress, 2:,%A_Space%%msg%%A_Space%,%title%
 Progress, 2:Show
 _fc := fc,_fs2:=fs2,_fs1:=fs1,_pos:=pos
 SetTimer, OSD_Msg_Off, -%dur%
 return
 OSD_Msg_Off:
  Progress2 := false
  Progress, 2:Off
  return
}


12 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 17:21:35 ID:dpIHoV0B0]
※ Progressを利用するので、GUIを消費しない。時計表示などにいいかも。
※ 文字列以外の引数が変わると再初期化する。文字だけ変わる場合はちらつかない。

title : タイトル文字列
msg: メッセージ文字列
dur: 表示時間(ms)
pos: 位置と配置(TL で Top Left、 BCで Bottom Center、右寄せは無いw)
;fc:フォント色(16進数表記でも可)
fs1:タイトルの文字サイズ,
fs2:メッセージの文字サイズ


13 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 17:24:57 ID:dpIHoV0B0]
■ サウンドデバイスの一覧を改行区切りで得る関数
waveOut/waveIn , midiOut/midiIn に対応

複数の入出力デバイスがなければ全く意味がない。

SoundDevice_GetDeviceList(media="wave", isOut=true, requireId=false) {
 static cbxoc:=256,delim:="`n"
 uDeviceID:=0
 func := InStr(media, "wave") ? "wave" : InStr(media, "midi") ? "midi" : ""
 if (!func)
  return
 func .= isOut ? "Out" : "In"
 VarSetCapacity(xoc, cbxoc, 0x00) ; Xoc (WAVEOUTCAPS / MIDIOUTCAPS)
 Loop {
  result := DllCall("winmm.dll\" func "GetDevCapsA", UInt,uDeviceID, Int,&xoc, UInt,cbxoc, Int)
  if (result == 2) ; MMSYSERR_BADDEVICEID
   break
  if (result == 0) { ; MMSYSERR_NOERROR
   devName:=""
   list .= StructGetString(xoc, 8) ; WAVEOUTCAPS と MIDIOUTCAPSのデバイス名称までは構造が同じ
    . (requireId ? ("`t" uDeviceID) : "")
    . delim
  }
  uDeviceID++
 }
 StringTrimRight, list, list, % StrLen(delim)
 return list
}


14 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 17:27:03 ID:dpIHoV0B0]
■ WaveOutを指定のデバイスIDで変更する
>>13 と組み合わせて使う。

SoundDevice_SetWaveDeviceId(id) {
 static WAVE_MAPPER:=-1, MMSYSERR_NOERROR:=0
 dwPreferedID:=0, dwUsePreferedOnly:=0
 if (MMSYSERR_NOERROR == DllCall("winmm.dll\waveOutMessage", UInt,WAVE_MAPPER, UInt,0x2015, UInt,&dwPreferedID, UInt,&dwUsePreferedOnly, Int)) {
  ret := DllCall("winmm.dll\waveOutMessage", UInt,WAVE_MAPPER, UInt,0x2016, Uint,id, dwUsePreferedOnly, Int)
  return true
 }
 return false
}





15 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 17:31:07 ID:dpIHoV0B0]
■ 現在選択されているWave再生デバイス名を取得する
SoundDevice_GetDeviceName() {
 RegRead, Playback, HKEY_CURRENT_USER, Software\Microsoft\Multimedia\Sound Mapper, Playback
 return Playback
}
■ 名前でWave再生デバイスを指定する (>>13-14 と組み合わせで使う)
SoundDevice_SetDeviceName(deviceName) {
 deviceList := SoundDevice_GetDeviceList("wave", true, true)
 Loop, PARSE, deviceList, `n
 {
  StringSplit, data, A_LoopField, %A_Tab%
  if (data1 == deviceName)
   return SoundDevice_SetWaveDeviceId(data2)
 }
}
■ 再生デバイスのトグルをする。上のものと組み合わせて使う。
 戻り値に変更後のデバイス名を返す
SoundDevice_ToggleDevice() {
 currentDeviceName := SoundDevice_GetDeviceName()
 deviceList := SoundDevice_GetDeviceList()
 StringSplit, device, deviceList, `n
 deviceCount:=device0, currentId:=0, nextId:=1
 Loop, %deviceCount%
  if (device%A_Index% == currentDeviceName)
   currentId := A_Index
  else if (currentId && A_Index == (currentId + 1))
   nextId := A_Index
 SoundDevice_SetDeviceName(device%nextId%)
 return device%nextId%
}

16 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 17:57:57 ID:YhIzrby/0]
>>10-15
新春早々為になるテク乙です

17 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 20:00:09 ID:3YMBcArZ0]
>>9
d。考えてみたらそりゃそうかorz
小中学生レベルだw

18 名前:13 mailto:sage [2009/01/02(金) 20:30:59 ID:dpIHoV0B0]
>>13 で使う関数が抜けていた orz

StructGetString(ByRef pSrc, offset=0) {
 Loop 0xffff {
  char := NumGet(pSrc, offset, "Char")
  offset++
  if (!char)
   break
  buff.=Chr(char)
 }
 return buff
}


19 名前:13 mailto:sage [2009/01/02(金) 20:35:02 ID:dpIHoV0B0]
連投w

■ あいている GUI 番号を探す。 asc=true:昇順(1から探す) / false: 降順(99から探す)
まぁあんまり使わないけど、色々GUI作っている人はどうぞ

GuiFindFreeNo(asc=true) {
 Loop, 99 {
  guiNo := asc ? A_Index : 100 - A_Index
  Gui, %guiNo%:+LastFoundExist
  if (!WinExist())
   return guiNo
 }
}

20 名前:13 mailto:sage [2009/01/02(金) 20:44:24 ID:dpIHoV0B0]
■ 無理やり GUI で InputBox。(一応....モーダル)

MsgBox, % GuiInputBox("いんぷっとボックス", "何か入れてよ")
exitApp

GuiInputBox(title, message, defaultValue="") {
 DialogString := ""
 len := StrLen(defaultValue)
 len := (len < 400) ? 400 : len
 Gui, 99:default
 Gui, +ToolWindow
 Gui, Add, Text, , %message%
 Gui, Font, s12, MS Gothic
 Gui, Add, Edit, -Multi w%len%, %defaultValue%
 Gui, Add, Button, defaultValueault g99GuiClose, OK
 Gui, 99:Show,, %title%
 WinWaitClose, %title%
 return DialogString
 99GuiClose:
  Gui, 99:default
  GuiControlGet, DialogString, ,Edit1
  Gui, Destroy
  return
 99GuiEscape:
  Gui, Destroy
  return ""
}



21 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 20:49:49 ID:QykMUcBv0]
せっかくのところ申し訳ないが、ニーズがあるのか微妙な内容は、
自分のブログかなんかでやってくれないか

22 名前:13 mailto:sage [2009/01/02(金) 20:51:04 ID:dpIHoV0B0]
■ 指定時間(ms単位)だけツールチップを表示する

#Persistent
AutoHideTooltip("このツールチップは5秒で消えます", 5000)

AutoHideTooltip(msg, dur,x="",y="") {
 Tooltip, %msg%,%x%,%y%,20
 SetTimer, AutoHideTooltip_HideTip,-%dur%
 return
 AutoHideTooltip_HideTip:
  Tooltip,,,,20
 return
}


23 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 20:55:16 ID:dpIHoV0B0]
わりぃ

24 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 21:43:40 ID:ydcUNeZl0]
いや、もっとやって

25 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 03:02:16 ID:dU2pkIlN0]
F1::
hogehoge
sleep,5000
return

F1::
hogehoge2
sleep,10000
return

と指定して f1のsleepの間はf2を押しても無視するようにしたいです。
変数使ってifでreturnさせれば良いかなと思っていたのですが>>5をみるとf2を押すごとに割り込みが発生するみたいなのですが
よい方法はないですか?

さらに指定したキー以外の場合は押されたキーをsendしてsleep,3000するようにしたいのですが全キー分部書かないとできないでしょうか?

26 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 03:06:05 ID:dU2pkIlN0]
ああう

F1::
hogehoge
sleep,5000
return

F2::
hogehoge2
sleep,10000
return
です。

27 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 10:45:42 ID:sv6+rPm90]
> f1のsleepの間はf2を押しても無視するようにしたいです
タイマーかな

F1::
if (Key_F1_NG)
return
Tooltip, HogeHoge1
Key_F1_NG:=true, Key_F2_NG:=true
SetTimer, Key_F1_Enable, -5000
SetTimer, Key_F2_Enable, -5000
return

F2::
if (Key_F2_NG)
return
Tooltip, HogeHoge2
Key_F2_NG:=true
SetTimer, Key_F2_Enable, -10000
return

Key_F1_Enable:
Key_F2_Enable:
RegExMatch(A_ThisLabel, "Key_(\w+)_Enable", $)
Key_%$1%_NG=
return


28 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 10:46:19 ID:sv6+rPm90]
> 指定したキー以外の場合は押されたキーをsendしてsleep,3000するようにしたい
面倒なら,、 Hotkey コマンドかな

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
Loop, PARSE, Keys, `,
Hotkey, *%A_LoopField%, SendAndSleep
return

SendAndSleep:
Send, % "{Blind}{" RegExReplace(A_ThisHotkey, "^\W","") "}"
Sleep, 3000
return


29 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 14:26:47 ID:CYbS+lGc0]
#y::WinActivate, Untitled - Notepad
と定義している場合に Win+Yを押そうとして、
Winキーを押してYを押す前に気が変わって、
Winキーを放すとスタートメニューが表示されます。
これが鬱陶しいので表示されないようにして、
スタートメニューを開くには Win+A を使うようにはできるでしょうか?

30 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 14:29:16 ID:Wek1X/3L0]
>>29
そもそもWinキーを割り当てること自体間違ってないか?



31 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 15:02:04 ID:CYbS+lGc0]
>>30
Ctrl, Shift, Alt はアプリごとのショートカットと被る可能性があるので、
アプリによらないグローバルなホットキーには
Winキーを使いたいと思ってるんですが、間違ってるんでしょうか?
とすると修飾シンボルの # の存在意義は何なのでしょうか?

32 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 15:11:50 ID:6IxvyQ1m0]
winの単独押しを殺せばいいだけじゃないの?

33 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 15:28:57 ID:WGxALqxL0]
キーカスタマイズソフトスレで
>autohotkeyで不可能なことをkeybatでとりあえず、これを具体的に言っとけ。
って有ったので質問したらで答えられないからと,こっちに誘導されました.

AutoHotKeyでは,ネットワーク経由で別PCのキー操作って出来るのでしょうか?
一枚のキーボードで複数のPCを操作したいんです.
一部のキーだけ別PCに割り当てとかマクロ動かしたいので切換器では無理...

コマンドスクリプトとかも見たけどネットワーク関連は見あたらず.
ニッチな要望だから対応してないのかな,Vistaに移行できねぇorz

34 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 15:29:59 ID:CYbS+lGc0]
>>32
ありがとうございます
LWin:: Return
#a:: Send, {LWin}
でいけたみたいです

35 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 15:31:41 ID:CYbS+lGc0]
>>33
synergy ってソフトあるけどダメ?

36 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 16:18:02 ID:/iPm/dkm0]
synergyはあるな

37 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 16:42:31 ID:7Ih2hIx60]
AutoHotkeyとXkeymacsを共存して使ってる人いる?

俺の環境だと C-s での検索がまともに動かないんだけど
うまく使えてる人いない?

38 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 17:25:58 ID:wjl7GfuA0]
クリップボードに

<a href="www.esample.com/test.jpg" alt="test.jpg" target="_blank">test.jpg</a>

という文字を入れて、

www.esample.com/test.jpg

という文字だけをクリップボードに抜き出し直させる処理を書きたいんですけど

先頭の <a href=" は、StringTrimLeft命令で先頭9文字を切り抜けばいいのは分かるのですが

その後 " alt=〜 以降の文字を消す処理って、どのように書けばいいでしょうか。
( " alt=〜 以降は、その時によって文字数が変わります)

39 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 17:30:24 ID:sv6+rPm90]
正規表現

40 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 17:36:08 ID:sv6+rPm90]
正規表現を覚えるまでもないと言うのなら、
href=" の位置を探して、それ以降に初めて出現する " を探して切り出せばいい。
(InStr()関数か、 StringGetPos 使って割り出して、SubStr()関数使う)



41 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 19:21:44 ID:9kdhYRBF0]
LOOP, PARSE, ClipBoard, "
で回して
A_LoopFieldに「http:」があったら
適当な変数に入れて抜ければいい

42 名前:38 mailto:sage [2009/01/03(土) 19:36:59 ID:wjl7GfuA0]
皆さんありがとうございます。処理一つ書くにしても、いろいろな方法があるのですね。
41さんの考え方はなかったです。

40さんの教えてくれた InStr() 関数で " の位置を取得して、StringMid関数で抜き出そうと思います。
ありがとうござました。

43 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 21:33:02 ID:E/T17g2E0]
>>27-28
ありがとうございます。
助かりました。

44 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 21:52:54 ID:qEZ7p5R10]
ふと思い立って、OnMessageでWM_TIMERを仕込んで、
SetTimerコマンドを使った時にどういう挙動するか調べてみた。
 
で、SetTimerの数、SetTimerの時間に関わらず、
最小時間のタイマー1つしか動いてないようだった(タイマーID9)。
SetTimerコマンドで1つもタイマーを作っていないと、
WM_TIMERには飛んでこない。
 
という感じで、AHKではタイマー管理用のタイマーを
1つだけ作って管理してるみたいだね。
5000msとか長めのタイマーしか使わない場合でも
最小時間(約10ms)でタイマーが動いてしまうから、
長めのタイマー使う場合は自前でDllCall("SetTimer")
した方がいいような気がするんだけど、神経質になりすぎかな?


45 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 23:55:12 ID:1YuNBWZ60]
あけましておめでとうございます〜。今年も色々と勉強させて頂きます。

ところで前スレ1000まで行きましたか?
DAT誰かうpしてくれると嬉しいのですが。

970までは取得してあるんですけど、旅行中でチェックする時間がなかったもので。

46 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 00:17:55 ID:GfdFtSPf0]
>>45
つ ttp://www.dotup.org/uploda/www.dotup.org0754.zip.html

47 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 00:22:37 ID:dyR0JXVY0]
>>46
素早いうpありがとうございます〜。
助かりました!!

48 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 01:27:04 ID:o7CXEDIT0]
TrackPoint 向けユーティリティの TrackWheelをうp。
ttp://lukewarm.s101.xrea.com/up/file/103.zip

性懲りもなく、やってます。

- レスポンス改善がメイン(レンダリングの遅いコントロールで劇的に改善)
- スクロールバー抽出速度upと精度up。

49 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 02:38:24 ID:97BFjk2I0]
ところで前々スレ1000まで行きましたか?
DAT誰かうpしてくれると嬉しいのですが。

50 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 02:41:30 ID:XwzFKclp0]
>>49
Sleep, 25200000



51 名前:33 mailto:sage [2009/01/04(日) 02:47:14 ID:/TC5+4Sb0]
>>35, 36
やっぱsynergyっすか,実は前試して上手く動かせなかった...
マクロ(簡単なので良いんだけど)とか,一部のキーだけ別PC操作したいとか
微妙にやりたいことが出来ないらしかったんで,直ぐに諦めてしまった
もう一度試してみます.レスありがと

52 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 05:15:57 ID:uxVSj97F0]
別PCの何をどのくらい操作したいのかでも
どんなソフト使うべきか決まるよ。
vncとかsshでも済むかも知れないし。

53 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 07:31:38 ID:p6B3/HqS0]
TrackWheelのreadmeが参考になりすぎて困るので、
Googleサイトとかでページを作って検索にひっかかるようにすると、
幸せになる人がもうちょっと増えると思うんだけども

54 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 09:11:37 ID:JIZG7BfL0]
なんという丁寧なドキュメント・・・

55 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 10:11:15 ID:D35r6xpC0]
>>49
つ ttp://www.geocities.jp/mirrorhenkan/

56 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 10:32:20 ID:1GxGvmcA0]
>>51
synergyよりも最近の流行はこれ
【マウス&キーボード共有】Input Director
pc11.2ch.net/test/read.cgi/software/1226727210/


57 名前:33 mailto:sage [2009/01/04(日) 12:18:27 ID:/TC5+4Sb0]
>>52
MMORPGで二垢するときに,一台のキーボードで操作してます.
WASDで移動QEで旋回,その他キーとCtrl,Altなどの組合せで色々な機能を
普通のキーボード部分は接続してあるPCのキー入力に使い
2nd側のPC操作用に
カーソルキーを2ndPCのWASD,QEを2ndPCのDelete,PageDown
テンキーの0を2ndPCのスペースバー,1〜9を2ndPCの1〜9,.を2ndPCのTABなどなど
F6を押すとトグルで2ndPC側のマクロ発動(実際には3ボタン連打w)してます

それだけではどうしてもまかなえないときもあるので,そのときは
キーボードとマウスを全部2ndPC操作に切り替えてます.

まー,KeyBatで出来ることで設定していったらこうなっちゃったんですが
キーボード共有ソフトだとちょっと無理で
Vistaに対応したキーカスタマイズ系だと複数PC操作出来るの無いなーと

>>56
それは面白そうなので観てきます

スレ違い気味なネタにレスありがとうございます


58 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 12:50:39 ID:1GxGvmcA0]
えらい器用なことやってますねw ネトゲ廃人の気合の入れようは異常w

59 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 12:52:01 ID:o7CXEDIT0]
>>53
乱暴につくってみた ttp://sites.google.com/site/agkh6mze/
CSS使えなくて面倒だった

60 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 14:48:48 ID:FFtevMUI0]
おつー



61 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 15:38:31 ID:dyR0JXVY0]
>>59
乙です
本当にすごいw参考になるです

62 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 16:32:52 ID:1GxGvmcA0]
すげえ力作ww

63 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/05(月) 02:28:31 ID:RJg40VRS0]
>>48

いつのまにかExcelみたいな変態ポインタも消えるようになってるし
スクロールが随分となめらかになってて(・∀・)イイ!!
ただ、秀丸の分割ペイン切替がなくなったのは秀使いとしては地味にクリティカルかも。

組込みで使おうとして気になった点とか

・TW.ahkの後に関数集などのahk(行頭にreturnがないもの)を Includeしようとするとエラーになる。
 環境:WinXP SP2 AHK 1.0.47.06 (original) 行末ラベル TW_EOF: が原因ぽい。
 行頭の if (A_LineNumber != 1)ってのは組込み用対策なのかな。
 これって常に1になる (組込みで使う場合も A_LineNumberはファイルごとの行数になる)ので
 いまいち機能してないような。

・OnExitの任意指定ってなくなった? TW_Initialize()の後に 無理矢理 OnExitラベル変更してるけど
 ExitAppの前に TW_End()を突っ込んでやればOK?

・.ini/.icoを相対パスで指定した場合、基準をA_LineFileと同じディレクトリにして欲しいとか言ってみるテスト
 組込み時もデフォルト設定のままで使えるようになってると大変嬉しい

64 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/05(月) 12:47:49 ID:RJg40VRS0]
ついでにも一個要望
本末転倒だがチョン押し時の Send,{Mbutton} をヌッ殺すオプションが欲しい。
というよりタイムアウトした場合用の TW_POSTACTION が欲しい。
オートスクロールは使わないがAHKからHookかけてMbutton使いたい用途は山ほどある。

数行足すだけで済むものなので今は適当に改造して使わせてもらってますが、
更新が頻繁で追っかけるの大変になってきたので、機能として盛り込んでもらえると嬉しいなっと。

65 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/05(月) 14:08:25 ID:K2RPyvk10]
> 秀丸の分割ペイン切替がなくなったのは秀使いとしては地味にクリティカル
楽だったので組み込んだ

> 組込みで使う場合も A_LineNumberはファイルごとの行数になる
知らなかったorz。無駄だから消した

> OnExitの任意指定ってなくなった?
無くなった。でも呼ばなくても平気なはずなので、Initから外した。一応Docに追記した。

> 基準をA_LineFileと同じディレクトリにして欲しい
採用。俺も面倒だったw

> タイムアウトした場合用の TW_POSTACTION
既にあるよ。

ttp://sites.google.com/site/agkh6mze/trackwheel
- ページが大きいので分割した
- 秀丸用対応の復活(Autoでやる)
- ワーキングディレクトリをTrackWheelのあるディレクトリとした(人によってはデカい)
- IEの設定が間違ってたorz

66 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/05(月) 14:10:00 ID:K2RPyvk10]
>> タイムアウトした場合用の TW_POSTACTION
>既にあるよ。
Iniにはないので自分で書いてね、ってこと

67 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/05(月) 17:30:40 ID:RJg40VRS0]
>TW_POSTACTION
すんませんまさに望んでた通りの動作でした。
TWの外に MButton: 置いて自制御する場合と混同してました。

>>65
(・∀・)イイ!!
秀の場合は HorzをScroll2に指定するといい感じ。
全般的にScrooll(つまみドラッグエミュ)は慣れてないせいか操作が難しい。
うまいことコツが掴めるようになると快適なのかな。

68 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/05(月) 20:40:49 ID:DVBHOCyB0]
SQLiteModule
version1.1
ttp://sites.google.com/site/63cabinet/Home
内部仕様変更だけ
Dynamic Functionはいまだ理解できず
(どんなとき使えばいいんだ?)

勝手に便乗
昔Google Page Createrで同じようなの作ったけどすぐ削除された
個人的ファイル置き場にちょうどいいかな

69 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/05(月) 21:00:13 ID:K2RPyvk10]
>>68
乙。
たとえば、、、多分 SELECT文の結果をグローバル変数の配列とかにすると思うんだけど、
その最中に Loop して結果表を1行ずつフェッチする過程があるはず、
で、その行Loop中に他の関数を呼び出してデータ処理はお願いって風に出来ればなぁ、、、と思っただけ。
グローバル変数消費しないし、他の言語では結構見るタイプ。
まぁ、↓だと10カラムしか対応できなくて格好悪いけどこんな感じ。

; モジュール側
GetSelectToCallback(db, sql, funcName) {
 Loop {
  行取得する
  %funcName%(rowNo, colCount, col1,col2,col3,col4,col5,col6,col7,col8,col9,col10) ; 行をそのまま渡す!
 }
}

; コールする側
LV_Delete()
GetSelectToCallback(db, "SELECT * FROM HOGE", "HogeFunc")
SB_SetText(LV_GetCount() . "件")

HogeFunc(rowNo, col1="",col2="",col3="",col4="",col5="",col6="",col7="",col8="",col9="",col10="") {
 ; ダイレクトにリストビューに追加する
 LV_Add("", col1, col2, col3, col4, col5, col5, col6, col7, col8,col9,col10)
}

70 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/05(月) 21:41:20 ID:DVBHOCyB0]
>>69
これは分かりやすい

理解したけど問題は列数か
頑張ってみます



71 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/06(火) 18:24:12 ID:RYrDeuzr0]
TrackWheel はコア部分変更以来、小さく動かしてゆっくりスクロールする動作が苦手になってる感じ

>行数 = Round((移動量-動作閾値分の補正) / 動作感度)

これだと tY=2 sY=10 ($Default) のとき Yが 7以上じゃないとスクロールが発生してくれないけど
しきい値を越えたら、まずは 1行動いてくれるほうがなめらかになる感じ。
value := (value-t+s)//s
とか。

あとWindowClassやControlClassの指定は部分じゃなくて前方一致?
ContexterのリストビューがスクロールしないのでSpyで見たら
WindowsForms10.SysListView32.app32 とかいう長ったらしいコントロール名だった。

72 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/06(火) 18:54:27 ID:w/0/pa630]
TrackWheelで左右に動かすとY軸が動くようにしているのは俺だけだろうな
上下で動かすよりなんとなく楽な感じがするんだよね

73 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/06(火) 19:32:47 ID:1sWyUvxb0]
> しきい値を越えたら、まずは 1行動いてくれるほうがなめらかになる感じ
そういえば、前はそうなってたわ。 Round じゃなくて Ceil 使えばいいか

> 部分じゃなくて前方一致?
誤爆がね、ってことでCaseLessの完全一致。
ワイルドカードで *Hoge* と出来るようにするよ。

つか、さすがに流れの遅いここで、このネタでスレが埋まるのはそろそろ悪い気がしてきた。。。
ブログでもいいんだけど気軽さがなぁ...この辺使わして貰っても良いかな
ttp://lukewarm.s101.xrea.com/test/read.cgi/bbs/1092315194/

74 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 22:44:52 ID:dP98pG5w0]
横から見てるだけでもいろいろ参考になるから、このまま続けてもOKと俺は思う

75 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/09(金) 00:00:05 ID:dZ7SwV0k0]
じゃ、何人かは使っているらしいんで
ttp://sites.google.com/site/agkh6mze/trackwheel

[V.5]
- Altキー押下時にスクロール後にSleepする設定を加えた
- サムドラッグエミュレート抑止オプションを追加
- スクロール方法の自動判別で Scroll2 を優先するオプションを追加(V.3と同じ判定になる)
- デバッグコードが残っていたのを削除
[V.4]
- 設定しても何もなかったオプション項目に意味を持たせた
- 【重大】スクロール量の算出方式で閾値を超えた時に1行動くようにした >>73
- クラス名定義でワイルドカードで中間一致を追加 >>73

76 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/10(土) 10:56:35 ID:Uc2zWhw/0]
VistaでAutoHotkeyを使用しております。少し質問をさせて頂きたいのですが
CCleanerをウィンドウの位置やサイズを変更するため簡単なスクリプトを
書いて見たのですが、機能しません同じパターン等で他のソフトを多数、使用して
も問題無いのですが、何が原因なのでしょうか、御存じの方宜しくお願いします。
Run,"C:\Program Files\CCleaner\CCleaner.exe"
WinWaitActive,Piriform CCleaner
WinMove, A, , 40, 100, 1200, 900
ExitApp
以下のスクリプトでもCCleanerだけ反応ありません。
#NoTrayIcon
^1::WinMove, A, , 40, 100, 1200, 900
^0::ExitApp
return
CCleaner - Home
www.ccleaner.com/
>>>>>>>>>>( Window Title & Class )<<<<<<<<<<<
Piriform CCleaner
ahk_class #32770

77 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/10(土) 12:08:16 ID:xVdEkJsk0]
>>76
あまり参考にならないかもしれないけど、うちの環境では問題なく動作したよ。
OS:WindowsVista
CCleaner 2.15.815

78 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/10(土) 12:16:41 ID:RDJAsW630]
>>76
俺も試してみたがちゃんと機能したよ

79 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/10(土) 12:19:13 ID:RDJAsW630]
あ、ちなみに
OS:WinXP SP3
CCleaner v2.14.750

そしてアップデートあるのに気がつきました

80 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/10(土) 12:36:32 ID:Uc2zWhw/0]
レス感謝です。CCleaner 2.15.815で同じバージョンですね。
先ほど眠っていたXPに同じくセットすると、此方は問題無く
起動しました。因みにVistaのエアロはどうなってますか
私はオンオフともやはりCCleanerだけ動作しません。
77氏は問題無くVistaでも動作と言う事は環境問題かな



81 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 12:53:14 ID:9ldsyH9N0]
思ったより難しそうだけど、習得率はVBSとどっちが簡単ですか?

82 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 13:54:08 ID:QS/Psi5l0]
言語仕様としてはVBSの方が整理されている。

でも、ほとんどの人がAHKを使う理由は、キー割り当てや簡易GUI構築など、
VBSでは代替できない機能が目当てだと思うんで、
「習得のしやすさ」で選ぶ二択じゃない気がする。

83 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 14:24:04 ID:9ldsyH9N0]
ちらっと見ただけだけど、面白そうな事が出来そうだな感じだったので
難易度はどれくらいなのかなと思って
wshくらいの難易度で覚えられるならやってみたいけど
あまり本格的なものだとすぐあきらめそうだなと

84 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 14:38:13 ID:XsghDILe0]
wsh(VBA,JavaScript)ができるなら大丈夫だろ。
俺もなんとかなってる。

むしろ、AHKはかなりDSL色が強くて非常に独自言語っぽく、
他の言語だと簡単に書けたり、どの言語も同じように書けるのに、
AHKは変な書き方しなくちゃならなかったり、ちょっとクセがある。


85 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 15:16:28 ID:BZ/65qiJ0]
>>81
おいらも2週間前にAutoHotkeyを知ったばかりの新参だけど、
「面白そうなこと」というのが具体的に決まっているのであれば、
やってみたらいいんじゃないかな。

ちなみに、おいらは前スレで紹介されてたモールス信号スクリプトを使って和文を打てるようにしたり、
物理演算シミュレーションソフトのPhunにちょっと遊べるを機能を追加したりして遊んでる。
後者のスクリプトは下手なりにソースコード晒して公開したのにウィルスと疑われてるけどなw
チラ裏すまそ。

86 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 16:33:37 ID:9ldsyH9N0]
レスありがとう

ほんとにまだちょっと見た程度なので
具体的にやりたいものが決まってるわけではないんだけど
いろいろ応用が利きそうかなと
途中で挫折しなかったらまた来てまます

87 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 17:46:00 ID:dEH4tJQQ0]
キー置き換えっつースタンスと、バッチ代わりとか簡易GUI作成ツールとかってスタンスで
大分違いが出そう。。。

mayu+WSH(+マウ筋)から AHKに完全移行したけど、最初はキー置き換えだけしかしなかったなぁ

88 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 19:41:53 ID:JFwvyFAk0]
mayu+AHK(非常駐スクリプト)で運用。

89 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/15(木) 01:54:28 ID:1FFYSN/50]
質問です。
右クリックを押している間、
右クリックを連打するスクリプトってどう書けばいいんでしょうか?

If Rbutton
loop
{
click,rbutton
sleep, 100
}

試行錯誤してもこの程度しかわかりませんでした。
押し下げ状態とかの記述とかも流行らせるを見てもよくわかりません。
よろしくお願いします。

90 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/15(木) 02:33:30 ID:kckjR1IW0]
4と出る筈が、何で13になるの?
ichi:=1
tasu:=+
san:=3
msgbox,% ichi tasu san
return



91 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/15(木) 02:38:56 ID:FprEOzFe0]
>>90
演算子って変数に代入できるのか?

92 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/15(木) 02:50:21 ID:7aT1UIeA0]
> ichi tasu san
は、
文字列結合してを出力しろっていってるのと同じ、
つまり↓
> ichi . tasu . san
または
> %ichi%%tasu%%san%

javascript の eval とか python の exec に相当するのってahkには無い・・・はず

93 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/15(木) 03:31:06 ID:kckjR1IW0]
>>92
Σ(゚д゚|||)ガーンよく分かりました

>>91
msgbox, % ichi + san
なら4になるのに。

dynamic function calling (1.0.47.06)でどうにかならない?

94 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/15(木) 12:53:57 ID:zBxweuAX0]
>>89
RButton::
Loop
{
If(!GetKeyState("RButton","P"))
Break
MouseClick, RIGHT
Sleep, 100
}
Return
 
>>93
Eval関数
ttp://www.autohotkey.com/forum/viewtopic.php?p=107547#107547


95 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/15(木) 13:05:17 ID:1FFYSN/50]
>>94
ありがとう!!

96 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/15(木) 14:48:14 ID:XSOAc2jv0]
>>94
eval良いね

97 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/15(木) 19:56:10 ID:xL6BrQlZ0]
とあるゲームで、キーにマウス移動+クリックという作業を割り当てたのですが
sendplayをやろうとすると反応しなくなります。ちなみにOSはvistaで下のようなやつです

send play
a::
BlockInput, mousemove
send,{a Down}
send,{a up}
sleep,100
mousemove,0,0
click
sleep,100
mousemove,0,0
click
BlockInput, mousemoveoff

98 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/15(木) 20:52:43 ID:mcfS5KF00]
一行目は SendMode Play じゃないの?

それから「とあるゲーム」じゃ、色んなSendModeでやってダメなら、あきらめろとしか言えないと思うが

99 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/15(木) 23:19:11 ID:kckjR1IW0]
>>94
ありがとう(*゚∀゚)=3

100 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/16(金) 15:59:07 ID:9TC51kow0]
ある座標値にあるウィンドウのウィンドウハンドルを取得するにはどう書けばいいんでしょうか?









[ 続きを読む ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<194KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef