5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

AutoHotkey スレッド part7

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

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

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

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

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

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

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

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

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

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

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

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

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

10 :名無しさん@お腹いっぱい。: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 :名無しさん@お腹いっぱい。: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 :名無しさん@お腹いっぱい。: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 :名無しさん@お腹いっぱい。: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 :名無しさん@お腹いっぱい。: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 :名無しさん@お腹いっぱい。: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 :名無しさん@お腹いっぱい。:2009/01/02(金) 17:57:57 ID:YhIzrby/0
>>10-15
新春早々為になるテク乙です

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

18 :13: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: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: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 :名無しさん@お腹いっぱい。:2009/01/02(金) 20:49:49 ID:QykMUcBv0
せっかくのところ申し訳ないが、ニーズがあるのか微妙な内容は、
自分のブログかなんかでやってくれないか

22 :13: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 :名無しさん@お腹いっぱい。:2009/01/02(金) 20:55:16 ID:dpIHoV0B0
わりぃ

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

25 :名無しさん@お腹いっぱい。: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 :名無しさん@お腹いっぱい。:2009/01/03(土) 03:06:05 ID:dU2pkIlN0
ああう

F1::
hogehoge
sleep,5000
return

F2::
hogehoge2
sleep,10000
return
です。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

という文字を入れて、

http://www.esample.com/test.jpg

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

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

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

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

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

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

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

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

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

44 :名無しさん@お腹いっぱい。: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 :名無しさん@お腹いっぱい。:2009/01/03(土) 23:55:12 ID:1YuNBWZ60
あけましておめでとうございます〜。今年も色々と勉強させて頂きます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


57 :33: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 :名無しさん@お腹いっぱい。:2009/01/04(日) 12:50:39 ID:1GxGvmcA0
えらい器用なことやってますねw ネトゲ廃人の気合の入れようは異常w

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

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

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

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

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

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

65 :名無しさん@お腹いっぱい。: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 :名無しさん@お腹いっぱい。:2009/01/05(月) 14:10:00 ID:K2RPyvk10
>> タイムアウトした場合用の TW_POSTACTION
>既にあるよ。
Iniにはないので自分で書いてね、ってこと

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

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

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

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

69 :名無しさん@お腹いっぱい。: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 :名無しさん@お腹いっぱい。:2009/01/05(月) 21:41:20 ID:DVBHOCyB0
>>69
これは分かりやすい

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

71 :名無しさん@お腹いっぱい。: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 :名無しさん@お腹いっぱい。:2009/01/06(火) 18:54:27 ID:w/0/pa630
TrackWheelで左右に動かすとY軸が動くようにしているのは俺だけだろうな
上下で動かすよりなんとなく楽な感じがするんだよね

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

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

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

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

75 :名無しさん@お腹いっぱい。: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 :名無しさん@お腹いっぱい。: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
http://www.ccleaner.com/
>>>>>>>>>>( Window Title & Class )<<<<<<<<<<<
Piriform CCleaner
ahk_class #32770

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

If Rbutton
loop
{
click,rbutton
sleep, 100
}

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

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

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

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

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

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

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

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

94 :名無しさん@お腹いっぱい。: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 :名無しさん@お腹いっぱい。:2009/01/15(木) 13:05:17 ID:1FFYSN/50
>>94
ありがとう!!

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

97 :名無しさん@お腹いっぱい。: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 :名無しさん@お腹いっぱい。:2009/01/15(木) 20:52:43 ID:mcfS5KF00
一行目は SendMode Play じゃないの?

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

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

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


101 :名無しさん@お腹いっぱい。:2009/01/16(金) 17:07:00 ID:ys4XQ/JO0
WinGetのcmdにListを指定して全てのハンドルを取得して、
ループでWinGetPosして判定すればいいんじゃね

102 :名無しさん@お腹いっぱい。:2009/01/16(金) 17:55:22 ID:8WDRn3Rn0
WindowFromPointをdllcall

103 :名無しさん@お腹いっぱい。:2009/01/17(土) 15:23:11 ID:15HQKhST0
Windowsキーが長押しかどうか判定するために
http://www.autohotkey.com/forum/topic16951.html
のMorseを使って下のようにしても、"1"が返ってくることがありません。
LWin以外のaとかなら、ちゃんと長押しで"1"が返ってきます。
Windowsキーが長押しされたかどうか判定するにはどうすればいいでしょうか?

LWin::
p := Morse()
MsgBox, %p%
Return

104 :名無しさん@お腹いっぱい。:2009/01/17(土) 16:36:46 ID:AAdcRplY0
LWin::MsgBox, % "long = " . LongPress(A_ThisHotkey, 500)

LongPress(key, limit) {
Loop
if !GetKeyState(key, "P")
break
return A_TimeSinceThisHotkey > limit
}


105 :名無しさん@お腹いっぱい。:2009/01/17(土) 17:35:30 ID:CwKiW6jb0
>>103
(Pert6 >>782より転載)
これを改造すればいいよ。

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

106 :名無しさん@お腹いっぱい。:2009/01/18(日) 23:50:13 ID:XmkZ8Jyg0
>>104>>105
遅くなりましたがありがとうございます。

>>104 を試してみましたが、>>103 と同じように
LWinでは長押ししても "0" しか返ってきませんでした。
LWin じゃなくて a ならばちゃんと長押しで "1" が返るんですが、
私の環境だけでしょうか?それとも LWin は特別なんでしょうか?

>>105 はよくわからないところもあって改造はできてませんが、
GetKeyState で判定して時間を計るという点では一緒なのかなと・・・

107 :名無しさん@お腹いっぱい。:2009/01/18(日) 23:58:42 ID:svY9DCGD0
>>101-102

お礼が送れて本当にすみませんでした。レスありがとうございました 
DllCall("WindowFromPoint", Int, X, Int, Y, UInt)

で、コントロールのウィンドウハンドルを取得できる事まで分かったのですが
ここからウィンドウを取得するにはどうしたらいいのでしょうか・・・?

108 :名無しさん@お腹いっぱい。:2009/01/19(月) 00:02:32 ID:U3VSUvzG0
正解出してやってんのに馬鹿じゃねーの

109 :名無しさん@お腹いっぱい。:2009/01/19(月) 17:56:30 ID:Qrvr5YD20
日付の計算で2009/01/01の三日前を自動で出したいときどう書けばいいのかな
両方決まった形式じゃないと計算できなくて不便
20090101-3dayとかできたらいいのに

110 :名無しさん@お腹いっぱい。:2009/01/19(月) 20:21:14 ID:TbOnLrY30
NowDate = 090101
NowDate -= 3, Days
じゃ駄目?

111 :名無しさん@お腹いっぱい。:2009/01/19(月) 20:26:47 ID:TbOnLrY30
と書いたけど引き算は無理なのか
足し算はいけるのになんだこの仕様

ちなみに足し算する時は20090101〜のYYYYMMDDHH24MISS形式にしないと無理

112 :名無しさん@お腹いっぱい。:2009/01/19(月) 21:04:28 ID:V0nF7IjH0
Date = 20090101
Date += -3, Days
が正解というクソ仕様ですよ

113 :名無しさん@お腹いっぱい。:2009/01/19(月) 21:30:15 ID:Qrvr5YD20
おお、足し算でマイナス指定してやるのか
ありがとう、できたよ

114 :名無しさん@お腹いっぱい。:2009/01/19(月) 21:57:36 ID:TbOnLrY30
なるほど
時々よく分からない仕様があるな

115 :名無しさん@お腹いっぱい。:2009/01/21(水) 20:52:27 ID:H3grfUJE0
カーソルキーのleftを押したら、leftを押す>leftを離す>leftを押す に、
rightを押したらrightを押す>rightを離す>rightを押す になるスクリプトはどう書きますか

116 :名無しさん@お腹いっぱい。:2009/01/21(水) 21:06:57 ID:JC9BnGFu0
そう作ればいいんじゃないの?

117 :名無しさん@お腹いっぱい。:2009/01/22(木) 01:33:06 ID:MvHrhn0R0
ホームページを見てるときに、
特定の画像(文字)が画面の指定した位置に来るようにする、ってできるでしょうか?

例えば、ホームページの[目次]という文字を、
画面の上の方に来るまでブラウザを下にスクロールさせたい、
という感じなんですが。

ImageSearchでできそうなんですが、
スクロールさせつつImageSearchを使う、ってのがよく解らないんです。

118 :名無しさん@お腹いっぱい。:2009/01/22(木) 02:44:50 ID:ZAtgnYeW0
>>117
そもそも1680x1050などの広い画面でブラウザ開いた時なんか
スクロールバーが出ないから対応できないと思うんだけど

119 :名無しさん@お腹いっぱい。:2009/01/22(木) 03:14:06 ID:t7tkDpYz0
>>117
Loop
 {
 1スクロールさせるボタンをsend
 imagesearch
  if 合致したら抜ける
 }

でできそうな気がする

120 :名無しさん@お腹いっぱい。:2009/01/22(木) 09:11:04 ID:7L/ljDtu0
DOM使う方が確実かと

121 :名無しさん@お腹いっぱい。:2009/01/23(金) 18:33:08 ID:33n/xRQ70
使っているPCの、物理メモリ容量について質問です。

はやらせるページ管理人氏の GetMemoryState(0,1) を使わせてもらいました。
物理メモリが2GB以内なら問題ないのですが、2GB以上積んでると、
戻り値が2GBちょっとで頭打ちになり、それ以上増えないようです。

タスクマネージャや、コンピュータのプロパティで表示される物理メモリ容量の、
うまい取得方法は無いでしょうか。

122 :名無しさん@お腹いっぱい。:2009/01/23(金) 19:58:19 ID:WXMb4uvA0
ttp://msdn.microsoft.com/ja-jp/library/cc430087.aspx
> Intel x86 プロセッサを採用し、2GB を超え、4GB 未満のメモリを実装したコンピュータでは、
> GlobalMemoryStatus 関数は MEMORYSTATUS 構造体の dwTotalPhys メンバに常に 2GB という値を返します。
> 同様に、実際の利用可能なメモリが 2〜4GB の場合、MEMORYSTATUS 構造体の dwAvailPhys メンバは
> 切り捨てられて 2GB になります。

GlobalMemoryStatusExにすればいいんじゃないかな

123 :名無しさん@お腹いっぱい。:2009/01/24(土) 00:49:51 ID:GQFssSOI0
iTunesでXButton2を押すと次の曲に移ってしますので、それを無効にしたいと考えているのですが、

#IfWinActive,iTunes ahk_class iTunes
XButton2::return

とやっても

#InstallMouseHook

を追加してもやはり制御しきれません。
何か方法はありませんでしょうか?

124 :名無しさん@お腹いっぱい。:2009/01/24(土) 10:47:12 ID:EIN0jwLq0
使ってないからわからんが、タイトル(Class)の指定はそれで合ってるのか?

125 :名無しさん@お腹いっぱい。:2009/01/24(土) 15:42:42 ID:EIN0jwLq0
AHKの標準出力について

-- StdOut.ahk -----------
FileAppend, OutPut test,*
exitapp
-------------------------

AutoHotkey.exe StdOut.ahk > aaa.txt
リダイレクト取込みしてやるとちゃんと出力されてるのに

AutoHotkey.exe StdOut.ahk
ってプロンプトから実行しても画面に文字が表示されないのはなんでなんだろ?

126 :名無しさん@お腹いっぱい。:2009/01/24(土) 15:58:16 ID:dQDuGK7i0
>>125
仕様らしい。ダミーでパイプをかませばいいらしい。以下、公式リファレンスより

However, text sent to stdout will not appear at the command prompt it was launched from.
This can be worked around by piping a script's output to another command or program.

For example:

1) "%ProgramFiles%\AutoHotkey\AutoHotkey.exe" "My Script.ahk" |more

2) For /F "tokens=*" %L in ('""%ProgramFiles%\AutoHotkey\AutoHotkey.exe" "My Script .ahk""') do @Echo %L

127 :123:2009/01/24(土) 16:06:55 ID:jTY3HDp10
>>124
iTunesに対しての他のホットキーは効いてますし、

XButton2::Msgbox

とすると、次の曲に切り替わった上でメッセージボックスが表示されてしまうので、
おそらくウィンドウの指定は間違っていないと思うのですが・・・

128 :名無しさん@お腹いっぱい。:2009/01/24(土) 16:12:39 ID:EIN0jwLq0
>>126
おお、出た出た。dクス
バッチファイル用の何かかと思ってスルーしてたけど 1) 2)ともプロンプトからでけた。

しかし "fputs 標準出力 プロンプト 表示されない" とかでググッても
StdErrはリダイレクトされないは書いてあっても
StdOutが表示されない事例は見つからなかったんだよね。
どうやったらそういう状態にできるのか逆に不思議だ。

129 :名無しさん@お腹いっぱい。:2009/01/24(土) 21:41:13 ID:deghcbtf0
閉じるボタンを押すとタスクトレイに最小化するアプリを使ってるのですが
WinCloseでもWinKillでも終了してくれずにトレイに移動するだけです
今はSendでメニューバーにキーを送って無理矢理終了しているのですが
もっとスマートなやり方があれば教えてください

130 :名無しさん@お腹いっぱい。:2009/01/24(土) 22:59:20 ID:v2e3ODaN0
クリップボードの内容を張り付けたかどうかを監視する方法ありませんか?
Onclipbpardchangeでコピーは監視出来るみたいですが張り付けを監視する方法がわかりません


131 :名無しさん@お腹いっぱい。:2009/01/25(日) 00:16:00 ID:fIh3Ix950
>>127
#IfWinActive→IfWinActive

132 :名無しさん@お腹いっぱい。:2009/01/25(日) 00:22:51 ID:fIh3Ix950
>>129
フィニを使う http://www.vector.co.jp/soft/win95/util/se176919.html

133 :名無しさん@お腹いっぱい。:2009/01/25(日) 00:32:19 ID:ZG80n0++0
>>129
WinKillは、WinCloseでダメだったらProcessでKillするから、結局WinClose止まりってことだね。
Process, Closeが問題あるなら、WinKillも使わないほうがいい。
Alt+F4でもダメかな・・・

134 :名無しさん@お腹いっぱい。:2009/01/25(日) 02:22:31 ID:tSgUCSWd0
ahkの初期実行部分で、実行してるマシンのOSを判別させてるんだけど、
Windows7で実行してみたら、PC名の変数が「WIN_VISTA」になった。

これだと本当のVISTAとWin7が判別できないね。
なんか適切な判別方法ないかな?

135 :名無しさん@お腹いっぱい。:2009/01/25(日) 14:38:08 ID:zq9D9YZQ0
何かシステム系DLLのヴァージョンを調べるとか

136 :名無しさん@お腹いっぱい。:2009/01/25(日) 19:32:57 ID:xTILthLA0
ver というコマンドプロンプトで使えるコマンドがあってだな

137 :名無しさん@お腹いっぱい。:2009/01/25(日) 22:59:29 ID:C2p4wSr10
報告その一

流行らせるページのリファレンス、ControlGetの説明の項
>Choice
>リストボックスやコンボボックスで選択されている項目の番号
>(TListBox/TComboBoxコントロールにも対応)
ってなってるけど

ControlGet,var,Choice,,ComboBox1,画面のプロパティ
msgbox,%var%

でやってみたら、選択されている項目の"番号"ではなく"文字列"が取れた。

ちなみに本家ヘルプの説明はこんな感じ
>Choice: Sets OutputVar to be the name of the currently selected entry in a ListBox or ComboBox.
>To instead retrieve the position of the selected item, follow this example (use only one of the first two lines):
>
>SendMessage, 0x188, 0, 0, ListBox1, WinTitle ; 0x188 is LB_GETCURSEL (for a ListBox).
>SendMessage, 0x147, 0, 0, ComboBox1, WinTitle ; 0x147 is CB_GETCURSEL (for a DropDownList or ComboBox).
>ChoicePos = %ErrorLevel% ; It will be -1 if there is no item selected.
>ChoicePos += 1 ; Convert from 0-based to 1-based, i.e. so that the first item is known as 1, not 0.

138 :名無しさん@お腹いっぱい。:2009/01/25(日) 23:27:14 ID:NAyEbsnB0
むしろ、番号が取れなくて困った覚えがある。
日本語取得出来たけど再利用出来ないよ!な感じで

139 :名無しさん@お腹いっぱい。:2009/01/25(日) 23:28:39 ID:C2p4wSr10
報告その二

TrackWheelでタイトルバーをクリックしてもアクティブウィンドウが切替わらなくなることがあるです。
[Alt]+[Tab]で切り替えてやると復活するが、以降のドラッグ操作に支障が出る。
 → ドラッグ&ドロップが効かなくなる。(ポインタはドラッグの絵になるがドロップができない)
 → マウスジェスチャ対応アプリでマウスジェスチャが効かなくなる。
スクリプトをReloadしても直らず、諦めてしばらく使ってるといつの間にか復旧してる。

vmWareのゲストOS画面(MKSEmbedded)上でうっかりスクロールさせようとした時によく起きた。
vmWareを一切起動させてなくても時々なる。

再現パターンは今のとこ不明だけど、発生直前に本来のマウスポインタとスクロールポインタが
二重で表示されていたような気がする。
WinXP SP2 AHK ver 1.0.47.06 AutoHotkey.iniに組込み利用


あとスクロール制動についての感想というかできれば要望です。
(これは多分に好みの問題かも知れないので気に入らなかったら無視して下さい)
横スクロールしたい時にブレで縦方向までスクロールしてしまうことがよくあり、縦横自在杉な制動が
ちょっと仇になっているような印象を受けました。

ThinkPad標準のスクロールではあまりその辺を意識したことがなかったんですが
直前に移動した位相(xもしくは、y方向)で固定し、別の位相へのスクロール時は閾値と感度を
通常より多めに取る。もしくは縦横の移動を同時には行なわない。
(xのが移動量が多いなら横のみスクロールさせてy値はあえて無視)
みたいな対処が入っているような気がします。

140 :名無しさん@お腹いっぱい。:2009/01/26(月) 00:08:35 ID:OzaHopDg0
>>139
TrackWheelの中の人だす。

> TrackWheelでタイトルバーをクリックしてもアクティブウィンドウが切替わらなくなることがあるです。
> [Alt]+[Tab]で切り替えてやると復活するが、以降のドラッグ操作に支障が出る。

認識していまつ。同症状がこっちでも起きていて、原因は分からない。orz。
こっちは、再現性っていうか、今のところFireFoxでしか起きないんだけど・・・。
申し訳ないが、今のところメドはなし・・・です。

> 再現パターンは今のとこ不明だけど、発生直前に本来のマウスポインタとスクロールポインタが
> 二重で表示されていたような気がする。
ふむ。。。TrackPointのツールだとFireFoxの場合カーソル消えない(というかちらつく)し、ちょっと手がかりかも。

不具合でどうしようもねぇ!っていうのなら、以下のオプションをIniで設定して様子見してくれるとありがたい。
マウスポインタは消えないけど・・・
> ; マウスカーソル消去を無効にする場合は 1、しない場合は 0 にする
> NoHide=1

> 横スクロールしたい時にブレで縦方向までスクロールしてしまうことがよくあり、縦横自在杉な制動が
> ちょっと仇になっているような印象を受けました。
> :
> 直前に移動した位相(xもしくは、y方向)で固定し、別の位相へのスクロール時は閾値と感度を
> 通常より多めに取る。もしくは縦横の移動を同時には行なわない。
これは、好みっつーか仕様の範囲だね。数式いじるだけだから実現は楽なはず。
オプションで変えられるようにすればいいだけだから、気が向いたらやってみる。

141 :名無しさん@お腹いっぱい。:2009/01/26(月) 06:04:32 ID:VuJfFU6y0
trackwheel便利なんだけど
外付けマウスまで同じ挙動になっちゃうのは避けられないのかな。

142 :名無しさん@お腹いっぱい。:2009/01/26(月) 09:52:19 ID:z8Mo5hpU0
>>139
dです
発生頻度はそれほど高くないんだけど、リブート以外の復旧方法がわからないのが痛いところ。

>気が向いたらやってみる。
>申し訳ないが、今のところメドはなし・・・です。
更新とか急かすつもりはないんで報告も参考程度で見といて下さい。
もうTrackWheel依存しすぎでThinkPad標準のドライバには戻れない状況ですわ。

>ふむ。。。TrackPointのツールだとFireFoxの場合カーソル消えない
そういえばVMWareも消えないですね。ゲストOSにマウス制御全部渡してるらしくトラックポイントでの
スクロールも一切できないです。
ちなみにVmWareのゲストOS内でTW.ahkを動かすことはできます。
でも仮想マシン内は普通よりディレイが発生しやすいためかスクロールはカクカクで例の現象も
比較的高頻度で起こってた気がします。

直近での発生はVMではなく Jane Styleのスレ欄だったんだけど
・その前にシェルが一回落ちていて窓切替にやたら時間がかかる状態だった。
・トラックポイント操作してもスクロール制御ができてない(間に合ってない)うちにmbuttonを離してしまった。
のが原因だったような。(いやそもそもシェルが落ちてる段階で参考にならないか)

> NoHide=1
今すでに現象が起こってるので、後でOSリブート後に試してみます。
あとTW_POSTACTIONを設定してるのでそれ解除しても起こるかも見てみます。

143 :名無しさん@お腹いっぱい。:2009/01/26(月) 09:53:17 ID:z8Mo5hpU0
レス番まちがい
×139
>>140

144 :名無しさん@お腹いっぱい。:2009/01/27(火) 14:21:32 ID:paF95q4q0
ControlGetTextとかって「ahk_pid %pid%」が上手に使えない。
「ahk_id %id%」等なら使える。はまった。

145 :名無しさん@お腹いっぱい。:2009/01/27(火) 17:39:54 ID:lduHMXnK0
Jane Doe Styleってなんでタスクバーで左右になべて表示ってやると
二つ分として扱われるの?これAHKでなんとかならん?

146 :名無しさん@お腹いっぱい。:2009/01/27(火) 17:45:58 ID:Ny4HM/7G0
>>132,133
遅くなりましたがありがとうございました

147 :名無しさん@お腹いっぱい。:2009/01/27(火) 18:26:19 ID:eAnAnnBW0
>>144
一つのプロセスで窓はいくつでも持てるんだぜ。

>>145
以下を実行した直後なら・・・
WinSet, Style, -0x10000000, ahk_class TApplication ; WS_VISIBLE

148 :名無しさん@お腹いっぱい。:2009/01/27(火) 19:56:41 ID:t0VmE1Ht0
質問です
特定の動作をさせる為のホットキーを設定ファイルで設定する方法はありませんか?

例えば設定ファイルに#Eと書かれていればwin+Eで動作
#Qと書かれていればwin+Qみたいな感じで

149 :名無しさん@お腹いっぱい。:2009/01/27(火) 20:15:43 ID:X4tsXHNf0
僕も質問です。
アプリ上で開いているファイルの名前を取得する方法ってありますか?

例えば、エディタでc:\***.docというファイルを開く。
c:\***.docはエディタ上ではアクティブな状態だとして、
このc:\***.docという名前をAHK上で取得したいのです。

無理かなあ。

150 :cbibnvn:2009/01/27(火) 20:17:47 ID:nCQqd/B10
4fr8vT <a href="http://awqiefzmnckd.com/">awqiefzmnckd</a>, [url=http://ohcwsocuvnsl.com/]ohcwsocuvnsl[/url], [link=http://fyltntzeasap.com/]fyltntzeasap[/link], http://hzumapjsvzmu.com/

151 :名無しさん@お腹いっぱい。:2009/01/27(火) 20:27:41 ID:WqNNCHEs0
>>149
一番お手軽なのはエディタ側でタイトルバーにファイルパス表示する設定にしといて
それ取得して加工すれば?

152 :名無しさん@お腹いっぱい。:2009/01/27(火) 20:41:15 ID:X4tsXHNf0
>>151
そか、ありがとう!

153 :名無しさん@お腹いっぱい。:2009/01/27(火) 21:18:33 ID:paF95q4q0
>>147
なるほど…常識…。はまると往々にして単純で当たり前の理由なんだなwまた間違えそうで怖い。

>>149
MouseGestureのコマンドラインを取得する関数が使える時もある。

俺が使ってるのはMenuHackerで、%arg%%titlepath%を使って、ポチエスに投げる。
メモ帳から使い慣れたエディタに開き直すときに使っている。

154 :名無しさん@お腹いっぱい。:2009/01/27(火) 21:28:17 ID:hKjgB29J0
>>148
IniRead と Hotkeyコマンド使え

>>149
コマンドライン文字列を取得するという方法もある
http://pc11.2ch.net/test/read.cgi/software/1219130051/683-691

155 :148:2009/01/27(火) 21:56:28 ID:t0VmE1Ht0
>>154
設定ファイルから設定を読み込むのは出来るのですが
割り振るキーを設定に応じて変更する方法が無いものかと。


156 :148:2009/01/27(火) 22:05:14 ID:t0VmE1Ht0
読み違えてました
Hotkeyコマンドで出来ますね
すみませんでしたm(_ _)m


157 :名無しさん@お腹いっぱい。:2009/01/27(火) 22:19:04 ID:eAnAnnBW0
>>142
TWのテスト版だけど、こっちを試してくれるとありがたい。
一応 *今のところ* 不具合は出ていない。
あと、縦横どっちかにスクロールを固定するオプションを追加(dx, dyの大きい方のみを採用、手抜きw)
ttp://sites.google.com/site/agkh6mze/strage/TrackWheel_RC.zip?attredirects=0

もしこれで直ったてら単純なコーディングミスだな...

158 :名無しさん@お腹いっぱい。:2009/01/27(火) 22:50:56 ID:hKjgB29J0
>>157
お疲れさまです
ちょうど今の時期、在宅でのPC仕事なんで(自宅警備じゃないよ)しばらくこれで酷使テストしてみます。
つか今日気がついたけどリモートデスクトップ上でもホイール相当のスクロールは効くんだな。
さすがにマウス下ウィンドウの認識まではしてくれなかったが。

>縦横どっちかにスクロールを固定するオプション
DenyBoth=1にしてみたらWinMergeでスクロールさせる時カクカクしなくなったヽ(´ー`)ノ
ありがとです

159 :名無しさん@お腹いっぱい。:2009/01/29(木) 06:09:04 ID:LOmhUipb0
QWERTY 配列の109キーボード用を dvorak 配列に変更しようとして

#InstallKeybdHook
#UseHook

*z::;
*+z:::

と書いたところ、
Shift + z で + が表示されるようになりました。
意図しているのはもちろん : の表示です。
どのようにすればよいのでしょうか?
またなぜこのように表示されてしまうのでしょうか?
AutoHotkeyは最新版を使用しています。

160 :名無しさん@お腹いっぱい。:2009/01/29(木) 09:10:03 ID:b+H6/CBd0
+z::Send,:
z::Send,;

Remapは面倒な事があるねぇ。
これはキーコード送信でなくて、「キー置き換え」なんだわ。
つまり、
 z::;
と書くと以下のようになる、([]内はキー名)
 [Shift] +[z] -> [Shift] + [;]
 [Ctrl] +[z] -> [Ctrl] + [;]
 [Alt] +[z] -> [Alt] + [;]
ってなる。
QUERTYキーボードだとおもうけど、キーに印字されたものを見れば・・・

161 :名無しさん@お腹いっぱい。:2009/01/29(木) 09:40:20 ID:qrvrUYM20
*z::send,;
*+z::send,:

162 :名無しさん@お腹いっぱい。:2009/01/29(木) 14:19:47 ID:SY+Fy4ud0
>>160-161
ありがとうございます。sendでしたか。

*z::send,;
*+z::send,:

を記述すると常に ; が表示されるようになったので
もしやと思い

*+z::send,:
*z::send,;

と表記したらうまくいきました。


163 :名無しさん@お腹いっぱい。:2009/01/29(木) 21:38:27 ID:aLpAKfgd0
CAPSLOCKをCTRL(左)に置き換えるには
どのように設定すればよいのかわかりません

旧雑記サルベージ
http://lukewarm.s101.xrea.com/test/read.cgi/bbs/1157529465/62

>CapsLockCtrl入れ替えは実現できず

こういう情報がありますが
やはりレジストリを弄るしかないのでしょうか

164 :名無しさん@お腹いっぱい。:2009/01/29(木) 21:48:36 ID:PtNO3FlD0
>>163
Change Keyでサクッと弄っちゃえばいいじゃない
ttp://www.forest.impress.co.jp/lib/sys/hardcust/keyboard/changekey.html

165 :名無しさん@お腹いっぱい。:2009/01/29(木) 22:25:49 ID:Of1QsQUs0
テンプレ>3

166 :名無しさん@お腹いっぱい。:2009/01/29(木) 22:45:33 ID:wR4WwhsC0
>>164--165
そうでしたか
ありがとうございました


167 :名無しさん@お腹いっぱい。:2009/01/30(金) 20:57:31 ID:w6m+xv+i0
TrackWheelの中の人です。
>>139の症状としては依然として再発する・・・orz
詳しく書くと非クライアント領域(タイトルバーとかメニューとかサイズ変更とか)でマウス押下が効かない。

いろいろググってみたけど、
新・なまず日記(このスレでは既出中の既出)のIME状態取得のところで、
AttachThreadInput の多用で問題発生とのこと。
ttp://endoh-namazu.tierra.ne.jp/diary/?date=200512

TrackWheelは 危なさそうなのは ControlClick と Send かなぁ。。。
あとは自前の 組み込み用の PostAction で A_Cursor 参照してる。。。

AHKのコマンドをあまり使わずに DllCall でゴリ押しすれば何とかなるのかなぁ・・・
ちょっと根が深いかもしれないので、同症状で悩んでいる人は Ini で NoHide=1 でよろしく

自分は頻発するわけじゃないので [Alt] + [Tab]で逃げている。

>>141
すっかり見落としてた。ソフトウェア層でやっているので無理。
Hotkeyコマンドでマウスボタンに割り当てているんで、何らかの方法(ホットキー割り当とか)で
Hotkey, *MButton, Off
とかで一時的に解除するとか

168 :158:2009/01/30(金) 21:53:26 ID:HlJEMNMH0
>>167
>A_Cursorの参照
>A_CaretX(Y)の参照
>ControlClick
>ControlGetFocus
>ControlFocus
>Controlコマンドの、Check,Uncheck

やばい。バリバリ使ってる。特にControl関係は最近作ってる奴でテストしまくってた。
ってことは現象が出るのはTWじゃなくて自分が書いたスクリプトだった可能性も大だ orz

ちなみにRC版導入以降、こちらでは問題は起こってないです。
(仕事が込んできてスクリプト弄る余裕がなかっただけかも知れないが)

169 :名無しさん@お腹いっぱい。:2009/01/30(金) 22:44:06 ID:w6m+xv+i0
> ちなみにRC版導入以降、こちらでは問題は起こってないです。
発生していないなら何よりだけど、、、

>>140書いた段階で単純なバグ(コーディングミス)を見つけて直したので、
4日くらいは大丈夫だったので、発生頻度は確かに減った気はする。
だけどさっき出たんで・・・。

原因はこっちだと思うなぁ。
というか、列挙されたコマンドってAHKでは肝なところだと思うし、
他スレッドに長い間(マウス押下中ずっと)アタッチしっぱなしって、想定してないはず。

というか、これも自体が的外れな見解なのかもしれないけどorz

ちなみに、AHK の C++ のソースコードを分かりもしない癖にふいんき(何故かry で斜め読みしたら
1.0.42.02以降ではA_Cursor では実質使わないようになっているみたいだけど他は変わってない。

170 :名無しさん@お腹いっぱい。:2009/01/30(金) 22:49:38 ID:HlJEMNMH0
自分も今 ソース眺めてたんだけど、ControlClickもv1.0.45 以降の"NA"モードでは
AttachThreadInput()使ってないみたい。

コメント読む限りでは AttachThreadInput()で何かしらの問題が起こることは作者氏も
たぶん認識していて使用頻度は極力減らしているような印象。
(テキスト翻訳で適当に解釈してるから実際はわからんけど)

171 :名無しさん@お腹いっぱい。:2009/01/31(土) 12:06:50 ID:DjmYD3GA0
>170
あんまりそんな風には読めなかった。別のコメントならごめん。
ちなみに AttachThreadInput() は SetActiveWindow() するのに必要なはず。

// It was reported (and confirmed through testing) that this new NA mode (which avoids
// AttachThreadInput() and SetActiveWindow()) improves the reliability of ControlClick when
// the user is moving the mouse fairly quickly at the time the command tries to click a button.
// In addition, the new mode avoids activating the window, which tends to happen otherwise.
// HOWEVER, the new mode seems no more reliable than the old mode when the target window is
// the active window. In addition, there may be side-effects of the new mode (I caught it
// causing Notepad's Save-As dialog to hang once, during the display of its "Overwrite?" dialog).
// ALSO, SetControlDelay -1 seems to fix the unreliability issue as well (independently of NA),
// though it might not work with some types of windows/controls (thus, for backward
// compatibility, ControlClick still obeys SetControlDelay).

この(AttachThreadInput() と SetActiveWindow() を避ける)新しい NA モードは
コマンドがボタンをクリックする時にユーザーがマウスを素早く動かしている場合に
信頼性が向上することが報告され(またテストを通じて確認され)ている。
加えて、新しいモードでは避けようとしなければ発生しがちであるウィンドウの
アクティブ化を避ける。
「しかし」、対象のウィンドウがアクティブウィンドウである場合には、新しいモードは
古いモードよりも信頼性が高いとは言えないようである。さらに新しいモードには副作用が
あるかもしれない。メモ帳の「名前を指定して保存」ダイアログで上書きするかを
たずねるダイアログが表示されている最中に一度ハングしたことがある。
「また」、SetControlDelay -1 は同様に信頼性の問題を(NA とは独立に)解決するよう
だが、動作しない Winow や Control が存在するかもしれない。
そのため、互換性のため ControlClick は依然として SetControlDelay の設定に従う。


172 :名無しさん@お腹いっぱい。:2009/01/31(土) 13:46:06 ID:g43WAhtb0
アウチ、AttachThreadInput()でgrepかけたら、コメントで
「AttachThreadInput()を避ける」みたいなのが結構出てきたんで勝手に解釈してた。

SetForegroundWindowEx()とかの中でも使ってるし、WinActivateする度に呼ばれてるのか
コーディングを工夫して避けるは無理そう。
普通のホットキー駆動だとユーザー操作が発生してからのアクションが多いから
あまり問題にならないみたいだけど
間隔短くとってタイマーぶん回して高度なことやらせるのは避けたほうが無難?

173 :名無しさん@お腹いっぱい。:2009/01/31(土) 16:44:41 ID:XA0EcD/m0
そこまで分かる人でもAHKを使うんだな

174 :名無しさん@お腹いっぱい。:2009/02/01(日) 03:06:41 ID:Ul6ytoNp0
2ストロークで特定の語句を出力したいのですが、
(以下では見やすくするため全角空白を使用してます)

#v::
  Input, InputChar, C I L1 T2,{Esc}, n, h
  if ErrorLevel=Match
  {
    if InputChar = n
      Send, win + v -> n
    if InputChar = h
      Send, win + v -> h
  }
  if ErrorLevel=Max
  {
    Send, %InputChar%
  }
  return

これでは、 Win + v を押して n を押したときのみ正常に動作し、
それ以外の場合はまったく動きません。

意図しているのは
Win + v, そして n で Send, win + v -> n
Win + v, そして h で Send, win + v -> h
Win + v, そして n と h 以外のキーで Send, win + v -> それ

どこを変更すれば正常に動くのでしょうか

175 :名無しさん@お腹いっぱい。:2009/02/01(日) 03:41:30 ID:+8QlN44X0
>>174
流行らせるページより
>MatchList
>「,」で区切って文字列を列挙する。
>入力内容がここに列挙したものに一致した場合、コマンドは終了しErrorLevelが「Match」になる。
>カンマ区切りだが、引数の区切りとは扱いが違い、カンマの前後の空白文字などは、文字列の一部とみなされる。

これが原因?

176 :名無しさん@お腹いっぱい。:2009/02/01(日) 04:11:44 ID:Ul6ytoNp0
>>175
ありがとうございます!うまくいきました

177 :名無しさん@お腹いっぱい。:2009/02/01(日) 16:20:16 ID:WFl1N4Nl0
名前を付けて保存ダイアログってスクリプトから出せないのかな?
ファイル選択ダイアログを表示・フォルダ選択ダイアログを表示 はあるんだけどなー。


178 :名無しさん@お腹いっぱい。:2009/02/01(日) 16:32:19 ID:5OtrqmWb0
選択ダイアログを出して
ウィンドウタイトルとかボタンのテキストとか書き替えて
無理からControlとかでテキスト拾って
保存用に利用してみるとかw

179 :名無しさん@お腹いっぱい。:2009/02/01(日) 16:35:34 ID:gM29b+OF0
FileSelectFileでできるだろ?

180 :名無しさん@お腹いっぱい。:2009/02/01(日) 17:16:49 ID:WFl1N4Nl0
>>179
リファレンスよく見たら保存ダイアログにする方法書いてあるな
気付かなかった

181 :名無しさん@お腹いっぱい。:2009/02/01(日) 19:02:57 ID:o14t9yXp0
アイドル状態ってどうやって調べてるんだろ?

5分ごとに、アイドル状態ならば検索ソフトのインデックス作成を行うように設定してるのだが、
Civilization4っていうゲームをプレイ中に、5分ごとにフォーカス奪われちゃってすごく困ってる。

なんか改善策ないかなー

182 :名無しさん@お腹いっぱい。:2009/02/01(日) 19:09:30 ID:zLFlCA+70
組み込み変数の A_TimeIdle や A_TimeIdlePhysical じゃ用はなさないってこと?
というか、プレイ中と書いてあるけど、起動して放置中ってことか?

183 :名無しさん@お腹いっぱい。:2009/02/01(日) 19:24:13 ID:nES9c2H30
Civilization4がどこまでマルチスレッド対応してるかにもよるかもね。
ウィンドウでもプロセス検知でもいいから、ゲームが起動中かどうかで判断するのが一番簡単じゃない?

184 :名無しさん@お腹いっぱい。:2009/02/01(日) 22:31:29 ID:IsdiFXGP0
スレッド毎のCPU占有率調べて処理すればいいんじゃね
除外設定付けておけば望みの動作になると思われ

185 :名無しさん@お腹いっぱい。:2009/02/02(月) 00:37:36 ID:ghjeIC8V0
直前に閉じたウィンドウを開くスクリプトは書けますか?

186 :名無しさん@お腹いっぱい。:2009/02/02(月) 00:41:16 ID:/eytDMHF0
>>185
無理。具体的に言ってよ。
アクティブウィンドウを再起動させるのならできると思う。

直前に閉じちゃったのなら、常に何かしら監視していないといけないから面倒かも。

187 :名無しさん@お腹いっぱい。:2009/02/02(月) 00:59:40 ID:1rUYw8J20
ワークステーションがロックされてる、で、パスワードを入れて復帰する。
この直後に処理を挟みたい。
OnMessageとかでトラップなのかな?

188 :名無しさん@お腹いっぱい。:2009/02/02(月) 01:43:07 ID:ghjeIC8V0
>>186
操作ミスで閉じてしまったときに楽に復帰できたらいいなと思ったんだ。(´・ω・`)

189 :名無しさん@お腹いっぱい。:2009/02/02(月) 02:02:47 ID:09XryvuG0
>>185
これか?外人がAutohotkeyで色々作っていたやつ。試してレス横瀬。
窓の杜 - 【NEWS】誤って閉じたウィンドウを60秒以内なら復活できる「GoneIn60s」
http://www.forest.impress.co.jp/article/2007/01/11/gonein60s.html

190 :185:2009/02/02(月) 04:29:43 ID:ghjeIC8V0
>>189
サンクス!さっそく使ってみたので以下報告。結論としては不採用。
Alt + F4を押すとWinHideする仕組みらしい。で、
・GoneIn60sのアイコン右クリックして閉じたアプリを選択 ⇒ WinShowで復帰。
・指定時間後までに何もしない ⇒ WinCloseで閉じる。

なぜかWinKillでなくWinCloseだから、「保存しますか?」と出るはずのときに、
・指定時間後までは何もなしで閉じたように見える。→後で急にあらわれて「保存しますか?」
となる。これは気持ち悪い。
しかも右上の×でも同様なんだけど、こっちはもっとひどくて、位置が正確でないから
誤動作する場合がある。最小化ボタンの位置で反応したり、閉じるに反応しなかったり。

WinHideの仕組みはいいアイデアだと思った。
ちなみに窓の杜の紹介記事からバージョンアップしてて、今はv1.4。

191 :名無しさん@お腹いっぱい。:2009/02/02(月) 05:46:25 ID:BYiuvhuI0
DDWinというソフトの小窓をESCキーで閉じて
他のソフトの時は標準の動作をするようにしたいのですが

Esc::
IfWinActive, ahk_class TDefForm
{
Send,WinClose
}
else{
Send,{Esc}
}
return

だとDDWinの小窓では何も起きませんし
それ以外のところでは

xx hotkeys have been received in the last xxxxms

Do you want to continue?

というエラーメッセージが出てしまいます。

192 :名無しさん@お腹いっぱい。:2009/02/02(月) 07:28:16 ID:ghjeIC8V0
>>191
このスレでhotkeys have been receivedを検索。
特定のウィンドウでの動作は
#IfWinActive, ahk_class TDefForm
;ここに処理を書く。
#IfWinActive
って具合に書くといいよ。

193 :名無しさん@お腹いっぱい。:2009/02/02(月) 08:46:33 ID:BYiuvhuI0
>>192
ありがとうございます。うまく行きました。

194 :名無しさん@お腹いっぱい。:2009/02/02(月) 22:31:32 ID:kP24v5Wa0
http://www2.atchs.jp/test/read.cgi/pcpc/5/l50
こちらもつかってください。

195 :名無しさん@お腹いっぱい。:2009/02/02(月) 22:52:47 ID:99xZfHQW0
なぜ情報を拡散させたがるのか。
ここと流行らせるページの掲示板で十分だろ。

196 :187:2009/02/02(月) 23:15:39 ID:1rUYw8J20
自己レス。
WM_POWERBROADCAST(0x218)じゃ捕まえられないっぽいので、
フォアグランド窓をとれるかで判断した。

SetTimer, HogeHoge, 1000
HogeHoge:
 WinGet, fgId, ID, A
 if (!fgId) {
  Loop {
   WinGet, fgId, ID, A
   if (fgId)
    break
   Sleep, 1000
  }
  // ここに処理を書く
 }
 return


197 :名無しさん@お腹いっぱい。:2009/02/03(火) 19:09:41 ID:d0uBooiq0
あるウィンドウがアクティブなときのキー設定を
#IfWinActive, WinTitle
1:: F1
2:: F2
3:: F3
という感じで書いています。

そのウィンドウが非アクティブのときでも、
Win+Space 1 のように2ストロークキーで
同様のキー操作ができるようにしようと、
#Space::
Input, key, C I L1 T2, {Esc}, 1,2,3
IfWinExist, WinTitle
ControlSend, , key
という感じに書いたのですが、当然というか
1,2,3 が直接送られるだけで、F1,F2,F3 になってくれません。
If key = 1
ControlSend, , {F1}
というように逐一書いていくしかないでしょうか?
定義を二重に書かないといけないのでできれば避けたいんですが…

198 :名無しさん@お腹いっぱい。:2009/02/03(火) 19:18:13 ID:qfq9gHtT0
残念ながら無理(なはず)。
窓使いの憂鬱(のどか)とかkeyhacでいう「キーマップ」とか「キープレフィックス」に相当するものはない。
強いて言えば同じサブルーチンに飛ばすくらい。
ex) Gosub, 1 ; 1のキーに割り当てられている機能を呼ぶ

199 :名無しさん@お腹いっぱい。:2009/02/03(火) 20:57:50 ID:LGJ9Ljgs0
ControlSend, , {F%key%}
でできない?
 
あと、そういう場合は Autohotkey_L の #if expression 使うと
楽に実現できそうな気がする。

200 :名無しさん@お腹いっぱい。:2009/02/03(火) 23:23:58 ID:LGJ9Ljgs0
>>197
せっかくAutoHotkey_L使ってるので、試してみた。
あとこのスレでURL出てなかったので出しておく。
ttp://www.autohotkey.net/~Lexikos/AutoHotkey_L/
 
;---------------------------------------------
#if WinActive("無題 - メモ帳")
or (A_ThisHotkey=="#Space"
and A_TimeSinceThisHotkey<=2000
and WinExist("無題 - メモ帳"))
1::msgbox, syori 1
2::msgbox, syori 2
3::msgbox, syori 3
#if
#Space::Return ; A_ThisHotkeyに記録するために必要
;---------------------------------------------
 
これでメモ帳がアクティブな時か、
メモ帳がある時にWin+Spaceしてから
2秒以内に各キーを押すと処理が実行されて、
そうでない時は普通に各キーが送られる。


201 :名無しさん@お腹いっぱい。:2009/02/03(火) 23:26:30 ID:LGJ9Ljgs0
ちなみにキーマップはこんな感じで書ける。
 
;---------------------------------------------
keymap:=0
Exit
#if keymap==1
1::a
2::x
#if keymap==2
1::b
2::y
#if keymap==3
1::c
2::z
#If
; F12を押すたびにキーマップ切り替え
F12::keymap++ == 3 ? keymap:=0 :
;---------------------------------------------
 
AutoHotkey_L便利だと思うんだけど…
こういう需要あんまり無いのかな?

202 :名無しさん@お腹いっぱい。:2009/02/04(水) 00:16:05 ID:53JDVpb00
いや、あると思う。
窓使いの憂鬱とかでkeymapでの定義に慣れた人には断然分かりやすいとは思う。

というか _L って安定してる?
ウニコード化してくんないかなぁ。

203 :199:2009/02/04(水) 00:50:50 ID:mEq9h9q70
>>202
環境によるかもしれないけど、むしろ
俺の環境では本家より安定してるかな。
WinXP SP3。
本家の使ってるとスクリプトリロードさせた時に、
たまにエラー出るんだけど_Lだと今のところない。
単に俺の書いてるスクリプトがおかしいのかもしれないが…
 
もし使う時に注意する事があるとしたら、
#if expression使う時に、時間かかる判定しないように
気をつけるくらいかな。一応タイムアウト時間も指定できる。
 
3ヶ月くらい使ってるけど今のところ不満は無いです。
 
Unicode化は…して欲しいね。

204 :名無しさん@お腹いっぱい。:2009/02/04(水) 15:39:07 ID:MFTbk+bR0
時間がものすごくかかる演算をDLLで組もうと思うんだけど
参考になるサイトとかないかな
中身は単純にfor文とかを大量に繰り返して結果を返す、といったものなんだけど
ためしに
extern "C" __declspec(dllexport) INT WINAPI extracter(int x){
return 5*x;
}
こんな感じのDLL組んでDLLCALLで呼び出してみたけど上手く動作しなかったんだ…

205 :名無しさん@お腹いっぱい。:2009/02/04(水) 18:27:03 ID:k5e6IctL0
>>204
時間掛かる処理をさせるならLoadLibraryしてみたほうがいいよ

206 :名無しさん@お腹いっぱい。:2009/02/04(水) 21:27:31 ID:Ut7+efCd0
>204
多分呼び出し規約が stdcall になってるので関数名を extracter@4 にすれば呼び出せるかも。

207 :206:2009/02/04(水) 21:38:23 ID:Ut7+efCd0
補足。
dll 側のコードはそのままで、DllCall するときに extracter@4 で呼ぶって意味ね。VC だと _extracter@4 かも。
@以降の数字は引数に使用するスタックのサイズ。今回は int が 1 つなので 4。
gcc だと -Wl,-kill-at というオプションを渡すと @ 以降がなくなって extracter で呼べるようになるはず。
VC 側の同等オプションは知らね。DEF ファイル使えば制御はできると思う。

208 :名無しさん@お腹いっぱい。:2009/02/04(水) 23:14:11 ID:MFTbk+bR0
>>206-207


問題解決しますたありがと><

209 :197:2009/02/04(水) 23:30:00 ID:uksORcM50
>>198-201
ありがとうございます。
>>200 の方法でできました。
>>201 とか面白いですね。

210 :名無しさん@お腹いっぱい。:2009/02/05(木) 03:44:32 ID:He1nXNrH0
白背景に黒い文字を書いた画像を用意して
ImageSearchで*TransWhiteをオプションに指定したら真っ黒な場所に反応してしまう…
何か良い方法はないかな

211 :名無しさん@お腹いっぱい。:2009/02/05(木) 03:58:21 ID:Ctlz88MC0
初心者質問で申し訳ないんだけど、入力キー、回数、間隔時間を指定して
直前にアクティブなウインドウに対して、キー(コード)を送るスクリプトってどう書くの?
現状↓のような感じで詰まってる

DefaultKey=Enter
InputBox, OutputKey ,入力設定,KeyName で指定,,200,150,,,,,%DefaultKey%
if ErrorLevel != 0
 exit
else
 counter = 1
 Loop, 3
 {
  SendEvent, {%OutputKey%}
  SetKeyDelay, 100
  counter += 1
 }

212 :名無しさん@お腹いっぱい。:2009/02/05(木) 05:28:16 ID:JN8SH5jU0
連続した入力
{BS 5}のように、「{}」で囲んで、右に数値を指定すると、複数回押すことができる。
って書いてるけど。

213 :名無しさん@お腹いっぱい。:2009/02/05(木) 11:01:00 ID:6B3J8+du0
212の言うように
SetKeyDelay,100
SendEvent, {%OutputKey% 3}

とするか

Loop,3
{
 SendEvent, {%OutputKey%}
 Sleep,100
}
でいいんでね?

あとIfでExitしてるからこの場合の動作には影響ないと思うが
文法上はElseのあと { } で囲わないとまずくね?

214 :名無しさん@お腹いっぱい。:2009/02/05(木) 14:59:25 ID:Ctlz88MC0
>>212-213
レス、サンクス
やっぱ質問が悪かったか。今分からないのが、
・入力キー、回数、間隔 を一括で各変数に入れる関数(方法)
・入力キーはKeyNameで指定じゃなく、キーコードを直接受け取りたい
という感じ。ま、挫折するまで調べてみる

215 :名無しさん@お腹いっぱい。:2009/02/05(木) 15:57:17 ID:rxk2q+A70
アクティブウィンドウのプロセスのフルパスを
Autohotkey単体で取得することはできますか?
Winget, OutputVar, ProcessName, A で実行ファイル名は取得できたのですが
それから先がわかりません

216 :名無しさん@お腹いっぱい。:2009/02/05(木) 16:12:39 ID:JN8SH5jU0
>>215
ほい、前スレから。俺が教えて貰ったんだけどw
47 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2008/08/25(月) 23:01:23 ID:O2etOCIT0
eamatの日記
ttp://d.hatena.ne.jp/eamat/
にあると思う

48 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2008/08/25(月) 23:22:03 ID:iVqjz6P/0
ttp://d.hatena.ne.jp/eamat/20050826 の一番下

これ大元は流行らせるページ管理人氏のなんだけどそっちは今見れないね。
削除されちゃったんだろか。結構需要あると思うんだけど。

217 :名無しさん@お腹いっぱい。:2009/02/05(木) 20:19:48 ID:n8B6a3aC0
>>214
> ・入力キー、回数、間隔 を一括で各変数に入れる関数(方法)

こんな感じか?
HogeInputBoxを呼ぶと変数にキー名、回数、ディレイが入る
Gosub, HogeInputBox
return
HogeInputBox:
 Gui, Destroy
 Gui, +LastFound
 Gui, Add, Hotkey, vKeyName
 Gui, Add, Edit, vCount Number
 Gui, Add, UpDown
 Gui, Add, Edit, vDelay Number
 Gui, Add, UpDown
 Gui, Add, Button,, OK
 Gui, Show
 WinWaitClose, % "ahk_id " WinExist()
 return
ButtonOK:
 Gui, Submit
 return
GuiEscape:
 return

> ・入力キーはKeyNameで指定じゃなく、キーコードを直接受け取りたい
キー名から頑張って変換する・・・かな。
というか、キーコードって手入力前提でないの?
(上のサンプルだと KeyNameになるけど)


218 :名無しさん@お腹いっぱい。:2009/02/05(木) 21:45:16 ID:dLfvsoZw0
今押されているVirtualKeyCodeを得るならこんな感じ?
#Persistent
CoordMode,ToolTip,Screen
SetTimer,TipView,10
Exit
TipView:
ToolTip, % GetAllVirtualKeyState(),0,0
Return
GetAllVirtualKeyState(){
str:="",tf:=A_FormatInteger
SetFormat, Integer, H
Loop, 0x100
str:=str (GetKeyState("vk" SubStr(A_Index-1,3),"P") ? A_Index-1 "," : "")
SetFormat, Integer, %tf%
Return SubStr(str,1,-1)
}

219 :名無しさん@お腹いっぱい。:2009/02/06(金) 03:17:46 ID:wnkD34rd0
クリップボードに変更があったらその内容をテキストファイルに追記する、
というのを作ったのですが、下のだと数時間経つと使えなくなってしまいます。
AHKを再起動すればいいんですが毎回再起動するのも面倒です。
何か対策とか無いでしょうか?

#Persistent
Clipboard=
OnClipboardChange:
Run,"テキストファイルに追記するソフト起動"
tooltip clip
sleep,300
tooltip
return

220 :名無しさん@お腹いっぱい。:2009/02/06(金) 03:43:37 ID:/VPzv7st0
俺も過去にそれを作ったことがあった。

クリップボードバッファの領域に、スクショ画像などのテキスト以外の
巨大データが出現すると、エラーメッセージなしにAutoHotkeyが死んでしまう。

解決策は見つからなかった。うまい回避法はあるのかな?

221 :名無しさん@お腹いっぱい。:2009/02/06(金) 05:09:20 ID:ka9EMbek0
>>201を見て
キーマップのきりかえができることにおどろいたので


222 :214:2009/02/06(金) 05:58:59 ID:NAAOC5m30
>>217-218
こいつ・・・動くぞ、すげーー!

>というか、キーコードって手入力前提でないの?
最終的に send,{vkXX} という感じでやった方が楽かなーと思ったので

さて、>>218 の解読作業に移ります。ありがとう!!

223 :名無しさん@お腹いっぱい。:2009/02/07(土) 02:39:29 ID:81yNBSmE0
>>216
参考になりました
ありがとうございました

224 :名無しさん@お腹いっぱい。:2009/02/07(土) 15:22:29 ID:WmNZzOvm0
スクリプト内にGUIを表示するサブルーチンが複数あって、
それぞれのGUIの中で同じ名前のボタンを追加した場合、
ボタンを押したときに呼び出されるサブルーチンを区別することは
できないのでしょうか?
↓のようにすると二重定義でエラーになってしまいます。

Test1:
Gui, Add, Button, , 1
Return
Button1:
MsgBox, 1 in Test1
Return

Test2:
Gui, Add, Button, , 1
Return
Button1:
MsgBox, 1 in Test2
Return

225 :名無しさん@お腹いっぱい。:2009/02/07(土) 15:33:57 ID:AcAuyp/00
押しいなぁ。
ボタン名省略時のデフォルトサブルーチンラベルまで分かってて、ボタン名重複時のところが分かってない、と。
もう一度解説読んでみ。

226 :名無しさん@お腹いっぱい。:2009/02/07(土) 15:37:05 ID:AcAuyp/00
ん?もしかして Test1 と Test2 って別窓(GUI)にしたいのかな?
だったら、GUI番号を変えた二つのGUIを用意するか、毎回破棄(Destroy)するとかすればいい。
どっちにしろサブルーチンラベルの重複で怒られるとは思うけど。

227 :224:2009/02/07(土) 15:46:42 ID:WmNZzOvm0
>>225-226
あぁ G オプションってこういうときのためか
Gui, Add, Button, GButton1inTest2, 1
でいけました。ありがとうございました。


228 :名無しさん@お腹いっぱい。:2009/02/07(土) 18:34:02 ID:OHL9IjH/0
語学関係のもの(英検、TOEIC、留学)がまったくない私が
語学について聞かれたらなんて答えるべきですか?

229 :名無しさん@お腹いっぱい。:2009/02/07(土) 22:07:43 ID:vTbfdAUL0
ジュワワワジュワワ、 ジュワジュワジュジュワワワワワ?

230 :名無しさん@お腹いっぱい。:2009/02/07(土) 22:16:28 ID:WFpsFaYj0
面接官「ジュワ!ワタシジュワワイイビョウインシッテルヨワワ」

231 :名無しさん@お腹いっぱい。:2009/02/07(土) 23:02:35 ID:SzMrA22TP
Vista環境だと、コンマ使うショートカット(#,::Run,cmd みたいな)
のが動作しないみたいのがえらい不便だ。
これだけでXPに戻しそう…

232 :名無しさん@お腹いっぱい。:2009/02/07(土) 23:46:19 ID:+Kjk/oX50
>>231
スクリプトに何か問題があるんじゃない?
Vista64Ultで普通に動く・

233 :名無しさん@お腹いっぱい。:2009/02/08(日) 13:37:15 ID:lpNI9P4b0
>>231
原因決め付けすぎわろた。
おいらもVista環境だけど、そのスクリプトでまったく問題なく動くぜ。
AutoHotkey ver 1.0.47.06

234 :名無しさん@お腹いっぱい。:2009/02/08(日) 20:56:33 ID:sclNqxNe0
AutoHotKey.iniに、ウインドウなどを定期監視するルーチンをつけくわえたいと思っているのですが、
上手く動作しません。

AutoHotKey.iniの最後に以下のように書き足して、reloadしているのですが、SplashTextがでてくれないのです

#Persistent

SetTimer, OnTimer, 1000
return

OnTimer:
SplashTextOn,,, MAGE...
Sleep, 2000
SplashTextOff
return


235 :234:2009/02/08(日) 21:13:15 ID:sclNqxNe0
SetTimer, OnTimer, 1000
をAutoHotKey.iniの先頭の方に記述したらいけました。

これだと、上記とSetTimerとOnTimerの位置がちらばってしまうので、

SetTimer, OnTimer, 1000
Goto, NextOnTimer
OnTimer:
 SplashTextOn,,, MAGE...
 Sleep, 2000
 SplashTextOff
return
NextOnTimer:

+0::Send, 0000
: ;以下、ホットキーの設定が続く

という風にAutoHotKey.iniの最初の方に書いたら、
今度は、NextOnTimer: の後のホットキーの入力が、起動時(reload時)に誤爆してしまうようになりました。
上記例では、0000が強制発動します。

この辺の挙動がいまいちわかりません・・・
どこかに記述はありませんでしょうか?

236 :名無しさん@お腹いっぱい。:2009/02/08(日) 21:14:11 ID:yKg3PII70
> AutoHotKey.iniの最後に以下のように書き足して
            ~~~~~~~
ってのがマズいんじゃないかと。

> #Persistent
> SetTimer, OnTimer, 1000
この2行は多分ホットキー定義より後ろに書いてあると思うんで
ファイルの頭に持ってきた方がいい。

頭から読んで順次実行するところ(Autoexecブロック)として扱われていない
死にコード担ってると思う。

237 :名無しさん@お腹いっぱい。:2009/02/08(日) 21:21:06 ID:yKg3PII70
うひ。解決してやがるw

ttp://lukewarm.s101.xrea.com/Scripts.html#autoexecsection
> スクリプトが読み込まれると、最初にReturnかExitが実行されるか、
> ホットキーラベルが記述されている行やスクリプトの終わりに達するまで、スクリプトが実行される。
> この部分のことを、auto-executeセクションと呼ぶ。

これは Gotoがあっても同じなわけ。
で、ラベルって関数じゃないから上から読んで実行するから
Gotoで飛んで先のコードも順次実行するだけ。

要は
> Goto, NextOnTimer

return
にする


238 :234:2009/02/08(日) 21:33:53 ID:sclNqxNe0
>>236
なるほどホットキー定義より先に書かないといけないんですね。

>>234のコードを丸ごと先頭に書いても問題ない感じでした。
returnしてますけど、後ろのホットキー定義はちゃんと定義されるんですね・・・。

いろいろ試してみて、>>234のコードをAutoHotkey.iniに書かずに、
別ファイルに書いて、最初に#includeするようにしても問題ない感じなので、
管理楽だしそっちで行ってみようと思います。

ありがとうございました。



239 :234:2009/02/08(日) 21:34:56 ID:sclNqxNe0
>>237
記述もあったのか!理解が深まり助かりました。
ありがとう。

240 :名無しさん@お腹いっぱい。:2009/02/09(月) 22:16:03 ID:s0aAmitG0
キーのリマップで、キーリピートしないようにするにはどうしたらよいですか?
回数指定で1としても、Pauseキーなどからリマップしたものは
リピートしてしまうようなのですが・・・

241 :名無しさん@お腹いっぱい。:2009/02/09(月) 22:25:30 ID:qaZxLjlv0
リマップは所詮リマップなので

キーを Send したあとに、キーが離されるのを待つようにすればいい
KeyWaitを使うと楽

242 :240:2009/02/09(月) 23:33:15 ID:s0aAmitG0
>>241
なるほど、うまくいきました。ありがとうございます。
Pause::
KeyWait, Pause
Send, {キー}
return

243 :名無しさん@お腹いっぱい。:2009/02/10(火) 00:02:17 ID:y3Hmn7JH0
このソフト今しがた知ったんだけど使えるようになるとかなり便利そうだなw
コンピュータ言語知らない俺には敷居高いが・・・

10分毎に同じ操作を永遠に繰り返させるのってどういうコードになるんだ?

244 :名無しさん@お腹いっぱい。:2009/02/10(火) 00:05:43 ID:2gVYx17+0
タイマーでおk

245 :名無しさん@お腹いっぱい。:2009/02/10(火) 00:08:18 ID:y3Hmn7JH0
>>244
上でも出てる
SetTimer,OnTimer,xxxxxx
でいけるわけね納得

246 :名無しさん@お腹いっぱい。:2009/02/10(火) 02:28:03 ID:5/WxU7qW0
AutoHotkey楽しすぎ

ちょっとした自動応答的なボタン押下とか
(AutoPushButton win32がVistaで動かないし、ウインドウ検知方法も融通も利かなくて長い間代替探してた)
長い間最前面にでしゃばってくるスプラッシュウインドウを後ろに回したりとかしようとして、
Delphiでプログラムでも組むか、マンドクセ('A`)と思ってたことが、
思いついてからものの数分でできてしまうじゃないかー。
すばらしいソフトだ。
簡易言語だと心の底で馬鹿にしてて正直すまなかった。

ホットキー定義以外のことにも使い出してから、やたら普段の操作が楽になったよ。

247 :名無しさん@お腹いっぱい。:2009/02/10(火) 04:00:00 ID:4LTAENh50
ウィンドウを作成してチェックボックスをクリックしたら
タスクトレイに収納されてしまいます
チェックはできているようなのですが

どうすれば常にウィンドウを表示できるのでしょうか


Gui, Add, Text, x10 y20 w90, test
Gui, Add, Checkbox, vStateOK gCheckOK, ok ?
Gui, Show, x100 y100 h100 w110, aaa
Return


CheckOK:
GUI, Submit
OK = StateOK
Return


#a::MsgBox,OK: %OK%



248 :名無しさん@お腹いっぱい。:2009/02/10(火) 04:10:55 ID:CECmGA9+0
タスクトレイにあるアプリを右クリックしたときに出るメニュー

これをPostMessageで実行したいのですが
WinTitleには何を指定すればよいのでしょうか
アプリのウィンドウを指定しても駄目みたいです

249 :名無しさん@お腹いっぱい。:2009/02/10(火) 04:36:17 ID:0gok775Y0
>>247
GUI, Submit , NoHide
「NoHide」を指定すると、ウィンドウを非表示にせずに、変数への反映だけを行う。

>>248
とりあえずDetectHiddenText, On|Off を使ってるかどうかだね。

250 :名無しさん@お腹いっぱい。:2009/02/10(火) 04:37:04 ID:0gok775Y0
はい間違えたー
DetectHiddenWindows

251 :247:2009/02/10(火) 04:38:07 ID:4LTAENh50
>>249
おお、ありがとうございます。


252 :248:2009/02/10(火) 07:49:43 ID:s6avSLrT0
>>249
ありがとうございます
基本的なことだったんですね
スレ汚し失礼しました

253 :名無しさん@お腹いっぱい。:2009/02/11(水) 20:27:22 ID:oCH0A50w0
どうにもうまくいかないので教えてください。
Firefoxでステータスバーに出るURLを取得しようとしているのですが
StatusBarGetText WinGetText WinGetText では空白のままで何も取得できません。
どなたかFirefoxのステータスバーの情報を取得する方法を教えてください。

254 :名無しさん@お腹いっぱい。:2009/02/11(水) 20:53:00 ID:i+mKzUyY0
Window Spy で見たら分かると思うけど
ステータスバー(に見える所)のクラスが ahk_class MozillaUIWindowClass なはず。
で、これって普通のウィンドウのステータスバーとは違ってAHKのコマンドじゃ情報とれない。

255 :名無しさん@お腹いっぱい。:2009/02/11(水) 21:20:11 ID:vlusE0/P0
operaとかffとか何かと難しいわな

256 :253:2009/02/11(水) 21:26:56 ID:oCH0A50w0
皆様どうもありがとうございます。
どうにもならん事もあるのですね。

257 :名無しさん@お腹いっぱい。:2009/02/11(水) 21:36:16 ID:PyctzTlz0
流行らせるページのMouseGesture.ahkを使ってるのですが、他のスクリプトと同時にincludeができません……

#include MouseGesture.ahk
#include aaa.ahk
return
とするとタスクトレイの右クリックメニューにはMouseGestureのメニューが追加されますが
MouseGesture自体は動きません。aaa.ahkは読み込まれているようです。
#include 1.ahkの行を消すと普通に動きます。
説明のページに書いてある「Gosub,MG_Init」なども適当に追加してみましたが、
あまり変わり映えがしません……
何が悪いのかどなたか教えていただけませんか;

258 :名無しさん@お腹いっぱい。:2009/02/11(水) 21:56:06 ID:eSu8v8vr0
じゃあ別々に動かせ

259 :名無しさん@お腹いっぱい。:2009/02/12(木) 18:55:35 ID:Cq/OSsWb0
ブラウザ上の画像を保存する関数ってないの?

260 :名無しさん@お腹いっぱい。:2009/02/12(木) 19:25:19 ID:nX4GYxrz0
ない

261 :名無しさん@お腹いっぱい。:2009/02/12(木) 23:46:28 ID:iXdCSKaG0
作れば良いだけだがな

初心者は関数ってのは組込のを使うだけだと思ってるようだが
プログラムでもスクリプトでもこういった言語では
関数ってのは作るものだから
まあ中には関数が作れない言語もあるけど、これは該当しないし

262 :名無しさん@お腹いっぱい。:2009/02/13(金) 00:34:12 ID:EUev75pp0
作るってもキーマクロでそ

263 :名無しさん@お腹いっぱい。:2009/02/13(金) 00:39:11 ID:tq73/xcp0
いや、あらゆる処理が作れるだろ、dll呼び出しもできるし

264 :名無しさん@お腹いっぱい。:2009/02/13(金) 00:52:14 ID:P/hV8GiU0
AutoScriptWriter使えばキーマクロっぽいこともできるんだよな
ほとんど利用したことはないが。

>257
例によってAutoExecuteセクションの記述飛ばしてて引っかかってるんじゃね?

265 :名無しさん@お腹いっぱい。:2009/02/13(金) 01:15:10 ID:EUev75pp0
>>263
確かにそうだけどさ、、AHKの範疇は超えちまうわな


AutoScriptWriter はテキストエディタのマクロみたく操作がコードになってくれるから
全然コマンドを知らない人が後からマニュアル見ながら改変するのには便利かなぁとは思う。
出来たコードはかなりしょっぱいけど・・・
マクロ登録の貧弱さという点で、UWSCとかより弱いと言われている点だな

266 :名無しさん@お腹いっぱい。:2009/02/13(金) 09:36:47 ID:PZx5JzBI0
>>259
(比較的)楽な方法
・キーマクロで何とかする
・適当なダウンローダ探して連携する
・URLDownloadToFile でhtmlを取得して、リンク抽出して個別に落す

そりゃ、comやdll使えば何でも出来るだろうが、
やはりそこは作成者・利用者の技能と、それを現実的なコストで作れるかというのも考慮すべきではないかと。


267 :名無しさん@お腹いっぱい。:2009/02/13(金) 12:37:16 ID:P/hV8GiU0
ああ、ID:EUev75pp0 の言ってるキーマクロっていうのは
Send や MouseClick によるキーエミュレーション動作のことなのか。

まんまエディタのキーボードマクロみたいな、ユーザー操作を記憶して
再実行してくれるものを想像してたから混乱したわ

268 :名無しさん@お腹いっぱい。:2009/02/14(土) 04:16:50 ID:CZpXyFEM0
C などの unless って Autohotkey では使用できないのでしょうか
unless に相当する物をしようしたいときは

if hoge = 1 else
{
msgbox,hello!
}

こういう風に書くしかないのでしょうか
それとももっとスマートな書き方があるのでしょうか

269 :名無しさん@お腹いっぱい。:2009/02/14(土) 06:39:35 ID:xPcJgk5F0
論理否定

270 :名無しさん@お腹いっぱい。:2009/02/14(土) 07:54:37 ID:TE2mD3kq0
if hoge != 1

271 :名無しさん@お腹いっぱい。:2009/02/14(土) 08:20:50 ID:iCnD4vMa0
>>269-270
ああ、なるほど
単純なことなのに分かっていませんでした
ありがとうございます。

272 :名無しさん@お腹いっぱい。:2009/02/14(土) 10:14:14 ID:dHhfIlz20
>268
C に unless はないべ。Perl とか Ruby にはあるらしいが。

273 :名無しさん@お腹いっぱい。:2009/02/14(土) 12:25:08 ID:wQWZhHiF0
unlessって使う機会ある?
ド・モルガンの法則を使えばいいだけじゃん。

274 :名無しさん@お腹いっぱい。:2009/02/14(土) 13:19:42 ID:T1oNA6o40
iniファイルに書いたkeyをHotkeyにアサインした場合ってどう書くの?

test.ini
+++++++++++++++++++++
[hoge]
Key=#z
+++++++++++++++++++

IniRead, h_key, test.ini , hoge, Key
;MsgBox , "%h_key%" ;ちゃんと値は取得できている

h_key::
;↑ダメ
%h_key%::
;↑ダメ
"%h_key%"::
;↑ダメ

275 :名無しさん@お腹いっぱい。:2009/02/14(土) 14:30:36 ID:7OA6UMgE0
Hotkey, %h_key%, Label で普通に割り当てできるが?

276 :名無しさん@お腹いっぱい。:2009/02/14(土) 15:21:43 ID:7uL3RWEi0
惜しいなぁ。実に惜しい。
まぁ、>>275の言うとおりなんだけど。
ラベルの方を動的に変えようっていうのはちょっと驚いた。

ホットキーラベルもサブルーチンラベルの一つ。
かつ、有効なホットキーラベルとして使える文字で構成されていなければならない。

ソース見たりしたわけじゃないけど、
AHKは起動(初期化)時にスクリプトを全部見て「::」のあるラベルを探して、
Hotkey, 「キー名」, 「キー名」 相当の事をしてホットキー登録しているはず。
で、これは実行するスクリプトのAutoexecブロックより先に行われている(はず)。

で、なんで>>274が駄目かっつーと
エラーダイアログ見れば分かると思うけど、実行時エラーじゃなく、
パース時のエラー(文法エラーとか)でしょ。
初期化時には、 h_key なんつー有効なホットキーはないし、
ユーザが使える変数なんかも無いわけで初期化エラーになる。
上から順に書いてあってその通りに処理しているように見えるけど実はそうじゃない。
IniRead までたどり着いてない。

277 :名無しさん@お腹いっぱい。:2009/02/14(土) 17:55:29 ID:bE1sAjs50
WinSet,Topの
>システムの設定によっては動作しない。
の条件ってなんだろう?

278 :名無しさん@お腹いっぱい。:2009/02/14(土) 20:29:40 ID:FTwXZkWh0
>>276
なぁオマエ一言多いとかリアルで言われないか?

279 :名無しさん@お腹いっぱい。:2009/02/14(土) 20:58:12 ID:mkT/24Fx0
>>278
オマエ一言多い

280 :名無しさん@お腹いっぱい。:2009/02/14(土) 21:24:53 ID:sliL46ld0
>>279
オマエ一こt(ry

281 :名無しさん@お腹いっぱい。:2009/02/14(土) 21:53:18 ID:fL3JIfIu0
トレイアイコンをクリックしたら実行するってどうやるの?

282 :名無しさん@お腹いっぱい。:2009/02/15(日) 12:01:39 ID:VXj0TK7a0
なんつーか、大したことないんだが274みたいな奴って発想力が面白い。
プログラムってスキルも大事だが発想力だと思う瞬間だったよ。

283 :名無しさん@お腹いっぱい。:2009/02/15(日) 14:03:58 ID:BLcyg5Ix0
以上、本人でした。

284 :名無しさん@お腹いっぱい。:2009/02/15(日) 14:16:47 ID:4Lz/N4h80
( ゚∀゚)アハハ八八ノヽノヽノヽノ \ / \/ \

285 :名無しさん@お腹いっぱい。:2009/02/15(日) 16:34:58 ID:WX2c84/Q0
まあ、スマートではないな>>276

286 :名無しさん@お腹いっぱい。:2009/02/16(月) 02:28:52 ID:mgBRF9yu0
SetTimerで
WinGetPos,, Ypos,,, A
if (Ypos <= 30)
 WinMove, A,,, 19,,,,
Ypos =
return
というのを回していると、Firefoxで右クリックメニューが一瞬で消えてしまいます。
間隔を500〜2000にしたり、同じ事をLoopでやってみても同じで、この現象が起きるのは
Firefoxだけです。
どうかアドバイスお願いします

287 :名無しさん@お腹いっぱい。:2009/02/16(月) 03:13:35 ID:mMn42qaU0
if(Ypos <= 30 && Ypos != 19)
にしたらええんじゃないのか?

288 :名無しさん@お腹いっぱい。:2009/02/16(月) 03:19:38 ID:axPHiozx0
クリックすれば指定されたurlに飛ぶような文字列を
msgboxで出力したいのですがどうすればよいのでしょうか

たとえば
MsgBox,0, test,google
という出力をして、そのgoogleの部分をクリックすればhttp://www.google.co.jp/に飛ぶのです。
htmlが使えるなら
MsgBox,0, test,<a href="http://www.google.co.jp/">google</a>
こういうことです


289 :名無しさん@お腹いっぱい。:2009/02/16(月) 05:21:27 ID:w558LR820
>>288
GuiかMenu。
ポップアップメニューだと一回一回消えるから、Guiでつくればいいかもね。

290 :名無しさん@お腹いっぱい。:2009/02/16(月) 05:25:35 ID:w558LR820
>>281
流行らせるページの「タスクトレイアイコン操作」で望みが叶うかも。
何を望んでいるのかはわからんが。

291 :名無しさん@お腹いっぱい。:2009/02/16(月) 05:39:14 ID:w558LR820
>>286
簡易の絶対領域みたいだね。TTBaseプラグインでもあったな。

292 :名無しさん@お腹いっぱい。:2009/02/16(月) 06:36:37 ID:DfB2sRU60
>>289
なるほど
その手がありましたか
やってみます

293 :名無しさん@お腹いっぱい。:2009/02/16(月) 09:20:33 ID:HnxszwKY0
>>291
質問者じゃないけど、どういう事か教えてくれまいか

294 :名無しさん@お腹いっぱい。:2009/02/16(月) 09:29:13 ID:gRNTeVF80
ggrksが来るぞ

295 :名無しさん@お腹いっぱい。:2009/02/16(月) 10:28:05 ID:m36Y1Mz60
絶対領域はググっても違うもんばっか出てくる。
http://www.forest.impress.co.jp/article/2008/05/15/zettai.html

296 :名無しさん@お腹いっぱい。:2009/02/16(月) 13:34:08 ID:w558LR820
あれ?違った?>>295みたいなことをしたいのかと思ったわw混乱させてゴメンね。

297 :名無しさん@お腹いっぱい。:2009/02/16(月) 15:56:36 ID:dAYg3thQ0
>>290
それってタスクトレイアイコンを直接操作するためのものじゃないの?

298 :名無しさん@お腹いっぱい。:2009/02/16(月) 22:15:59 ID:mgBRF9yu0
>>287
即レスくれたのに遅くなってすみません、
if(Ypos <= 30 && Ypos != 19)にしたら快適動作で幸せです。
&& Ypos != 19が必要だった理由が今ひとつ分かっていませんが勉強してみます。
有難うございました

299 :名無しさん@お腹いっぱい。:2009/02/17(火) 00:33:23 ID:Uxje6XHz0
guiでウィンドウの中に exit ボタンを作成し
そのボタンを押すとそのウィンドウを閉じるだけの物をつくりたいです

はやらせるページのにあるものを使用して次のような物を作ったものの
うまく動きません

Gui,Add,Text,,testtest
GUI,Add,Button,,Exit

gui,show

ButtonExit:
ExitApp

どこを直せばよいのでしょうか

300 :名無しさん@お腹いっぱい。:2009/02/17(火) 00:43:51 ID:p7oLYgT60
gui,show
return
ここで終わらせないとExitAppまでいっちゃうぞ。

301 :名無しさん@お腹いっぱい。:2009/02/17(火) 01:20:14 ID:Uxje6XHz0
>>300
あ、普通に動きました
そりゃそうですね
ご指摘ありがとうございます。

302 :274:2009/02/17(火) 01:36:11 ID:ChZCT6AI0
>>275-276
ありがとうございます。無事できました。
276さんの書いていることは自分なりに勉強になりました。

便乗するようで悪いのですが、多重起動をしようとする際現状だと英語のメッセージが出るんですが
Menu, TRAY, NoStandard
のように消して、日本語にすることって可能でしょうか?

303 :名無しさん@お腹いっぱい。:2009/02/17(火) 02:38:11 ID:t03ashNM0
      ドッカーン!
      (⌒⌒⌒)
      |||
     _____
   /::::::::::::::::::::::::::\〜プーン     
  /:::::::::::::::::::::::::::::::\〜プーン  
  |:::::::::::::;;;;;;|_|_|_|_|〜プーン   
  |;;;;;;;;;;ノ∪  \,) ,,/ ヽ〜      
  |::( 6∪ ー─◎─◎ )〜      
  |ノ  (∵∴ ( o o)∴)〜      
  | ∪< ∵∵   3 ∵> ムッキー!   
  \        ⌒ ノ______ 
    \_____/ |   | ̄ ̄\ \
___/      \   |   |    | ̄ ̄|
|:::::::/  \___   \|   |    |__|
|:::::::| \____|⊃⊂|__|__/ /
|:::::/        | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕

304 :名無しさん@お腹いっぱい。:2009/02/17(火) 14:45:20 ID:Bio3yT//0
やろうと思えば、ウィンドウの監視と
COntrolsettextで出来なくもなさそうだけど…

305 :名無しさん@お腹いっぱい。:2009/02/18(水) 04:54:19 ID:ZSSUooit0
若干スレ違いかもしれませんが、
WindowsのHDDコントローラ(ATA)のモードが、
UDMAになってるか、PIOになっているかを、
ahkから読み取るには、どのようにすればできそうでしょうか。

何台もPCを使っていると、いつのまにかPIOになっていることがあったので、
それを起動時にチェックしてバルーン通知したいと考えています。

306 :名無しさん@お腹いっぱい。:2009/02/18(水) 12:29:43 ID:YsZiDyJK0
レジストリの値を読むとか?

307 :名無しさん@お腹いっぱい。:2009/02/18(水) 17:28:59 ID:o28us3FR0
括弧 { を入力した後 } を加えてカーソルを中に入れるように
~+[::Send,}{left}
return
と記述したのですが } と{left}しか送られません
他の括弧は たとえば<> 同じように
~+,::Send,>{left}
return
でうまくいってるのですが、どのようにしたら {} でも成功するでしょうか?


308 :名無しさん@お腹いっぱい。:2009/02/18(水) 19:06:54 ID:FVUyG2Or0
>>307
つ 特殊記号のエスケープ
  ttp://lukewarm.s101.xrea.com/commands/Send.html


309 :名無しさん@お腹いっぱい。:2009/02/18(水) 19:34:48 ID:29d3Le160
俺も>>231みたいに「 , 」(コンマ)を使うホットキーが使えなかった。
コンマ使うホットキーを今使いたいわけじゃないが、
もし必要になった時に困るので調べてみた。OSはWinXP SP3。
 
以下試したこと
 ×Hotkeyコマンド( Hotkey,% ","〜 )
 ×Hotkeyラベル( ,:: 〜 )
 ×GetKeyState(",","P")→状態取れず
 ×本体バージョンをあれこれ変えた
 ○別PCで同じスクリプトを試した(WinXP SP2)
 ○「 vkBCsc033 」形式で書く
 
vkBCsc033を使った方が確実かもしれない。

310 :名無しさん@お腹いっぱい。:2009/02/18(水) 20:56:25 ID:o28us3FR0
>>308
ありがとう
解決しました

311 :名無しさん@お腹いっぱい。:2009/02/19(木) 00:32:15 ID:nBgazVqW0
>>219-220
これの解決法ないでしょうか?
似たようなスクリプト作ったんですがやはり数分すると
クリップボードの監視が無効になってしまいます。

312 :名無しさん@お腹いっぱい。:2009/02/19(木) 00:58:08 ID:YWf8g0hR0
timerでreload仕込むとか

313 :名無しさん@お腹いっぱい。:2009/02/19(木) 11:09:45 ID:KfP6MoHK0
OnClipboardChange: じゃなくて ClipWaitで監視してみるとか?
あとはAPI のクリップボード関数で直接弄るか。

関係ないが、クリップボード内容がEXCELデータのときに
ClipboardALLで丸ごと待避しようとするとExcelがハングする。
DllCall("GetClipboardOwner",Int) でオーナーウィンドウを調べて
Excelがオーナーの時は テキスト内容だけ保存するようにして回避してるがちと面倒だ。

314 :名無しさん@お腹いっぱい。:2009/02/19(木) 11:41:34 ID:KfP6MoHK0
そういや昔あったクリップボードユーティリティースレでもこの手の話題あったな。

確かクリップボードの変更通知はクリップボードビューアチェインに接続されたソフト間での
バケツリレー方式で伝えられていくので、間に行儀の悪いソフトがいるとチェインから勝手に
外されてしまって、それ以降の変更通知が受け取れなくなるって話だったような。
巷によくあるクリップボード系ユーティリティーでは定期的にチェイン接続し直すことで
対策を取ってるとかだったと思う。

よくわからんがAHKでも ONMessage()で CallBackサポートされてるし、具体的なサンプルは
clcl のソースとか見ればたぶんできるんじゃね。
英語できるんならAHK作者氏に対策方法添えて要望出すのが手っ取り早いとも思うけど。

315 :名無しさん@お腹いっぱい。:2009/02/19(木) 12:09:33 ID:BAYW6hF70
流れ無視して悪いがさっぱり分からんので、教えて頂きたい

例えば、
 -t C:\Documents and Settings C:\Program Files
というような文字列を、
 -t "C:\Documents and Settings" "C:\Program Files"
というように、パスっぽい文字列に引用符をつけるには、
どうすればいいのだろうか?


316 :名無しさん@お腹いっぱい。:2009/02/19(木) 12:53:07 ID:IHzf1wv30
文字列の中に実在するパスがあったら囲む、くらいじゃないの

317 :名無しさん@お腹いっぱい。:2009/02/19(木) 13:27:25 ID:IHzf1wv30
適当に作った。かっこ悪い。

Hoge(str) {
 StringSplit, arr, str, %A_Space%
 idx := 0
 Loop {
  if (idx++ >= arr0)
   break
  c := arr0 - idx
  Loop {
   p := arr%idx%
   Loop, %c%
    i := idx + A_Index, p .= A_Space . arr%i%
   if FileExist(p) {
    arr%idx% := """" arr%idx%, idx += c, arr%idx% := arr%idx% . """"
    break
   }
   if (c-- < 1)
    break
  }
 }
 Loop, %arr0%
  ret .= ((A_index > 1) ? A_Space : "" ) . arr%A_Index%
 return ret
}

318 :名無しさん@お腹いっぱい。:2009/02/19(木) 13:39:31 ID:BAYW6hF70
>>316-317
ぐはっ、わざわざ作って頂けるとは!
よくそんなすぐに作れるな、初心者からすれば驚愕ですよ
ありがとー

319 :名無しさん@お腹いっぱい。:2009/02/20(金) 18:36:07 ID:+ofqUOOa0
vistaじゃFileSetTime使えないのかな

320 :名無しさん@お腹いっぱい。:2009/02/21(土) 21:01:51 ID:FzZoDrMY0
FirefoxにAlt+Rで、戻るを割り当てたいのですが、
autohotkeyからPostMessageを送って設定することは可能でしょうか?
可能であるなら、下の0x111,28690,0,,A に相当する値をお教えいただけないでしょうか? m(__)m
   !R::PostMessage,0x111,28690,0,,A ;// 戻るを割り当てたい
firefoxでPDFを開くとフォーカスがacrobatに奪われるので、
autohotokeyを使って、戻るのキーを割り当てられないかと試行錯誤しております

321 :名無しさん@お腹いっぱい。:2009/02/21(土) 21:52:11 ID:0EOzQQjN0
うちは↓でいける @Fx3.0.6 on XP SP3
#IfWinActive, ahk_class MozillaUIWindowClass
!Left::Send, {Browser_Back}
!Right::Send, {Browser_Forward}

322 :320:2009/02/21(土) 22:10:01 ID:FzZoDrMY0
>>321
ありがとうございます
助かりました

323 :名無しさん@お腹いっぱい。:2009/02/22(日) 20:03:09 ID:qnu0ZxRB0
自分も前から気になってたけど、FirefoxはSendMessageとかPostMessageは受け取らないのでしょうか?
非アクティブのままにautohotkeyから操作したいんですけど?

324 :名無しさん@お腹いっぱい。:2009/02/22(日) 20:13:46 ID:q+YO7qML0
ご存じの通りマルチプラットフォームのものでWin専用って訳じゃないから、
ウィンドウメッセージ受けとってもスルーされるものが多いと思う。

WM_MOUSEWHEEL とか WM_KEYDOWN/UP などは受けとってそれなりに動く。
メニューバーやステータスバーもウィンドウズのものじゃなく独自に作ったもの。(>>254参照)
Firefoxだけじゃなく Java とかもそうだけどそういうのをコントロールするのはちと厳しいね。

325 :名無しさん@お腹いっぱい。:2009/02/22(日) 22:56:59 ID:lt/+4kjg0
確実性には乏しいかも知れんが
ControlSend か ControlClick あたり試してみたらどうだろうか

326 :名無しさん@お腹いっぱい。:2009/02/22(日) 22:58:01 ID:qnu0ZxRB0
>マルチプラットフォーム

これをすっかり忘れてました、そう言われると出来なくても当然って感じですね
ありがとうございました。

327 :名無しさん@お腹いっぱい。:2009/02/22(日) 23:19:18 ID:qnu0ZxRB0
>>325
ありがとうございます。
今ちょっと試してみたら、ControlSendでなりそうです。

328 :名無しさん@お腹いっぱい。:2009/02/23(月) 00:59:34 ID:chhOXYqK0
Enterを右Ctrlにするやり方がわかりません。
Enter::RCtrlでBSを入れようとすると
Enter+Hで1回はBS入るけど、
Enter押したままもう一度Hを入れると
こんどはそのままHが入力されます。
どうしたらいいんでしょうか?

329 :名無しさん@お腹いっぱい。:2009/02/23(月) 07:31:59 ID:xVptRsNb0
コロンのhotkeyに割り当てる方法はないでしょうか?
:::Send,{A} ;// : をAに割り当て
vkBAsc028::Send,{A} ;// : をAに割り当て
のどちらで設定しても、:のhotkeyが有効になりません

セミコロンだと以下で割り当てられるのですが…
vkBBsc027::Send,{A}


330 :名無しさん@お腹いっぱい。:2009/02/23(月) 21:29:51 ID:6awX2jgS0
AutoHotkeyを流行らせるページ
http://lukewarm.s101.xrea.com/
↑の入力置換関連部分を無視すればAutoIt3の日本語ドキュメントになる?

しかしAutoIt日本語ドキュメントなさ杉

331 :名無しさん@お腹いっぱい。:2009/02/23(月) 23:50:07 ID:KDZEcOqx0
結構書き方違う

332 :名無しさん@お腹いっぱい。:2009/02/24(火) 03:37:01 ID:mnDWmi6d0
mayuでは難しい部分を、最近ahkで作り始めました。
VIMが1枚だけ存在したらアクティブに、
2枚以上存在したらリストを表示するようにしたいのですが、
以下の状態で既に詰んでます...どなたかご教示願います。
#^+!f2::
SetTitleMatchMode,2
WinGet, title, Count, - GVIM
If %title% = 0
MsgBox, none
else if %title% = 1
MsgBox, vim
else
MsgBox, %title%

ウインドウ数は取得できてるようなのですが...

333 :名無しさん@お腹いっぱい。:2009/02/24(火) 03:48:04 ID:nmUnQgbz0
If title = 0

334 :332:2009/02/24(火) 04:06:13 ID:mnDWmi6d0
>>333
ありがとうです!
盲点でした。

335 :名無しさん@お腹いっぱい。:2009/02/24(火) 06:40:25 ID:9IBsCb9z0
変数は常に%%で囲むっていう風に統一してくれればいいのに。

336 :名無しさん@お腹いっぱい。:2009/02/24(火) 08:53:53 ID:hmO2qa6n0
if 1 = 0

こんな書き方になっちゃうもんなぁ。

337 :名無しさん@お腹いっぱい。:2009/02/24(火) 09:20:34 ID:ZrVDgkhH0
文字列リテラルは一般の言語様式に合わせてくれた方がいいな
シングル・ダブルクォートで囲むとか

338 :名無しさん@お腹いっぱい。:2009/02/24(火) 15:13:52 ID:10tP/ti50
SandS.ahkの2008.09.21版かそれ以降のものがほしいのですが、どなたかお願い
できないでしょうか。


339 :名無しさん@お腹いっぱい。:2009/02/24(火) 15:23:09 ID:A2x/mr5E0
あぷろだにまだ上がってるよ
http://lukewarm.s101.xrea.com/up/file/089.zip

でも SandS だったら前スレ264のがシンプルかつスマートでいいと思う。

> 264 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2008/09/21(日) 22:24:04 ID:jd9yjK/i0
> 自分の Shift & Space はこれ。
>
> Space Up:: Send, % "{Shift Up}" (A_TimeSincePriorHotkey < 200 ? " " : "")
> +Space:: Send, +{Space}
> >+Space:: Return
> Space:: RShift

340 :名無しさん@お腹いっぱい。:2009/02/24(火) 16:20:53 ID:10tP/ti50
>>339
どうもありがとうございます。とても助かりました。
(A_TimeSincePriorHotkey < 200 ? " " : "")
てあたりが気がきいていると思いました。

341 :名無しさん@お腹いっぱい。:2009/02/26(木) 14:47:02 ID:qGUJzHwS0
最長マッチのHotstringを作りたいのですが
どうすればよいのでしょうか




342 :名無しさん@お腹いっぱい。:2009/02/26(木) 17:32:35 ID:zx85xhcp0
Feb 25, 2009
Version 1.0.48 is released.

343 :名無しさん@お腹いっぱい。:2009/02/26(木) 18:09:02 ID:N/JDSNBe0
パッチ等を当てずに安心して2バイトコードを使える日は、いつになるのだろうか・・・

344 :名無しさん@お腹いっぱい。:2009/02/26(木) 21:06:58 ID:eljuCyAE0
ttp://www.autohotkey.com/changelog/ の適当な訳

1.0.48 - February 25, 2009

■互換性
後方互換性に影響するであろう変更は、今回より、変数に格納された浮動小数点値が高精度なったこと。
数値精度の差に依存するスクリプトは精査して、更新する必要があるかも。
"SetFormat Float" (例: SetFormat, Float, 0.6) を *各所* で利用することで互換性が維持できるはず。
「SetFormatフロート」は高精度値を不活化するけど、新しい速い浮動小数点演算のうちのいくらかを使わない。

■パフォーマンス
このリリースの主なテーマはよりより速い実行。
スクリプトはほとんどすべてより速く実行できるはず- 特に式とか整数の評価の多用では(場合によっちゃ通常の3倍!)。
完全なる恩恵を得るには、スクリプトは、SetFormatを使用しないようにするべきか、あるいはSetFormatの速いモードを使用するべき。

345 :名無しさん@お腹いっぱい。:2009/02/26(木) 21:07:22 ID:eljuCyAE0
■性能改善
- 式と関数のコンパイルをコッテリとさせて、より速くなった(とくに複雑な製数式で、カンマも含む)
- 変数に格納されたバイナリ数値をキャッシュさせて文字列(から/へ)変換するのをやめるようにした。これで変数の算術演算が速くなった。
- 式やマッチ/比較コマンド内でのリテラルの数値をバイナリ数値とするようにしたことにより速くなった。例) X+5 とか "if x > 5"
- ブロックを持つループやIFやELSEを "{" をスキップすることで速く実行できるようになった。この結果、"{" が ListLinesで省略されるようになった。
- スレッド作成のパフォーマンスの改善、OnMessage(), RegisterCallback(), GUIイベントの rapid-fireスレッドを補佐する。(註:よくわからん)
■既存スクリプトに影響するかもしれない変更点(トップで記述されているより高精度な浮動小数点以外のもの)

- "SetFormat, Integer, Hex" が有効な場合、リテラルの10進値を変数に格納するときに16進数に変換する。これは普通表示用途なはず。
- OnMessage()パフォーマンスについて、メッセージ番号とHWNDは無条件で16進数でなく通常の数値としてやってくる。これは通常表示用となはず。
- パフォーマンスにおける様々な改良を達成するために、スクリプトは今よりちょっと多くのメモリを使用する。(変数と式の数に比例している)
- if var is time" と "YYYYMMDDHHMISS"形式のタイムスタンプを変更・修正し、月の範囲が1-12内に無い場合不正なものとして認識するようにした。[ニックありがと]
- Dynamic関数呼び出しを変更・改善し、関数に定義されたパラメタ数よりも多いものも許容するようにした。このときパラメタは評価はされるが破棄される。[Lexikosが開発(註:Autohotkey_Lの人)]

■その他の変更点
- Autohotkey_Lより追加 → IsFunc() / while-loop / assume-static / A_IsPaused / A_IsCritical / WheelLeft と WheelRight
- NumPutで UInt64をサポート
- UPXを変えた

346 :名無しさん@お腹いっぱい。:2009/02/26(木) 21:11:50 ID:eljuCyAE0
バグフィックスは面倒なので割愛w


#if は取り入れなかったのかぁ・・・残念

347 :名無しさん@お腹いっぱい。:2009/02/27(金) 00:57:18 ID:aRIZ1QSP0
複数のウインドウを高速に一度に前面にもってくることってできないでしょうか?
今は、10枚くらいあるウインドウをWinActivateとLoopで前面化を行っていますが、
かなりまったりと順番に前面にでてきてしまいます。
もとパッっと出すことはできないものかなあと思いまして。

今はこんな感じでやってます。(指定のexeのウインドウを全部前に出す例)

+^!e::
Process, Exist, MageMogeChart.exe
if ErrorLevel = 0
 return
WinGet, id, list, ahk_pid %ErrorLevel%
Loop, %id%
{
  StringTrimRight, this_id, id%a_index%, 0
  WinGetTitle, this_title, ahk_id %this_id%
  WinActivate, ahk_id %this_id%
}
return

348 :名無しさん@お腹いっぱい。:2009/02/27(金) 01:25:30 ID:c+2Jobtp0
SetWinDelayでコマンド発行後のウェイトを指定してやる。
ウィンドウの重なりが逆順になると思うけど。

v1.0.48用で書いてみた

SetWinDelay, 10
Process, Exist, (ここにExe名)
WinGet, list, LIST, ahk_pid %ErrorLevel%
while list>0 {
 WinActivate, % "ahk_id " list%list%
 list--
}


349 :名無しさん@お腹いっぱい。:2009/02/27(金) 20:30:19 ID:uqsx4u4h0
DELL LATITUDE E6400でTrackWheel(VER. 20081206)を使ってたんだけど
しばらくぶりにバージョンアップしようと最新版/RC版に変えてみたら中ボタンに反応しない。
なんてこった。

350 :名無しさん@お腹いっぱい。:2009/02/28(土) 00:25:24 ID:X+HJqC5y0
ショートカットキーが付いてないソフトのボタンにahkでキーを割り当てたいんですけど各ボタンを指定するにはどうすればいいですか?

351 :名無しさん@お腹いっぱい。:2009/02/28(土) 00:39:59 ID:imLzKJgB0
ものすごい放置してた。久しぶりにソース見た。思い出すのに時間がかかった。

>>349
AHK v1.0.48 だと DllCall の Return Type を指定するとうまくいかないところがある。
983行目の最後の
  ,"Int"
を外すと動くかもしれない。

というか、反応しないって事はホットキーのアサインがうまくいってないかも。
全く構造が違うので、Iniは去年のものは流用できないっす。

>>350
1) ControlClick を使う
WindowSpyで独自のボタン情報がとれるなら 直接指定モードでいいはず。
情報がとれないなら、座標指定モードで(ツールバーならこっち)。

2) ツールバーのコマンドを調べてウィンドウメッセージを送る(玄人向け)
ttp://lukewarm.s101.xrea.com/myscripts/index.html の "Inspecting Toolbar IDs" を使って
PostMessage を使って WM_COMMAND を送る

352 :349:2009/02/28(土) 07:36:34 ID:ZNlNraZX0
>>351
どうも
・1.0.47でも1.0.48でもダメ
・1.0.48で983行目の最後の,"Int"外してもダメ
・iniは流用していない
で、iniのButton=MButtonを=RButtonにしてみると反応する。スクロールもできる。
けどボタンを離してもスクロールのモードから戻ってこない。

てな状況です。

353 :名無しさん@お腹いっぱい。:2009/02/28(土) 20:06:00 ID:imLzKJgB0
>>352
中ボタンで反応しないのと、右ボタンで暴走したままなのは別事象っす

中ボタンの方だけど、メイン画面開いて Ctrl+H かメニューから View→Hotkeys... でホットキー一覧出して
 m-hook  *MButton
って出てたら、ホットキー登録は問題ないはず。なってないなら大問題・・・。
そうなっているのに動かないなら他のユーティリティが影響していると思われる
確認をお願い

> RButtonにしてみると・・・モードから戻ってこない
こっちはバグですな・・・
間違えた記述のあるサイトのソースを丸々パクっていたため。考えもせず置換して使ってたorz

誤: TW_RBUTTONDOWN:=0x205 , TW_RBUTTONUP:=0x206
正: TW_RBUTTONDOWN:=0x204 , TW_RBUTTONUP:=0x205

650行目あたりから,、それぞれ2カ所あるっす


# 色々直したら zip で置き直す予定

354 :349:2009/02/28(土) 22:00:14 ID:ZNlNraZX0
>>353
> m-hook  *MButton
出てます。
他のユーティリティか、うーん。旧バージョンは動くのになー。
とりあえずmsconfigで診断スタートアップにしてみたけどダメでした。

RButtonではちゃんと動くようになりました。

355 :名無しさん@お腹いっぱい。:2009/02/28(土) 23:58:39 ID:imLzKJgB0
旧verで動かしてたんだからそこに問題はないとは分かるんだけど、一応って事で
・・・そうなると機序的に何処に問題があるかは、今はちょっと分からないっす
一応、ソースもう一度読み直ししてみるっす

356 :350:2009/03/01(日) 03:43:58 ID:Rc2HQ5QJ0
>>351
ありがとうございました
ControlClickでいけました

357 :349:2009/03/01(日) 20:30:20 ID:GJkhTa1h0
>>355
お手数かけてすまそ。
中ボタンに反応しないって書いたけど、
TWを起動している状態ではアプリケーションでの中クリックも効かなくなってるので
TW自体は一応反応してる気がします。

358 :名無しさん@お腹いっぱい。:2009/03/02(月) 10:53:15 ID:3PFCvLeG0
>>348
SetWinDelay で指定してみたら、瞬時にとはいきませんがかなり早くなりました。

最新のはwhile使えるようになったんですね

ありがとうございました。

359 :名無しさん@お腹いっぱい。:2009/03/02(月) 15:03:15 ID:4Ix+9L8p0
AutoHotkeyでmacのDashbordみたいなの作れないかな
と自分で無理なことを言ってみる

360 :名無しさん@お腹いっぱい。:2009/03/02(月) 22:51:10 ID:zVxOqqcX0
ダブルクリックとドラッグの挙動をカスタムしたいんですが、見つかりません
コマンド教えてください

361 :名無しさん@お腹いっぱい。:2009/03/04(水) 05:08:22 ID:ZvTbo6At0
+WheelDown::WheelUp

このスクリプトでしばらくは正常に動作するのですが
71 hotkeys have been received in the last 577ms.
というメッセージが出てきます。
どういうことでしょうか?

362 :名無しさん@お腹いっぱい。:2009/03/04(水) 05:10:50 ID:pYSwiV1N0
スクリプトの冒頭で

#MaxHotkeysPerInterval 200

と書くと良い

363 :名無しさん@お腹いっぱい。:2009/03/04(水) 05:22:01 ID:ZvTbo6At0
#MaxHotkeysPerInterval 300でいけました
ありがとうございます。

364 :名無しさん@お腹いっぱい。:2009/03/04(水) 15:08:04 ID:VwNNjCy00
Dllcallを使いたいのですが、構造体というものがわからないのでちょっと質問させてください。
AHKで構造体を使うというのは、

メタボかどうかを判断したいので、健康診断の記録から
・体重と腹回りの項目を見ろ(構造体)
・上から3行目の数字と、上から7行目の数字を見ろ(AHKの強引な手段)

といった感じで、メモリの位置を直接指定しているといった認識でおkでしょうか。

365 :名無しさん@お腹いっぱい。:2009/03/04(水) 15:52:18 ID:rkwP19PJ0
Cも何も分からんけどAHKでゴリゴリDllCall使っている漏れの私的な見解

> メモリの位置を直接指定しているといった認識でおk
たぶんそう

構造体って言語仕様でも何でもなく、
「ある番地を起点に確保したメモリの使い方はこうするんだぜ」
って決め方だと思ってる。(言語でサポートされているのは使うのは楽らしいけど。)
だからVarSetCapacityとかでメモリ領域確保してアドレス渡しすれば結構使えちまう。

366 :名無しさん@お腹いっぱい。:2009/03/04(水) 23:33:02 ID:oTTwde4w0
suspend 時のアイコンを変更できない物でしょうか?

367 :名無しさん@お腹いっぱい。:2009/03/05(木) 08:18:57 ID:7I9asjSe0
ttp://www.autohotkey.com/forum/topic22975.html

368 :名無しさん@お腹いっぱい。:2009/03/05(木) 09:07:32 ID:DThF++lC0
>>367
いやコンパイルせずにソースを実行するときに
アイコンを変更することができない物かと
試行錯誤をしていました
無理っぽいですね
ありがとうございます

369 :名無しさん@お腹いっぱい。:2009/03/05(木) 09:32:36 ID:UhjQBASr0
会社でahkを使ってたら、Hなダイヤルアッププログラムと誤解された

370 :名無しさん@お腹いっぱい。:2009/03/05(木) 11:37:52 ID:rcFfvT/S0
A(在り得ないほど) H(えっちな) K(娘通信) ?

371 :名無しさん@お腹いっぱい。:2009/03/05(木) 11:47:21 ID:lgTNReVh0
>>366
メニューは作り直すしか無さそう。

menu, tray, NoStandard
menu, tray, icon, shdoclc.dll, 1, 1
menu, tray, add, Suspend Hotkeys, suspend_hotkeys
menu, tray, add, Exit, ExitSub
return

suspend_hotkeys:
suspend
menu, tray, icon, shdoclc.dll, % A_IsSuspended+1 ", 1"
menu, tray, togglecheck, Suspend Hotkeys
msgbox, suspend
return

#s::
suspend, permit
gosub, suspend_hotkeys
return

ExitSub:
ExitApp

372 :名無しさん@お腹いっぱい。:2009/03/05(木) 12:01:41 ID:lgTNReVh0
あ、俺勝手にトレイアイコンの事だと判断しちゃったな・・
違ってたらスマン

373 :名無しさん@お腹いっぱい。:2009/03/05(木) 12:28:12 ID:GNmqhAQE0
>>371-372
おお、これで十分です
トレイアイコンの変更を意図していました
ありがとうございます。

374 :名無しさん@お腹いっぱい。:2009/03/05(木) 20:15:15 ID:xz90t0puP
会社ではトレイアイコンは常に非表示に設定してる

375 :名無しさん@お腹いっぱい。:2009/03/06(金) 00:46:39 ID:Y32mGPTe0
だからどうした。

376 :名無しさん@お腹いっぱい。:2009/03/06(金) 02:31:08 ID:6lo5rU0D0
ctrl と j でエンターキーを押した動作をさせたいのですが


^j::enter

と書くと、ctrlとjが押し下げられているままとなっているようで、
実際には ctrl とjを押しながらエンターキーを押す動作となってしまいました

^j::Send,{enter}

と書いても、ctrlが押し下げられているままとなっているようでした

そこで

^j::Send,{Blind}{Ctrl Up}{enter}

と書いたら一回目の入力は成功するものの、
{Ctrl Up}のせいで次回以降 ^j にヒットしなくなってしまいました

ctrl と j でエンターキーを押し、かつそれを連続して入力する設定は可能でしょうか?

377 :名無しさん@お腹いっぱい。:2009/03/06(金) 02:52:01 ID:EIumwJQn0
>>376
^j::Send,{enter}
で何の問題もなくエンター打てるけど?

378 :名無しさん@お腹いっぱい。:2009/03/06(金) 05:33:37 ID:6lo5rU0D0
>>377
キーの動作を見てみると、コントロールキーも一緒に送信しているようなのです。
fenrir 経由でx-finderを起動するときに
コントロールキーも一緒に送信されると
多重起動されてしまいます
これを防止したいと思いました。

通常のアプリケーションでは何ら問題ないようだとは
うすうす感じていますが……

379 :名無しさん@お腹いっぱい。:2009/03/06(金) 06:53:07 ID:atFpTk3M0
さらに
^j::Send,{Blind}{Ctrl Up}{enter}{Ctrl Down}
としたらどうなの

380 :名無しさん@お腹いっぱい。:2009/03/06(金) 12:05:24 ID:sR26OTSx0
>>379
それなら大丈夫そうです
ありがとうございます。

381 :名無しさん@お腹いっぱい。:2009/03/06(金) 15:01:28 ID:dtsNACZp0
>>359
俺は逆だな。macでAutoHotkeyが欲しい。

382 :名無しさん@お腹いっぱい。:2009/03/06(金) 22:52:29 ID:gMTAf0z20
タスクトレイのアイコンをダブルクリックしたら
hello!と表示させたいのですが、できますか?
Gui の Menu の項目を読んでもわかりません
Click, ClickCount あたりを使えばよいのでしょうか?

383 :名無しさん@お腹いっぱい。:2009/03/07(土) 00:30:41 ID:GNhe+RZO0
>>382
できる。
トレイにメニュー項目を追加してデフォルトにする

384 :名無しさん@お腹いっぱい。:2009/03/07(土) 04:04:12 ID:41mSVwUw0
>>383
ありがとうございます。
できました

385 :名無しさん@お腹いっぱい。:2009/03/07(土) 08:14:05 ID:HkiIUUNz0
AHKのGUIが便利すぎるので、フロントエンドにAHKを使い、パラレルポートの制御をしたいです。

用途は機械制御(赤外線の人センサーによる出入り回数の把握)で、数個のLEDの点灯制御と、
10bps(10kじゃないです)の双方向シリアル通信で、制御の確実性(信頼性)は低くてOKです。

本家を検索し、シリアルポートをGUIで制御するサンプルはありました。
http://www.autohotkey.com/forum/topic26533.html

これのパラレルポート版に相当するサンプルがあると最高なのですが、探せませんでした。
ジョイスティック制御のdppの技術が使えそうですが、本家をdppで検索してもヒットせず。

ポート制御の達人がいらっしゃいましたら、なにかヒントをいただけると嬉しいです。

386 :名無しさん@お腹いっぱい。:2009/03/07(土) 08:57:54 ID:EX6aOmt+0
>>385
そういうのは VBとかDelphiとかのフォーラムとか過去ログ覗いたらいいと思う。
前にDelphi使ってたけど、シリアルポート制御のコンポーネントとかいくつかあったはず。
VBにもあるだろうと思う。それを移植するか、DLL化して使うか。
多分、需要がなくなっていない分野なら、C#やVB.netのものも見つかると思う。

VB、Delphi、C#、VB.net はVB以外は無料バージョンあるから、
ポトペタでGUI作れるからAHKよりよほど楽なんで、いっそそっちの言語でつくってもいいし

387 :名無しさん@お腹いっぱい。:2009/03/07(土) 09:00:02 ID:EX6aOmt+0
ごめん、パラレルポートだったか。どちらにせよ、検索してみてほしい。

Delphiだとこの辺。

Delphi-ML過去ログ検索
http://leed.t.u-tokyo.ac.jp/~takeuchi/delphi/search.cgi
Delphi ML archive | Google グループ
http://groups.google.co.jp/group/delphicbuilder-ml-archive
Delphi Q & A掲示板
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi


388 :名無しさん@お腹いっぱい。:2009/03/07(土) 09:43:07 ID:EX6aOmt+0
> 【1 OSの種類         .】 Windows Vista SP1
> 【2 Excelのバージョン   】 Excel 2007
> 【3 VBAが使えるか    .】 はい
> 【4 VBAでの回答の可否】 否
> 【5 検索キーワード     】 Excel 補完 タブ Tab エンター ENTER など
>
> すごく、無茶な質問を承知でお聞きいたします。
>
> Excel上やVBAエディタ上では、補完候補の決定がタブになっているのですが、
> 他の開発環境のクセでエンターを間違えておして毎回イライラしてしまいます。
> 間違えないようにする方法、もしくは、タブではなくエンターで決定する方法はありませんでしょうか?

誘導されてきました。
こういうのってAutoHotKeyで可能なんでしょうか?

候補ウインドウが出ている時だけ、ENTERをTABに置換?
うーん考えただけで・・・

389 :名無しさん@お腹いっぱい。:2009/03/07(土) 12:24:08 ID:umaUJV8o0
英語版のキーボードと日本語版のキーボードを
それぞれ場合分けして処理することはできないでしょうか

390 :名無しさん@お腹いっぱい。:2009/03/07(土) 12:45:36 ID:GNhe+RZO0
>>388
出来ると思う。

>.>389
無理。

391 :名無しさん@お腹いっぱい。:2009/03/07(土) 13:43:56 ID:umaUJV8o0
>>390
そうですかわかりました

392 :名無しさん@お腹いっぱい。:2009/03/07(土) 20:19:46 ID:9fbJ8ZNJ0
メニューバーの編集(E)とかワードパットのフォントカラーとかを
操作できる命令はありますか?

393 :名無しさん@お腹いっぱい。:2009/03/07(土) 20:38:41 ID:MDzSZOKi0
あるよ

394 :名無しさん@お腹いっぱい。:2009/03/07(土) 22:23:07 ID:uKtAZx+C0
gui で作成したウィンドウにデフォルトでついている
右上の最小化ボタン(_)がありますよね?
これをクリックしたらタスクバーに表示せず
タスクトレイに格納したいのですが
どうすればよいのかわかりません

言い換えると、gui の操作で minimize のコマンドを送るようにできればいいのですが


395 :名無しさん@お腹いっぱい。:2009/03/08(日) 00:00:01 ID:tr/g5E240
>>386
情報どうもです。別方面からも検討してみます。

396 :名無しさん@お腹いっぱい。:2009/03/08(日) 10:26:24 ID:U6oXO4Qm0
Escキーを2回、トントンって入力するとウィンドウが最小化するスクリプトを
書きたいんだけど、どこが間違っているか教えて欲しい

Inputコマンド
http://lukewarm.s101.xrea.com/commands/Input.html

↓ソース
Esc::
Input,InputChar,C I L1 T2,endkey,{Esc},z,x
if ErrorLevel=Match
{
if InputChar={Esc}
WinMinimize, A
if InputChar=z
if InputChar=x
}
return


397 :名無しさん@お腹いっぱい。:2009/03/08(日) 10:34:55 ID:esDbqi200
キーのダブルタップはサンプルあるだろ

398 :394:2009/03/08(日) 12:41:19 ID:Zm/1oWz60
自己レスですが
gui close で何とかなりそうですね
スレ汚し失礼しました

399 :394:2009/03/08(日) 12:59:56 ID:Zm/1oWz60
たびたびすみません
やっぱりできません

400 :名無しさん@お腹いっぱい。:2009/03/08(日) 15:01:14 ID:INaMOjyr0
>>399
右クリフックしてWM_NCHITTESTでマウス位置調べたらいいんじゃね
HTMINBUTTON だったらGUIを Hideにする。
タスクトレイからの復旧はMenuを書き替えればできるべ

401 :名無しさん@お腹いっぱい。:2009/03/08(日) 20:24:31 ID:CbAikyhi0
>>400
ふむ、その手が使えそうですね
ありがとうございました

402 :名無しさん@お腹いっぱい。:2009/03/08(日) 20:39:34 ID:W44aSFYp0
まっとうにやるなら>>400だけど。別の方法

Menu, Tray, Add, ShowGui
Gui, Add, Text,, This is Test
ShowGui:
 Gui, Show
return
GuiSize:
 if A_GuiWidth<1
  Gui, Hide
 return

403 :名無しさん@お腹いっぱい。:2009/03/08(日) 22:31:03 ID:OvInxdiZ0
テキストファイルを読み込むときに
最終行を検出する方法はありますか?


404 :名無しさん@お腹いっぱい。:2009/03/08(日) 23:41:33 ID:W44aSFYp0
ないんじゃないかな。

Loop, PARSE, ファイル名, `n
 hoge := A_LoopReadLine

とすればループが終わったときに hoge には最終行の内容が入っているけど

405 :名無しさん@お腹いっぱい。:2009/03/08(日) 23:46:14 ID:ABSLuhUi0
>>404
そうできるのであれば十分です
どうもありがとうございます!

406 :名無しさん@お腹いっぱい。:2009/03/09(月) 18:31:39 ID:3Pb9nLSu0
ワードパッドの書式バーのフォントの色の変更や
太字化をahkでやりたいんですが座標指定でやるしかないんでしょうか?
WinMenuSelectでは反応しないし、
ボタンのハンドルをMouseGetPosで調べることもできません。
青とか赤の個別の色のボタンは調べられるんですが、値が毎回違うので
行き詰っています。

407 :406こういう感じでやりました:2009/03/09(月) 18:48:21 ID:3Pb9nLSu0
#F::
MouseGetPos, X , Y, W, OVC,2 ;これでハンドルを調べました
MsgBox %W% <--> %OVC%
clipboard = %OVC%
return

#G::
SetTitleMatchMode,2
DetectHiddenText, On

WinMenuSelectItem,ahk_id 0x50370,,7& ;ウインドウのハンドルからメニューバーとして操作しようとしましたが
WinMenuSelectItem,ahk_id 0x50370,,8& ;反応しません
WinMenuSelectItem,ahk_id 0x50370,,9&
WinMenuSelectItem,ahk_id 0x50370,,10&
WinMenuSelectItem,ahk_id 0x50370,,11&
WinMenuSelectItem,ahk_id 0x50370,,12&
;WinMenuSelectItem,ahk_id 0x50370,,1&,1& ;ファイル→新規、これは動きます


408 :406こういう感じでやりました:2009/03/09(月) 18:50:43 ID:3Pb9nLSu0
WinMenuSelectItem,ahk_id 0xd40372,,1& ;バー自体のアドレスからメニューバーとして操作しようとして
WinMenuSelectItem,ahk_id 0xd40372,,2& ;動きません
WinMenuSelectItem,ahk_id 0xd40372,,3&
WinMenuSelectItem,ahk_id 0xd40372,,4&
WinMenuSelectItem,ahk_id 0xd40372,,5&

WinMenuSelectItem,ahk_id 0xd60376,,1& ;反応しません
WinMenuSelectItem,ahk_id 0xd60376,,2&
WinMenuSelectItem,ahk_id 0xd60376,,3&
WinMenuSelectItem,ahk_id 0xd60376,,4&
WinMenuSelectItem,ahk_id 0xd60376,,5&

WinMenuSelectItem,ahk_id 0x9d01b2,,1& 
WinMenuSelectItem,ahk_id 0x9d01b2,,2& 
WinMenuSelectItem,ahk_id 0x9d01b2,,3& 
WinMenuSelectItem,ahk_id 0x9d01b2,,4&
WinMenuSelectItem,ahk_id 0x9d01b2,,5& 

ControlClick,,ahk_id 0xfb0194,,LEFT ;ハンドルが特定できません
MsgBox done
return

409 :nCIjdtNZgMN:2009/03/09(月) 18:51:33 ID:1ok/Ifbl0
comment5, http://kim-kardashian-video.limitedliability.us/index.html kim kardashian nude video, %-PP,

410 :406こういう感じでやりました:2009/03/09(月) 19:17:25 ID:3Pb9nLSu0
やり直したらinspect_toolbarがなぜか今回は動いたので
それでやってみます

411 :406こういう感じでやりました:2009/03/09(月) 23:05:06 ID:3Pb9nLSu0
連投すみません
ワードパッドの書式バーの位置をずらした後
(メニューバー・ファイル(ファイル...
    ツールーバー
     書式バー(MSゴシック...
のように


inspect_tool_ids で書式バーのコマンドIDを調べて(32801)

#G::
PostMessage,0x111,32801,0,,A
return

でフォントの色を選ぶボタンをahk経由で押させることは出来たのですが、
赤とか青とかの個別の色を押させることが出来ません。
方法はありますか?

412 :406-411(除409):2009/03/10(火) 00:39:25 ID:VYBxlQGq0
すいません、出来ました。Resource HackerでIDが調べられて
無事できました。ありがとうございました。長すぎる連投してしまい
本当に申し訳ないです。

413 :名無しさん@お腹いっぱい。:2009/03/10(火) 15:05:28 ID:rmSmGeHP0
起動してるプロセスを取得してその中から選択したプロセスを監視して任意の条件でいろいろする
ってのをやってみてるんだけど
IrvineとかJaneとかプロセスが二重に取得されてどっちを選べばいいかわからない

414 :名無しさん@お腹いっぱい。:2009/03/10(火) 15:11:02 ID:D/8zxGdl0
多重で起動してるの?すごい使い方だな。

415 :名無しさん@お腹いっぱい。:2009/03/10(火) 15:47:04 ID:rmSmGeHP0
一つしか起動してないけど取得されるのは二つになってるってこと

416 :名無しさん@お腹いっぱい。:2009/03/10(火) 16:27:55 ID:4NcKH5rc0
AHKでプロセスいじるのって Process コマンドでの
 存在チェック(PID取得)、  強制終了、  優先度変更、 終了/存在待ち
だけど、二重に取得されるってどういうことだろ

Process, Exist, Jane2ch.exe
pid := ErrorLevel
WinGet, list, LIST, ahk_pid %pid%
MsgBox, %list%
ってすると2個窓がとれるけど
これのことだったら >>144,147,153 あたりと同じなんだが・・・

417 :名無しさん@お腹いっぱい。:2009/03/10(火) 21:21:52 ID:gm+lfOz80
Delphi製のアレなら、既に解決方法は確立されているので検索してこい

418 :名無しさん@お腹いっぱい。:2009/03/11(水) 03:02:36 ID:pYoGuoaj0
WM_COMMANDでメニューバーをクリックしたときにでてくる新しいウインドウ
の中のコマンドに対するコマンドIDをしらべたいんですが、
何かいい方法はありますか?

窓コンもinspect_toolbarも反応しなくて、resource hacker
でも調べられません。

ddwinとかpdicビューワーに使いたいんですけど。

419 :名無しさん@お腹いっぱい。:2009/03/11(水) 07:16:24 ID:1ccOe8xw0
WheelScroll.ahk の改造版をうpしますた。ホイール加速を滑らかにしたつもり。
http://lukewarm.s101.xrea.com/up/ の 104.zip

420 :名無しさん@お腹いっぱい。:2009/03/11(水) 08:59:21 ID:12ef3abb0
AutoHotKeyのPython版みたいなのみつけた。
AutoHotKeyのスクリプトの記述性の低さが嫌な人にはいいのかも。

keyhac ?(craftware)?
http://sites.google.com/site/craftware/keyhac

まあ、AutoHotKeyはDSL(ドメイン特化言語)で手軽さがあってそれでいてGUI持つくれるというのがいいけどね。
(まあ、PythonもGUIいけるけど)

421 :名無しさん@お腹いっぱい。:2009/03/11(水) 10:22:40 ID:12ef3abb0
ちょっと質問です。OpenJaneで「お気に入り」に入れてあるスレを
お気に入りからはずして「印」のみつける(お気に入りからはずすと何故か「印」がはずれてしまうため)
というのを一発でやりたいと考えています。

メニューのコマンドを送ろうとしているのですが、ControlSendを使ってもキーが送られないようです。
以下のように単なるSendだと上手くいっているようなのですが、
ControlSendとSendの違いってなんなんでしょうか?

; OpenJane
#IfWinActive, Jane ahk_class TMainWnd
; Ctrl+D to delete favorite without deleting SIRUSI
^d::
 WinWait,Jane ahk_class TMainWnd
 Send, !tv
 Sleep, 100
 Send, !tm
; ControlSend,,!tv!tm ; damepo
return
#IfWinActive

422 :名無しさん@お腹いっぱい。:2009/03/11(水) 11:45:04 ID:iQp8Awzp0
Sendはフォーカスのあるところに送る
ControlSendはフォーカスが無くても、というか対象を指定してキーを送る

ウィンドウ指定+コントロールの指定なし、でいけるんじゃないの
Styleだけど↓で動くよ
ControlSend,, !tv!tm, ahk_class TMainWnd

423 :名無しさん@お腹いっぱい。:2009/03/11(水) 11:48:35 ID:iQp8Awzp0
というか、非アクティブ窓に送るのがControlSendの主目的だし
#IfWinactiveつかってるんだし、>>421でうごくならそれでいいと思う

keyhacはkeymapがあるし繭の代替みたいなかんじだぬ

424 :名無しさん@お腹いっぱい。:2009/03/11(水) 12:50:26 ID:12ef3abb0
>>422-423
サンクス。
なるほど、アクティブのときに使うなら必要ないですね。
むしろ、フォーカスないときに送るAPIもあるのかと感心したw

425 :名無しさん@お腹いっぱい。:2009/03/11(水) 16:10:47 ID:7PTN87iF0

どうしてもスマートな書き方が分からず困ってしまったので質問します。

Photoshop7.0を使っているのですが、そのPhotoshopでの作業で
ズームイン・アウトの動作は、alt+マウスのホイールで行うんですけど
それをホイールのみで行いたいんですが、いまいちうまく動作しません。

; Photoshop
#IfWinActive, ahk_class Photoshop
    wheelup::Send, {ALTDOWN}{wheelup}
    wheeldown::Send, {ALTDOWN}{wheeldown}
#IfWinActive

とりあえずこれで動くことは動くんですが、これだとaltキーが押されっぱなしで
いったんaltキーを押さないと開放されないんです。
ホイールの動作を止めてから、0.5秒くらいでaltキーが都度開放されるようにしたいんですが
どういう風に書けば良いんでしょうか。

426 :名無しさん@お腹いっぱい。:2009/03/11(水) 17:30:08 ID:SMQKLnXdP
!{WheelUp}じゃ駄目なの?

427 :名無しさん@お腹いっぱい。:2009/03/11(水) 17:40:17 ID:WedUAl7t0
うむ、自分も色々試したんだけど、ウチのCS3ではダメなんだよな
!修飾だとズームさえしないし、Sleep,500 して Send {Alt Up} してもズームはするがAltが押しっぱ状態
色々なSendModeやhookにしたけどダメだった

ただのズームで良ければ、Ctrl-やCtrl+送れば良いけど、
これだとポインタ位置のズームにならないから期待には沿えないんだろうな

428 :425:2009/03/11(水) 17:44:19 ID:zQD6nmYr0
>>427
>ただのズームで良ければ、Ctrl-やCtrl+送れば良いけど、
>これだとポインタ位置のズームにならないから期待には沿えないんだろうな

ははは。仰るとおりです。単なるズームならそれで良いんですけどね。
やっぱ難しいのかな…。
Photoshop7.0以前のホイール動作がしたいだけなんですけどねー。

429 :425:2009/03/11(水) 17:51:27 ID:zQD6nmYr0
>>426
実際やってみると分かるんですが、
それでは「altキーを押しっぱなしでホイール動作」にはならないんですよね。
altとホイールを同時に入力、とみなされて、微妙にカククアした動作になるんですよ。
押しっぱなしというキー入力がないと、スムーズにズームしないんですよね。

430 :名無しさん@お腹いっぱい。:2009/03/11(水) 18:10:32 ID:WedUAl7t0
あー、ウチではこれで動くようになったけど、かなりインチキくさいので7.0ではダメかも
Sleep後のAltの送り方をイジれば何とかいけそうなんでは
wheelup::
SendInput {Alt Down}{WheelUp}
Sleep, 500
Send {Alt}
Send {Alt Up}
return


431 :名無しさん@お腹いっぱい。:2009/03/11(水) 18:21:31 ID:iQp8Awzp0
> Sleep後のAltの送り方
タイマーでいいんじゃないかな。環境がないから何とも言えないけど。

wheelup::
wheeldown::
SendInput {Alt Down}{%A_ThisHotkey%}
SetTimer, AltUp, 500
return

AltUp:
Send, {Alt}
Send, {Alt Up}
return

432 :425:2009/03/11(水) 18:45:36 ID:zQD6nmYr0
>>430
おお!まさしく理想の動きになりました!
Sleep後の動作の書き方が分からなくてつまづいてました…。
ありがとうございます!

>>431
そちらも試してみましたが、なんかaltキーが常時連打されてるような動作になりました…。

433 :名無しさん@お腹いっぱい。:2009/03/11(水) 18:51:43 ID:W+NxFur40
解決したようだけど、押しっぱなしの原因は#HotkeyModifierTimeoutのあたりなのかな?

434 :431:2009/03/11(水) 19:07:50 ID:iQp8Awzp0
> そちらも試してみましたが、なんかaltキーが常時連打されてるような動作になりました…。
うは、初歩的なミス
> SetTimer, AltUp, 500
は↓で
SetTimer, AltUp, -500

解決したならいいんだけど

435 :425:2009/03/11(水) 19:34:30 ID:zQD6nmYr0
>>434
ありがとうございます!
キチンとスムーズに動作してくれました。

AutoHotkeyの存在を知ったのが昨日なのでまだあまり把握しきれてないですが、
かなり勉強になったのでちょっとハマってみます。

436 :名無しさん@お腹いっぱい。:2009/03/11(水) 21:02:29 ID:G1UR0H3q0
>>434
>負の値を指定した場合、その絶対値の時間が経過後に、一度だけサブルーチンが実行される。
勉強になった、d.。
ふぅ、無駄こいた(´;ω;`)ブワッ

wheelup::
wheeldown::
Send, {Alt Down}{%A_ThisHotkey%}
MouseGetPos, xMouse, yMouse
settimer, IdleMouseMoved, 100
return

IdleMouseMoved:
MouseGetPos, xMouseNow, yMouseNow
xMouseChange := ( xMouseNow - xMouse ) * ( xMouseNow - xMouse )
yMouseChange := ( yMouseNow - yMouse ) * ( yMouseNow - yMouse )
If (xMouseChange > 9) | (yMouseChange > 9) | (A_TimeIdle > 500){
send, {Alt Up}
settimer, IdleMouseMoved, off
}
Return

437 :名無しさん@お腹いっぱい。:2009/03/11(水) 21:11:08 ID:XeGc9YVz0
作成した関数が
複数の値を返すことはできますか?

438 :名無しさん@お腹いっぱい。:2009/03/11(水) 22:25:12 ID:NuVSrS420
>>437
引数の参照渡し(ByRef)を使ってみるとか。

#persistent
SetTimer, timer
return

MouseGetScreenPos(ByRef x, ByRef y){
CoordMode, Mouse, Screen
MouseGetPos, x, y
CoordMode, Mouse, Relative
}

timer:
MouseGetScreenPos(sx, sy)
MouseGetPos, x, y
tooltip, x%x%`ny%y%`n`nsx%sx%`nsy%sy%
return

439 :名無しさん@お腹いっぱい。:2009/03/11(水) 22:26:53 ID:RHpZI3IT0
windowsXPにAHK1.0.48.00をインストールしました
起動するにはAutoHotkey.exeをwクリックすればいいんですよね?
どうも起動していないようです
プロセスにも載っていません
どうすれば使えるようになるのでしょうか?
よろしくおねがします

440 :名無しさん@お腹いっぱい。:2009/03/11(水) 22:41:17 ID:G1UR0H3q0
>>439
exeと同じところにAutoHotkey.iniを作ってメモ帳で編集。
a::a
で保存。exeをダブルクリックするか、iniをexeにD&Dすればいい。

441 :名無しさん@お腹いっぱい。:2009/03/11(水) 22:52:15 ID:RHpZI3IT0
>>440
ありがとうございます。無事動きました。
以前使っていた自作のスクリプトがなぜか駄目だったようです
これが原因とは思っても見なかったので
初歩的なことを聞いてしまいました
おかげで切り分けが出来きて解決しました


442 :名無しさん@お腹いっぱい。:2009/03/12(木) 01:46:44 ID:F1m5qWie0
>>438
なるほど。参照渡しなら間違いないですね
ありがとうございます。


別件の質問ですが
a に test があり、かつb に hogeがあるときで
条件分岐をしたいのですが

If a in test and b in hoge

と書いたら上手く動きません
初歩的なことだと思いますが
どうすればよいのでしょうか


443 :名無しさん@お腹いっぱい。:2009/03/12(木) 02:07:36 ID:1BiiCvek0
if InStr(a, "tesst", true) && InStr(b, "hoge", true)

Caseを問わないなら括弧内の第3引数を省略または false にする

444 :名無しさん@お腹いっぱい。:2009/03/12(木) 02:21:15 ID:F1m5qWie0
>>443
ありがとうございます。

445 :名無しさん@お腹いっぱい。:2009/03/13(金) 13:49:22 ID:fNm1iUGy0
無変換キーをシフトキーのかわりとして使いたいのですが

無変換キー+A をshift + A とするだけではなく
ctrl + 無変換キー+A をctrl + shift + A や
win + ctrl + 無変換キー+A をwin + ctrl + shift + A というふうに
あたかもレジストリの編集により無変換キーをシフトキーとしたように動作させたいです

remap を使っても思ったとおりの動作ができません


446 :名無しさん@お腹いっぱい。:2009/03/13(金) 14:01:43 ID:nMFGybhR0
「思ったとおりの動作ができません」がどうせ間違ってるんだから、
途中まで試したコードを晒してみたら?

447 :名無しさん@お腹いっぱい。:2009/03/13(金) 15:12:04 ID:fNm1iUGy0
すみませんでした

sc07B::shift

だけでできました

448 :名無しさん@お腹いっぱい。:2009/03/13(金) 15:47:42 ID:fNm1iUGy0
たびたびすみません

リマップ
http://lukewarm.s101.xrea.com/remap.html

> リマップによって生成された入力では、フックを使用しているホットキー(「$^c」など)は反応しない。

この制限を解除する方法はありませんか?

449 :jbpfxyseplh:2009/03/13(金) 15:47:58 ID:DVfGG20W0
uGaXvO <a href="http://gvatgngxmxho.com/">gvatgngxmxho</a>, [url=http://iyoeszfqayam.com/]iyoeszfqayam[/url], [link=http://ohsodtdhgqfa.com/]ohsodtdhgqfa[/link], http://oqdjndcqppwj.com/

450 :名無しさん@お腹いっぱい。:2009/03/13(金) 19:24:04 ID:xVfJVQvM0
モディファイアのリマップはScancodeMapいじるようにした方が
何かとすっきりさっぱりだと思うんだ。

451 :名無しさん@お腹いっぱい。:2009/03/13(金) 22:39:12 ID:nX9nzRDN0
>>450
そうですか。
ありがとうございます。

452 :名無しさん@お腹いっぱい。:2009/03/14(土) 21:34:52 ID:4icr6LvT0
fenrirの呼び出しキーをうまく設定できません

^a::
send,^b
return

こういう設定を書きました
そのうえで、fenrirの呼び出しキーの設定の項目で
ctrl + A
を入力しました。

すると、左のctrlキーのときには意図したとおり
ctrl + B
が入力されたことになるのですが、
右のctrlキーのときには
なし
と表示されてしまいます。

パソコンはvistaを使っています
どうすれば右のctrlキーを左のctrlキーのように動かせるのでしょうか



453 :名無しさん@お腹いっぱい。:2009/03/15(日) 00:25:08 ID:lsWqS3cG0
>>452
なんか言ってることがよく分からんが、それfenrirを起動したくないってこと?

454 :名無しさん@お腹いっぱい。:2009/03/15(日) 00:58:42 ID:SZZoZhnK0
>>453
いやそうじゃないんです

他のソフト(エディタとか)では
右のctrl + A できちんと ctrl + Bが動作するんですが
fenrirに限ってはそのようには動かないんです
左のctrl + A ではfenrirでもきちんと ctrl + Bが動作するんですが
あ、fenrirは最新バージョンを使っています

どうもautohotkeyの内部で
右のctrlと左のctrlの処理が大きく異なっていると思うのですが

よくわかりません


455 :名無しさん@お腹いっぱい。:2009/03/15(日) 09:19:57 ID:AqdEGZ0E0
fenrir側の呼び出しキーの取得方法が特殊なんじゃなかろうか。

わざわざCtrl-Aを一旦Ctrl-Bにして呼び出す理由が分からないけど、
ただ前面にしたいなら、fenrirを二重起動するという方法もあると思う

456 :名無しさん@お腹いっぱい。:2009/03/15(日) 09:46:43 ID:aN9r1MmC0
LCtrlとRCtrlと両方書いてもだめかぬ

457 :名無しさん@お腹いっぱい。:2009/03/15(日) 09:54:41 ID:B8F8JwCv0
Gui, Add, Hotkey
Gui, Show
return
^A::MsgBox, Send`, "Ctrl + B"

いったんAHK止めてからせっていすりゃいいんじゃねーの

458 :名無しさん@お腹いっぱい。:2009/03/15(日) 10:14:36 ID:aN9r1MmC0
試してみたら正常動作したけどfenrirが古かったから最新版にしてみたんだがやっぱり普通に動くな

459 :名無しさん@お腹いっぱい。:2009/03/15(日) 13:07:53 ID:2+vykJE1P
もし {vkXXscXX} の形式だったら {vkXX} だけにしてみるとか

460 :452:2009/03/15(日) 14:01:34 ID:dCql5Xe00
autohotkey のkeyhistoryを見てみました

左のctrl + b では

42 030 i d 10.25 B fenrir
42 030 i u 0.00 B


右のctrl + b では

A2 01D i d 2.42 Ctrl fenrir
A3 11D i u 0.00 Right Control
42 030 i d 0.00 B
42 030 i u 0.00 B
A2 01D i u 0.02 Ctrl

こうなりました
そこで以下のように書いたら左のctrl + bと同様に動きました

^a::
send,{blind}b
return

>>457のスクリプトではどちらのctrlも正常に動きます
上記のみなさんのご指摘を踏まえると、
私の環境が特異だということですかね
いろいろと調べてみます
ありがとうございました。

461 :名無しさん@お腹いっぱい。:2009/03/16(月) 17:00:43 ID:OR65f9ys0
ホットキー用のキー足りねぇ→キーボード2台つなげばよくね
と思い、ジャンクの安いキーボード買ってきた

2台目用はScrollLockでもして、それで1台目と区別すりゃいいなと思ってたんだが
ScrollLockもCapsLockもNumLockも連動しやがる

1台目と2台目のキーボードの入力を判別する方法はないでしょうか?
PS/2接続とUSB接続の2台なんですが



462 :名無しさん@お腹いっぱい。:2009/03/16(月) 19:38:57 ID:BkAbLvKa0
斜め上を行く発想だなw
レスじゃなくてスマンが…

463 :名無しさん@お腹いっぱい。:2009/03/16(月) 19:42:47 ID:eGMmt4nd0
ソフト名忘れたが、デバイスドライバレベルで区分けするフリーソフトがあるよ。
たしか作者は日本人

464 :名無しさん@お腹いっぱい。:2009/03/16(月) 20:51:44 ID:5g2lI0+Z0
俺はプログラマブルキーボード使ってる。
本来はキーマクロを割り当てて使うものだが、キーマクロのメモリ登録では、
アプリ毎に動作を切り替えられず、専用のツールを利用すれば対象アプリ毎の
設定も出来るが、あまり出来が良くないので、メモリにはF13〜F24や、
普通のキーボードでは入力しづらいショートカットキーを登録し、
AutoHotkeyで引っ掛けてアプリ毎の動作に書き替えてる。

465 :名無しさん@お腹いっぱい。:2009/03/16(月) 21:39:38 ID:OR65f9ys0
>>463
情報ありがとう、それがみつかればできそうだ

>>464
俺も最初プログラマブルキーボードか、ホットキーがいっぱいあるゲーミングキーボードとか考えたんだか
特殊なキーボードは値段が高くて選択肢も少ないので、なんとかならないかと思ったんだが

プログラマブルってほどじゃなくても、全キーをWinキーあたりと同時押しができれば
あとはAutoHotKeyで十分なんだけど
ただWinキーを押しっぱなしで固定するだけじゃ、やっぱり2台とも連動して駄目だし
ハード的に改造しようかと調べてもROMライター前提で変換基盤自作とか、素人には無理そうだし

466 :名無しさん@お腹いっぱい。:2009/03/17(火) 00:59:49 ID:VkzQ2R4K0
setntptimeという時刻修正プログラムを実行後、ログの最後の4行を
TrayTipかMsgBoxに表示するようにしたいのですが

RunWait, C:\App\Internet\setntptime\setntptime.exe,,hide
logfile = C:\App\Internet\setntptime\settimeLog.txt
i = 0
Loop, read, %logfile%
{
i += 1
}
FileReadLine, server, %logfile%, i-3
FileReadLine, oldtime, %logfile%, i-2
FileReadLine, fixtime, %logfile%, i-1 ;最終行は改行だけなので省略
MsgBox,, setntptime log, %server%`n%oldtime%`n%fixtime%
return

のように、2度手間になりますがログの行数を取得してからFileReadLineする
方法しか思い浮かびませんでした。
もう少しスマートにしたいんですが良い方法あったらご教授ください。

467 :名無しさん@お腹いっぱい。:2009/03/17(火) 01:19:19 ID:pREBWc+h0
>>466
RunWait, C:\App\Internet\setntptime\setntptime.exe,,hide
logfile = C:\App\Internet\setntptime\settimeLog.txt
Loop, read, %logfile%
{
server=%oldtime%
oldtime=%fixtime%
fixtime=%dummy%
dummy=%A_LoopReadLine% ;改行が入る
}
MsgBox,, setntptime log, %server%`n%oldtime%`n%fixtime%
return

こんなんじゃだめ?

468 :名無しさん@お腹いっぱい。:2009/03/17(火) 01:24:58 ID:Q86YJixB0
すげぇ・・・なんというアクロバティック。これがこのスレの底力だな

469 :名無しさん@お腹いっぱい。:2009/03/17(火) 01:50:46 ID:VkzQ2R4K0
>>467
うおー即レスありがとうございます
ダミー咬まして・・・うーん頭こんがらかりそう
使わせていただきます。

470 :名無しさん@お腹いっぱい。:2009/03/17(火) 13:48:31 ID:hCcdtXRQ0
>>419
遅レスですが、IKKI氏乙です。

何か年末に作って放置してたのがあったのであげてみる。

秀丸でAHK編集する人のための CompleteX 用設定
LIBフォルダの関数ライブラリを読んで単語補完辞書&ヒントを作成する。
http://www6.atwiki.jp/eamat/pub/MyScript/MyLibList.zip

471 :名無しさん@お腹いっぱい。:2009/03/17(火) 15:39:39 ID:Lst9ESBRP
Runで引数を変数で与えたいんだが、
Run, %var1%, %var2%
ってやっても作業ディレクトリがうまく与えられないみたいなんだけど
何が原因?

472 :名無しさん@お腹いっぱい。:2009/03/17(火) 15:52:26 ID:Lst9ESBRP
ごめんなさい自己解決
制御文字が含まれてたっぽい

473 :名無しさん@お腹いっぱい。:2009/03/17(火) 18:39:45 ID:gDeBu6wE0
よくあるw
エクスプローラの引数とか特に

俺は行数増えるけど見通しよくするために↓みたくしてる

dir = c:\hoge\hoge
cmd = %var1%, %var2%
Run, %cmd%, %dir%

474 :名無しさん@お腹いっぱい。:2009/03/17(火) 19:02:16 ID:hImTYnxN0
>>470 乙です

一方、海の向こうではchmでいくんだろうか?
 GenDocs v2.0 - Create StdLib documentation easily!
 ttp://www.autohotkey.com/forum/topic41287.html
といっても、前スレ
 GenDocs - utility for creating StdLib documentation
 ttp://www.autohotkey.com/forum/topic22548.html
も含め投票数(反応)そのものも少ないみたいだし、このまま付けたり付けなかったりバラバラでいくのかな。。

475 :名無しさん@お腹いっぱい。:2009/03/17(火) 19:03:05 ID:L7m3HeAn0
作業ディレクトリを指定したら、実行ファイルってファイル名だけでいい気がした。
当たり前か・・・

476 :名無しさん@お腹いっぱい。:2009/03/17(火) 21:04:07 ID:lw7F/3Qx0
>>467
これ、発想がすばらしいなぁ。
AHK以外でも使えそうなアルゴリズムだ。ありがとう

477 :名無しさん@お腹いっぱい。:2009/03/18(水) 00:30:37 ID:2PEehZZi0
>>470
ちょうど欲しいと思ってた CompleteX 辞書ww
ありがとう、使わせてもらいます。

478 :名無しさん@お腹いっぱい。:2009/03/18(水) 09:35:49 ID:OXmG24Mg0
スクリプト内でも関数ライブラリ使ってんの忘れてたorz

秀丸でAHK編集する人のための CompleteX 用設定
ファイルパス関数群 (Path.ahk)同梱版
http://www6.atwiki.jp/eamat/pub/MyScript/MyLibList_200090318.zip


479 :名無しさん@お腹いっぱい。:2009/03/18(水) 14:37:20 ID:zm0v5CvW0
みんな宜しくよノシ

480 :名無しさん@お腹いっぱい。:2009/03/18(水) 19:11:42 ID:wqUWRKfJ0
atokの変換リストを表示中に
autohotkeyで操作をしたいのですが
atokの変換リストを表示しているかどうかを
取得する方法が分かりません。

window spyを使っても使用しているエディタの情報だけを
取得してしまっているようです
どうすればいいのでしょうか

481 :名無しさん@お腹いっぱい。:2009/03/18(水) 21:24:09 ID:xJ1I3V720
IME.ahk でいいじゃん。とおもったけどリストが出ているかどうかは分からないのね。

で、原始的だが変換リストを出してマウス直下の窓を調べるほうほうでやった

Pause::
MouseGetPos,,, hwnd
WinGetClass, class, ahk_id %hwnd%
Tooltip, %class%
return

ATOK2007なので"ATOK20Cand" だった。
で、いい加減だけど、指定の窓があったら(ウィンドウハンドルが0以外なら)
変換中とすればいいんじゃないかな

Pause::
Tooltip, % WinExist("ahk_class ATOK20Cand")
return

これが出ているとき専用のキーバインドが欲しいなら #Ifが使える、Autohotkey_Lが向いてそうだ

#If WinExist("ahk_class ATOK20Cand")
a:: hoge
b:: hige

482 :名無しさん@お腹いっぱい。:2009/03/18(水) 21:26:05 ID:xJ1I3V720
あ、、、#IfWinExist でいいじゃん・・・orz

483 :名無しさん@お腹いっぱい。:2009/03/19(木) 00:19:09 ID:DoWJYG5p0
>>481-482
おお!期待通りに動きました
ありがとうございます!


484 :名無しさん@お腹いっぱい。:2009/03/19(木) 09:46:28 ID:iKaTZieB0
超初歩的質問なんですがデスクトップをダブルクリックしたのを検出するのってどうやるんでしょうか
OSはVISTA32SP1です

485 :名無しさん@お腹いっぱい。:2009/03/20(金) 17:37:19 ID:oBtBrUgR0
こんにちは。わたしも質問です。
テンキーをマクロ用のホットキーとして使用してるのですが、

NumLockキーを押すと、「NumLock On&AHK Suspend」
もう一度押すと、「NumLock Off&AHK 再開」

このトグル動作をさせたいのですが、どのように記述すればいいのでしょうか。
よろしくおねがいします。

486 :名無しさん@お腹いっぱい。:2009/03/20(金) 17:53:19 ID:Ie0QoNxm0
SuspendじゃなくてPauseな気もする

487 :名無しさん@お腹いっぱい。:2009/03/20(金) 18:03:04 ID:Ie0QoNxm0
>>484
カーソル下をahk_class Progmanか否かで判別し、あとは下記を参考でできるかな?
~CTRL::
if A_PriorHotkey <> %A_ThisHotkey%, return
if A_TimeSincePriorHotkey > 400, return
;some action
return

488 :名無しさん@お腹いっぱい。:2009/03/20(金) 18:11:28 ID:Ie0QoNxm0
ああ、だめだ。あと下記も参考に
670 名前:665[sage] 投稿日:2008/06/06(金) 19:45:37 ID:89UJiJcz0
>>669
うあそういうことか

>>667
自レスも含みますが>666であったファイルの選択の状態を取得する他の方法を探したところ
ControlGetが使えそうなのでそれでやってみたテスト

~LButton::
MouseGetPos,MouseX,MouseY,WindowID,ClassNN,1 ; カーソル下の情報を取得(ClassNN以下いらないような
WinGet,DesktopID,,ahk_class Progman ; デスクトップのウィンドウIDを取得
ControlGet,StateListView,List,Selected,%ClassNN%,ahk_id %WindowID% ; StateListViewにSysListView32の選択項目名を入れる
If(A_TimeSincePriorHotkey<300 && DesktopID==WindowID && StateListView=="") ; デスクトップ上である&選択項目がない
Send,!{Numpad1}
return

アイコンのないところでダブルクリックをしたとき、イベントを乗っ取らないダブルクリックなので、
丁度よく最初のクリックの時点でデスクトップがアクティブになって選択状態が外れる
同じ方法でエクスプローラ・Openダイアログ等の余白をダブルクリックで上階層移動もできる
選択項目を利用するので MButton:: 等では途中に左クリック入れるとかしないとそのままではできない・・

489 :名無しさん@お腹いっぱい。:2009/03/20(金) 18:41:45 ID:oBtBrUgR0
>>486
レスありがとうございます。
~NumLock::pause
でできました^^

490 :名無しさん@お腹いっぱい。:2009/03/20(金) 20:49:30 ID:q1D8qFby0
へ〜、UpperDirOneみたいなのが楽につくれるなぁ・・・と思ったけど

~LButtonでフォルダ移動の場合、項目がとれる前に移動が完了ちゃって
フォルダに移動した後にBackspace送っちゃって元通り・・・で意図したとおりに動かない
結局 ~ なしになったけどうまくいかんもんだねぇ

SetTitleMatchMode, RegEx

#IfWinActive, ahk_class CabinetWClass|ExplorerWClass
LButton::
 if (A_ThisHotkey==A_PriorHotkey && A_TimeSincePriorHotkey<300) {
  MouseGetPos,,,,classNN
  ControlGet, selected,List,Selected, SysListView321, A
  Send, % (classNN=="SysListView321" && !selected) ? "{BackSpace}" : "{LButton}"
 } else {
  Send, {LButton Down}
  KeyWait, LButton
  Send, {LButton Up}
 }
 return

491 :名無しさん@お腹いっぱい。:2009/03/20(金) 20:54:15 ID:w27aWi9q0
>>488,489
ありがとう!
月曜まで家に帰れないから試せないけど、帰ったらやってみる!

492 :名無しさん@お腹いっぱい。:2009/03/21(土) 00:19:19 ID:JP2qPQY00
某スレで盛り上がってたので書いてみました。
カーソルをくるくる回すとスクロールします。
ttp://lukewarm.s101.xrea.com/up/file/105.zip

493 :名無しさん@お腹いっぱい。:2009/03/21(土) 00:26:44 ID:g8LL/GxK0
>>492
どうやってAHKで再現しようか考えていたら・・・
ありがたく頂きます

494 :名無しさん@お腹いっぱい。:2009/03/21(土) 00:28:23 ID:ft3ZieEm0
これは面白いw
タッチパットのノートパソコンだとうまく利用できそう。

495 :名無しさん@お腹いっぱい。:2009/03/21(土) 00:45:49 ID:daHpkZkf0
おお、すんばらし。
組み込むと色々応用が効きそうだ。

496 :名無しさん@お腹いっぱい。:2009/03/21(土) 01:16:17 ID:e7LMny/o0
autohotkey.ini に includeで

#Include kurukuruscroll.ahk

と書いて使わせてもらったんだけど、includeする位置によって使えたり
使えなかったりするのはなんでだろう。

マニュアルのどこを読めばいいのか教えて欲しい。


497 :名無しさん@お腹いっぱい。:2009/03/21(土) 05:54:27 ID:enEmkL2t0
>>492
一つに纏められて助かりました
認識率と反応も完璧だね

498 :名無しさん@お腹いっぱい。:2009/03/21(土) 07:41:19 ID:QvNRDM9W0
>>496
ttp://lukewarm.s101.xrea.com/Scripts.html
ここの一番下auto-executeですね。
ホットキーが書いてあるとこより前に組み込みます。
変数が重複しないよう気をつけましょう。

499 :名無しさん@お腹いっぱい。:2009/03/21(土) 08:45:00 ID:e7LMny/o0
>>498
ありがとう!!!

各includeファイルのauto-executeセクションをautohotkey.iniのauto-executeセクションに移動したらうまく動いたー。

今までauto-executeセクションって知らなかった^^;
*.ahkを includeするときって

autohotkey.ini
-------------------
AAA.ahkの auto-executeセクション
BBB.ahkの auto-executeセクション
return

#Include AAA.ahk
#Include BBB.ahk
;ホットキー定義開始
-------------------





500 :名無しさん@お腹いっぱい。:2009/03/21(土) 09:41:42 ID:mEL9l3Hw0
ダブルクリック検出の件だが、何とかなったので張ってみる。コードのインデントに全角空白使ってるので注意。
 
; IsDoubleClicked関数
; ダブルクリックを判定する関数、L,R,M,X1,X2の各ボタンに対応
; システムからダブルクリック時間、範囲を取得して判定、AutoHotkey_Lの#ifでの使用を想定
IsDoubleClicked(){
 Static dcTime=0,LastTime,tx,ty,LastMouseKey=0,lx=-256,ly=-256,lr=0
 if(!dcTime){
  dcTime:=DllCall("GetDoubleClickTime")
  SysGet,tx,36
  SysGet,ty,37
  LastTime:=A_TickCount-dcTime*2
 }
 if(A_TickCount=LastTime)
  Return lr
 NowMouseKey:=(GetKeyState("LButton","P") | GetKeyState("RButton","P")<<1
  | GetKeyState("MButton","P")<<2 | GetKeyState("XButton1","P")<<3
  | GetKeyState("XButton2","P")<<4)
 VarSetCapacity(Point,8)
 DllCall("GetCursorPos","uint",&point)
 if((LastMouseKey!=NowMouseKey)||((A_TickCount-LastTime)>dcTime)
  ||(abs((NumGet(Point,0)-lx))>tx)||(abs((NumGet(Point,4)-ly))>ty)){
  lx:=NumGet(Point,0),ly:=NumGet(Point,4)
  LastTime:=A_TickCount,LastMouseKey:=NowMouseKey
  Return lr:=0
 }
 else{
  LastTime:=A_TickCount-dcTime
  Return lr:=1
 }
}

501 :500:2009/03/21(土) 09:42:42 ID:mEL9l3Hw0
; Lv_HitTest関数
; リストビューでアイテム上にマウスがある時に種類を返す
; そもそもリストビュー上でない場合は何も返さず、
; アイテム上にない場合は0を返す
; 参考:流行らせるページの MouseGesture.ahk 内 MG_LvHitTest() 関数
Lv_HitTest(){
 MouseGetPos,,,hwnd,class,1
 MouseGetPos,,,,chwnd,3
 WinGet,pid,PID,ahk_id %hwnd%
 VarSetCapacity(point,8)
 DllCall("GetCursorPos","uint",&point)
 if(substr(class,1,13)=="SysListView32" || substr(class,1,9)=="TListView"){
  p:=DllCall("kernel32.dll\GlobalAlloc","uint",0x40,"uint",8,"uint")
  NumPut(NumGet(point,0),p+0,0),NumPut(NumGet(point,4),p+0,4)
  DllCall("user32.dll\ScreenToClient","uint",chwnd,"uint",p)
  hp:=DllCall("kernel32.dll\OpenProcess","uint",0x001F0FFF,"uint",0,"uint",pid,"uint")
  pi:=DllCall("kernel32.dll\VirtualAllocEx","uint",hp,"uint",0,"uint",24,"uint",0x1000,"uint",0x4,"uint")
  DllCall("kernel32.dll\WriteProcessMemory","Int",hp,"uint",pi,"uint",p,"Int",8,"Int",0)
  SendMessage,0x1012,0,%pi%,,ahk_id %chwnd%
  DllCall("kernel32.dll\ReadProcessMemory","uint",hp,"uint",pi+8,"uintp",flag,"uint",4,"uint",0)
  DllCall("kernel32.dll\VirtualFreeEx", "uint",pi, "uint",0, "uint",0x8000)
  DllCall("psapi\CloseProcess","uint",hp)
  DllCall("kernel32.dll\GlobalFree","uint",p)
  flag:=flag & 15
  return (flag<4) ? ((flag<2) ? 0 : "ItemIcon") : ((flag<8) ? "ItemLabel" : "ItemState")
 }
}

502 :名無しさん@お腹いっぱい。:2009/03/21(土) 09:43:29 ID:mEL9l3Hw0
; IsDesktopDoubleClicked関数
; デスクトップをダブルクリックした時にTrue
IsDesktopDoubleClicked(){
 Return IsMouseOverDesktop() && IsDoubleClicked()
}
; IsMouseOverDesktop関数
; マウスがデスクトップ上にある時にTrue
; bbLeanだとProgmanじゃうまくいかなかったので
IsMouseOverDesktop(){
 MouseGetPos,,,hwnd
 Return (hwnd==DllCall("GetDesktopWindow")
  ||hwnd==WinExist("ahk_class Progman"))
}

503 :500:2009/03/21(土) 09:44:06 ID:mEL9l3Hw0
; 使い方 #ifじゃなくても何とかなるが、ダブルクリックじゃなかった時に
; 通常のクリックをするべきなので AutoHotkey_Lの#ifを推奨
#if IsDoubleClicked()
 && (WinActive("ahk_class CabinetWClass") || WinActive("ahk_class ExploreWClass"))
 && Lv_HitTest()==0
 LButton::Send,{BS}
#if IsDesktopDoubleClicked()
 LButton::Msgbox,デスクトップがダブルクリックされた
#if
 
以上、長くなった&見にくくてすまんがこんな感じでできた。


504 :名無しさん@お腹いっぱい。:2009/03/21(土) 09:50:33 ID:mEL9l3Hw0
; おまけ:行頭の全角スペースとTabを相互変換するスクリプト
#NoEnv
#EscapeChar '
Gui,Font,,MS ゴシック
Gui,Add,Text,,↓ここにコードを貼り付ける
Gui,Add,Edit,w640 h480 vData
Gui,Add,Button,gWsToTab,行頭の全角スペースをTabに変換
Gui,Add,Button,gTabToWs x+10,行頭のTabを全角スペースに変換
Gui,Show
Return
GuiClose:
GuiEscape:
ExitApp
GuiDropFiles:
if(A_EventInfo<=1)
 FileRead,Data,%A_GuiEvent%
GuiControl,Text,Data,%Data%
Return
WsToTab:
TabToWs:
Gui,Submit,NoHide
Output:="",w:=(A_ThisLabel="WsToTab" ? 1 : 0)
Loop,Parse,Data,% chr(10)
{
 chr:="",t:=A_LoopField
 While (SubStr(t,1,(w ? 2 : 1))==(w ? " " : chr(9)))
  t:=SubStr(t,(w ? 3 : 2)),chr.=(w ? chr(9) : " ")
 Output.=chr t chr(10)
}
GuiControl,Text,Data,%Output%
Return

505 :名無しさん@お腹いっぱい。:2009/03/21(土) 17:16:25 ID:5yWBri8L0
横からすみません。
ググったらあんまりヒットしなかったので、以前貼られていた
DoubleKey関数紹介しておきますね。
出展:http://www.donationcoder.com/Forums/bb/index.php?topic=5926.msg41894

DoubleKey(RunCommand, timeout){
 if(A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < timeout)
  Run, %RunCommand%
}
return

~LButton up::DoubleKey("hoge.ahk", 400)

みたいに各ボタンごとに処理を書いたahkファイル(ここでは同ディレクトリ内のhoge.ahk)
を別途用意する必要はありますが、これでも動作しまっする。

506 :名無しさん@お腹いっぱい。:2009/03/21(土) 17:28:06 ID:QyANxbob0
>>492のスクリプトを縦スクロールじゃなくて、横スクロールに
するにはどうすればいいんでしょうか?

507 :500:2009/03/21(土) 18:03:47 ID:mEL9l3Hw0
>>503のIsDesktopDoubleClickedを修正。
こうしないとアイコンダブルクリックした時にまで発動してしまう。
IsDesktopDoubleClicked(){
 Return IsMouseOverDesktop() && IsDoubleClicked() && Lv_HitTest()==0
}
 
>>505
確かにそういう方法でも時間内に2回クリックした時に何かするってことはできるんだけど、
1回目と2回目のクリック位置が離れてる時にも発動したり、
↑みたいにアイコンダブルクリック時にも発動しちゃったりして、
いわゆるダブルクリック系の挙動としてはちょっと弱いかなーって思って書いてみた。
あと意地でも2回目のクリックを乗っ取りたかったってのもある。
 
でも少しこだわりすぎたかなーとは思ってる…
まぁ、自分で組み込んで使ってるし結果的には満足。
 
>>506
WheelUpとWheelDownってなってるところを
横スクロールできるキーに変えればいいんじゃないかな。

508 :名無しさん@お腹いっぱい。:2009/03/21(土) 18:08:20 ID:H5O5lVNo0
>>505
ID:mEL9l3Hw0がどこまで厳密なモノを求めてるのかわからんのでスルーしていたのだが。
そもそも>505レベルでいいんならこんなに頑張ったりはしないと思う

509 :名無しさん@お腹いっぱい。:2009/03/21(土) 18:09:14 ID:H5O5lVNo0
リロってなかった。蛇足スマソ

510 :名無しさん@お腹いっぱい。:2009/03/21(土) 18:27:06 ID:HbFBHhgK0
ぶっちゃけ、あっちのフォーラム行けばいくらでもあるけどね…

511 :500:2009/03/21(土) 18:27:27 ID:mEL9l3Hw0
>>500の書き方だと勘違いされそうなので
一応書いておくけど、俺は>>484ではないです。
>>490を見て、UpperDirOneに相当する機能は
別のソフト使ってたの思い出したので、
何とかAHKだけで実現できないかなと思って、頑張ってみた。
…これこそ蛇足だったかな。

512 :名無しさん@お腹いっぱい。:2009/03/21(土) 19:39:14 ID:5yWBri8L0
>>507
申し訳ありませんでした

> 1回目と2回目のクリック位置が離れてる時にも発動したり、
> ↑みたいにアイコンダブルクリック時にも発動しちゃったりして
そらそうですよね・・・深く考えずに書き込んだこと反省してROM専に戻ります。
あと IsMouseOverDesktop関数はいろいろ使えそうですね。頂きます&&乙であります。

513 :名無しさん@お腹いっぱい。:2009/03/21(土) 20:03:23 ID:YAcqdaL20
>>461
超亀レスで失礼します。
見つけたので貼っておきますね。
試してませんが通常ののキーボードでも動作するようです。
USB接続のテンキーを、プログラマブルキーボード
ttp://ioenc.net/magickeypad/

514 :名無しさん@お腹いっぱい。:2009/03/22(日) 11:30:10 ID:GrExewU20
こんにちは
MouseGesture2、2008/10/07版をVista SP1で使わせて貰ってます。
マウ筋の機能で「設定ホイール回転でアクティブ」という機能があるのですが
(ArtTipsというソフトでは、SETTING>快適マウスホイール>快適マウスホイールを使用する>フォーカス移動を行う)
これと同じ挙動をMouseGesture2で実現させるにはどのように記述すればうまく行きますか?

あと、JaneDoe Viewなど一部のソフトでWinMinimizeを使って最小化すると
デスクトップ左下にタイトルバーの小さくなったものが、残って最小化されてしまいます。
これを回避する方法を教えて下さい。

515 :名無しさん@お腹いっぱい。:2009/03/22(日) 11:41:41 ID:scspGd4S0
簡単なのはWheelUpとWheelDownのDefault(及び各々の条件)に
WinActivate
を記述する

516 :名無しさん@お腹いっぱい。:2009/03/22(日) 11:46:37 ID:T0zgn4OC0
流行らせるページのホイールリダイレクトでもいいんじゃね

517 :名無しさん@お腹いっぱい。:2009/03/22(日) 11:56:01 ID:4c0Fopck0
アクティブにしつつスクロールするなら両方

518 :名無しさん@お腹いっぱい。:2009/03/22(日) 12:23:38 ID:GrExewU20
>>515-517
親切に即レスありがとうございます。
>簡単なのはWheelUpとWheelDownのDefault(及び各々の条件)に
>WinActivate
>を記述する
が一番挙動が近かったのですがマウ筋とArtTipsの機能は
Xplorer2などの二画面ファイラーや小ウィンドウがあるようなソフトに対しても
各ウィンドウをホイールの回転でアクティブに出来るので、このような挙動を望んでいますが
無理な場合WinActivateでアクティブにするようにしたいと思います。

しかし、この場合ホイールUp、Dnでアクティブになったあと普通にスクロールが利かなくなってしまいますよね?

519 :名無しさん@お腹いっぱい。:2009/03/22(日) 12:46:54 ID:ZBRd96Tp0
>>490 をファイル選択ダイアログでも効くようにした
注意) 全角スペース利用、誤爆が無いとは言えない

; UpperDirOne
LButton::
 if (A_ThisHotkey==A_PriorHotkey && A_TimeSincePriorHotkey<300) {
  MouseGetPos,,,,classNN
  if (classNN=="SysListView321") {
   ControlGetText, text, SysListView321, A
   if (text == "FolderView") {
    ControlGet, selected,List,Selected, SysListView321, A
    if (!selected)
     Send, {BackSpace}
   }
  }
 }
 Send, {LButton Down}
 KeyWait, LButton
 Send, {LButton Up}
 return


520 :名無しさん@お腹いっぱい。:2009/03/22(日) 17:35:30 ID:Rn9QKfmc0
MouseGesture2の設定で動作割り当てのキー操作を発生させるのパラメーターに
無変換キーの2回押しを設定したくて{無変換}{無変換}とやってみたのですが
認識してくれません。無変換キーは何で登録すれば良いでしょうか?

521 :名無しさん@お腹いっぱい。:2009/03/22(日) 17:37:47 ID:Biaw3oNa0
>>520
ttp://lukewarm.s101.xrea.com/KeyList.html

522 :名無しさん@お腹いっぱい。:2009/03/22(日) 18:04:15 ID:Rn9QKfmc0
>>521
ありがとうございます。そのページは見落としていました。
早速、カーソルが画面左下角に接触で1秒遅らせて無変換を2回押しがしたくて動作に
if(!MG_Timer(-1000)){
Send,{vk1Dsc07B}{vk1Dsc07B}
}

if(!MG_Timer(-1000)){
Send,{vk1Dsc07B}
MG_Wait(100)
Send,{vk1Dsc07B}
}
など、やってみたのですがうまく動きません。
どなたかアドバイスお願い致します。

523 :名無しさん@お腹いっぱい。:2009/03/22(日) 23:07:53 ID:gJvAxqMw0
動作の確認音にSoundbeepを使ってたけど、パソコン変えたらビープが鳴らないw

524 :名無しさん@お腹いっぱい。:2009/03/23(月) 09:06:05 ID:Y2hrPoG60
とりあえず転載、ID:GrExewU20 と ID:Rn9QKfmc0 はモリタポ用意して制作者の教えを乞え
http://lukewarm.s101.xrea.com/test/read.cgi/bbs/1146398137/123

> 123 名前:管理人 ★[] 投稿日:2009/03/23(月) 06:07:20
> 2chのAutoHotkeyスレにMouseGesture.ahkの質問が書かれていたのに、DION規制で書き込めなくて困る。
> 誰か親切な人があと555モリタポほど恵んでくれれば、p2で書き込めるのだが。
> http://find.2ch.net/moritapo/give.php?RK=93127982ff852cf03449c204be39fc07&AM=&CM=エノユ、「、熙ャ、ネ、ヲ、エ、カ、、、゙



しかしDION規制まじむかつく、Viewは何故か24時間以上起動させっぱだと●ログイン無効になるので
いちいち再起動させなくちゃいけなくて面倒だ

525 :名無しさん@お腹いっぱい。:2009/03/23(月) 09:53:24 ID:Edo9xp5W0
>>3のとおりに、CapsLockをF13〜F24に割り当てようと思うんだけど、
Change Keyってどうやってこれ割り当てるの??
似たようなレジストリ変更タイプのキーチェンジソフトいくつか探してみたが、
どれもF12までしか割り当てられないっぽい・・・

526 :名無しさん@お腹いっぱい。:2009/03/23(月) 12:36:14 ID:WUKQO+dS0
>>522
Send,{vk1Dsc07B}{vk1Dsc07B} → Send,{vk1Dsc07B 2}

MG_Wait(100) → Sleep,100

>>518
Jane Doe Style は「ウィンドウ(W)」→「最小化(M)」
があるのでそれを実行させればいいんじゃない?
Send,!w
Send,m

それかJane Doe Styleのショートカットキーのカスタマイズで
最小化にキーを割り当ててそれをSendするとか。

アクティブにしてスクロールは
アクティブした後にWheelUp(Down)を送ればいいじゃない。
あと、コンボボックスをアクティブにしようとすると
コンボボックスが消えるのでアクティブにしないようにしとけば
概ね支障なく動くはず。

527 :名無しさん@お腹いっぱい。:2009/03/23(月) 12:36:56 ID:WUKQO+dS0
<< >>526の続き >>

;WU_ の Default に↓の2行を追記する。
gosub, CursorUnderActivate
Send,{WheelUp}

;WD_ の Default に↓を2行を追記する。
gosub, CursorUnderActivate
Send,{WheelDown}

;MG_User.ahk をテキストエディタで開き、以下を「サブルーチン定義」内にコピペ
;マウスカーソル下をアクティブにする関数
CursorUnderActivate:
MouseGetPos,,, m_id, m_control
WinGetClass, m_class, ahk_id %m_id%
;マウスカーソル下がコンボボックス(ドロップダウンリスト)ならreturn
If(RegExMatch(m_control, "ComboLBox\d+"))
return
;マウスカーソル下が非アクティブならアクティブ化
IfWinNotActive, ahk_id %m_id%
{
SetWinDelay,-1
WinActivate
SetWinDelay,100
}
return

;これで支障が出るなら>>517の方法がいいと思う。

528 :名無しさん@お腹いっぱい。:2009/03/23(月) 12:39:05 ID:WUKQO+dS0
あ、ウィンドウクラスは必要ないので↓は要らないや・・・
WinGetClass, m_class, ahk_id %m_id%

529 :名無しさん@お腹いっぱい。:2009/03/23(月) 12:40:24 ID:WUKQO+dS0
×;マウスカーソル下をアクティブにする関数
○;マウスカーソル下をアクティブにするサブルーチン

530 :名無しさん@お腹いっぱい。:2009/03/23(月) 13:54:01 ID:1ZxaOcnN0
>>525
K SC Type Up/Dn Elapsed   Key
------------------------------------------------
7C 064  i   u    0.04    F13
7D 065  i   u    0.04    F14
7E 066  i   u    0.04    F15
7F 067  i   u    0.04    F16
80 068  i   u    0.04    F17
81 069  i   u    0.04    F18
82 06A  i   u    0.04    F19
83 06B  i   u    0.04    F20
84 06C  i   u    0.04    F21
85 06D  i   u    0.04    F22
86 06E  i   u    0.04    F23
87 076  i   u    0.04    F24

531 :名無しさん@お腹いっぱい。:2009/03/24(火) 23:15:50 ID:mXwaygr80
多重起動を検知したくて以下のようにしたんだけど、
除外タイトルって効いて無い
それともPIDとかでの除外は無理なのかな

#SingleInstance, OFF
Process, Exist
myPid:=ErrorLevel
DetectHiddenWindows,On
IfWinExist, %A_ScriptFullpath% ahk_class AutoHotkey,,ahk_pid %myPid%
 MsgBox, あり
Else
 MsgBox, なし


532 :名無しさん@お腹いっぱい。:2009/03/25(水) 01:46:19 ID:zeEEOJ2T0
>>531
>>144,147,153

前々スレに多重起動検知で終了とかはあったよ。
タイトルが一緒でPIDが違うならで、判別してた。

一部だけ引用
;自分の情報を取得
DetectHiddenWindows, On
Process,Exist
pid:=ErrorLevel
WinGetTitle, g_scriptTitle, ahk_pid %pid%
WinGet, hwnd, id, ahk_pid %pid% ahk_class AutoHotkey
;ahk_class AutoHotkeyのウィンドウを全て列挙
WinGet, ahk_id_list, list, ahk_class AutoHotkey
Loop, %ahk_id_list%{
this_id:=ahk_id_list%a_index%
ahk_id_list%a_index%=
WinGetTitle, this_title, ahk_id %this_id%
if(g_scriptTitle==this_title && hwnd!=this_id){ ;自分以外で同じタイトルを見つけたら終了メッセージを投げる。

533 :名無しさん@お腹いっぱい。:2009/03/25(水) 08:36:04 ID:zeEEOJ2T0
暇だったから、作ってみた。あまりの使えなさに吹いたw
#persistent
CoordMode, Mouse, Screen
Settimer, Expose
return

Expose:
MouseGetPos, X, Y
if (Y<1){
;左右に並べて表示
SendMessage,0x111,405,,,ahk_class Shell_TrayWnd
keywait, LButton, D
KeyWait, LButton
;元に戻す
SendMessage,0x111,416,,,ahk_class Shell_TrayWnd
Loop
{
MouseGetPos, X, Y
if (Y>2)
break
}
}
return

534 :名無しさん@お腹いっぱい。:2009/03/25(水) 13:01:45 ID:UMyjgm290
>>525
俺はchangekeyでF13を割り当ててるよ。

195 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)