[表示 : 全て 最新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以降も参照

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%
}






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

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

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