AutoHotkey スレッド part7

このエントリーをはてなブックマークに追加
1名無しさん@お腹いっぱい。
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
1813: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
}
1913: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
 }
}
2013: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
せっかくのところ申し訳ないが、ニーズがあるのか微妙な内容は、
自分のブログかなんかでやってくれないか
2213: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:」があったら
適当な変数に入れて抜ければいい
4238: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
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
5133: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
56名無しさん@お腹いっぱい。:2009/01/04(日) 10:32:20 ID:1GxGvmcA0
>>51
synergyよりも最近の流行はこれ
【マウス&キーボード共有】Input Director
http://pc11.2ch.net/test/read.cgi/software/1226727210/
5733: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
127123: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
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上で取得したいのです。

無理かなあ。
150cbibnvn:2009/01/27(火) 20:17:47 ID:nCQqd/B10
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
155148:2009/01/27(火) 21:56:28 ID:t0VmE1Ht0
>>154
設定ファイルから設定を読み込むのは出来るのですが
割り振るキーを設定に応じて変更する方法が無いものかと。
156148: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
とかで一時的に解除するとか
168158: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
190185: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
なぜ情報を拡散させたがるのか。
ここと流行らせるページの掲示板で十分だろ。
196187: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 って安定してる?
ウニコード化してくんないかなぁ。
203199: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 にすれば呼び出せるかも。
207206: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


問題解決しますたありがと><
209197: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を見て
キーマップのきりかえができることにおどろいたので
222214: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)するとかすればいい。
どっちにしろサブルーチンラベルの重複で怒られるとは思うけど。
227224: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
235234: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
にする
238234:2009/02/08(日) 21:33:53 ID:sclNqxNe0
>>236
なるほどホットキー定義より先に書かないといけないんですね。

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

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

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

239234: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を使うと楽
242240: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
251247:2009/02/10(火) 04:38:07 ID:4LTAENh50
>>249
おお、ありがとうございます。
252248: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とか何かと難しいわな
256253: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
あ、普通に動きました
そりゃそうですね
ご指摘ありがとうございます。
302274: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}
322320: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
334332: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 を送る
352349: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 で置き直す予定
354349:2009/02/28(土) 22:00:14 ID:ZNlNraZX0
>>353
> m-hook  *MButton
出てます。
他のユーティリティか、うーん。旧バージョンは動くのになー。
とりあえずmsconfigで診断スタートアップにしてみたけどダメでした。

RButtonではちゃんと動くようになりました。
355名無しさん@お腹いっぱい。:2009/02/28(土) 23:58:39 ID:imLzKJgB0
旧verで動かしてたんだからそこに問題はないとは分かるんだけど、一応って事で
・・・そうなると機序的に何処に問題があるかは、今はちょっと分からないっす
一応、ソースもう一度読み直ししてみるっす
356350:2009/03/01(日) 03:43:58 ID:Rc2HQ5QJ0
>>351
ありがとうございました
ControlClickでいけました
357349: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
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
キーのダブルタップはサンプルあるだろ
398394:2009/03/08(日) 12:41:19 ID:Zm/1oWz60
自己レスですが
gui close で何とかなりそうですね
スレ汚し失礼しました
399394: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で調べることもできません。
青とか赤の個別の色のボタンは調べられるんですが、値が毎回違うので
行き詰っています。
407406こういう感じでやりました: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& ;ファイル→新規、これは動きます
408406こういう感じでやりました: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
409nCIjdtNZgMN:2009/03/09(月) 18:51:33 ID:1ok/Ifbl0
comment5, http://kim-kardashian-video.limitedliability.us/index.html kim kardashian nude video, %-PP,
410406こういう感じでやりました:2009/03/09(月) 19:17:25 ID:3Pb9nLSu0
やり直したらinspect_toolbarがなぜか今回は動いたので
それでやってみます
411406こういう感じでやりました:2009/03/09(月) 23:05:06 ID:3Pb9nLSu0
連投すみません
ワードパッドの書式バーの位置をずらした後
(メニューバー・ファイル(ファイル...
    ツールーバー
     書式バー(MSゴシック...
のように


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

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

でフォントの色を選ぶボタンをahk経由で押させることは出来たのですが、
赤とか青とかの個別の色を押させることが出来ません。
方法はありますか?
412406-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+送れば良いけど、
これだとポインタ位置のズームにならないから期待には沿えないんだろうな
428425:2009/03/11(水) 17:44:19 ID:zQD6nmYr0
>>427
>ただのズームで良ければ、Ctrl-やCtrl+送れば良いけど、
>これだとポインタ位置のズームにならないから期待には沿えないんだろうな

ははは。仰るとおりです。単なるズームならそれで良いんですけどね。
やっぱ難しいのかな…。
Photoshop7.0以前のホイール動作がしたいだけなんですけどねー。
429425: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
432425:2009/03/11(水) 18:45:36 ID:zQD6nmYr0
>>430
おお!まさしく理想の動きになりました!
Sleep後の動作の書き方が分からなくてつまづいてました…。
ありがとうございます!

>>431
そちらも試してみましたが、なんかaltキーが常時連打されてるような動作になりました…。
433名無しさん@お腹いっぱい。:2009/03/11(水) 18:51:43 ID:W+NxFur40
解決したようだけど、押しっぱなしの原因は#HotkeyModifierTimeoutのあたりなのかな?
434431:2009/03/11(水) 19:07:50 ID:iQp8Awzp0
> そちらも試してみましたが、なんかaltキーが常時連打されてるような動作になりました…。
うは、初歩的なミス
> SetTimer, AltUp, 500
は↓で
SetTimer, AltUp, -500

解決したならいいんだけど
435425: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」など)は反応しない。

この制限を解除する方法はありませんか?
449jbpfxyseplh:2009/03/13(金) 15:47:58 ID:DVfGG20W0
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} だけにしてみるとか
460452: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
 }
}
501500: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"))
}
503500: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のスクリプトを縦スクロールじゃなくて、横スクロールに
するにはどうすればいいんでしょうか?
507500: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
ぶっちゃけ、あっちのフォーラム行けばいくらでもあるけどね…
511500: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
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を割り当ててるよ。
535名無しさん@お腹いっぱい。:2009/03/26(木) 00:11:10 ID:jOUXxwTe0
ctrlキー2連打でブラウザの更新に割り当てたいのですが、

ctrl::send,^r
↑ここをどう記述すればいいかご教授願います。
536名無しさん@お腹いっぱい。:2009/03/26(木) 01:12:54 ID:23S/nCDd0
>>535>>487
もう>>2-3ぐらいに必須だなwまあ、あっても無駄かもしれんが
537名無しさん@お腹いっぱい。:2009/03/26(木) 06:07:49 ID:23S/nCDd0
下記の、表示ウィンドウのハンドルを取得する単純なスクリプトですが、
ひとつのウィンドウしか表示されてないプロセスでも二つ取得できているのは、どういう理屈なのでしょうか?
さっぱりです(´・ω・`)

#persistent
;ウィンドウハンドル一覧
WinGet, List, List,,,aaaaaaaaaaaaaa
Loop,%List%
{
Hwnd := List%A_Index%
WinGet, exe, ProcessName, ahk_id %Hwnd%
abc .= exe . " " . Hwnd . "`n"
}
msgbox, %abc%
return

esc::reload
538名無しさん@お腹いっぱい。:2009/03/26(木) 09:02:50 ID:r4Tse8HJ0
Jane(クラスがTMAainWindとTApplication)だったりしないだろうか

どういう理屈っていうか、作った側の理屈でしょ
539名無しさん@お腹いっぱい。:2009/03/26(木) 13:40:23 ID:23S/nCDd0
どうもです。調べたらTApplicationでした。見えてなくてもあるんだよ状態か・・・

流行らせるページがヒット
>やっかいなのがDelphi製のソフトのTApplicationというクラス名のウィンドウ。
>可視ウィンドウ扱いで、タスクバーにはこのウィンドウのタイトルが表示されるが、実際には大きさがゼロで画面には表示されない。
>VxEditorなど、TApplicationが不可視になっているものもある。
540名無しさん@お腹いっぱい。:2009/03/26(木) 14:28:13 ID:/i446DAf0
質問です。
Sendコマンドにてreturnと入力したいのですが、
エラーが出てしまいます。

Sendコマンド中で、returnと表現するには
どうしたらよいでしょうか。
541名無しさん@お腹いっぱい。:2009/03/26(木) 14:34:46 ID:/i446DAf0
>>540
すいません。
自己解決しました。
542名無しさん@お腹いっぱい。:2009/03/26(木) 14:38:19 ID:CODN8xT10
何を間違えていたのか気になる
教えて
543名無しさん@お腹いっぱい。:2009/03/26(木) 14:42:30 ID:r4Tse8HJ0
Send, return
544名無しさん@お腹いっぱい。:2009/03/26(木) 19:22:46 ID:23S/nCDd0
>>487
>IfEqualのようなコマンド名の形式の場合、更にカンマで区切って条件に一致した場合に実行するコマンドを記述できる。
こっちじゃないと正しく動かないかも。あとこれじゃ3連打したら、2回発動する?
~Ctrl::
ifNotEqual, A_PriorHotkey, %A_ThisHotkey%, return
ifGreater, A_TimeSincePriorHotkey, 400, return
soundplay,*-1
return

流行らせるページのほうがいいか。
~Ctrl::
if A_TickCount < %ctrldouble%
{
;some action
ctrldouble=0
}
else
{
ctrldouble=%A_TickCount%
ctrldouble+=400
}
return
545名無しさん@お腹いっぱい。:2009/03/26(木) 23:30:02 ID:s6sjDdIo0
いやあ、規制長かった。
どうでもよくなったw
546名無しさん@お腹いっぱい。:2009/03/26(木) 23:34:24 ID:r4Tse8HJ0
モールスのパクり。キーが規定時間以内に何度押されたかを返す。
キー押す・離すで1セットなので押しっぱなしで利用するキーやボタンには向かない
あまり使えない

KeyCount(timeout=0.3) {
 key := RegExReplace(A_ThisHotkey, "^[\$\^\+!#]+","","")
 KeyWait, %key%
 Loop {
  count++
  KeyWait,%key%, D T%timeout%
  If ErrorLevel
   break
  KeyWait, %key%
 }
 return count
}

: ex) [Win]+[Space]二度(以上)押しでIME ON/一度ならOFF
#Space::IME_SET(KeyCount()>1)
547名無しさん@お腹いっぱい。:2009/03/26(木) 23:47:26 ID:r4Tse8HJ0
ちょっと変えた。
↓みたいに回数指定でやればキャンセルも出来るしちょっと便利かもしれない

~Ctrl::
 If KeyCount() = 3
  MsgBox, Some Action
 return

KeyCount(timeout=0.3) {
 key := RegExReplace(A_ThisHotkey, "^[\$\^\+\*!#~<>]+","","")
 KeyWait, %key%
 Loop {
  count++
  KeyWait,%key%, D T%timeout%
  If ErrorLevel
   break
  KeyWait, %key%
 }
 return count
}
548名無しさん@お腹いっぱい。:2009/03/29(日) 06:38:33 ID:wyAVApH80
>>547
これいいね。Libフォルダ行き、決定。

ttp://lukewarm.s101.xrea.com/up/file/106.zip
俺の昨日の財産。なんちゃってホイールVol。アイディアもスクリプトもGUIも、全部パクリだけどねw
細かいところは面倒くさかったから、やってない。WheelVolとGOM使ってる人におすすめ。
549名無しさん@お腹いっぱい。:2009/03/29(日) 10:50:37 ID:rJZ7qtHO0
>>548
実行しても何も表示されないんだが
当方vista sp1
何か設定が必要?
550名無しさん@お腹いっぱい。:2009/03/29(日) 14:00:46 ID:NRu5w9hF0
ウィンドウが最大化されているか、
されていないかを取得する方法ってありますか?
551名無しさん@お腹いっぱい。:2009/03/29(日) 14:29:42 ID:pOBhf47V0
WinGet, status, MinMax, hogehoge
552名無しさん@お腹いっぱい。:2009/03/29(日) 15:00:23 ID:x2HXBG8DP
メニュー上の項目先頭のチェック"レ"が付いているかいないかを取得する方法ってありますか?
553名無しさん@お腹いっぱい。:2009/03/29(日) 15:41:55 ID:mk90UFZl0
WinGetレ
554名無しさん@お腹いっぱい。:2009/03/29(日) 15:52:41 ID:pOBhf47V0
>>552
AHKにゃ無い。
あと最近のアプリは「普通のメニュー」を使っていないのが多いよ。
555名無しさん@お腹いっぱい。:2009/03/29(日) 16:20:44 ID:wyAVApH80
>>549
メモ帳で中身見てもらえばわかると思うけど、基本は無変換押してホイールくるくる。
#NoTrayIconは外したほうがいいかも。Vistaでも動くかな?わからない。動くと思うけど。
556552:2009/03/29(日) 16:22:07 ID:x2HXBG8DP
>>554
そうでしたか
どうもありがとうございました
557549:2009/03/30(月) 00:10:07 ID:rej68raf0
>>555
おお動いたよ
おもしろいねこれ
558名無しさん@お腹いっぱい。:2009/03/30(月) 03:11:37 ID:rej68raf0
imeの状態を、キーの入力ごとにチェックするのではなくて、
0.5秒ごとにチェックするには
どうすればいいのでしょうか?
559名無しさん@お腹いっぱい。:2009/03/30(月) 03:27:33 ID:lQv120RA0
>>558
#persistent
SetTimer, IME_GET, 500
return
IME_GET:
Tooltip,% IME_GET()
return
560558:2009/03/30(月) 07:57:20 ID:rej68raf0
>>559
ありがとうございます!
非常に助かりました!
561名無しさん@お腹いっぱい。:2009/03/31(火) 13:18:36 ID:LiwDBTTE0
マウスカーソル1回転させると何かアクションを起こすみたいなサンプルスクリプトってないですかね。
562名無しさん@お腹いっぱい。:2009/03/31(火) 14:34:53 ID:V9eOhI1h0
563名無しさん@お腹いっぱい。:2009/03/31(火) 16:22:04 ID:DLXcLh2K0
前から思ってたんだけどCoordModeを画面端からの絶対座標にする方法は
ないですか?
画面の右側にGUIやtooltipを表示するスクリプトを作って使っているんだけど、
使うPCによって画面外にはみ出したりする。
今はPCごとに表示座標を書き換えてるんだけど
そうしなくていい方法があったら教えてくれませんか。
564563:2009/03/31(火) 16:24:29 ID:DLXcLh2K0
自己レス。
WinGetPosでProgram Managerを指定してデスクトップのサイズを
取得すればいいのかな?と今気付いた。
565名無しさん@お腹いっぱい。:2009/03/31(火) 17:59:07 ID:ppgb+fKo0
>>563
SysGet
566名無しさん@お腹いっぱい。:2009/03/31(火) 20:30:14 ID:wxVKoyMy0
キーを押す長さをSetKeyDelayで設定できるようですが、
右クリックを5000ms押す場合には、どのように指定すればいいですか?
567名無しさん@お腹いっぱい。:2009/03/31(火) 20:54:33 ID:V9eOhI1h0
SomeKey::
Send, {RButton Down}
Sleep, 500
Send, {RButton Up}
return

ちなみにこれだと5秒経たないうちにもう一度キーを押しても反応しない
568名無しさん@お腹いっぱい。:2009/03/31(火) 20:55:24 ID:V9eOhI1h0
あ、500msになっとる・・・
569名無しさん@お腹いっぱい。:2009/03/31(火) 22:45:50 ID:wxVKoyMy0
>>567 >>568
レスありがとうございます。
アドバイスのおかげでうまくいきました
570名無しさん@お腹いっぱい。:2009/04/01(水) 17:17:57 ID:UifZp1zf0
guiのウィンドウを動かしたら
その移動後の位置を取得したいです
どうすればいいのでしょうか
571名無しさん@お腹いっぱい。:2009/04/01(水) 19:38:22 ID:81tLNstp0
>>548
AhkWheelVol改訂パクリ増幅完成版
WheelVolアイコンを使えるようにした。他微々変更。
ttp://lukewarm.s101.xrea.com/up/file/107.zip
572名無しさん@お腹いっぱい。:2009/04/01(水) 19:52:53 ID:81tLNstp0
>>570
Process,ExistとかWinGetとかWinGetPosとか使う
573名無しさん@お腹いっぱい。:2009/04/01(水) 20:11:31 ID:o8Y7i7os0
>>570
すげ〜力業。もっとスマートにできないもんかねぇ

Gui, +LastFound
GuiHwnd := WinExist()
Gui, Show, w200 h100
WinGetPos,xx,yy,,,ahk_id %GuiHwnd%
return

#IfWinActive, ahk_class AutoHotkeyGUI
~LButton Up::
~Enter Up::
 WinGetPos,x,y,w,h, ahk_id %GuiHwnd%
 if (xx != x || yy != y)
  SetTimer, OnGuiMoved,-1
 xx:=x,yy:=y
 return
OnGuiMoved:
 Tooltip, (%x%`,%y%)
 SetTimer, TipOff, -2000
 return
TipOff:
 Tooltip
 return
574名無しさん@お腹いっぱい。:2009/04/01(水) 22:28:53 ID:81tLNstp0
OnMessageでできるんじゃないかな。
575名無しさん@お腹いっぱい。:2009/04/02(木) 03:15:35 ID:dUEx8qZ/0
576名無しさん@お腹いっぱい。:2009/04/02(木) 19:29:48 ID:7vkTJaDR0
VistaでGuiをDestroyするとなぜかGuiが二度と表示できなくなってしまう・・・
XPでは動いたのに・・・
577名無しさん@お腹いっぱい。:2009/04/04(土) 12:00:41 ID:THWk95Pp0
需要あるかどうかわからないけど貼り、リモートデスクトップの背景色を透過させるスクリプト
リモートデスクトップクライアント側は背景画像なしで起動、スクリプト内部の「396da5」は各自で適宜書き換えてほしい
あと、同時に2つ以上のリモートデスクトップクライアントが起動する状況は一切考慮してない

あまりこういうもの書いた経験ないんで、書き方がアレなのはご勘弁を
---
#Persistent
SetTitleMatchMode,2
SetTitleMatchMode,Fast
DetectHiddenWIndows,Off
SetTimer RemoteTrans,100
return

RemoteTrans:
IfWinExist,リモート%A_Space%デスクトップ接続 ahk_class #32770
{
If(TransFlag = 0)
{
DetectHiddenWIndows,On
TransFlag = 1
WinSet,Trans,Off,ahk_class TSSHELLWND
WinSet,TransColor,396da5 255,ahk_class TSSHELLWND
DetectHiddenWIndows,Off
}
}
else
{
TransFlag = 0
}
578名無しさん@お腹いっぱい。:2009/04/04(土) 12:06:35 ID:zJiZ72fS0
>>576の続き
VistaだとGuiをDestroyすると、そのGui番号ではGuiが表示できなくなるみたい
579名無しさん@お腹いっぱい。:2009/04/04(土) 13:42:03 ID:rZJUeqT00
単にキーバインドの変更のためだけにこのソフトを使おうと思ってるのですが、
その目的に使うだけだったらこのソフトのメリットは大してないのでしょうか
580名無しさん@お腹いっぱい。:2009/04/04(土) 13:56:52 ID:xW9QnJcO0
そんなこともない
だがCapsLockをどうにかしたいのなら諦めれ
581名無しさん@お腹いっぱい。:2009/04/04(土) 14:13:49 ID:kSmNsRer0
changekeyと組み合わせれば、CapsLock問題もクリアーできるよ。
そして便利な使い方を考えるうちに、スクリプトにはまって、VBS、Perに手を出して、終いにはC言語の勉強を始めたのは俺。
582名無しさん@お腹いっぱい。:2009/04/04(土) 14:25:10 ID:zJiZ72fS0
プログラミングの手間を省くために手を出すような奴もここにいる
できる範囲が大きすぎて全部AutoHotkeyでやろうとしてしまうのがデメリットかな
583名無しさん@お腹いっぱい。:2009/04/04(土) 14:34:05 ID:mA/w516g0
>>581
あ、俺ガイル
584名無しさん@お腹いっぱい。:2009/04/04(土) 15:03:21 ID:FNUcueKP0
ほんとこのソフトすごいよね便利すぎてハマるの分かる
585名無しさん@お腹いっぱい。:2009/04/04(土) 15:17:57 ID:hXZrj5Ty0
ちょっと便利にするコードを書くうち脱線しすぎて気づけば、
数十万件ほどある2chのDAT自動分類とか、本文検索、カテゴリわけ、統計抽出で使ってる。

ホットキーは、このメインプログラムを呼び出すための
ショートカットキーとして唯一、機能している。
586名無しさん@お腹いっぱい。:2009/04/04(土) 15:51:05 ID:YxZpHoQz0
マウスジェスチャ以来の衝撃だったな、俺的には・・・AHKでも、ジェスチャできるけど。
>>581
俺もそうなりそう、CかPythonか迷ってるんだよね。どっちもやれってことか。
AHKでできることは、Cでも全部できるのかね?どう比較すればいいのか、よくわからない。
587名無しさん@お腹いっぱい。:2009/04/04(土) 15:52:14 ID:YxZpHoQz0
マウスジェスチャ以来の衝撃だったな、俺的には・・・AHKでも、ジェスチャできるけど。
>>581
俺もそうなりそう、CかPythonか迷ってるんだよね。どっちもやれってことか。
AHKでできることは、Cでも全部できるのかね?どう比較すればいいのか、よくわからない。
588名無しさん@お腹いっぱい。:2009/04/04(土) 15:54:42 ID:YxZpHoQz0
初の連打、すまん。失敗したって出て、リロードしても書き込まれてなかったからorz
>>571
これ、リモートデスクトップ先でもとりあえず使える。Master音量しか出ないけど。
589名無しさん@お腹いっぱい。:2009/04/04(土) 18:46:06 ID:YxZpHoQz0
やっぱAltTabって特殊なんだね。
~LAlt & Tab::
KeyWait, Tab, T0.15
if Errorlevel = 0
send, {Blind}{Tab}
if Errorlevel = 1
send, {Blind}+{Tab}
settimer, altreturn, -1
return

altreturn:
keywait, LAlt
send, {Return}
return
590名無しさん@お腹いっぱい。:2009/04/06(月) 16:01:58 ID:Z06B8II+0
AVGがあると、Ahk2Exe.exeでコンパイル失敗するみたいね。
常駐シールドの例外設定すればいいらしい。
591名無しさん@お腹いっぱい。:2009/04/07(火) 04:03:27 ID:Mds5OALU0
#Persistent ;監視
Clipboard= ;クリップボードのクリア
OnClipboardChange: ;クリップボードの内容が変更されたときに実行されるラベル

これなんですが、これだとクリップボードの内容が同じ場合でも
(同じ文字列などを続けてコピーした場合)
実行されてしまいます。
クリップボードの内容が同じ場合は実行しないようにしたいのですができるでしょうか?
592名無しさん@お腹いっぱい。:2009/04/07(火) 09:21:26 ID:tWsUW9OG0
前のと比較すればいいだけでは
593名無しさん@お腹いっぱい。:2009/04/07(火) 15:30:24 ID:TGZWu1B70
>3後半の文字化けってUTF-8でソース保存すれば回避できる?
594名無しさん@お腹いっぱい。:2009/04/07(火) 16:07:21 ID:t+lMuHL/0
文字化けではなくダメ文字、つまり正しく解釈された上での問題なのでそれでは回避出来ない
595名無しさん@お腹いっぱい。:2009/04/07(火) 19:45:06 ID:CUjFaHh90
Q: ファイルパスに駄目文字があるんだが、、、
A: 駄目文字微対策版( ttp://yak.myhome.cx/junks/#ahk.cp932 )を使え。
596名無しさん@お腹いっぱい。:2009/04/07(火) 19:57:38 ID:sZshg2Md0
流行らせるにある、ホイールリダイレクト使ってるんだが、ところどころホイール操作自体できなくなります。
例)タスクトレイをホイールすることができない、デュアルモニタ環境で特定のモニタのFirefoxにホイールができない など
*WheelDown::
CoordMode,Mouse,Screen
MouseGetPos,x,y,hwnd,ctrl,3
wp:=0xFF880000|GetKeyState("LButton")|GetKeyState("RButton")<<1|GetKeyState("Shift")<<2|GetKeyState("Ctrl")<<3|GetKeyState("MButton")<<4|GetKeyState("XButton1")<<5|GetKeyState("XButton2")<<6
lp:=y<<16|x
IfWinExist,ahk_id %hwnd%
{
  SendMessage,0x84,0,%lp%,,ahk_id %ctrl%
  If ErrorLevel=4294967295
    MouseGetPos,,,,ctrl,2
  Loop,%A_EventInfo%
    PostMessage,0x020A,%wp%,%lp%,,ahk_id %ctrl%
}
どこか改善できないでしょうか?
597596:2009/04/08(水) 12:13:50 ID:Ox1RALx+0
他の症状としては
OpenOffice.orgの表計算ソフトCalcでスクロールが一切効かないです
598名無しさん@お腹いっぱい。:2009/04/08(水) 13:15:09 ID:2zdTWL/U0
その場合は、CalccだけでなくOOo全般で、他にマンドプロンプトも効かないはず
ウィンドウ内にコントロール(窓)が無い構成だから(変数ctrlが空)
メッセージ送信先を窓本体にすればよいんで、Loopの前の行に
ctrl := !ctrl :? hwnd : ctrl
を入れれば動くんじゃないかな

後のことは情報少ないし、環境も作れないから分かんない
599名無しさん@お腹いっぱい。:2009/04/08(水) 13:43:07 ID:Ox1RALx+0
ありがとうございます。
でもctrl := !ctrl :? hwnd : ctrlだとエラーになります・・?
600名無しさん@お腹いっぱい。:2009/04/08(水) 14:19:57 ID:2zdTWL/U0
typo だw
ctrl := !ctrl ? hwnd : ctrl
601名無しさん@お腹いっぱい。:2009/04/08(水) 14:35:55 ID:Ox1RALx+0
>>600
本当にありがとうございました。Calc動くようになりました
Firfoxのほうは動かないのですが諦めますorz
602名無しさん@お腹いっぱい。:2009/04/08(水) 18:30:54 ID:MeqYpMzl0
流行らせるページのリファレンスに While とかが載ってないorz
603名無しさん@お腹いっぱい。:2009/04/08(水) 18:42:23 ID:R1fhUxJX0
もう更新されないだろうね
604名無しさん@お腹いっぱい。:2009/04/08(水) 18:48:42 ID:HObCX3A80
困った時は本家のリファレンス見た方がいいと思う
流行らせるの方は微妙に省略されてたりするんで、たまに本家を見ると新しい発見がある
605名無しさん@お腹いっぱい。:2009/04/08(水) 18:52:32 ID:3ImCV3Nv0
wikiがほしいところ
606名無しさん@お腹いっぱい。:2009/04/08(水) 20:06:46 ID:HJw1Zxkl0
今のAutoIt2ベースから
AutoIt3ベースで作り直してもらえると
多言語に強くなると思うのだけど

まぁasciiしか使う必要がなければ関係ないっちゃないか
607名無しさん@お腹いっぱい。:2009/04/10(金) 05:49:27 ID:JwzMpV8P0
流行らせるページは見やすくていいな。
白背景は法律で規制したほうがいい。まぶし過ぎて目に悪い。
608名無しさん@お腹いっぱい。:2009/04/10(金) 15:07:51 ID:DVG7YxSE0
レジストリいじらずにキーの入れ替えする方法を探してますが、
>3を読む限りahkでも無理そうですね。

流行らせるページを参考にscコードでCapsLockとCtrlを入れ替えたら
Ctrlが常にONの状態になりました。何か方法ありませんか?・・・
609名無しさん@お腹いっぱい。:2009/04/10(金) 15:48:55 ID:xEF1XKbe0
色んな人がさんざん試しって解決法が無いからテンプレの最初にある
610名無しさん@お腹いっぱい。:2009/04/10(金) 16:34:05 ID:p2tyHjkH0
ジョイスティックのアナログキー→矢印キー変換をこんな感じでやってるんだけど、
もうちょっと良い方法って無いのかな? あまりにも基本過ぎるみたいで検索にも引っかからない

sleepjoy = 100
SetTimer, getjoy, 30
#Persistent
return

getjoy:
GetKeyState, joyx, JoyX
GetKeyState, joyy, JoyY
if joyx between 49 and 51
if joyy between 49 and 51
return
Gosub, ranjoy
return

ranjoy:
if joyy > 75
Send {down}
else if joyy < 25
Send {up}
if joyx > 75
Send {right}
else if joyx < 25
Send {left}
sleep, sleepjoy
return
611名無しさん@お腹いっぱい。:2009/04/10(金) 19:16:26 ID:if/vCKuH0
流行らせるページを見てもわからなかったので質問させてください
任意のウィンドウの状態(最大化・最小化)を知る方法はありませんか?
サイズや座標はわかるようですが・・・
612名無しさん@お腹いっぱい。:2009/04/10(金) 19:29:20 ID:/daiVpQd0
>>611
WinGetでCmdにMinMax
613名無しさん@お腹いっぱい。:2009/04/10(金) 19:35:26 ID:nal87SU+0
>>611
>>551
あとは↓でMinMaxでページ検索
ttp://lukewarm.s101.xrea.com/commands/WinGet.html
614名無しさん@お腹いっぱい。:2009/04/10(金) 20:02:00 ID:xEF1XKbe0
>>610
低級なものしか用意されていないみたい
結局「タイマーして、キー状態みて、何かする」ってコード書かなきゃならないっぽい
615名無しさん@お腹いっぱい。:2009/04/10(金) 23:25:26 ID:T3nhlFEF0
悩んでみたけど、俺の頭じゃ解決できなかったので質問させてください。

ホットキーを無効にする処理についてです。
変数の中身によって、特定のホットキーを無効にしたりすることはできないものでしょうか。
#全部無効/有効はSuspendによって可能なことは確認いたしました。

流行らせるページより、
> サブルーチンの最初の行が「Suspend,On」以外のSuspendコマンドになっているホットキーは、Suspend,Onが実行されても無効化されない。
このあたりをうまく使えばできるのでしょうが、書き方が悪いのかうまく動いてくれません。

解決法をご存じの方は教えていただけると助かります。
616名無しさん@お腹いっぱい。:2009/04/10(金) 23:34:00 ID:p2tyHjkH0
>>614 thx 結局ジョイスティックに関しては見やすくまとめるとこんな感じになるのかな
SendJoy1 = {up}
SendJoy7 = {down}
SendJoy5 = {right}
SendJoy3 = {left}
SendJoy8 = {down}{right}
SendJoy6 = {down}{left}
SendJoy2 = {up}{right}
SendJoy0 = {up}{left}
SleepJoy = 100
SetKeyDelay, 20
SetFormat, float, 0.0
SetTimer, GetJoy, 30
#Persistent
return

GetJoy:
GetKeyState, joyx, JoyX
GetKeyState, joyy, JoyY
joyx := 0.018 * joyx -= 50
joyy := 0.018 * joyy -= 50
joyh := 4 + joyx + joyy *3
if joyh = 4
return
Gosub, RunJoy
return

RunJoy:
SendJoy := SendJoy%joyh%
Send %SendJoy%
sleep, SleepJoy
return
617名無しさん@お腹いっぱい。:2009/04/11(土) 00:49:53 ID:e4COaq2Q0
>>615
#1::
 Hotkey, #2, Hoge, % (flg:=!flg) ? "On" : "Off"
 return
Hoge:
 MsgBox, Hoge
 return
618>>615:2009/04/11(土) 01:49:46 ID:rh+NBoz70
>>617
返信ありがとうございます。
ですが、私が思っていたこととはちょっとだけ違うような気がします。
#自分が思っていることをうまく伝えられなくてごめんなさい。

ですので、あとは自分で頑張ります。ありがとうございました。
619名無しさん@お腹いっぱい。:2009/04/11(土) 02:16:39 ID:w6Dx6pM+0
>>618
どう違うのか書かないと、せっかく答えてくれた人も消化不良になるだろ。
自分ひとりだけよければ、それでいいのか?
620名無しさん@お腹いっぱい。:2009/04/11(土) 02:58:52 ID:LqjZj8GK0
USBの外付けテンキーに、普通のキーボードのテンキーと別のコマンドを
Autohotkeyを使って割り当てる事ってできるんでしょうか?
テンキーをプログラマブルキーボード的に使えないかと思うんですが
キーボード側のテンキーと連動しちゃわないかと思いまして…
621名無しさん@お腹いっぱい。:2009/04/11(土) 04:07:31 ID:1EEvkJ+r0
>>620
つ MagicKeyPad
622名無しさん@お腹いっぱい。:2009/04/11(土) 04:19:05 ID:J5YLNUgU0
uusbd.sysでも使って
デバイス毎にホットキーやリマップが設定出来るようになったら夢が広がるんだけどな

外付けテンキー全般に言えるか分からんが
マジェテンキーはNumLockがOnとOffの時とで異なるキーコードを送るようだから
やりようによってはフルキーボード付属のテンキーと別の動作をすることが出来るかもね
623名無しさん@お腹いっぱい。:2009/04/11(土) 05:45:21 ID:LqjZj8GK0
>>621
おおっ こんなソフトが! ありがとうございました。
Ahkで可能だったら最高だったんですが、現状ではできない感じなのでしょうかね。
624名無しさん@お腹いっぱい。:2009/04/11(土) 07:39:15 ID:bNSgGuY10
>>615
617でダメならナニがしたいのかよくわからんが
hotkeyコマンドで任意のホットキーをオン・オフ出来るからそれで良いんじゃないの?と思うが
625名無しさん@お腹いっぱい。:2009/04/11(土) 08:46:33 ID:rh+NBoz70
>>619
そうですね。すみませんでした。

やりたかったこと:
アプリケーションA専用のホットキーとして6つほど割り当てております。
そのほかにアプリケーションランチャー代わりとして5つほど割り当てているのですが、変数の中身の値によってそれだけをすべて無効にしたかったのです。

#あるキーを押せば無効になる、というものではなくあらかじめ設定用の変数を用意/設定をし、それによってスクリプトを走らせたと同時に有効/無効を切り替えられればな、と。
#走らせたあとは有効/無効を切り替えるということは考えていなかったです。


>>624
やぱ俺の頭が足りんよ
リファレンスとにらめっこしてくるよ
626名無しさん@お腹いっぱい。:2009/04/11(土) 08:47:29 ID:iBHZiqEC0
xpを使っています
autohotkeyのスクリプトから、そのスクリプトのショートカットをスタートアップに登録したいです
A_ScriptFullPathでそのスクリプトのありかを取得
A_Startupでスタートアップフォルダのありかを取得
ここまでは分かっています。その先がわかりません。
627名無しさん@お腹いっぱい。:2009/04/11(土) 08:55:36 ID:ZRhwazf80
FileCreateShortcut, %A_ScriptFullPath%, %A_Startup%\%A_ScriptName%.lnk
628名無しさん@お腹いっぱい。:2009/04/11(土) 09:31:30 ID:bNSgGuY10
>>625
#IfWinActiveで特定のアプリにのみ有効なホットキーを設定
hotkeyでホットキーのオン・オフ切り替え
このあたりを使えば望みの動作が出来ると思う
俺はよくiniファイルの設定を読み込ませてホットキーを動的に設定したりオン・オフしたりさせてるが
それと同じ方法で実現できると思う
hotkeyコマンドに変数展開使うだけだし
629名無しさん@お腹いっぱい。:2009/04/11(土) 09:37:44 ID:e4COaq2Q0
>>625
「変数」は何処に存在するんだろうか?

; 起動毎にホットキーのOn/Offがトグルになるスクリプト
OnExit, OnExitSub
IniRead, IsHotkeyEnable, conf.ini, Hotkey, Enable, 0 ; 無ければ "0(=Off)"とする

If (IsHotkeyEnable) {
 Hotkey, IfWinActive, ahk_class Progman ; デスクトップのみ
 Hotkey, #1, Key1, On
 Hotkey, #2, Key2, On
}
return
; 終了時にフラグを逆転して終了
OnExitSub:
 IsHotkeyEnable := !IsHotkeyEnable
 IniWrite, %IsHotkeyEnable%, conf.ini, Hotkey, Enable
 ExitApp

Key1:
 MsgBox, Key1 Action
 return
Key2:
 MsgBox, Key2 Action
 return
630名無しさん@お腹いっぱい。:2009/04/11(土) 10:36:03 ID:iBHZiqEC0
>>627
ありがとうございました。
631名無しさん@お腹いっぱい。:2009/04/11(土) 12:30:52 ID:G+GUTcDI0
>>608
keybatという1500円のソフトで可能だよ。さっき試した出来たよ。
俺はこれからAHKに乗り換えた当初に同じことをやろうとして苦労した覚えがある。
レジストリいじるソフトを使用してF13を導入して解決した。レジストリいじれないならkeybatだね。
人気ないけど、いいソフトだと思う。キーカスタマイズスレで罵倒された楽しい思い出があるけどw
632615:2009/04/11(土) 19:33:36 ID:rh+NBoz70
>>629
iniに書き込んであります。

>>628,629
ヒントありがとうございます。
自分が思っていたような動作をするスクリプトが書けました。
とは言っても、約半分ぐらい629と同じですが。

お世話になりました!
ありがとうございました。
633492:2009/04/11(土) 23:31:57 ID:3TjMJxNW0
以前書いたくるくるスクロールが不細工だったので書き直し。
おまけでくるくるスクロールの関数とカーソル上下でスクロールする関数を同梱しました。
トラックボールを使っている人にしか需要は無いと思います。
ttp://lukewarm.s101.xrea.com/up/file/108.zip
634名無しさん@お腹いっぱい。:2009/04/11(土) 23:34:26 ID:YKimc9dt0
>>633
使わせていただきます!
635名無しさん@お腹いっぱい。:2009/04/11(土) 23:47:34 ID:oqoLxhVT0
リマップで質問です。特定キーをトリガにして、リマップの内容を変更するのがうまくいきません。
添削してもらえませんか?

--
vkAFsc130::PgDn ←デフォルト定義
vkAEsc12E::PgUp ←デフォ

vkADsc120::    ← 問題のトリガ
if flag = 100
{
vkAFsc130::PgDn  ←この定義で Duplicate してしまう
vkAEsc12E::PgUp
flag = 0
}
else
{
vkAFsc130::Down
vkAEsc12E::Up
flag = 100
}
return
636名無しさん@お腹いっぱい。:2009/04/11(土) 23:58:49 ID:e4COaq2Q0
そもそも、言語仕様にに沿ってない。つーか言語がめちゃくちゃなんだけど
>>615からのの流れを流用してHotkeyコマンド使うか、
リマップを捨てて、Sendでキー送るってカンジかな

後者なら↓みたいな感じ
kAFsc130::
 If flag = 100
  Send, {PgDn}
 Else
  Send, {Down}
 return

どうしてもリマップ捨てたくないなら AutoHotkey_L の #if 使う方がいいかも
#if (flag==100)
vkAFsc130::PgDn
vkAEsc12E::PgUp
#if (flag!=100)
kAFsc130::Down
vkAEsc12E::Up
#if
637名無しさん@お腹いっぱい。:2009/04/12(日) 00:08:41 ID:BvyA+lnB0
>>636
>そもそも、言語仕様にに沿ってない。つーか言語がめちゃくちゃなんだけど
滝汗

ありがとうございます。もうちょっと色々見てみます。
638名無しさん@お腹いっぱい。:2009/04/12(日) 11:50:32 ID:9mFGO0zQ0
無変換+zで、ひとつ下のウィンドウをアクティブに。
~vk1Dsc07B & z::
WinGetClass, classA, A
a=
WinGet, List, List,,,ningenshikkaku
Loop,%List%
{
Hwnd := List%A_Index%
SetFormat,Integer,H
WinGet,s,Style,ahk_id %Hwnd%
SetFormat,Integer,D
if((!(s&0x08000000))&&((s&0x80)|| !(s&0x80000000)))
{
WinGetClass, class, ahk_id %Hwnd%
if (a=1){
WinActivate, ahk_id %Hwnd%
break
}
if (class=classA)
a=1
}
}
return
639638:2009/04/12(日) 13:07:26 ID:9mFGO0zQ0
>>638
すみません、これはダメだわ。GOMPlayer等、見つけられないものもあるw、まあ手動で足していけばいいか。
キーボード中心環境なら、上にいくのも付け足せば、最前面表示とかに行けて便利?

Alt+Tabは順序が入れ替わって、使い辛いな。
無変換←→とかで、タスクバー順にアクティブにできたほうがいいけど、AHKでできるかな?
640名無しさん@お腹いっぱい。:2009/04/12(日) 14:31:19 ID:dIdsRb2N0
タスクバーの情報を取得するのは公式フォーラムにあるというのがここでのFAQ
ttp://www.autohotkey.com/forum/topic18652.html

キーボード派のWindow切り替えなら、こういうemacsのiswitchライクなのも良いと思う
ttp://www.autohotkey.com/forum/topic33353.html
641名無しさん@お腹いっぱい。:2009/04/12(日) 15:25:54 ID:9mFGO0zQ0
>>640
おお、d
上のは、情報が特殊なんだね。Dolphi製はTApplicationのほう取ってるし、hWndとかも何か特殊だ。
特殊だと思ったら、10進法でとってるのか。
TApplicationをどうにかしたら、タスクバー順にアクティブはできそうだね。

下のはいいね、好みw
642名無しさん@お腹いっぱい。:2009/04/12(日) 16:41:10 ID:RL+Ry9QM0
流行らせるページにwhileとかの説明が新しく追加されてるね。英語弱いので助かります。
643名無しさん@お腹いっぱい。:2009/04/12(日) 20:46:21 ID:bhv5GHsf0
1by1のビッグウィンドウを思い出したw
644名無しさん@お腹いっぱい。:2009/04/12(日) 21:28:50 ID:XLkAadI10
スレ違いっぽいけど
admin権限なしでCtrl<->CapsLock交換できるソフトってない?
autohotkeyでキー置換の大部分はできるんだけど
これだけ困ってる。
645名無しさん@お腹いっぱい。:2009/04/12(日) 21:54:14 ID:PppMsUH80
>>644
日本語ユーザーはやっぱりその壁にぶち当たるんだよな

で、なんでautohotkeyではこのキーだけ駄目なんだろう
内部で特殊な処理をしているのかな
646名無しさん@お腹いっぱい。:2009/04/12(日) 22:26:34 ID:r11nbAGs0
WheelAccel.ahkでIE上でホイールを早く回した場合に、スクロールが上手く加速されていないような気がします。
IE上で素早くホイールを回した場合でも、回転に応じたスクロールができるようになりませんでしょうか。
647名無しさん@お腹いっぱい。:2009/04/12(日) 23:39:09 ID:ln8RqTb30
IEのスムーズスクロールをOFFにする
A_EventInfo を考慮した加速方式にする
648名無しさん@お腹いっぱい。:2009/04/13(月) 03:50:01 ID:25xJ6v2w0
すみません、どなたかご教授お願いします。
プログラムに明るくなくて分かりづらい説明で申し訳ありませんが。

Photoshop使用時に「6」に
6::send +!r
という風にキーを割り当ててます。(ブラシのモードが変更されるショートカット)

それとは別にPhotoshopでは Shift+Alt+クリック で
「カラーサンプラーを配置する」という機能があるのですが、
どうもフォトショ使用中に時折、「6」を押した瞬間にクリックして
ブラシモード切替と同時にサンプラーを配置してしまうのです。

上手いこと「6」と同時くらいにクリックしても
Shift+Alt+クリック にならなくするような方策はないものでしょうか?
649名無しさん@お腹いっぱい。:2009/04/13(月) 04:42:51 ID:hmD/M1lx0
>>648
これを試してみては

6::
blockinput, on
send, +!r
blockinput, off
return
650名無しさん@お腹いっぱい。:2009/04/13(月) 04:57:26 ID:25xJ6v2w0
>>649
激減しました、ありがとうございます!

しかしガチャガチャ何度もやってると極稀にサンプラーが起動してしまうことがありました。
とりあえず大分改善されたのでとても助かります。

あつかましい話ですがついでにもう一つ質問させてください。
キーを押しっぱなしにすると連打が始まってしまいますが、これを
抑制するのってどうやればいいんでしょうか?
651名無しさん@お腹いっぱい。:2009/04/13(月) 05:18:04 ID:DVlSaX3W0
KeyWait, 6
return
にすればいいかもしれないね。
それか、6 up::にしてキーを離したときに送るか。
652名無しさん@お腹いっぱい。:2009/04/13(月) 06:43:56 ID:hmD/M1lx0
>>650
>>649でダメなら

#InstallMouseHook
6::
if !getkeystate("LButton", "P")
send, +!r
return


連打しないで押したままにしたいなら↓みたいな感じかな

a::
send, {a down}
keywait, a
send, {a up}
return
653名無しさん@お腹いっぱい。:2009/04/13(月) 19:54:37 ID:0vf0TAcu0
ソフトの使い方を常にポップアップ表示させるようなものを作りたいんですが
ソフトのウィンドウを動かした時に、一緒に説明の画面も追随するようなのって
どうやったら作れますか?
654名無しさん@お腹いっぱい。:2009/04/13(月) 20:30:43 ID:Ay3UPRR20
エスパー難しすぐる

自作GUIならOnMessage()使ってウィンドウメッセージの"WM_MOVE(0x3)"を拾う、
そうでないならタイマーでウィンドウ位置を監視して動いた稼働かを検知、

で、追従させたい窓を移動
655名無しさん@お腹いっぱい。:2009/04/13(月) 22:22:03 ID:H1zTlTqI0
>>644 が求めている解決方法ではないけど、
自分の場合は、ソフトでの解決はあきらめて、
Ctrl<->CapsLock交換できるキーボードを使っています。
656名無しさん@お腹いっぱい。:2009/04/14(火) 00:22:52 ID:+WvFDJJL0
>>654
なるほど、タイマー使う手がありますね。
サンクスです。
657名無しさん@お腹いっぱい。:2009/04/14(火) 16:20:23 ID:sa012nT50
Run,"hoge.exe"で外部のスクリプトやアプリを実行するとき、
ビープ音がなるんだけど、これを止める方法はないもんかな?
658名無しさん@お腹いっぱい。:2009/04/14(火) 16:34:44 ID:7q5WOPK90
うちではpingコマンドを定期的にルータに向けて発射させてるが、
意図的にsoundbeepコマンドを使わない限り、鳴らないけど?
659名無しさん@お腹いっぱい。:2009/04/14(火) 17:12:09 ID:D6tdSy390
Run, notepad
うん、無言で起ち上がる
660名無しさん@お腹いっぱい。:2009/04/14(火) 17:27:38 ID:19+rPi280
ウィルス対策ソフトの設定かな?
AutoHotkeyを除外すれば解決するんじゃないかと見た
661657:2009/04/14(火) 19:02:25 ID:sa012nT50
ウィルスソフト切っても鳴ってる。
キーに割り当てないで、スクリプトの先頭で、Run, notepad と書けば鳴らないで起動するけど、
キーに割り当ててから、キーを押してアプリやスクリプトを起動するときはビープ音が鳴ります。
他のPCのAHKのスクリプトでも、ホットキー押してアプリやスクリプトを起動してもビープ音なってたんだが、
まさか家だけの特別仕様?・・・w 
Zip版で入れたのと関係あんのかな・・・
鳴らしたり鳴らさなかったりするコマンドでもあるのかと思ったんだが。
まぁ、動作状況が分かりやすいといえなくも無いかなw、と。
662名無しさん@お腹いっぱい。:2009/04/14(火) 19:22:49 ID:eiTdV88b0
b::Run, notepad

をautohotkey.ini にを記述してBを押してみたけど
特に何の音もせず、xyzzyが起動した
(Terapperというソフトでnotepadの代わりにxyzzyを起動するようにしている)
663名無しさん@お腹いっぱい。:2009/04/14(火) 19:31:03 ID:7q5WOPK90
>>661
ahkのバージョンと、入手場所は?

うちでは、explorerで選択したファイルのハッシュを計算するため、
ホットキーをつかって、呼ばれた場所でハッシュ計算コマンドを呼び出してる。

こんな使い方するのは、ahk界隈では朝飯前だろうから
いちいちビープが鳴ってたら、全世界でクレームだらけになるぞw
664名無しさん@お腹いっぱい。:2009/04/14(火) 19:42:22 ID:M4uz39800
・何かのデスクトップテーマや常駐ソフトで音が鳴るようになってる
・本当のウィルスに感染してる
・PCの中にいる妖精さんが鳴らしている
665名無しさん@お腹いっぱい。:2009/04/14(火) 20:33:27 ID:sa012nT50
>>662
そのように、ためしに別の組み合わせのキーの横に直接記述したら、音が消えました。
普通に動いてるから気にしてなかったんだけど
スクリプトの記述のエラーのビープ音なのかも・・・。
>>663
>>全世界でクレームだらけになるぞw
そりゃそうだ。
>>664
たぶん妖精さんですねw

みなさんお騒がせしました。ごめんね。
666名無しさん@お腹いっぱい。:2009/04/14(火) 21:20:21 ID:j9JZmdvM0
>>665
@割り当ててるホットキーがすでに別のソフトに割り当てられててそっちで音がなってる。
AたとえばWin+Dを押したとき、エクスプローラにDキーが送られて、エクスプローラから「Dで始まるファイルなんてねえよ!」って言われて音が鳴る

ぱっと思いつくのはこれぐらい
667名無しさん@お腹いっぱい。:2009/04/14(火) 22:50:52 ID:9Q5al6/M0
コンパネの「サウンドとオーディオデバイス」の設定で
「プログラムの起動」に音が設定されているにイッピョ
668名無しさん@お腹いっぱい。:2009/04/14(火) 23:00:00 ID:McvR1AuZ0
>>667
+エラーだろうな
669名無しさん@お腹いっぱい。:2009/04/16(木) 01:42:10 ID:WuzwTPez0
代入について質問します
autohotkeyでは以下の二つの処理のうち、より早いのはどちらなのでしょうか。

a = test
a := "test"
670名無しさん@お腹いっぱい。:2009/04/16(木) 02:04:46 ID:mvpsM9MdP
>>669
ttp://lukewarm.s101.xrea.com/test/read.cgi/bbs/1157529465/97
最近のバージョンではどうか知らない
671名無しさん@お腹いっぱい。:2009/04/16(木) 02:10:27 ID:QXtfAzQn0
適当に作った。こっちでは、数値でも文字列でも 「=」 のほうが 「:=」 より速い
Gui, Add, ListView,Grid,Name|Count|Time(ms)
Loop, 3
 LV_ModifyCol(A_Index, 80)
Gui, Show
count := 1000 * 1000
Tests = Test1|Test2|Test3|Test4
Loop, PARSE, Tests, |
{
 StartTime := A_TickCount
 Gosub, %A_LoopField%
 Time := A_TickCount - StartTime
 LV_Add("", A_LoopField, count, Time)
}
return
Test1:
 Loop, %count%
  a = 1000
 Return
Test2:
 Loop, %count%
  a := 1000
 Return
Test3:
 Loop, %count%
  a = あいうえお
 Return
Test4:
 Loop, %count%
  a := "あいうえお"
 Return
672名無しさん@お腹いっぱい。:2009/04/16(木) 05:16:49 ID:qBUQoLG70
Version 1.0.48.01
673669:2009/04/16(木) 08:07:16 ID:WuzwTPez0
>>670-671
ありがとうございます。
昔から層だったのですか。


>>672
674名無しさん@お腹いっぱい。:2009/04/16(木) 08:41:24 ID:rRTU/mFz0
>>585
>数十万件ほどある2chのDAT自動分類とか、本文検索、カテゴリわけ、統計抽出で使ってる。
便利そうだなあ、うpおねがいできない?
675名無しさん@お腹いっぱい。:2009/04/16(木) 16:03:00 ID:DnQKjK+d0
676名無しさん@お腹いっぱい。:2009/04/16(木) 16:29:05 ID:dH1w2+Gu0
677名無しさん@お腹いっぱい。:2009/04/16(木) 17:23:25 ID:bLNrS1bm0
678名無しさん@お腹いっぱい。:2009/04/16(木) 18:12:44 ID:cHHoWky00
679名無しさん@お腹いっぱい。:2009/04/17(金) 01:36:32 ID:mo1/Vcwy0
>>671
じゃあ := の存在意義ってあるのかな?
680名無しさん@お腹いっぱい。:2009/04/17(金) 01:39:57 ID:EfTDXa450
:=は、右式で計算するときじゃね? と俺は理解して使い分けてるけど
681名無しさん@お腹いっぱい。:2009/04/17(金) 03:32:56 ID:XkaWyP6+0
計算しようとする分、遅くなるんだろうね。
682名無しさん@お腹いっぱい。:2009/04/17(金) 21:58:16 ID:xuJtArT2P
|=
の使い道が分からん
683名無しさん@お腹いっぱい。:2009/04/17(金) 23:21:53 ID:NeCnakzy0
扉を開けるって意味のAAじゃないのか?
684名無しさん@お腹いっぱい。:2009/04/17(金) 23:34:41 ID:s+XI67ya0
>>682
flags|=NEW_FLAG
685名無しさん@お腹いっぱい。:2009/04/18(土) 00:06:21 ID:1kiue+Dq0
Orのビット演算した結果を代入じゃないの?
686名無しさん@お腹いっぱい。:2009/04/18(土) 00:29:50 ID:kItLjanl0
ビット演算とか Or の概念自体がわからんのじゃね?
AHKのサンプルでも | じゃなく +で足し込んでフラグの説明してる場合が多いしな
687名無しさん@お腹いっぱい。:2009/04/18(土) 10:36:33 ID:tJm8WU8c0
インストーラー形式の方ではなくzip版AutoHotkey104801.zipで
MouseGesture2を使わせて貰おうと思うのですが
AutoHotkey104801.zipを解凍したフォルダに入っているのLibフォルダの中に
MouseGesture2.zipを解凍して出来たフォルダ一式を入れてAutoHotkey.exeを
実行してもドキュメントフォルダにAutoHotkey.ahkを作成するかを聞いてきて
yesにしてもnoにしてもMouseGesture2.ahkを読み込めません。
AutoHotkey.exeを実行しただけで、複数の.ahkを読み込みたいのですが
インストーラーでインストールしないと無理なのでしょうか?
688名無しさん@お腹いっぱい。:2009/04/18(土) 10:37:58 ID:VGVOYY6h0
低レベル過ぎ
流行らせるページで初歩を学んでこい
689名無しさん@お腹いっぱい。:2009/04/18(土) 11:17:02 ID:tJm8WU8c0
>>688
AutoHotkey.exeの実行は読んだのですが自分のやり方が間違っているので出来ません。
MouseGesture2など複数の.ahkをAutoHotkey.exeをクリックしただけで実行できる
具体的な方法を聞きたいのです。
690名無しさん@お腹いっぱい。:2009/04/18(土) 11:19:11 ID:YTnYPyoc0
>>689
やり方が間違ってるって分かるんなら解決できるだろ
691名無しさん@お腹いっぱい。:2009/04/18(土) 11:23:56 ID:tJm8WU8c0
流行らせるページを参考にしただけでは無理だったので聞いています。
692名無しさん@お腹いっぱい。:2009/04/18(土) 11:26:32 ID:TxHWsmXa0
#Include項を読めば、問題解決。
別々にexeに送ったほうがいいよ。includeしても問題が発生するだけ。ランチャ登録で、一発じゃん。
693名無しさん@お腹いっぱい。:2009/04/18(土) 11:33:10 ID:HfGyibd50
MouseGesture2 は単体で起動した方がいいね
でもこの調子じゃ使いこなすまでにかなり苦労しそうな雰囲気…
694名無しさん@お腹いっぱい。:2009/04/18(土) 11:33:13 ID:TxHWsmXa0
使用方法の「AutoHotkey.exeの実行」と
スクリプト仕様の「スクリプトの起動とAuto-executeセクション」も参照。
これで理解できないなら、聞くだけ無意味。初期の初期です。
695名無しさん@お腹いっぱい。:2009/04/18(土) 11:42:06 ID:kItLjanl0
色々便利な機能があるのは分かってるが組込みが面倒臭そうすぎて敬遠してるな>MouseGesture2
そこそこAHK暦ある人間ですらそんな状態なので、とりあえず単体起動で常用して
組込み(含むLIBでの自動組込み)は自力でAHK書けるようになってからにしたらいいと思う
696名無しさん@お腹いっぱい。:2009/04/18(土) 11:51:36 ID:TxHWsmXa0
マウ筋とAHKの組み合わせで必要十分だしね。
さらに踏み込みたいなら、MouseGesture2は非常に便利なんだけどね。
マウ筋を使いすぎて環境移動が面倒くさいのもあるけど。

ただ、ここでMouseGestureがあったらなとは、よく思う。
JaneStyleとかのマウスジェスチャーつきのソフトでは、よく思う。
697名無しさん@お腹いっぱい。:2009/04/18(土) 12:03:30 ID:tJm8WU8c0
>>688-696
付き合って頂きありがとうございます。
マウ筋からMouseGesture2への乗り換えの最中に問題が出てファビりました。
後出しで申し訳ありませんが、MouseGesture2とnamazu_ime_scr_v10201だけ
他のスクリプトとうまく(動いたり動かなかったり)読み込めなかったので質問しました。
マウ筋はv1.40になってかなり便利なのですが、もう少し自由度が欲しいので
ncludeを使ったりしてもう暫く色々やってみます。
最悪、MouseGesture2とnamazu_imeは単体で動かします。
皆さん本当にありがとうございました。
698名無しさん@お腹いっぱい。:2009/04/18(土) 12:30:04 ID:XnVnH0l70
経験則だが

MouseGesture.ahkはAuto-executeセクションで#includeするスクリプトの中では最後に記述する
なまず日記のスクリプトを#includeする場合はAuto-executeセクション以外の方がいい
※スクリプト内でReturnを使ってる場合はエラーが出るから
699名無しさん@お腹いっぱい。:2009/04/18(土) 12:39:43 ID:tJm8WU8c0
>>698
ありがとうございます。未だ奮闘中なので
>Returnを使ってる場合は
これかな?
なまずさん所、詳しく読んでみます。
700名無しさん@お腹いっぱい。:2009/04/18(土) 12:51:20 ID:UjDkIbnE0
インクルード(関数ライブラリ含む)の仕様上無理だってのはわかるけど
インクルード「される」側のAutoexecブロックとかプリプロセッサ命令(#NoEnvとか)を
有効にするかしないかを選びたいなぁと思う事はある。
701名無しさん@お腹いっぱい。:2009/04/18(土) 17:57:57 ID:1kiue+Dq0
たとえば、下の二つは個別ではきちんと動く
-----------------------------
Func_AAA()
return
Func_AAA(){
ToolTip,AAA
return
}
-----------------------------
Func_BBB()
return
Func_BBB(){
ToolTip,BBB
return
}
-----------------------------
けどIncludeすると下のようになって実行できない
-----------------------------
Func_AAA()
return ;ここで終了
Func_AAA(){
ToolTip,AAA
return
}
Func_BBB() ;ここまでこない
return
Func_BBB(){
ToolTip,BBB
return
}
-----------------------------
702名無しさん@お腹いっぱい。:2009/04/18(土) 18:15:51 ID:TxHWsmXa0
結局、全部統合して一つのスクリプトにするってだけだから、変数とかAuto-Executeとか理解しながらまとめるしかない。
競合したりすると原因究明が面倒くさいから、個別に管理してる。
703名無しさん@お腹いっぱい。:2009/04/18(土) 19:32:24 ID:14iQRRzH0
MouseGesture2にて
・条件定義タブで「種別=>ウィンドクラス」「値=>CabinetWClass」
・ジェスチャ定義タブで「定義名=>右↓→」「カーソル移動=>RB_DR_」
・動作割り当てタブで「Send,^w」と設定しました。
これで「右↓→」でウィンドウを閉じるようにできました。

ところがファイルを右ドラッグした時の右ドラッグメニュー「ここにコピー」等の
表示レスポンスが落ちました。
設定タブでタイムアウトを「200」にしましたが、まだ遅いと感じます。
できればファイルやフォルダのアイコン上ではマウスジェスチャーを無効化したいです。

下のサイトはマウ筋の設定ですが、まさにこれと同じ事で悩んでいます。
こういった設定はどうすればいいですか?
http://f57.aaa.livedoor.jp/~atechs/pukiwiki.php?faq%A4%C8%BC%BA%C7%D4%CE%E3#i0b3c179
704名無しさん@お腹いっぱい。:2009/04/18(土) 19:43:43 ID:TxHWsmXa0
>>703
>>488のこれが使えるかも。
ControlGet,StateListView,List,Selected,%ClassNN%,ahk_id %WindowID% ; StateListViewにSysListView32の選択項目名を入れる
705名無しさん@お腹いっぱい。:2009/04/18(土) 21:55:07 ID:14iQRRzH0
>>704
ありがとうございます。
先日マウ筋から乗り換えたばかりの自分には少し難しいかもしれません。
自分の勉強不足です。
色々試してみます。
706名無しさん@お腹いっぱい。:2009/04/18(土) 22:49:52 ID:vwMG/qD80
条件定義で条件を作成し(例えば条件名を GestureCancel とする)
カスタム条件式で下記の何れかを登録(または複数登録)
MG_LvHitTest()
MG_TvHitTest()
MG_TreeListHitTest()
※関数の詳細はReadme.txtの335行目〜の「●ユーティリティ変数・関数」を参照

ジェスチャ定義で RB_ を作成

動作割り当て
RB_ を選択
条件 GestureCancel
動作 MG_About()

これで以前と同様に扱えると思う
707名無しさん@お腹いっぱい。:2009/04/19(日) 00:06:23 ID:RYyoU1dL0
あるキーが押されたらループを抜けて次の処理へ、ということをやりたくて
以下のように書いていますが、タイミングによってはスリープに引っ掛かって
失敗してしまいます。ホットキーの利用も考えたのですがうまくいきません。
低レベルで申し訳ないのですが、どう書けばいいのでしょうか…?
(スリープ処理は残しておきたいです)

Loop
{
if ( GetKeyState("RETURN") = 1)
Break
Else
Sleep,100
}
708名無しさん@お腹いっぱい。:2009/04/19(日) 00:11:10 ID:zeE5du8S0
KeyWait, Return, D
msgbox, test
709名無しさん@お腹いっぱい。:2009/04/19(日) 00:24:59 ID:OzydvQTn0
KeyWait使うのが楽だと思うけど。。。
どうしてもSleepを残すのならば、ループ内でキーを拾えないのはしょうがない
ホットキーつかってフラグの上げ下げすりゃいいはず

Loop
 Go := false
 while (Go==false)
  Sleep, 100
  :

SomeKey::Go:=true
710名無しさん@お腹いっぱい。:2009/04/19(日) 00:39:19 ID:RYyoU1dL0
>>708-709
ありがとうございます!
実際はループ中に他の処理もしているので(省略してしまってすみません)、
KeyWait で止まってしまうのはまずかったのです。
フラグを立てる方法でうまくいきました。ありがとうございました!
711名無しさん@お腹いっぱい。:2009/04/19(日) 17:31:21 ID:85CwF9t90
GUIに現在時刻をリアルタイムで表示したいんですがどうすればよいのでしょうか?
712名無しさん@お腹いっぱい。:2009/04/19(日) 17:44:32 ID:tIMrGJMJ0
>>711
組み込み変数
%A_YYYY%年%A_MM%月%A_DD%日%A_Hour%時%A_Min%分
713名無しさん@お腹いっぱい。:2009/04/19(日) 22:16:23 ID:OzydvQTn0
; 簡易マウスジェスチャ関数
; ジェスチャの結果をLRUDの文字列として返す

GetGesture(timeout=1000, tipNo=0, sensitivity=30) {
 CoordMode, Mouse, Screen
 CoordMode, Tooltip, Screen
 ButtonName := RegExReplace(A_ThisHotkey, "^\W+|\s.+", "", "", -1)
 MouseGetPos,nx,ny
 qp := ATan(1), lastDir = ""
 while GetKeyState(ButtonName, "P") {
  if (A_TimeSinceThisHotkey > timeout && !gesture) {
   if (tipNo)
    Tooltip,Timeout, x+16, y+16, %tipNo%
   break
  }
  MouseGetPos,x,y
  dx:=x-nx, dy:=y-ny
  if (tipNo)
   Tooltip, %gesture%, x+16, y+16, %tipNo%
  if (Mod(A_Index, 10)!=1 || Sqrt(dx**2 + dy **2) < sensitivity)
   Continue
  rad := ATan(dy/dx)
  dir := (rad < qp && rad > -qp ) ? ((dx > 0) ? "R" : "L") : (dy>0) ? "D" : "U"
  if (lastDir != dir)
   gesture .= dir
  lastDir := dir, nx:=x, ny:=y
  Sleep, 20
 }
714名無しさん@お腹いっぱい。:2009/04/19(日) 22:18:27 ID:OzydvQTn0
; 続き
 if (!gesture) {
  Send, {%ButtonName% Down}
  KeyWait, %ButtonName%
  Send, {%ButtonName% Up}
 }
 if (tipNo)
  Tooltip,,,, %tipNo%
 return gesture
}

利用例)

SetTitleMatchMode, RegEx

#IfWinActive, ahk_class CabinetWClass|ExploreWClass|MozillaUIWindowClass|IEFrame
$RButton::
 g := GetGesture(1000, 20)
 Send, % (g=="R") ? "{Browser_Forward}" : (g=="L") ? "{Browser_Back}" : (g=="LDR") ? "^w" : ""
 return
715名無しさん@お腹いっぱい。:2009/04/20(月) 02:35:47 ID:MR7L4s8s0
>>712
ソフト起動時の時間しか表示してくれません・・・。
できればリアルタイムで表示が変わっていくようにしたいんですが
716名無しさん@お腹いっぱい。:2009/04/20(月) 03:06:03 ID:NtrPHVPz0
>>715
そりゃそうさ。
Gui,Showをするか、GuiControlで変えるかしないと。
チカチカする場合は、
SetBatchLines, -1 ; maximize script speed!
SetWinDelay, -1
を書けば緩和されるかも。
717名無しさん@お腹いっぱい。:2009/04/20(月) 03:14:34 ID:MR7L4s8s0
>>716
ありがとう!
明日試してみます。
718名無しさん@お腹いっぱい。:2009/04/20(月) 05:28:09 ID:JG3J5CMR0
変数名の中に変数を入れた場合その変数を呼び出すにはどうすればよいのでしょうか?
たとえば

no=1
name%no%=taro

こうした場合%name1%では呼べますが%name%no%%では呼べません。
719名無しさん@お腹いっぱい。:2009/04/20(月) 08:57:33 ID:dpb8VPO80
:=
720名無しさん@お腹いっぱい。:2009/04/20(月) 21:17:57 ID:i3tTOHu+0
>>718
no=1
name%no%=taro
dainyu:=name%no%
msgbox, %dainyu%

こんな感じにしてる。
721名無しさん@お腹いっぱい。:2009/04/20(月) 22:30:21 ID:WxIZTvGU0
1.0.48.02キター
722名無しさん@お腹いっぱい。:2009/04/20(月) 23:22:48 ID:fqH4UQW20
変数の参照の仕方は変態的だよなぁ

a1 = ああああ
a2 = いいいい
a3 = うううう
a4 = ええええ
a5 = おおおお
Loop, % 0+2+3 {
 Tooltip, % "a" . A_Index " = " . a%A_Index%, A_Index*10 , % A_Index*20, %A_Index% ; ※
 Sleep, 2000
}

※で色々な参照方法があるけど通るってある意味すごい
723名無しさん@お腹いっぱい。:2009/04/20(月) 23:28:21 ID:M2RTDhVt0
このスレってなんですか
ウイルススレですか
724名無しさん@お腹いっぱい。:2009/04/21(火) 00:03:25 ID:dpy2yIyN0
タスクバーの右クリックで出るメニュー open をみると
履歴らしきものが出ますが、不要な場合
履歴を記録しないような設定は出来ますでしょうか。
725名無しさん@お腹いっぱい。:2009/04/21(火) 00:29:47 ID:sZR4frkX0
最前面ってのはできるけど指定ウィンドウの前面って配置させることはできません?
726名無しさん@お腹いっぱい。:2009/04/21(火) 01:14:56 ID:+3mbXAWQ0
コマンド1発じゃできないだろうけど、できると思うよ
727名無しさん@お腹いっぱい。:2009/04/22(水) 17:30:52 ID:I73rPchU0
;の後に書くコメントは日本語だとまずいですか?
英語版windowsで使えなくなるとか、何かで問題が起こるとか、
その様な不具合はありますでしょうか?
728名無しさん@お腹いっぱい。:2009/04/22(水) 17:45:26 ID:zXLOeeEn0
無問題
729名無しさん@お腹いっぱい。:2009/04/22(水) 17:46:05 ID:I73rPchU0
即レスthxです。
730名無しさん@お腹いっぱい。:2009/04/22(水) 18:34:33 ID:lbTzV7q7P
>>727
もしかすると、SetTimerコマンドを使っている場合、
コメントにダメ文字(>>3)が入ってるとまずい場合があるかも

先週くらいからコメントに「〜」とかが入っているスクリプトを作って使い始めたんだけど、
何回か、“NTMARTA.DLLは正しいイメージファイルではありません” というエラーメッセージが出て
他のアプリケーションを巻き込んで挙動がおかしくなることがあった
(ちょっと調べたところでは、全く処理が行われていない次回サブルーチン起動待ちの状態でエラーが出ている)
おとといくらいから該当部分のコメントを修正して様子見をしてるんだけど、いまのところエラーが出てないような感じ
731名無しさん@お腹いっぱい。:2009/04/22(水) 20:27:38 ID:Cv0jfypZ0
http://gaatsu.ps.land.to/up/src/up_0122.jpg


Gui, Add, Radio ,vRadioA , aaaaa
Gui, Add, Radio ,vRadioB , bbbbb
Gui, Add, Radio ,vRadioC Checked1, Manual
Gui, Add, Edit ,vEdit ,
Gui,Show


おおざっぱにこういうのつくってるんですがaaaaa、bbbbbにチェックが入ってると
Manualのテキスト入力欄がグレイアウトして、入力できないようにするには
どうすればよいのでしょうか?
732名無しさん@お腹いっぱい。:2009/04/22(水) 21:00:51 ID:R/5HKiXn0
Gui, Add, Radio ,vRadioA Gtext_usable, aaaaa
Gui, Add, Radio ,vRadioB Gtext_usable, bbbbb
Gui, Add, Radio ,vRadioC Gtext_usable Checked1, Manual
Gui, Add, Edit ,vEdit,
Gui,Show
Return

text_usable: ;ラジオボタンの操作に連動したルーチン
GUI, Submit, NoHide
If(RadioA or RadioB = 1){
GuiControl, Enable0, Edit,
}
Else if RadioC = 1
GuiControl, Enable1, Edit,
Return
733名無しさん@お腹いっぱい。:2009/04/22(水) 21:01:40 ID:zXLOeeEn0
Gui, Add, Radio ,vRadioA gEvent1, aaaaa
Gui, Add, Radio ,vRadioB gEvent1, bbbbb
Gui, Add, Radio ,vRadioC gEvent1 Checked1, Manual
Gui, Add, Edit ,vEdit ,
Gui, Show

Event1:
Gui, Submit, NoHide
GuiControl,Disable%RadioC%,Edit
Return
734名無しさん@お腹いっぱい。:2009/04/22(水) 21:13:52 ID:pLtZjKfp0
特定のプログラムだけスリープさせるのってできましたっけ?
735734:2009/04/22(水) 21:36:21 ID:pLtZjKfp0
api32 のsuspendthread を使ってやってみます
736名無しさん@お腹いっぱい。:2009/04/22(水) 22:41:47 ID:JfqAvQ+s0
選択した文字列の最初の行をファイル名.txtで保存するahk教えて君
737名無しさん@お腹いっぱい。:2009/04/22(水) 22:48:24 ID:zXLOeeEn0
以下を何らかのイベント(ホットキーが便利)をトリガとしてで処理させる
@ (クリップボードを待避)
A ^cを送る
B クリップボードが読めるのを待つ
C PARSING LOOP を使ってクリップボードを行毎に処理させる
D 1ループ目で、行内容を別変数に保存してループ終了
E ファイル出力コマンドで吐き出す
F (待避したクリップボードを戻す)

@Fはなくても良い
^cでコピー出来ない場合は別の方法を考える
738名無しさん@お腹いっぱい。:2009/04/22(水) 23:09:07 ID:JfqAvQ+s0
#c::
Send,^c
ClipWait
SetEnv,word,%clipboard%
ファイル出力

こうですか?わかりません
739名無しさん@お腹いっぱい。:2009/04/22(水) 23:55:14 ID:zXLOeeEn0
C Loop, PARSE を使う
  区切り文字は `n 。先頭・最後の Tab, 半角スペース、 `r などは除外した方がいい
  ※ クリップボード内容を他の変数に代入しないでも文字列分割ループで参照できる
D ここはCのループ内。やる事やったらすぐ Break。(1行目だけ欲しいから)
  ファイル名代入時に禁則文字を置換した方がベター
E FileAppend を使う
  出力内容は Clipboard そのもの。ファイル名はDで取得したもの。
  このコマンドは常に追記になるので、事前に IfExist て存在したとき FileDeleteしたほうが良い
  出力フォルダを変えたい・日時を入れたいとかなら、 A_MyDocuments, A_Day などの「組み込み変数」を使う
740名無しさん@お腹いっぱい。:2009/04/23(木) 00:15:01 ID:acO3R8MP0
このスレってautohotkeyの海外のwikiのように
鋭い指摘やおもしろい手順がいくつもあるよな
勉強になるわ
741名無しさん@お腹いっぱい。:2009/04/23(木) 00:16:45 ID:JNriN8sz0
>>732,733
できました。ありがとう!
742名無しさん@お腹いっぱい。:2009/04/23(木) 00:32:02 ID:K/YTztcc0
>>732
横レスですまんが
>If(RadioA or RadioB = 1){
これは
RadioA = 1 or RadioB = 1
みたいなもの?
743名無しさん@お腹いっぱい。:2009/04/23(木) 08:38:13 ID:ehgiERWq0
Radioなら1か0だから、それと等価ではある
個人的には後者のように素直に書くか、
いっそのこと if ( RadioA or RadioB ) の方が明快だと思うけどね
744名無しさん@お腹いっぱい。:2009/04/23(木) 08:39:08 ID:neftGxox0
#IfWinActive, aaa
^Numpad9::

#IfWinActive, bbb
<^Numpad9::
>^Numpad9::

↑のように#IfWinActiveのどこかで、左か右かのモディファイアキーを使用する設定にしてると
aaa がアクティブな時に Ctrl+テンキー9 を押しても機能しないのですが、
これは仕様なのでしょうか?

念のためにAutoHotkey.iniをクリアして↑のホットキーだけで試してみたのですが、同じ結果になりました。
745名無しさん@お腹いっぱい。:2009/04/23(木) 17:01:08 ID:7IN0MA170
Ver104802 で試してみたけど、(今のところ?)修飾キーに < > を利用すると
< > 無しの同一ホットキーが効かなくなるみたいやね。
これは同一スクリプト内だけの問題で、スクリプトを別にすると効くみたい。

スクリプト内で < > を利用する場合、左右の区別が不必要でも
< > を記述して対応するのが簡単かも。

#IfWinActive, aaa
<^Numpad9::
>^Numpad9::
send, a
return

#IfWinActive, bbb
<^Numpad9::send, b
>^Numpad9::send, c
746名無しさん@お腹いっぱい。:2009/04/23(木) 19:44:43 ID:Z06C8ITC0
GUI, Add, Text,, %clipboard%
GUI, Show

初歩的な質問で申し訳ありませんがクリップボードの内容が変更したら
表示も同時に変わるようにするにはどうすればよいのでしょうか?
Redrawオプションの使い方がいまいちわかりません・・・。
747名無しさん@お腹いっぱい。:2009/04/23(木) 19:45:36 ID:IDkO4Joj0
OnClipboardChange
748736:2009/04/23(木) 19:55:54 ID:sSOdcq6M0
>>739
親切にありがとう

#c::
Send,^c
ClipWait
StringSplit, name, clipboard, `,.`n%A_Tab%, %A_Space%
FileAppend,%clipboard%,D:\memo\%name1%.txt

こんな感じで行き詰っています。
ファイル名取得できまへんがな
749名無しさん@お腹いっぱい。:2009/04/23(木) 20:30:30 ID:Z06C8ITC0
>>747
ありがとう
でも再描画の仕方がわからない・・・。
750名無しさん@お腹いっぱい。:2009/04/23(木) 22:24:24 ID:Baw+u3zK0
>>748 でもそれなりに動くけどな。
区切り文字がカンマ(,)またはピリオド(.)またはタブで、前後の空白除去、って動作だけど
思った通りなんだろうか。

テストした文字列の1行目に禁則文字「 \ / : * ? " < > | 」が入ってて
FileAppendでエラーになっているんじゃないかと予想。
完成するまではMsgBoxとかで変数内容確認すると良いよ。

あとエラーかどうかは、ErrorLevel調べれば分かる。
文字列置換(StringReplace か RegExReplace)で引っかからない文字にすればいい。

>>749
GuiControl コマンド
751名無しさん@お腹いっぱい。:2009/04/23(木) 22:45:13 ID:neftGxox0
>>745
レスありがとうございます。
やっぱり仕様なのかなあ・・・
752名無しさん@お腹いっぱい。:2009/04/24(金) 00:13:08 ID:4ogwzjQN0
GUI, Add, Text,Vaaa, %clipboard%
GUI, Show
return
OnClipboardChange:
GuiControl, MoveDraw, aaa,
return
GuiClose:
Exitapp

わからん・・・。
753名無しさん@お腹いっぱい。:2009/04/24(金) 00:14:45 ID:+WwSzOjf0
>>647
誰かそれを作った人はいませんでしょうか?
754736:2009/04/24(金) 00:27:01 ID:umX25vaH0
>>750 thx
> テストした文字列の1行目に禁則文字「 \ / : * ? " < > | 」が入ってて
それでしたw

あとひとつだけ、
StringReplace, fname, name1, %A_Tab% \ / : * ? " < > | ,, ALL
複数の検索文字列はどう書けばいいんでしょうか?
755名無しさん@お腹いっぱい。:2009/04/24(金) 01:14:10 ID:4Tp5poaX0
>>754
以下から好きな(もしくは自分で改造できる)方法で
(どれも禁則文字をアンダースコアに変換する)

@ StringReplaceを指定文字の回数頑張る
StringReplace, FileName, FileName, \, _
StringReplace, FileName, FileName, /, _
 :

A @を単純化するために検索文字リストを作成してループで回す
NG = \/:*?"<>|
Loop, PARSE, NG
  StringReplace, FileName, FileName, %A_LoopField%, _

B 正規表現でやる
FileName := RegExReplace(FileName, "[\\\/\|\?\*:<>""\t]", "_", "", -1)

※ \(0x5c)に関しては誤爆がありうるので注意(BREGEXPなどを使えば回避できるが・・・)
756名無しさん@お腹いっぱい。:2009/04/24(金) 09:01:46 ID:iP7K7SB40
ラジオボタン
途中で別のコントロールを追加すると、次からは新しいグループになる。

同じグループにすることってできないだろうか・・・。
757名無しさん@お腹いっぱい。:2009/04/24(金) 11:18:44 ID:BW5MCYnb0
今気づいたけど

組み込み関数の引数にコマンドライン引数を指定する事って出来ないんだな
a = %1%
とか一々しないといけないのは面倒
758名無しさん@お腹いっぱい。:2009/04/24(金) 20:36:29 ID:umX25vaH0
>>755thx
#c::
Send,^c
ClipWait
StringSplit, name, clipboard, `r, %A_Space% %A_Tab%
fname := RegExReplace(name1, "[\/\|\?\*:<>""\t]", "_", "", -1)
FileAppend, %clipboard%, D:\memo\%fname%.txt
MsgBox,64,,%fname%.txt`rを保存しました。,2
return

ばっちりです!
759名無しさん@お腹いっぱい。:2009/04/24(金) 22:41:32 ID:4Tp5poaX0
おめ。

#cを連打してみると不具合が出るよ(ファイル内容を確認すれば分かる)
そのときは >>739のE

760名無しさん@お腹いっぱい。:2009/04/25(土) 13:20:37 ID:RzJzru2Y0
NoCloseでクローズボタンの無効化をしたいのですが、
ウィンドウ生成とともに無効化されるようになりません。
ショートカットキーによる無効/有効のトグルはできるのですが、
Rulesに ahk_class Notepad と書いた状態で notepad を起動しても、
新規ウィンドウのクローズボタンは有効のままです。
Disable close buttons on Window Creation
のチェックボックスはチェックしています。
なぜRulesの記述が有効にならないのか
わかる方がいましたらご助言お願いします。
761名無しさん@お腹いっぱい。:2009/04/25(土) 15:24:35 ID:LVJjcW7S0
XPのExplorerで、ファイルをドラッグアンドドロップしはじめると、
マウスカーソルが禁止マークになって、
掴んだファイルが半透明で表示されます。

このとき、マウスの左ボタンから手を離す前に
掴み中であることを識別して別の処理をしたいのですが、
掴んでるファイル名を取得する方法はないでしょうか。
762名無しさん@お腹いっぱい。:2009/04/25(土) 16:54:54 ID:KzAWR4DV0
たまたま似たようなの作ってた。

; Button Up直前にGUIを置いてファイルを取得する
Gui, -Caption -ToolWindow +AlwaysOnTop
Gui, Show, w3 h3 Hide

pattern := "ExplorerWClass|CabinetWClass"

LButton::
 Send, {LButton Down}
 KeyWait, LButton
 IfWinExist, ahk_class SysDragImage
 {
  CoordMode, Mouse, Screen
  MouseGetPos, x, y, hwnd, classNN
  WinGetClass, class, ahk_id %hwnd%
  If RegExMatch(class, pattern)
   Gui, Show, % "NA x" (x-1) " y" (y-1)
 }
 Send, {LButton Up}
 Gui, Hide
 return

GuiDropFiles:
 MsgBox, %A_GuiEvent%
 return
763名無しさん@お腹いっぱい。:2009/04/25(土) 17:08:39 ID:Y2iaPllI0
おーありがとうございます!
自スクリプトに組み込んで活用させていただきます。
764名無しさん@お腹いっぱい。:2009/04/25(土) 23:47:43 ID:Aak6Bmgi0
だれか、ahk の日本語解説本、書いて下さい。
英語は細かいところがわからなくて困る。
765名無しさん@お腹いっぱい。:2009/04/26(日) 00:14:17 ID:RsidKdjm0
>1
766名無しさん@お腹いっぱい。:2009/04/26(日) 00:42:15 ID:XR0J5Yoc0
これだな。2007/09/05だから少々古い。
ttp://www.flib.jp/D800/book854.html
767名無しさん@お腹いっぱい。:2009/04/26(日) 15:13:57 ID:AJINZZJZ0
exeからahk取り出せませんか?
768名無しさん@お腹いっぱい。:2009/04/26(日) 15:20:55 ID:7UkZFFcM0
>>767
できます。パスワードなければ
769名無しさん@お腹いっぱい。:2009/04/26(日) 15:29:58 ID:AJINZZJZ0
パスはつけてないんですがどうやってソース取り出すか教えてください
770名無しさん@お腹いっぱい。:2009/04/26(日) 15:33:35 ID:E78MgH1L0
exe2ahkでググレクズ
771名無しさん@お腹いっぱい。:2009/04/26(日) 15:38:55 ID:AJINZZJZ0
>>769,770
ありがとう
772名無しさん@お腹いっぱい。:2009/04/26(日) 16:30:26 ID:yHBXLU9I0
::a::autohotkey{ENTER}
の動作にツールチップ(一秒後に消える)
を着けたいのですがうまくいかず困っています。
RemoveToolTip:の部分でエラーを出されてしまいます。

a::
send ,autohotkey {enter}
ToolTip, AHK
SetTimer, RemoveToolTip, 1000
return

RemoveToolTip:
SetTimer, RemoveToolTip, Off
ToolTip
return

なにぶん最近いじり始めたばかりなので
根本的なところで間違えてるかもですが
問題点を教えてください。
よろしくお願いします。
773名無しさん@お腹いっぱい。:2009/04/26(日) 17:19:15 ID:ViVhDQ+t0
>>772
2行目のsendの後が全角スペースになってる。
あとsendで送られたのがautohotkeyじゃなくてutohotkeyになった。
a::を$a::に変えたら直った。

どんなエラーが出てたのかわからんけど、基本的にそのままで行けた。
774名無しさん@お腹いっぱい。:2009/04/26(日) 17:52:28 ID:PRYSHYE50
> SetTimer, RemoveToolTip, -1000

で1度だけの呼び出しに出来るよ
775名無しさん@お腹いっぱい。:2009/04/26(日) 21:23:21 ID:yHBXLU9I0
>>773,774
レスありがとうございます。

>>773の方法だとうまくいかないようです。
エラーは

Line Text:Removetooltip
Error:Duplicate label
The program will exit.

です。
環境が違うせいなのかな?
当方環境 AHK v1.0.48.02 OS:VistaHP32bit

>>774の方法で後半部分を削ると動きました。

::a::autohotkey{ENTER}
での動作に比べて動作速度が遅くなるのは仕方ないのでしょうか?
SendMode Inputとか入れてもあんまり効果ないようです。

776名無しさん@お腹いっぱい。:2009/04/26(日) 22:35:29 ID:PRYSHYE50
>>775
a::
Send, autohotkey {enter}
  ↓
Send, a ; ココで同サブルーチンが呼ばれてしまう。(>>5参照)
Send, u ; これ以降は普通に動作
  :
Send, {Enter}

> 動作速度が遅くなるのは仕方ないのでしょうか?
SetKeyDelay
777名無しさん@お腹いっぱい。:2009/04/26(日) 23:18:41 ID:yHBXLU9I0
>>776
レスありがとうございます。
SetKeyDelayを使用して十分な速度で動くようになったのでこれで運用してみようと思います。

>>775の時はこのスクリプトの前の他のスクリプトで既にRemoveToolTip:を使用していたため
RemoveToolTip:の部分でエラーを吐いていたようです。
WhichToolTipのあたりを勉強してきます。
778名無しさん@お腹いっぱい。:2009/04/27(月) 00:09:04 ID:+ovk7Hbu0
>>766
> これだな。2007/09/05だから少々古い。
> ttp://www.flib.jp/D800/book854.html

ありがとうございます。
しかし、専用viewer が怪しそうで、downloadしなかったので、見られませんでした。
残念
779名無しさん@お腹いっぱい。:2009/04/27(月) 11:31:05 ID:0QYIMn790
書籍の形にこだわる理由は何?
流行らせるページはなんでスルーなの?
780名無しさん@お腹いっぱい。:2009/04/27(月) 12:05:09 ID:/pHC43gt0
本の宣伝にならないからw

という冗談は置いておいて、

流行らせるページも万能じゃないし、
もうちょっと優しめに書かれた入門書が欲しいという初心者がいても不思議じゃないと思うけど
781名無しさん@お腹いっぱい。:2009/04/27(月) 12:40:58 ID:+rxhALv90
If Var1 = %Var2% と If (Var1=Var2) とか、文法にずいぶん癖があるからなあ
最初は俺も苦労した
782名無しさん@お腹いっぱい。:2009/04/27(月) 17:00:26 ID:0QYIMn790
いや、入門レベルならそれこそググればブログなどで取っかかりから説明してるとこ沢山見つかるっしょ

英語云々書いてるってことはわざわざ原点に当たってるみたいだし
むしろより高度な方向の解説を求めてるのかと思ったんだけど。
783名無しさん@お腹いっぱい。:2009/04/27(月) 19:20:25 ID:HMa7F1Xh0
>>778
てかそれ、流行らせるページの人が書いてるものでしょ
784名無しさん@お腹いっぱい。:2009/04/27(月) 21:17:12 ID:ZpVxt0r00
わかりやすい書籍があれば
どこででも読むかたちで予習復習できるじゃん
785名無しさん@お腹いっぱい。:2009/04/27(月) 22:16:23 ID:wELKguDV0
まず前金で200万振り込んでくれ
786名無しさん@お腹いっぱい。:2009/04/27(月) 23:42:24 ID:l7+SdciM0
>>781
前者はわかるが後者はなんだい?
787名無しさん@お腹いっぱい。:2009/04/28(火) 00:11:36 ID:KKp3NETS0
等価だよ
IfEqual, Var1, %Var2%
If Var1=%Var2%
If (Var1=Var2)

こういうのも通るし
count=0
Loop {
 If (count++==3)
  Break
 MsgBox, % A_Index
}
788名無しさん@お腹いっぱい。:2009/04/28(火) 01:01:30 ID:E1vvN/jt0
>>787
ありがとう
最後の例はすごいな
そういう発想はなかった
789名無しさん@お腹いっぱい。:2009/04/28(火) 08:49:47 ID:XnR93Z5I0
>>679 の := の話と似てるな
:= や if() は、式を書ける分だけ一般の高級言語に近い仕様

ahkは発展途上の過程で色々盲腸的な部分が残ってるんで分かりにくいね
790名無しさん@お腹いっぱい。:2009/04/28(火) 09:00:55 ID:tUgDcu7Y0
>>787の3つのIF、速度が違ったりするのかな
791名無しさん@お腹いっぱい。:2009/04/28(火) 11:14:37 ID:KKp3NETS0
ちょっとテストしてみた。1万回ループしてms単位の差がでてきた。
バッチ的に回すにしても他の処理の方が圧倒的に重いだろうし、気にするほどじゃない。
792名無しさん@お腹いっぱい。:2009/04/28(火) 14:00:29 ID:tUgDcu7Y0
>>791
てことは if() に統一して問題無さそうだね。ありがと。
793名無しさん@お腹いっぱい。:2009/04/28(火) 15:18:00 ID:6TUioa2p0
if()で使うけど、結局は%%つけちゃったり、""をつけ忘れたりする。
794名無しさん@お腹いっぱい。:2009/04/28(火) 17:58:54 ID:cLThndOM0
既出かもしれんが、autohotkey も、なでしこ みたいにbat偽装しても動くんだな。便利だわ。

;@echo off
;"%~dp0Autohotkey.exe" "%~0" %*
;exit
;rem Autohotkey.exeのあるフォルダに hogehoge.bat で保存。
;rem このバッチにファイルをドロップしてみる。
;rem 下記にAHKのスクリプトを記述する。
tmpLimit=%0%
Kari:=""
Loop
{
KariI:=%A_INDEX%
KariR:=chr(13)
kari=%kari%%KariI%%KariR%
if(tmpLimit=A_INDEX)
break
}
msgbox,%kari%
795名無しさん@お腹いっぱい。:2009/04/28(火) 18:10:30 ID:BorXmBFr0
>>794
できない言語を探す方が難しいと思うよ
796名無しさん@お腹いっぱい。:2009/04/28(火) 18:21:57 ID:lIOj1va90
>>794
bat偽装っていう意味がわからないんだけど、どんなシーンでなんのメリットがあるの?
797名無しさん@お腹いっぱい。:2009/04/28(火) 18:48:08 ID:cLThndOM0
>>796
Autohotkey.exeがハードディスクにインストールしてない環境や、
関連付けしてない環境でAhkスクリプトを実行したいときに便利かもしんない。
>>795
よく使ってるUWSCは拡張子をチェックしてるみたいでBatだとはねられちゃった。
なでしこも出来るわな。Dosの複数行をコメントや変数でエラーにならんように
誤魔化せて、拡張子チェックしてない場合はいけそうだ。
798名無しさん@お腹いっぱい。:2009/04/28(火) 20:02:51 ID:c0gmFX8Z0
他のアプリからパスを受け取るコマンドってないんですか?
799名無しさん@お腹いっぱい。:2009/04/28(火) 20:13:23 ID:KKp3NETS0
その他のアプリがパスをくれるなら、引数なりドラッグ&ドロップなりで煮るなり焼くなりなんなりと。
くれないならアドレスバーとかタイトルバーとかから読む。
800名無しさん@お腹いっぱい。:2009/04/28(火) 20:45:45 ID:c0gmFX8Z0
>>799
こういうのがしたいとおもって
FileAppend,
(
これは
%ぱす%
です
),D:\aaa.txt

うまくいえないので半年ろむってます
801名無しさん@お腹いっぱい。:2009/04/29(水) 19:08:35 ID:k0T7d2ZLP
%1%
802名無しさん@お腹いっぱい。:2009/04/30(木) 17:50:27 ID:kybyWs4G0
/* hogehoge.js JscriptのスクリプトからAutohotkeyのスクリプトを使うのもOKだった
;*/ //ここからは jscriptのスクリプト Autohotkey.exeの有る場所に置いて実行。
var 変数 = "豚インフルエンザでも海外旅行";WScript.Echo(変数);
var 引数空白付けて2重引用符で囲む=" "+"B"+" "+"\""+"jscriptから引数を渡す"+"\""
var 戻値 = 関数autohotkeyexeで自身のスクリプトを実行_引数空白2重引用符(引数空白付けて2重引用符で囲む);
WScript.Echo("Window Script Host = AutohotkeyからのStdOut = " + 戻値);

function 関数autohotkeyexeで自身のスクリプトを実行_引数空白2重引用符(sArg){
var objshl = new ActiveXObject("WScript.Shell");
var pAutohotkeyExe = WSH.ScriptFullName.substring(0,WSH.ScriptFullName.length - WSH.ScriptName.length)+"autohotkey.exe";
var objExec = objshl.Exec("\"" + pAutohotkeyExe + "\"" + " " + "\"" + WSH.ScriptFullName + "\"" + sArg);
do{WScript.sleep(200)}while(objExec.Status == 0);
//条件が合っている間はloop 戻値を取得
if(objExec.stdout.AtEndOfStream){var result = objExec.stderr.ReadAll();var serror = 1}
else if(objExec.stderr.AtEndOfStream){var result = objExec.stdout.ReadAll()}
return result}
;/*
*/
;/* // ここからはAutohotkey のスクリプト
Arg1=%1%
Arg2=%2%
Fun%Arg1%(Arg2)
FunA(sMes){
FileAppend,%sMes%,*
}
FunB(sMes){
Msgbox,Jscriptからもらった = %sMes%
FunA(sMes)
}
;*/
803名無しさん@お腹いっぱい。:2009/04/30(木) 18:03:27 ID:/B3Hmf7f0
でっていう
804名無しさん@お腹いっぱい。:2009/04/30(木) 19:01:28 ID:SRqHNfq20
素晴らしい中身の薄さにワロタ
805名無しさん@お腹いっぱい。:2009/04/30(木) 19:07:22 ID:kybyWs4G0
>>803
SFCminiとかDynaWrapperをインストール出来ない環境で、
jscriptからDLLを使ったり、アプリのウィンドウを制御したり、
ドロップ可能なGUIを使える程度かなw
Suppon.exeからでもDLL使えるんでいろいろできそうだけど
Autohotkey経由のほうが楽。HTAより凝ったことが出来そう。
806名無しさん@お腹いっぱい。:2009/05/02(土) 02:30:29 ID:V4O1Kqdz0
タスクバーの上からGUIを貼り付けていろいろ改造してるのですが、
現在のテーマがLunaかClassicかを判別する、ウマイ方法はないでしょうか?

現状、タスクバーの太さ(高さ)で判別していて一見うまくいってたのですが、
「タスクバーを固定する」をONにしている環境だと、LunaでもClassicでも
高さが22で同じになってしまい、判別できなくなってしまいました。
807名無しさん@お腹いっぱい。:2009/05/02(土) 02:44:30 ID:tK7xHrIL0
808名無しさん@お腹いっぱい。:2009/05/02(土) 02:57:12 ID:V4O1Kqdz0
即レス感謝!おかげさまで解決できました
809名無しさん@お腹いっぱい。:2009/05/02(土) 17:58:20 ID:8PsslnK50
WheelScroll.ahk の作者さん、ここ見ていらっしゃいますか?
マルチモニタサブモニタ側 (座標がマイナス値) でホイールが利かないようなのですが、どこを直せばいいものやら…
ヒントをいただければ幸いです。

AHK 1.0.48
Vista SP1
ロジクールのマウスドライバ SetPoint 4.60.122 を併用
810名無しさん@お腹いっぱい。:2009/05/02(土) 19:34:18 ID:ui+UUCsN0
>>809
どもです。一応座標値0,0基準での決め打ち動作などはさせていないはずなんですが
WheelRedirect()内の
CoordMode,Mouse,Screen
MouseGetPos,mx,my,hwnd,ctrl,3
で取ってるマウス座標値が怪しい気がします。これが正しくマイナス値でとれてない場合
GetScrollBarHwnd()での座標比較でこけてる可能性があります。

1.スクリプト殺したノーマルの状態で通常のホイールが効いているか
2.ToolTip,mx=%mx% my=%my% とか追加して値がマイナス値になってるかどうか
3.互換モード(WM_SCROLL)で動かした場合も動かないのか
4.管理人さんのホイールリダイレクト で正常に動くかどうか
 http://lukewarm.s101.xrea.com/myscripts/WheelRedirect.zip

あたりを調べてみてください。
ちなみにサブモニタは左と上のどちらでしょうか?


あー、もう一週間くらい風邪が治んない。頭痛すぎてモノ考えられないっす
GW前に医者行っとけば良かったわ
811名無しさん@お腹いっぱい。:2009/05/02(土) 20:52:47 ID:8PsslnK50
>>810
早速のご返信ありがとうございます。
実はマルチモニタは勤務先のマシンなので連休明けまで確認できません。
調べがつき次第、またここで報告させていただきます。
ちなみにサブモニタは左です。

風とのこと、どうぞお大事になさってください。インフルじゃありませんように。。。。
812名無しさん@お腹いっぱい。:2009/05/02(土) 21:55:34 ID:17i2D6iq0
A_EventInfo 分だけ WM_MOUSEWHEEL を Post してるけど、
wParamの上位ワードを ±120*A_EventInfo にしてもいいんじゃないかと思う
813名無しさん@お腹いっぱい。:2009/05/03(日) 15:51:12 ID:Oe3d50Fm0
vista service pack 1です
Internet Explorer 8 でimeの状態を取得したいのですがうまくいきません。
ime_funkでも同様です。どうすればいいのでしょうか。
814名無しさん@お腹いっぱい。:2009/05/04(月) 00:03:23 ID:Mzhpp4d/0
JaneDoeViewをマウスホイールでスクロール操作する際、いったんクリックして
アクティブにしないとスクロールできないため、
#IfWinActive, ahk_class TMainWnd ;jane view
~WheelUp::
~WheelDown::
MouseGetPos,,,,class
if(class = "TTreeView1") ; TTreeView2,THogeListView1,THogeTextView1も同様に
ControlFocus, TTreeView1, ahk_class TMainWnd
return
のようにしたのですが、ホイール1を2ノッチ回さないと上手くいきません。
(1ノッチでは前にフォーカスがあった方がスクロールしてしまいます)
どのように修正したらよいでしょうか?
815名無しさん@お腹いっぱい。:2009/05/04(月) 00:30:47 ID:8kIwQkAH0
>>814
キー乗っ取りをしない場合(~をつける)だとホイールメッセージをそのままマウス直下にスルーして、
かつスクリプトに記述した処理が実行されるため>>814みたいな動作になる

1) "~"を付けない処理にしてフォーカスを当ててから Send するように書き換える
2) 出来合いのモノをつかう (このスレを "Redirect" や "リダイレクト"で検索)
816名無しさん@お腹いっぱい。:2009/05/04(月) 02:33:33 ID:kaspgqgN0
>>815
1)の方で上手く出来ました。有難うございます。
817名無しさん@お腹いっぱい。:2009/05/04(月) 14:05:09 ID:iIzPKRhr0
休止モードから復帰後に自動的に実行されるラベル的なことってできますか?
復帰後ADSL回線に自動で繋ぎたいです
ちなみに休止モードへはAutohotkeyで設定しているホットキーラベルよりホットキーでやっています
818名無しさん@お腹いっぱい。:2009/05/04(月) 15:47:08 ID:eE5AaEz30
・休止モードのホットキーラベルの末尾で再接続処理をする
・googleにpingを送り、帰ってこなければ接続開始する

とか、いろいろ。
俺はpptpだが、1分おきにサーバへpingを飛ばして診断し、このように処理している
819名無しさん@お腹いっぱい。:2009/05/04(月) 16:19:13 ID:O9/2Ccyo0
>>818
そんなもん外に出さないようにいちおう自分のプロバイダの鯖にしとこうよ
1秒1回のpingパケットぐらいじゃほとんど誤差だろうけど
820819:2009/05/04(月) 16:21:43 ID:O9/2Ccyo0
× 秒
○ 分
821名無しさん@お腹いっぱい。:2009/05/04(月) 17:47:42 ID:eE5AaEz30
>>820
pptpって書いてるじゃん。サーバ=pptpの接続先に自分で設置した遠隔自社サーバ
とはいっても途中経路は経由するから、結局負荷的には同じだな。

それよりもYoutubeの動画を1本見れば、ネット的に何千倍も負荷がかかるわけだから
所詮こんなのは誤差で収まるよ。今の時代、気にする方がおかしい。
822817:2009/05/04(月) 17:58:47 ID:LBMijhqy0
すみません過去ログ漁ってたらドンピシャなレス見つけて自己解決しました
それと休止モードからの復帰のみなら以下レジストリの監視でもいけそうです(スタンバイは不可)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power\HiberIoTime
pingの結果で分岐という発想はなかったです覚えておきます

971 :名無しさん@お腹いっぱい。[sage]:2008/12/30(火) 00:54:09 ID:WVCIo7zL0
小ネタ。電源状態の変化を検知してサブルーチンを呼ぶ。
以下に列挙した変数に該当したイベントの通知があった場合、同名サブルーチンラベルを呼ぶ。
レジュームから醒めて録画したいときとかにでも。
PBT_APMBATTERLOW := 0x9 ; バッテリ電力が低下した
PBT_APMOEMEVENT := 0xB ; OEM定義のイベントが発生した
PBT_APMPOWERSTATUSCHANGE := 0xA ; パワー状態が変化した
PBT_APMQUERYSUSPEND := 0x0 ; 待機要求をする
PBT_APMQUERYSUSPENDFAILED := 0x2 ; 待機要求が拒否された
PBT_APMRESUMEAUTOMATIC := 0x12 ; システムが自動的に復帰しようとしている
PBT_APMRESUMECRITICAL := 0x6 ; 致命的な待機状態からシステムが復帰しようとしている
PBT_APMRESUMESUSPEND := 0x7 ; 待機状態から復帰しようとしている
PBT_APMSUSPEND := 0x4 ; システムが待機状態になろうとしている
OnMessage(0x218, "WM_POWERBROADCAST")
return
WM_POWERBROADCAST(wParam, lParam, msg, hwnd) {
global
static names:="PBT_APMBATTERLOW,PBT_APMOEMEVENT,PBT_APMPOWERSTATUSCHANGE,PBT_APMQUERYSUSPEND,PBT_APMQUERYSUSPENDFAILED,PBT_APMRESUMEAUTOMATIC,PBT_APMRESUMECRITICAL,PBT_APMRESUMESUSPEND,PBT_APMSUSPEND"
Loop, PARSE, names, `,
if (wParam == %A_LoopField% && IsLabel(A_LoopField))
SetTimer, %A_LoopField%, -10
return 1
}
; 例) レジューム復帰時に呼ばれるのサブルーチン
PBT_APMRESUMESUSPEND:
MsgBox,待機状態から復帰しようとしている
return
823名無しさん@お腹いっぱい。:2009/05/04(月) 18:01:58 ID:eE5AaEz30
これいいな。俺も自分のスクリプトに採用するわ。引用thx
824名無しさん@お腹いっぱい。:2009/05/04(月) 22:09:12 ID:9va0T11x0
May 3, 2009 Version 1.0.48.03 is released:
825名無しさん@お腹いっぱい。:2009/05/05(火) 17:05:01 ID:b/C7tx2M0
条件演算子を多用すると、かなり遅くならない?
スクリプトの行数を短くしようとしてif文を片っ端から変えていったら
パフォーマンスが落ちまくったorz
826名無しさん@お腹いっぱい。:2009/05/05(火) 17:54:19 ID:xWCg3uyb0
条件式の書き方にもよるんじゃね

短絡評価はやってるみたいなんで、それを意識して書けばある程度は改善するかも
x:=(0=1) and fnc(x)
fnc(x) {
Msgbox,fnc ; 表示されない
return x
}
827名無しさん@お腹いっぱい。:2009/05/05(火) 21:19:32 ID:UVu5dW2s0
体感できるほど速度って遅くなる?
俺は体感出来る差は感じた事無いなぁ。
828名無しさん@お腹いっぱい。:2009/05/05(火) 22:17:16 ID:3asFYRHg0
>>824の件だが
>Fixed key-up hotkeys so that if one is created while its key is being held down, the release of the key doesn't trigger the wrong hotkey.

どういうこと?いまいちわからない
829名無しさん@お腹いっぱい。:2009/05/05(火) 22:57:00 ID:Yb6H8cW00
>>826
短絡評価と入れ子ではどちらの方が速く処理してくれるんだろう
AutoHotkeyのマニュアルを以前ざっと読んだけど
これに関する記述は見あたらなかった気がする
830名無しさん@お腹いっぱい。:2009/05/06(水) 00:20:49 ID:MGVrqRXGP
831名無しさん@お腹いっぱい。:2009/05/06(水) 00:22:43 ID:ZuWvNHPP0
>>830
おお、それで間違いなさそうだな
ありがとう
832名無しさん@お腹いっぱい。:2009/05/06(水) 08:13:32 ID:jJHo2cRW0
;; goo辞書で検索
#j::
clipboard = ; Empty the clipboard
Send, ^c
ClipWait, 0.01
if ErrorLevel <> 0
{
return
}
SetEnv,word,%clipboard%
Run, http://dictionary.goo.ne.jp/search.php?MT=%word%&kind=all
return
こうすると検索結果が文字化けしてしまうのですが、文字コードの変換はどうすればいいのでしょうか?
833名無しさん@お腹いっぱい。:2009/05/06(水) 08:36:59 ID:u/G5lLII0
該当ページはUTF-8なので、TransForm, word, Unicode でShiftJIS(CP932)だったクリップボードの文字列をUTF-8に変換する。
更にURLに入れる文字列なのでURLエンコードを行う。
組み込みのコマンドや関数にURLエンコードは無いので自分で作るか、「AHK URLエンコード」でググって拾う。
834名無しさん@お腹いっぱい。:2009/05/06(水) 09:00:39 ID:6U5J0T230
ウィンドウクラスを指定するahk_classを使うときってClassの前方一致だと認識しないんですよね?
完全一致じゃないと駄目なんですか?

835名無しさん@お腹いっぱい。:2009/05/06(水) 09:34:42 ID:u/G5lLII0
つ SetTitleMatchMode
836名無しさん@お腹いっぱい。:2009/05/06(水) 09:36:55 ID:jJHo2cRW0
>>833
こんな感じでnkf32.dllを使ってみたのですが、やはり文字化けします。どこが不味いのでしょうか?
;; goo辞書で検索
#j::
clipboard = ; Empty the clipboard
Send, ^c
ClipWait, 0.01
if ErrorLevel <> 0
{
return
}
SetEnv,word,%clipboard%
; nkf32.dll をロード
hModule := DllCall("LoadLibrary", Str, "C:\applications\AutoHotkey\nkf32.dll")
DllCall("nkf32.dll\SetNkfOption", "Str", "-w")
DllCall("nkf32.dll\NkfConvert", "Str", word, "Str", word)
; 開放
DllCall("FreeLibrary", UInt, hModule)
Run, http://dictionary.goo.ne.jp/search.php?MT=%word%&kind=all
return
837名無しさん@お腹いっぱい。:2009/05/06(水) 10:32:10 ID:u/G5lLII0
>>833の通りにやって分からないと言われるなら説明するけど、違うやり方で分からないと言われても困る
838名無しさん@お腹いっぱい。:2009/05/06(水) 10:48:46 ID:jJHo2cRW0
>>837
nkf32.dllがうまく動かないようだったので、ue.exeを使って以下でできました。
URLエンコードを自作は難しそうなので、とりあえずこれでいいかなと。
;; goo辞書で検索
#j::
clipboard = ; Empty the clipboard
Send, ^c
ClipWait, 0.01
if ErrorLevel <> 0
{
return
}
SetEnv,word,%clipboard%
Run, %A_ScriptDir%\ue\ue.exe /u goodict %word%
return
839名無しさん@お腹いっぱい。:2009/05/06(水) 10:55:15 ID:+qSdGRrp0
ブックマークレットみたいにしてブラウザに渡す手もあるよね

javascript:(function(){location.href=encodeURI('http://dictionary.goo.ne.jp/search.php?MT=%word%&kind=all&IE=UTF-8');})()

そのまま Run では起動できないんで、COM使うかブラウザに貼り付ける必要あるけど
840名無しさん@お腹いっぱい。:2009/05/06(水) 11:05:32 ID:6U5J0T230
>>835
ありがとうございます。
ahk_classのとき、オプションのなしで完全一致で認識していました。
SetTitleMatchModeで正規表現(、RegEX)で思ったとおりの動作が出来ました。
でも、前方一致(,1)中間一致(,2)を使ってもahk_classでは認識しなかった…
841名無しさん@お腹いっぱい。:2009/05/06(水) 11:29:05 ID:daecWy070
>>832
http://pc11.2ch.net/test/read.cgi/software/1201502896/345,774

345 :名無しさん@お腹いっぱい。[sage] :2008/03/28(金) 20:40:26 [夜] ID:lF6janXs0 (PC)
%00%01%12みたいにエンコードされたURL文字列をデコードしたいのですが、
変数に入っているURLをデコードするには、どのようにすればいいでしょうか。

AutoHotkey本家サイトで、下記のサンプルらしきものをみつけたのですが、
AutoHotkey自体にまだ慣れていない状態で。たとえば %abc% という変数に
入れたURLを変換するには、どのように書けば動いてくれますか?


uriDecode(str) {
Loop
If RegExMatch(str, "i)(?<=%)[\da-f]{1,2}", hex)
StringReplace, str, str, `%%hex%, % Chr("0x" . hex), All
Else Break
Return, str
}

http://www.autohotkey.com/forum/topic18876.html
842名無しさん@お腹いっぱい。:2009/05/06(水) 11:35:07 ID:daecWy070
>>825-827
書き方にもよると思うが
Loopで回しまくると確かに遅い気がする
843名無しさん@お腹いっぱい。:2009/05/06(水) 17:53:15 ID:ydtKaOxE0
変換キー+jkliをカーソルキー代わりに使っているですが
ノートPCだと keyswap で Caps→Ctrl にしたキーと上記の
カーソルキーを同時押ししても認識しないんです。
デスクトップPCだと問題無いですが、HP,SonyのノートPCでは
認識しません。key history を見ると Ctrl と変換キーは
認識されているが jkli キーが認識していない様子。
こういうのは、PC固有の問題なんですかね?
844名無しさん@お腹いっぱい。:2009/05/06(水) 18:30:54 ID:HrngG/I10
質問させてください。
Chromium(Chromeの開発版)にCtrl+Sで F5を送りたいのですが、うまくいきません。
以下のように書いても、F5が送られません。

; Ctrl+S to F5 for web browser
^s::
Send, ^s

WinGet, Chrome,, ahk_class Chrome_WidgetWin_0
ControlSend,, {F5}, ahk_id %Chrome%
return

 WinGet, Chrome,, ahk_class Chrome_WidgetWin_0

 WinGet, Chrome,, -\ Chromium ahk_class Chrome_WidgetWin_0

にすると無事に動くのですが、なるだけ ahk_class のみの指定でいきたいのです…。
845名無しさん@お腹いっぱい。:2009/05/06(水) 18:32:13 ID:HrngG/I10
>>843
キーボードの同時押しはハードウェア固有の問題です。
安いキーボードは特に同時押しができないです…。
(ゲーム用のキーボードなんかは同時押しの多さを売にしたりする)
ノートだと確認する方法がなかなかないからなあ、その辺は。
846名無しさん@お腹いっぱい。:2009/05/06(水) 18:32:51 ID:u/G5lLII0
>>843
そう
ttp://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89_(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF)#.E5.90.8C.E6.99.82.E6.8A.BC.E3.81.97.E3.83.BB.E3.83.AD.E3.83.BC.E3.83.AB.E3.82.AA.E3.83.BC.E3.83.90.E3.83.BC
(↑括弧以降もURL)
847名無しさん@お腹いっぱい。:2009/05/06(水) 18:37:41 ID:5OhsNH6f0
emacsでC-A-@とかやると
キーボードによっては効かなくて困ることがある。
848名無しさん@お腹いっぱい。:2009/05/06(水) 18:57:33 ID:t5XKzn3J0
自分用の関数定義するときに%A_ScriptDir%\Lib\main.ahkに定義してインクルードせずに
"main_関数名"っていう定義と呼出ししてたんだけどmain_つけるのがめんどくさくてやめた

Libフォルダに入れてインクルードせずに呼出しってインクルードしなくていいこと以外メリットなにかあるの?
849名無しさん@お腹いっぱい。:2009/05/06(水) 19:15:21 ID:EEXo0poT0
Aキーを1秒以下押すと、キー1入力
Aキーを1行以上押すと、キー2入力
ってどうすればいいですか?

1秒後に判定して、キー1が入力されるときも1秒後で構わないです。

850名無しさん@お腹いっぱい。:2009/05/06(水) 19:19:02 ID:u/G5lLII0
a::
KeyWait, a
If A_TimeSinceThisHotkey<1000
Send, 1
Else
Send, 2
Return
851名無しさん@お腹いっぱい。:2009/05/06(水) 20:03:01 ID:EEXo0poT0
>>850
ありがとうございました。助かりました。
852名無しさん@お腹いっぱい。:2009/05/06(水) 20:48:54 ID:EEXo0poT0
>>850は成功したのですが、
a::
KeyWait, a
If A_TimeSinceThisHotkey<1000
Send, a
Else
Send, b
Return

だと失敗してしまいます。どうすれば解決するのか教えてください。
たびたびすみません。
853名無しさん@お腹いっぱい。:2009/05/06(水) 21:18:59 ID:u/G5lLII0
>>5
854843:2009/05/06(水) 21:52:42 ID:ydtKaOxE0
>>845,846
ありがとさんです。
やっぱりハードウェア固有の問題なのか orz
CapsLock キー(ScancodeMap で Ctrl キーに変更)以外のキーでの
コンビネーションは効いているから、CapsLock キーの扱いが
特別なのかもしれませんね。
855名無しさん@お腹いっぱい。:2009/05/06(水) 22:13:26 ID:EEXo0poT0
>>853
すみませんでした。あまりに初心者すぎる質問に答えていただいて・・・
856名無しさん@お腹いっぱい。:2009/05/07(木) 02:31:20 ID:lmbQj/FN0
ファイル名を引数にして、そのファイルのアイコンを表示させる方法ってありませんかね?
Gui, Add, Picture, , hoge.exe のような感じで、txt ファイルなどのアイコンを表示させたいんです
857名無しさん@お腹いっぱい。:2009/05/07(木) 03:25:40 ID:bL+UR/sD0
すみません。ちょっと教えてください。

Dropboxというソフトを左Altキーで終了,起動させたいと思い
次のように書きましたが,全く動作しません。

LALT::
Process, Exist, Dropbox.exe
if (ErrorLevel<>0) {
Process, Close, Dropbox.exe
}
else
{
Run C:\Program Files\Dropbox\Dropbox.exe
}

ちなみにDropboxは常駐ソフトでタスクトレイにいます。
858名無しさん@お腹いっぱい。:2009/05/07(木) 03:30:44 ID:u/KSRBNc0
よくわかんないが、
if ErrorLevel!=0
{

でどうだ
859名無しさん@お腹いっぱい。:2009/05/07(木) 03:40:26 ID:bL+UR/sD0
>>858
ダメでした。

860名無しさん@お腹いっぱい。:2009/05/07(木) 03:58:14 ID:/JBwA6Yl0
>>859
どこが動かないの?
CloseかRunか、あと最後にReturn書かないとその後に続いていくよ。
MsgBox, %ErrorLevel%とかでひとつひとつ確かめていかないと。
861名無しさん@お腹いっぱい。:2009/05/07(木) 04:00:21 ID:u/KSRBNc0
ダメといってもいろいろ理由がある。

ホットキーが効いてるかどうかとか、
プロセスが死んだことを確認するとか、
殺すプロセスを認識できているのかとか、
間にmsgboxを挟んで、どこでつまずいてるかを切り分けすることだな
862名無しさん@お腹いっぱい。:2009/05/07(木) 04:15:50 ID:MWuxstwh0
>>856
レジストリからアイコン情報を読む。
RegReadを何回かやる必要があるし、EnvGet で環境変数展開したりするんで結構面倒
863名無しさん@お腹いっぱい。:2009/05/07(木) 06:45:26 ID:lmbQj/FN0
>>862
うっ、意外に難しいんですね…。諦め半分でがんばってみます。
ありがとうございました
864名無しさん@お腹いっぱい。:2009/05/07(木) 07:31:41 ID:UwvgoZvq0
>>857
そのままコピペしてやってみたけど動いたよ。
ただし終了時にタスクトレイにアイコンは残っちゃう

Dropbox自体が割と不安定な野郎だから、
普通に終了出来ない状態になってたりしない?
865名無しさん@お腹いっぱい。:2009/05/07(木) 11:01:48 ID:lC5mltiM0
Processで殺すと大体アイコンは残るよね。強制終了は精神衛生的にも、あまりよくない。
WinCloseじゃないと。
866名無しさん@お腹いっぱい。:2009/05/07(木) 11:19:52 ID:TrAT5jz80
>>844 は、正規表現マッチさせてたからみたいでした。
↓これです
SetTitleMatchMode, RegEx

タイトル文字列は大概マッチするように、. にしたら無事に通りました
WinGet, Chrome,, . ahk_class Chrome_WidgetWin_0
867857:2009/05/07(木) 12:20:17 ID:bL+UR/sD0
つまらない質問におつきあいいただいてすみませんでした。
ご意見を参考にこのようにしたら動きました。

DetectHiddenWindows, On
IfWinExist, ahk_class DropboxTrayIcon
{
WinClose,ahk_class DropboxTrayIcon
Run C:\Program Files\Dropbox\Dropbox.exe
return
}

ありがとうございます。
868名無しさん@お腹いっぱい。:2009/05/07(木) 12:47:10 ID:Zp7sW+ST0
プロセス殺してアイコン残っても、その上をマウスでなぞれば
画面書き換えされて消えるから、そんなもんだと思っていままで全然気にしたことなかった。
そんなに問題ある方法だったのか・・・知らんかった。
869名無しさん@お腹いっぱい。:2009/05/07(木) 12:50:51 ID:KHS56kIw0
>>856
FileName = %A_ScriptFullPath% ; 対象ファイル

Gui, Add, Text,, Icon of %FileName%
Gui, Add, Text, w70 h70 Border 0x203 hwndIcon1 ; アイコンを表示するコントロール
Gui Show, w400 h150, Icon Test

; アイコンを取得
hIcon := DllCall("Shell32\ExtractAssociatedIconA", UInt, 0, Str, FileName, UShortP, iIndex)
; アイコンをコントロールにセット
SendMessage, ( STM_SETIMAGE:=0x172 ), ( IMAGE_ICON:=0x1 ), hIcon,, ahk_id %Icon1%
DllCall("DestroyIcon","uint",hIcon)
870名無しさん@お腹いっぱい。:2009/05/07(木) 13:00:25 ID:YARqdttg0
>>868
ケースバイケースだが、一見動いているように見えても、後で不具合が出る場合がある。
というのも、プログラムの終了操作の時に設定データを一括書き込みするソフトは多いから。
そんな場合にプロセス殺して終了させると、設定が反映されないなどの不具合が出る。

だれかに出張仕事を頼んで、出先で仕事が終わって「用なし」になった瞬間、惨殺される感じ。
報告すべき新たな課題がなければ問題ないが、課題があったら派遣元はわからなくなる。
871名無しさん@お腹いっぱい。:2009/05/07(木) 13:57:12 ID:lC5mltiM0
がっつり設定して、快適に使ってたら固まってタスクマネージャで強制終了→涙目。
ってことがあるからね。あるある。
872名無しさん@お腹いっぱい。:2009/05/07(木) 16:23:38 ID:6nTfWEdN0
フルスクリーンであるのか?ないのか?を調べる方法ってありますか?
873名無しさん@お腹いっぱい。:2009/05/07(木) 16:55:33 ID:bQ9S0B5s0
アッー
>>868と同じ考え方してたので>>867を参考にさせてもらった。
タスクトレイのhoge1、hoge2をWin+Qで終了するようにしたのだが、こんな感じでいいのかね?
ちゃんと終了はしているのだがahkの記述的な意味で問題ないすかね?

#q::
DetectHiddenWindows, On
IfWinExist, ahk_class hoge1
{
WinClose,ahk_class hoge1
}
IfWinExist, ahk_class hoge2
{
WinClose,ahk_class hoge2
}
Return
874名無しさん@お腹いっぱい。:2009/05/07(木) 17:32:34 ID:KHS56kIw0
>>872
割と有効なのは、AppBarメッセージでタスクバーの表示が変更されたことを検知して判別する方法らしい
ttp://www.autohotkey.com/forum/viewtopic.php?p=221120#221120
同スレッドには、ウィンドウサイズとスタイルで判断する例もあるので参考に
875名無しさん@お腹いっぱい。:2009/05/07(木) 23:12:47 ID:6nTfWEdN0
>>874
ありがとうございました。
これは複雑そうですね・・・
876名無しさん@お腹いっぱい。:2009/05/07(木) 23:19:59 ID:yOsjerPB0
マウスのクリックロックを常用しているのですが、ペンタブレットで操作するアプリケーションが
アクティブなときだけクリックロックを無効にしたいので
http://www.autohotkey.com/forum/topic39726.html を参考にして
WinGet, pn, ProcessName, A
DllCall("SystemParametersInfo", UInt, 0x101E, UInt, 0, UIntP, lock, UInt, 0)
if pn in %MatchList%
{
    if(lock = 1)
        DllCall("SystemParametersInfo", "UInt", 0x101F, "UInt", 0, "UInt", 0, UInt, 0)
}else if(lock = 0)
    DllCall("SystemParametersInfo", "UInt", 0x101F, "UInt", 0, "UInt", 1, UInt, 0)
return
これをSetTimerで回しています。
一応期待した動作はしているのですが、DllCallの使い方が良く分かっていないもので、ご指摘、
添削お願い出来ますでしょうか?
HKEY_CURRENT_USER, Control Panel\Desktop, UserPreferencesMask, の値が変化しないのも少し不安です・・・
877名無しさん@お腹いっぱい。:2009/05/08(金) 00:52:45 ID:HBkXHsMU0
>>869
ありがとうございます、できました!
テキストコントロールの枠の中にフローティングイメージを載せてる感じなんでしょうか。
DllCall や SendMessage は難しくてお手上げなのですが参考になりましたm(_ _)m
878名無しさん@お腹いっぱい。:2009/05/08(金) 17:28:17 ID:rF9ej28q0
>>869を参考にしてイAHKのメージリストに関連付けアイコンを追加してみるテスト

Gui, Add, ListView, r5 w600 Icon, Name
hImageList:=IL_Create(10,10,1),LV_SetImageList(hImageList)
Gui, Show
Loop, %A_MyDocuments%\*.*, 1
icon:=IL_Add_AssociatedIcon(hImageList, A_LoopFileFullPath),LV_Add(icon ? "Icon" icon : "", A_LoopFileName)
Return
GuiClose:
ExitApp
IL_Add_AssociatedIcon(hImageList, filePath) {
ret:=DllCall("comctl32.dll\ImageList_AddIcon", "UInt",hImageList, "UInt",DllCall("Shell32.dll\ExtractAssociatedIconA", "UInt",0, "Str",filePath, "UShortP",0))
return (ret>=0) ? ret+1 : 0
}
879名無しさん@お腹いっぱい。:2009/05/08(金) 17:50:46 ID:7pILYRR20
>>878
ListViewに追加した時点で、Extractしたアイコンは不要になるのでDestroyIconすべきかと

実は>>869は、公式や流行らせるページのListViewのサンプルコードにあるのを
抜き出して分かりやすく修正したものだったりする

フォーラムにも同様のListView簡易サンプルや、Large Iconやビットマップ表示させる例もあるのでどうぞ
ttp://www.autohotkey.com/forum/topic36424
ttp://www.autohotkey.com/forum/topic26855
880名無しさん@お腹いっぱい。:2009/05/08(金) 20:00:36 ID:rF9ej28q0
フォローthx。フォーラムは404だったけど .html 付けたら表示できた。
881名無しさん@お腹いっぱい。:2009/05/08(金) 20:28:38 ID:vhU1QEjm0
車輪の再発明だし、勉強用なら自分のブログででもやればいいと思うよ
882名無しさん@お腹いっぱい。:2009/05/08(金) 23:20:04 ID:hFfZC3310
アイコン取得は ExtractAssociatedIcon より SHGetFileInfo のほうが応用がきくイマゲ
883名無しさん@お腹いっぱい。:2009/05/08(金) 23:38:33 ID:a49jd8JM0
>>882
Win32 APIか。確かにそうかも

Win32 APIといえば IME_Func が IE7 でうまく動かない現象を
解決できるかもと思っていろいろ探した覚えがある
結局うまくいかなかったが

ちなみにアイコンネタつながりだけど
AutoHotkey_Lの最新版でメニューアイコンの使い勝手が向上していたよ
http://www.autohotkey.net/~Lexikos/AutoHotkey_L/
884名無しさん@お腹いっぱい。:2009/05/09(土) 04:37:39 ID:QqoBXsZr0
/*
ウィンドウが存在すればウィンドウIDを、存在しなければ-1を返す
(UWSCのGETIDのようなもの)
*/

ID = % Func_GetID("メモ帳","Notepad")
If ID = -1
  MsgBox, ウィンドウが無い
Else
  MsgBox, ウィンドウIDは %ID%
Return

Func_GetID(Title, Class)
  {
  SetTitleMatchMode, 2
  WinGet, id_T, , %Title%
  WinGetClass, CName, ahk_id %id_T%
  IfWinNotExist ahk_id %id_T%
    Return -1
  IfInString, CName, %Class% ;MFC等起動毎に変わるクラス名対策
    Return id_T
  Else
    Return -1
  }
885名無しさん@お腹いっぱい。:2009/05/09(土) 04:59:23 ID:QqoBXsZr0
;訂正
Func_GetID(Title, Class)
  {
  SetTitleMatchMode, 2
  WinGet, id_T, , %Title%
  IfWinNotExist ahk_id %id_T%
    Return -1
  Else
    {
    WinGetClass, CName, ahk_id %id_T%
    IfInString, CName, %Class%
      Return id_T
    Else
      Return -1
    }
  }
886名無しさん@お腹いっぱい。:2009/05/09(土) 05:34:53 ID:MNHKyNeY0
SetTitleMatchMode, WinExist()
887名無しさん@お腹いっぱい。:2009/05/09(土) 08:52:08 ID:moAl/NlG0
>>884
・ウィンドウ指定は IfWinExist メモ帳 ahk_class Notepad のように条件を併記できるので、以下の一文に集約できる
 id_T:=WinExist(Title . " ahk_class " . Class)
・汎用的な関数作るつもりなら、TitleMatchModeを変更したら元に戻すべき

たぶん>>886の言いたいことはこうだと思う

求められもしないのにコード貼りつけてる人に限って、
リファレンス読みこんでなかったり、公式フォーラムで既出だったりする罠
888名無しさん@お腹いっぱい。:2009/05/09(土) 09:11:49 ID:6Ul5swJg0
いいんじゃないの?そんなに頭硬く考えないでも・・・
新しくAutohotkeyの世界に入ってくる人もいることだし。
他の言語みたいにいくつもスレがあるなら別だが
スレすらないアプリもあるんだからさ。
ごく少人数しかレスしなくなったら自作自演で回すしかなくなる。
常連さんがそれでいいなら、自然とそういう空気になってくけど。
889名無しさん@お腹いっぱい。:2009/05/09(土) 09:12:30 ID:QqoBXsZr0
鋭いつっこみを有難うございます。

SetTitleMatchMode,2
id_T:=WinExist("メモ帳" . " ahk_class " . "Notepad")
MsgBox, % id_T
SetTitleMatchMode,1

あとahk_classの部分一致は
SetTitleMatchMode,RegEXで出来ることもわかりました。
890名無しさん@お腹いっぱい。:2009/05/09(土) 09:26:39 ID:QqoBXsZr0
>>888さんも有難うございます
AHKは構文が難解で分かりにくいですw
例えばUWSCならクラス名も最初から部分一致でやってくれるのですが。
それと変数の扱いもムズいですね
891名無しさん@お腹いっぱい。:2009/05/09(土) 09:57:23 ID:MNHKyNeY0
あまり深く考えずに「組み込み関数1発で出来るぜ」ってだけなんだけどな
ソフトウェア板だし色々な立場のレスがあっていいんじゃないかと思う。

>>889
テキスト部分は結合して記述しておk
id_T:=WinExist("メモ帳 ahk_class Notepad")
892名無しさん@お腹いっぱい。:2009/05/09(土) 12:33:16 ID:EklU/Kl70
公式フォーラムの使えるスクリプトなどの内容を
日本語解説付きで転載してほしいなあ
893名無しさん@お腹いっぱい。:2009/05/09(土) 12:46:52 ID:2Ub0nAhW0
プログラミングやったことなくてAutoHotKeyやってる
コードの書き方の統一したいけどどう統一すれば最適なのか分からない
俺が書きやすい書き方でいいことはわかってるけど出来るだけプログラミング的にメジャーな書き方で書きたい

if %temp% = true {
msgbox, true
} else {
msgbox, false
}

もしくは
if %temp% = true ()
{
msgbox, true
}
else
{
msgbox, false
}

など

関数の概要と引数と戻り値の解説コメントの位置と書き方とか
894名無しさん@お腹いっぱい。:2009/05/09(土) 13:08:07 ID:rETLQYvK0
人それぞれだし決まりもないようだが、俺は

if %temp% = true ()
 {
 msgbox, true
 }

else
 {
 msgbox, false
 }

Loop
 {
 あいうえお
 }

みたいに大括弧は必ず次の行にしている。
理由は、コピペや移動するときに、行ごと選択してヒョイっと移動できるから。
895名無しさん@お腹いっぱい。:2009/05/09(土) 14:05:18 ID:AVGZLbHZ0
autohotkeyのコーディング規則を公式のフォーラムででも
統一してくれればいいなのね
896857:2009/05/09(土) 15:07:57 ID:a2ulX55w0
SMPlayerというソフトのホイールの動作を変更したいと思います。

このように書いてみましたが,反応しません。

SetTitleMatchMode, 2
#IfWinActive, SMPlayer
WheelUp::WheelDown
WheelDown::WheelUp
#IfWinActive

こうかくと動きます。
#IfWinActive, ahk_class QWidget
WheelUp::WheelDown
WheelDown::WheelUp
#IfWinActive

ところか ahk_class QWidget は VirtualBox というソフトと同じことがわかり
こちらで意図しない動作になるために,SMPlayerのみに確実にマッチさせたいのです。

最初の書き方はどう間違ってるのでしょうか。よろしくお願いします。
897名無しさん@お腹いっぱい。:2009/05/09(土) 15:12:07 ID:yAogiI+t0
A:: Send,{B down}
A up: Send,{B up}

ってもっと簡潔に書けないの?

A:: B
は微妙に挙動が違う気が・・・
898名無しさん@お腹いっぱい。:2009/05/09(土) 15:22:29 ID:MpqBYD/X0
>>822に関連するかもしれませんが、シャットダウンやスタンバイになる瞬間、
その操作をやめさせる方法はないでしょうか。

揮発RAMDISKドライブのバックアップを忘れてシャットダウンしてしまうことがあるので、
その対策をやりたいです。

(1)スタンバイやシャットダウンを検知

(2)それを取り消す

(3)至急バックアップする

(4)あらためてAHKからシャットダウンさせる

という動作をさせたいのですが、2番目の方法がわかりません。
899名無しさん@お腹いっぱい。:2009/05/09(土) 15:29:32 ID:3Z+P44l10
>>898
shutdown コマンドライン
rundll32.exe コマンドライン
とかでググれば出るよ。
900名無しさん@お腹いっぱい。:2009/05/09(土) 15:29:55 ID:knnSiD3V0
ControlSend, , ^{Up}
を2回送りたいです。
ControlSend, , {^{Up} 2}
じゃ駄目でした。どうやって入力するんですか?
901名無しさん@お腹いっぱい。:2009/05/09(土) 15:33:31 ID:3Z+P44l10
>>900
^{a 2}じゃないかな?
902名無しさん@お腹いっぱい。:2009/05/09(土) 15:50:54 ID:13ZTU2FoO
>>896
SMPlayerはホイール上下が直感と逆の動きだから困るよな
俺は上ので問題無かった
SetTitleMatchModeがAutoExecセクションでちゃんと実行されてる?

>>898
OnExit使えばいい
終了処理に割り込んでシャットダウンを遅らせられる
30秒くらい経つとOSが応答無しと判断して強制終了するようになってたはずだから
時間掛かる処理をするときはレジストリ変更する必要があると思う
903857:2009/05/09(土) 16:18:44 ID:a2ulX55w0
>>902
ありがとうございます。
SetTitleMatchModeの位置が悪かったようです。
動きました。

マウス直下がSMPlayerのときに,このような動作をさせるにはどうしたらいいのでしょう。

#IfWinExist, .* - SMPlayer
MouseGetPos, , ,id
WinGetTitle, title, ahk_id %id%
if(RegExMatch(%title%, SMPlayer > 0){
WheelUp::WheelDown
WheelDown::WheelUp
}
#IfWinExist
904857:2009/05/09(土) 16:21:17 ID:a2ulX55w0
>>903
すみません途中で書き込まれてしまいました。

こんな感じになるのかと書いてみましたが,
こんなのを SetTimer してマウス直下を常に監視することにすればいいのでしょうか?
905名無しさん@お腹いっぱい。:2009/05/09(土) 18:20:28 ID:p5avYddz0
SMPlayerを持ってないので代わりにOperaとJaneで動作確認した

WheelUp::
WheelDown::
MouseGetPos, , , id
WinGetTitle, title, ahk_id %id%
if(RegExMatch(title, ".* - SMPlayer")){
IfWinNotActive, ahk_id %id%
WinActivate, ahk_id %id%
Send,% A_ThisHotkey="WheelUp" ? "{WheelDown}" : "{WheelUp}"
}else
Send, {%A_ThisHotkey%}
return
906名無しさん@お腹いっぱい。:2009/05/09(土) 18:32:37 ID:oarblgQ20
>>893
そういうのは「コーディング規約」といって、大概は会社やプロジェクトごとに決めるもんなんだ。
言語によっては、その言語で推奨しているものもあるだろう。

AutoHotkeyの公式にコーディング規約があれば、それにしたがうのがいいが、
ないみたいだから。
個人の範囲では好きにしたらとしか
907857:2009/05/09(土) 19:09:39 ID:a2ulX55w0
>>905
なるほど!こうすればいいんですね!
完璧な動作です。
勉強になりました。
ありがとうございます。





908名無しさん@お腹いっぱい。:2009/05/09(土) 20:35:31 ID:tYeSlDsC0
行間を読んでみる
909名無しさん@お腹いっぱい。:2009/05/09(土) 22:14:06 ID:G/mtMXXx0
あ〜このソフトって
ほんとなんでも出来て
かんげきですね!
910名無しさん@お腹いっぱい。:2009/05/09(土) 22:50:17 ID:qMNFvxic0
sc029のキーにAltをそのまま割り当てたいのですが、
sc029::alt
だけだとsc029+Tabをしたときにsc029キーを離しても
アプリ切り替えウィンドウが出たままになってしまいます。
これってなんとかなりますか?
911名無しさん@お腹いっぱい。:2009/05/10(日) 00:04:22 ID:p5avYddz0
通常(英数字や記号)キーを押すとDown、離すとUpだけど
漢字キーは押したときに vkf3sc029 と vkf4sc029 のUp/Downが入れ替わり
(vkf3sc029 が Up のとき vkf4sc029 は Down)
離したときは何もない。
これはAutoHotKeyの仕様というよりWindowsの仕様じゃないかな。

漢字キーをAltとして利用したい場合はChangekey等で変更した方が簡単だと思う。
912名無しさん@お腹いっぱい。:2009/05/10(日) 00:59:03 ID:+M4MQInL0
sc029 & Tab::alttabは?
913名無しさん@お腹いっぱい。:2009/05/10(日) 01:56:45 ID:8N8OdkOq0
XButton1 & WheelUp::
Send, ^{PgUp}
return

XButton1 & WheelDown::
Send, ^{PgDn}
return

このように設定しましたが,こうすると XButton1 のみの動作が効かなくなりました。

XButton1::
Send, {XButton1}
return

無駄と思える「XButton1 は XButton1」 を追加すると動きましたが,
こういうものなのですか?
914名無しさん@お腹いっぱい。:2009/05/10(日) 02:02:22 ID:aU3PS0xl0
915名無しさん@お腹いっぱい。:2009/05/10(日) 02:02:28 ID:m8NEzo4m0
そういうものです
916名無しさん@お腹いっぱい。:2009/05/10(日) 02:12:53 ID:8N8OdkOq0
>>914
>>915
よくわかりました。ありがとうございます。
917名無しさん@お腹いっぱい。:2009/05/10(日) 15:25:55 ID:/4DMG+aD0
>>912
ありがとうございます。
AltTabはそのままうまくいったのですが、ShiftAltTabの動作がうまく割り当てられません。
コンビネーションキーに修飾キーを追加したりはできないと流行らせるページにありましたが、
不可能なんでしょうか。
918名無しさん@お腹いっぱい。:2009/05/10(日) 16:56:21 ID:uT1x/KTA0
申し訳ありませんが、教えていただきたいことがあります。

RButton::
msgbox

例えば上記の様な右クリックをホットキーにするスクリプトを実行した場合に、
ウィンドウのフォーカスがコマンドプロンプト(cmd.exe)にあっている場合に限り、
右クリックをしてもホットキーを認識しないという現象が発生しています。

なお、フォーカスが他のウィンドウにあっている場合は右クリックを検知します。
また、詳細な条件を特定できていませんが、他のプログラムのせいで
処理が極端に重いときも稀に発生するようです。

これまでWindowsXPのデスクトップ機で問題なく動作していた右クリック検知スクリプトを
WindowsVISTAのノートPCでそのまま動作させようとしたときに初めて発生した現象で、
#InstallMouseHookで無条件マウスフックを有効にしたり、AutoHotKeyを最新版(1.0.48.03)にしても
症状が変わりませんでした。

この現象の解決法をご存知の方がおりましたら、教えて頂きたいのですがよろしいでしょうか。
919918:2009/05/10(日) 17:00:16 ID:uT1x/KTA0
追記します。

タッチパッドのドライバ関係に問題があるのではないか、とも重い、USBマウスを装着して
右クリックを試してみましたが、やはりcmd.exeにフォーカスがあっている場合は右クリックを検知しませんでした。
920名無しさん@お腹いっぱい。:2009/05/10(日) 20:39:50 ID:c2+EYwcX0
インストーラやコマンドプロンプトなど、Windows標準で、初心者があまり使いそうにない
機能のウィンドウがアクティブだと定義したホットキーが効かないことが多い気がする
921名無しさん@お腹いっぱい。:2009/05/11(月) 00:23:11 ID:hjFtXNjR0
~LButton & RButton::Send,{End}

なにが駄目?
922名無しさん@お腹いっぱい。:2009/05/13(水) 16:16:22 ID:yYuroa7q0
流行らせる管理人のところの Sendコマンド用日本語コード変換 に不具合があるんで自分で作った
正規表現ばかりなんで、ちょっと遅い。今のところ不具合は無い感じ。

SendConv(str) {
str := RegExReplace(str, "(?![\x81-\x9F\xE0-\xFC])([#!\+\^\{\}])", "{$1}", "", -1)
str := RegExReplace(str, "\r?\n", "{Enter}", "", -1)
While RegExMatch(str, "([\x81-\x9F\xE0-\xFC])([\x40-\x7E\x80-\xFC])", $)
StringReplace, str, str, %$1%%$2%, % "{ASC " (Asc($1)<<8|Asc($2)) "}"
Return str
}
923名無しさん@お腹いっぱい。:2009/05/13(水) 18:54:42 ID:orTvNdMQ0
やっと私の求めていたソフトにめぐり合えましたが、質問させてください。
LButton::send,5
と書くと、左クリックしたら「5」を押すというのはできました。
マウスのサイドボタンを押したら5を押すという風にするにはどうしたらいいのでしょうか?
XBotton1とかでやるとなぜかエラーがでます。
924名無しさん@お腹いっぱい。:2009/05/13(水) 19:11:21 ID:GJzkSRTZ0
>>923
誤字ってるからじぇね
× Xbotton1
○ Xbutton1
925名無しさん@お腹いっぱい。:2009/05/14(木) 01:37:46 ID:h5L4fwmr0
ボットン
926名無しさん@お腹いっぱい。:2009/05/14(木) 01:43:08 ID:IW+ia+As0
スクリプトがボットン便所じゃ動かんわな
927名無しさん@お腹いっぱい。:2009/05/14(木) 02:23:14 ID:h0+LiRjz0
jpgなどの画像ファイルのウインドウがアクティブなとき、
そのファイルのあるフォルダのフルパスを
取得したいんですが何か方法はありますか?
928名無しさん@お腹いっぱい。:2009/05/14(木) 02:36:08 ID:eWbpicC20
>>927
だいたい>>149,151,153,154あたりの流れと同じ
929名無しさん@お腹いっぱい。:2009/05/14(木) 08:21:30 ID:G41quYMs0
AutoHotkeyはVista対応だと思ったのですが
以下のスクリプトが、XPと挙動が違い悩んでます。
XPでは反応しても、Vistaでは一部無反応です。
例 CCleanerバージョンは同じ
原因は何なのでしょうか、ご存じの方よろしく
お願いいたします。

#NoTrayIcon
^1::WinMove, A, , 202, 147, 1365, 969
^4::ExitApp
930名無しさん@お腹いっぱい。:2009/05/14(木) 08:41:28 ID:IW+ia+As0
悩んでる割には検証の過程が一切ない件
931名無しさん@お腹いっぱい。:2009/05/16(土) 23:59:19 ID:6kP9jLFO0
マウスジェスチャー2の設定でデスクトップ左右角をジェスチャ定義に
入れたいのですが、設定タブの新規ボタン定義の値を教えて下さい。
932931:2009/05/17(日) 00:22:46 ID:JQtSsble0
自己解決。
別フォルダのrearme見落としてました。
933名無しさん@お腹いっぱい。:2009/05/17(日) 02:20:56 ID:+HuzKOM30
トラックポイント、トラックボール向けユーティリティ TrackWheel をうp。

- TrackWheel動作中にAutohotkeyのホットキーが効かないバグを修正
 (不定期に暴走してボタンが効かなくなる件も対処出来たはず)
- マウスボタン以外でもIniファイルでアサイン出来るようにした
- 非クライアント領域(閉じるボタンなど)に擬似クラスを割り当て設定で利用出来るようにした。
- リストビュー専用のスクロール方式を追加。自動判定で適応させるようにした。
- 少しでもスクロールした場合にボタン押下イベントを抑止させるオプションを追加
- 縦横何れかのみをスクロール許可するオプションを追加
 これに伴い[config]セクションの Button は廃止し Hotkey に変更
- 組み込みを大幅に単純化した。これに伴いTW_PostActionを廃止。
- 全く使わないトレイメニュー関連機能を削除した
- その他ユーティリティ機能をいくつか追加。

ttp://sites.google.com/site/agkh6mze/strage/TrackWheel_RC.zip

>>139とかは多分直ったと思う。様子見でRCにしておく。
サイトの更新してない(めんどう)。昔のやる気は凄かったんだなぁ。
934名無しさん@お腹いっぱい。:2009/05/17(日) 02:41:10 ID:TJzlVveT0
verup乙、物置のスクリプトのバグ?報告ってココでいいのかな・・・

流行らせるページのBREGEXPの改変版 RegExp.ahk
で何箇所か記述がおかしい個所がある気がする

69行目 %name% := value      が %name%_Match := value
78行目 %name%%A_Index% := var が %name%_%A_Index% := var
80行目 %name%0 := submatches が %name%_0 := submatches

じゃないと説明文の記述と矛盾するような・・・
(MyRegExp_MatchじゃなくてMyRegExpMatchでマッチするようになってしまってる)
935名無しさん@お腹いっぱい。:2009/05/17(日) 03:04:13 ID:+HuzKOM30
thx
なるほど。説明文は殆ど変えていなかった。 / のエスケープが要らないってだけ外した覚えがある。

RegExMatch(str, pattern $) と同じように、 RegExp_Match(str, pattern, opt, "$")ってやったときに、
$ にマッチした部分、$0にマッチ数、$1〜$xx に()でグループ化した部分が入るのが好きだからそう変えたんだった。
気が向いたら直そう。
936名無しさん@お腹いっぱい。:2009/05/17(日) 06:29:55 ID:lMGyrnrg0
テキストファイル内の

aa
bb
cc
dd
ee



bb
cc
ee
dd
aa

みたいに行間隔でランダムに並べ替えたいんですがわかるかたいませんか?
937名無しさん@お腹いっぱい。:2009/05/17(日) 09:14:13 ID:ICgvEY8Q0
行を配列に読み込んで、適当な回数(全体の行数のn倍?)
ランダムに選んだ二つの要素を交換する
938名無しさん@お腹いっぱい。:2009/05/17(日) 09:25:57 ID:+HuzKOM30
Sort, str, str, FRand C`n

Rand(a, b) {
  Random, r, -1,1
  return r
}
939名無しさん@お腹いっぱい。:2009/05/17(日) 19:34:33 ID:oJJ245R10
^p::SendPlay,{up}
Ctrl+pでカーソルを上に移動させることを意図して
このように書きましたが、うんともすんとも言いません。
SendPlayの書き方まちがってるんでしょうか?
940名無しさん@お腹いっぱい。:2009/05/17(日) 19:36:30 ID:oJJ245R10
ケータイに打つときのミスです。
pは半角です。
^p::SendPlay,{up}
941名無しさん@お腹いっぱい。:2009/05/18(月) 01:47:36 ID:qnaalVC10
ジョイパッドでの操作向上を目論んでこのソフトにたどり着きました。
まずはキーリマップからと思ったのですが、初手でいきなり躓いています。
パッドのボタンをリマップし、1→2、2→3、3→4、4→1としたいのですが、

Joy1::Joy2
Joy2::Joy3
Joy3::Joy4
Joy4::Joy1

上記記述ではエラーが発生、

Joy1::Send,{Joy2}
(以下略)

上記記述ではエラーは発生しないもののリマップできませんでした。
どのような記述をすれば解決できるでしょうか?
当方WinXP、AHKのバージョンは104803です。よろしくお願いします。
942名無しさん@お腹いっぱい。:2009/05/18(月) 01:54:53 ID:OTcb9adN0
>>941
Joy1を打つとJoy2を打つけど、Joy2はJoy3を打つ、
あれ?Joy3はJoy4を打つから、当然Joy4はJoy1を打つことになる。
そうだね。
943名無しさん@お腹いっぱい。:2009/05/18(月) 02:19:06 ID:mbkAt7Dk0
>>940
全て半角なら動くよ
944名無しさん@お腹いっぱい。:2009/05/18(月) 02:38:14 ID:qnaalVC10
>>942さんの助言を元に、それぞれの設定を

Joy1::
{
Hotkey,Joy2,Off
Send,{Joy2}
Hotkey,Joy2,On
}
(以下略)

としてみたんですが、やはり動きません。
なにか根本的に間違ってるんでしょうか・・・。
945名無しさん@お腹いっぱい。:2009/05/18(月) 02:48:53 ID:OTcb9adN0
>>944
#UseHook使うか$Joy1::Joy2じゃなかろうか?
やりたいのリマップでしょう。
946名無しさん@お腹いっぱい。:2009/05/18(月) 03:57:32 ID:qnaalVC10
>>945
リファレンスと格闘していたのですが、フックの概念が今ひとつ良くわかりません。
#UseHookで挟む事で、実行結果に対しては他の命令が適用されない、
と考えればいいんでしょうか?

ちなみに「$Joy1::Joy2」ではエラーが発生しました。
947名無しさん@お腹いっぱい。:2009/05/18(月) 04:24:36 ID:ONf6GktG0
どんな「エラーが発生した」のかを、もっと細かく書いてよ。
そうすれば、スレ全体にとって、役に立つ書き込みになる
948名無しさん@お腹いっぱい。:2009/05/18(月) 04:47:35 ID:qnaalVC10
>>946>>941です。
発生したエラーは以下の通りです。

「Line Text: Joy2
Error: This line does not contain a recognized action.」

エラー発生行は$Joy1::Joy2の行です。
>>941で起きていたエラーも同一で、該当箇所を{Joy2}とした場合にも発生しました。
リマップの割り当てにジョイパッドを直接指定した際に起きているみたいです。
949名無しさん@お腹いっぱい。:2009/05/18(月) 05:54:00 ID:mbkAt7Dk0
AutoHotKeyのHelpの「Remapping a Joystick to Keyboard or Mouse」に

Although a joystick button or axis can be remapped to become a key or mouse button,
it cannot be remapped to some other joystick button or axis.
That would be possible only with the help of a joystick emulator such as PPJoy.

と書かれている。
英語はよく分からんのでExcite先生によると、
ジョイスティックをキーボードのキーやマウスのボタンにリマップできるけど
ジョイスティックにリマップ出来ません。
ジョイスティックのリマップはPPJoyなどのジョイスティックエミュレーターで可能です。
みたいなことが書いてあるっぽい。
950名無しさん@お腹いっぱい。:2009/05/18(月) 06:23:16 ID:LFTn40lY0
なんと・・・ジョイスティックへのリマップはAHK単体では出来ないんですね。
PPJoyってツールをぐぐってみた感じだと、仮想ジョイスティックツールみたいだから、
ジョイスティック入力をAHKでキー入力にリマップ→リマップされたキー入力をPPJoyで仮想ジョイスティックへ
・・・って手順を踏まないといけないんですね。なんて婉曲な・・・。
951名無しさん@お腹いっぱい。:2009/05/18(月) 15:38:54 ID:h3oqqfDfP
AutoHotKeyが起動していたらkill、起動していない場合起動する
というバッチを作りたいんですが、起動した後にdos窓が残ってしまいます。
回避方法ありますか?

@echo off

taskkill /im AutoHotkey.exe

IF %ERRORLEVEL% == 0 exit

("C:\Program Files\AutoHotkey\AutoHotkey.exe" "C:\home\AutoHotKey.ahk") & exit
952名無しさん@お腹いっぱい。:2009/05/18(月) 15:59:27 ID:jTv6ytke0
ここで聞く事か?
start "%exec%" "%script%"
953名無しさん@お腹いっぱい。:2009/05/18(月) 16:05:00 ID:uRD8TmEz0
@taskkill /im AutoHotkey.exe || start C:\home\AutoHotKey.ahk

頻繁にオンオフ繰り返すなら

!F11:: ; スクリプトの有効化/無効化(デバッグ用)
  Suspend,Permit
  Suspend,Toggle
  return

!F12:: ; スクリプトの再読み込み&有効化(デバッグ用)
  Suspend,Permit
  Suspend,Off
  Reload
  return

みたいなのを仕込んでおくといいかも。
954名無しさん@お腹いっぱい。:2009/05/18(月) 16:25:59 ID:h3oqqfDfP
>>952-953
ありがとう。スレ違いだったようで失礼しました。
startでうまくいきました。
>>953
詳しくありがとう。
マクロ系のプロセスを不正とみなすゲームをプレイするとき用なので、
プロセス自体殺したかったのです。
955名無しさん@お腹いっぱい。:2009/05/18(月) 16:32:36 ID:ONf6GktG0
>>951
俺は、そういうバッチ特有の面倒くささにうんざりして、AHKで全部処理してる。

#SingleInstance FORCE
↑起動時に自分が居たら勝手に起動し直す

exitapp
↑作業中のahkを自分自身で殺す場合はexitappで一撃。
  これをホットキーで呼べばいい

それと、外部コマンドkillで、勝手なタイミングで殺すのって、プログラム的に良くないよ。
たとえばスクリプト中のiniファイル書換中に殺されると、
ファイルにヌル文字0x00が混じって、正常に読めなくなったりする。

終了コマンドがahkに実装されてるんだから、それを使った方が安全かつ楽だと思うのだが
956名無しさん@お腹いっぱい。:2009/05/18(月) 16:44:01 ID:rEFRP0CG0
                   ,イ^i   
                 ,イ::::  l            
                /::::::::   l            
               /::::::::::    {       /| 
             /::::::::    _`-、_  /:: {
            /:::::::::::   < 。\    ̄  __ l  >>951
           ./:::::::::::    r  ̄ ̄ :::::::..... <。゙yi  俺は、そういうバッチ特有の面倒くささにうんざりして
           /:::::::::::      人   :::::::::::::::. ̄、{  AHKで全部処理してるんだよボケナス
           |:::::::::::.       l __`ー-、.__,,.ノ!  !  
           |::::::::::::.        \ ..`..____' /  |   
           .l:::::::::::::.       \:::::::::::::::::::::/   /  
           ヽ::::::::::. ___    \_ ̄~^/   ,/    
             \::/`ー---‐^ヽ    ゙`='   /    
              l:::      l         /   
         _ /,--、l::::.      ノ       l      
     ,--、_ノ:: `ー'::   、ミー---‐,,l        \        
    ,/   :::         i ̄ ̄  |         \
   /:::::::.        l:::    l:::::::   l           \       
  l:::::::::::.   l:::    !::    |:::::::   l            \   
  |:::::::::l::::  l:::    |::    l:::::     l              l    
  |::::::::::l:::.   }:::   l:::::,r-----    l               l  
  ヽ::::::::l::::   ト:;;;;;;;/-/__...........  /                 |   
  /\::::`ー‐'  / l__l;;;;;;;;;;;/                   
/   `           /                       
957名無しさん@お腹いっぱい。:2009/05/18(月) 19:26:29 ID:CoGtejFT0
killにリスクがあるのは当然だが、それを理解して使う分には別に問題無いと思うがね。

そもそも常駐スクリプトで、そんなに頻繁にWriteするスクリプトはそうそう使わんだろうとか、
ホットキー即exitappなんてスレッド割り込まれて終了するんだから、
トランザクションの場合に一貫性が保証されないのはkillと一緒だろうとか…

結局のところ、どのような終了のさせ方が「楽(リーズナブルと言ってもいい)」でかつ「安全」か
ということを議論しだしたら、それは使用してるスクリプト・処理の内容や利用形態によるとしか言いようがない。
場合によってはkill一発で十分という解答もアリでしょ。
958名無しさん@お腹いっぱい。:2009/05/18(月) 21:58:55 ID:Ib7f/sVS0
終了コマンドがahkに実装されてるんだから、それを使った方が安全かつ楽だと思うのだが
\________________________________/
        ∨ 
    ビシッ  / ̄ ̄ ̄ ̄\
    / ̄\(  人____)     
  , ┤    ト|ミ/  ー◎-◎-)    
 |  \_/  ヽ    (_ _) )   
 |   __( ̄ |∴ノ  3 ノ    
 |    __)_ノ ヽ     ノ    
 ヽ___) ノ    ))   ヽ. 

 ̄ ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ク    ク   || プ  / ク   ク  || プ  /
  ス  ク ス _  | | │ //. ス ク ス _ | | │ //
  / ス   ─  | | ッ // /  ス   ─ | | ッ //
  / _____  // /          //
.  /   l⌒l l⌒l \  ))   ____
. / / ̄| ,=| |=、| ̄ヾ   / ____ヽ
/ ̄/ ̄.  ー'●ー'  ̄l ̄ |  | /, −、, -、l  ))  他人のやること放っとけよ
| ̄l ̄ ̄  __ |.    ̄l ̄.| _| -| ,=|=、 ||
|. ̄| ̄ ̄  `Y⌒l__ ̄ノ ̄ (6.   ー っ-´、}
ヽ  ヽ    人_(  ヾ    ヽ    `Y⌒l_ノ
  >〓〓〓〓〓〓-イ   /ヽ  人_(  ヽ
/   /  Θ  ヽ|  /    ̄ ̄ ̄ ヽ-イ
959名無しさん@お腹いっぱい。:2009/05/19(火) 00:04:35 ID:WJwua20t0
これで作ったexeって他の人に分からないようにできませんか?
960名無しさん@お腹いっぱい。:2009/05/19(火) 00:20:35 ID:Ia4CcVBp0
分かる人がちょっと調べればすぐ分かっちゃうけど、
「普通の人」に対してはahk2exeのオプションとスクリプト内でのトレイ回りを変えれば
ぱっと見気づかないんじゃないのかな
961名無しさん@お腹いっぱい。:2009/05/19(火) 00:23:19 ID:LrvthPll0
メニューを Send, !f して、Sendkey{down} でメニュー項目を
ひとつひとつ下げていくときに、フォーカスのあたっているメニューの項目のテキストを
取得できるんでしょうか?
"開く"とか"Open Video File"というメニューのテキスト。
WinGetText だとステータスバーのテキストは取得できるんだが、選択中のメニューは
駄目みたいだし。
962名無しさん@お腹いっぱい。:2009/05/19(火) 02:28:00 ID:cmyf+wrW0
昨日インスコして流行らせるページ読みながら、数時間掛かって出来たのはたった4行のスクリプト
だけど、これだけでもソフトの使い勝手が良くなりました。
そこで質問なんですが、ahk_classってそのソフトを入れなおしたりしない、限り変わらないって認識でいいですか?
963名無しさん@お腹いっぱい。:2009/05/19(火) 02:30:10 ID:KyLy15KQ0
>>962
同じソフトならインストールし直してもウインドウクラスは同じ
964名無しさん@お腹いっぱい。:2009/05/19(火) 02:38:23 ID:xGWd9Jcg0
数少ない例外だがOrchisは起動の度にウィンドウクラスが変わるよ
前方一致でなんとかなる範囲だけど
96567:2009/05/19(火) 14:52:54 ID:eL1Kmu0a0
>>933
乙です。
全般的になめらかになって手離しても止まらない事態が減ってていい感じです。
Scroll (ドラッグモード)のカクカクが超改善されてて(・∀・)イイ!!
DefaultS2=0
にしてみた。

デフォルト(DefaultS2=1)だとJaneのスレ表示がスクロールしまくりんぐ。
iniはJaneて書いてあるけど Style特化なんだな。
; Open Jane / Jane View
TMainWnd,THogeTextView,Scroll,Scroll
でいけた。
Viewのビュアー部分(TImageForm,TWebLoaderSheet)はどのモードでもバイパスしても無理っぽい。

その他自分設定
;Everything Search Engine (Scroll じゃだめっぽい)
EVERYTHING,EVERYTHING_LISTVIEW,Scroll2,Scroll2
966名無しさん@お腹いっぱい。:2009/05/19(火) 21:18:36 ID:Ia4CcVBp0
>>965
ドラッグをエミュレートすれば動かせた。
それぞれに以下を追加。

-- TW.ini --
*,TWebLoaderSheet,~DragL,~DragL

-- TW.ahk --
TW__DragL_X(line) {
TW__DragL(line, 0)
}
TW__DragL_Y(line) {
TW__DragL(0, line)
}
TW__DragL(lineX, lineY) {
local lParam
lParam := (TW_X+lineX*4) | (TW_Y+lineY*4)<<16
PostMessage, 0x201, 0, TW_lParam,, ahk_id %TW_HwndCtrl% ; WM_LBUTTONDOWN
PostMessage, 0x200, 1, lParam ,, ahk_id %TW_HwndCtrl% ; WM_MOUSEMOVE / 1:With LButton
PostMessage, 0x202, 0, lParam ,, ahk_id %TW_HwndCtrl% ; WM_LBUTTONUP
}
------------
Scroll(サム移動)はキビキビ動くんだけど、効かないモノが多い。
Scrool2(▼▲連打)は行数分だけ命令を投げっぱなしだから処理が遅いヤツは厳しい。
967名無しさん@お腹いっぱい。:2009/05/19(火) 22:39:34 ID:eL1Kmu0a0
>>966
d 入れてみたけどなんか不安定みたいだ
常用のViewでは全然だめだったけど、設定捨てて新規フォルダに展開するとスクロールできる
たぶんView側の設定によるんだと思うが挙動が不安定で
色々いじってるとまた動かなくなったり、動いたりする。
Viewでは素直に 左ドラッグしたほうがよさげ
968名無しさん@お腹いっぱい。:2009/05/20(水) 00:35:08 ID:aDoiyhQi0
>>963
>>964
レスありがとうございます。Orchisは使っていますが、今のところAHKと組み合わせる
予定はないので大丈夫だと思います。

969名無しさん@お腹いっぱい。:2009/05/21(木) 09:50:17 ID:yxoHoEFq0
Vista+Word2007でダイアモンドカーソルを実現しようと思い、
#IfWinActive, ahk_class OpusApp してみたのですが動作しません。
本家のフォーラムでは普通に動いているみたいです。
・IMEはMS-IME、Office IME 2007の両方を試したがダメ
・SetTitleMatchMode, 2し、Wordで試してみてもダメ
どなたか同様の環境で動いている方はいませんか?
970名無しさん@お腹いっぱい。:2009/05/21(木) 10:05:49 ID:a5l4vZKC0
>>969
本家のforumのurlは?
971名無しさん@お腹いっぱい。:2009/05/21(木) 11:22:46 ID:AMBr8Lri0
Autohotkey for Pocket PC って使えるの?
972名無しさん@お腹いっぱい。:2009/05/21(木) 13:38:47 ID:sndvWniz0
>>969
Vista環境ないけど↓なしの場合は動くの?
#IfWinActive, ahk_class OpusApp
973名無しさん@お腹いっぱい。:2009/05/21(木) 18:28:36 ID:TteVkMr50
ウィンドウが最小化されているかどうか確認する方法はありますか?
974名無しさん@お腹いっぱい。:2009/05/21(木) 18:42:40 ID:14LSGw1/0
975名無しさん@お腹いっぱい。:2009/05/21(木) 18:53:22 ID:DbREYo3z0
そろそろ次スレの時期か
976940:2009/05/21(木) 19:15:00 ID:8CYf2TA70
やっと規制が解けました…。

VistaでUACオンだと、SendPlayは動作しなくなるみたいですね。

OneNoteは一部キーがSendPlayじゃないとうまく動かないので
SendPlay使いたかったのですが…あきらめます。
ありがとうございました。
977名無しさん@お腹いっぱい。:2009/05/22(金) 11:38:42 ID:ckZQ9xar0
ちょっと質問
AHKに一時的なコマンドを覚えさせてそれを再生って感じのモノをつくったんだ。
InputBoxだして、それがアクティブの場合には
a::
+a::
!a::
^a::
#a::
+!a::
+^a::
+#a::
!^a::
!#a::
^#a::
+!^a::
+!#a::
!^#a::
+!^#a::
とか全てのキーの組み合わせがホットキーとして記述されてるスクリプトが有効になって、
SendRaw, %A_ThisHotkey%
でInputBoxにキーが送られる…ってしくみなんだが、なんかもっとスマートにできないものか。
いろいろ考えた挙句こんな無理やりな方法になってしまった。このためだけに
ホットキー1500オーバーとかになってるし…。
978名無しさん@お腹いっぱい。:2009/05/22(金) 13:20:53 ID:HKGQayrX0
>>977

Hotkeyコマンドで同じことをするスクリプト
http://www.autohotkey.com/forum/topic31257.html

キーボードフックを使う方法
http://www.autohotkey.com/forum/topic41814.html

マクロレコーダ
http://www.autohotkey.com/forum/topic23671.html
979名無しさん@お腹いっぱい。:2009/05/22(金) 16:47:42 ID:ckZQ9xar0
>>978
超サンクス。英語で難しいがちと頑張ってよんでみる!!
980名無しさん@お腹いっぱい。:2009/05/22(金) 22:17:00 ID:mimkhQn/0
ステータスバーの2つ目の区切り以降の文字を変更する事は出来ないのでしょうか?
ControlSetTextでは1つ目の区切りの文字しか変更できないみたいです
981名無しさん@お腹いっぱい。:2009/05/22(金) 22:28:21 ID:aiouJFXf0
>>971
初代[es]に入れたけどGUIとかもちゃんと動いてた
982名無しさん@お腹いっぱい。:2009/05/22(金) 23:44:30 ID:Hn0P4PVx0
分割指定をしてから、  SB_SetParts([Width1, Width2, ... Width255])
テキストをセット      SB_SetText(NewText [, PartNumber, Style])
983名無しさん@お腹いっぱい。:2009/05/23(土) 00:27:36 ID:Gh9Aou0B0
>>981
AHKのPocketPC用も軽く動くのかな?
984名無しさん@お腹いっぱい。:2009/05/23(土) 00:33:40 ID:78PWRd9v0
建てた

AutoHotkey スレッド part8
http://pc12.2ch.net/test/read.cgi/software/1243005818/
985名無しさん@お腹いっぱい。:2009/05/23(土) 00:42:14 ID:aA4IMCHP0
>>984
乙乙
986名無しさん@お腹いっぱい。:2009/05/23(土) 08:14:56 ID:0lga1Rqg0
前スレ >>977
Gui, Add, Hotkey はWindowsキーを修飾キーとして利用出来ず、
いずれはそれっぽいものを個人的に作ろうと思ってたので
前スレ >>978 氏のリンクを参考に書いてみた。


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

SetHotkeys:
Hotkey, IfWinActive, %A_ScriptName% ahk_class #32770
;リンク先のサンプルは vk?? なので入力欄ではどのキーを押したのか判別し難いので
;A-Z,0-9,F1-F12 で表示されるようにしてみただけ。他(記号やテンキー等)が必要なら要追加
keys=A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
,0,1,2,3,4,5,6,7,8,9,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12
loop, parse, keys, `,
{
Hotkey, *~%A_loopField%, AnyKey_down
Hotkey, *~%A_loopField% up, AnyKey_up
}
return
987名無しさん@お腹いっぱい。:2009/05/23(土) 08:22:15 ID:0lga1Rqg0
1000にならずとも、メンテナンス日?に980を超えているスレは
過去ログ送りになるようなので次スレに書くつもりが
間違ってこっちにレスしてしまった・・・
続きもあるので次スレに改めてレスしました。
988名無しさん@お腹いっぱい。:2009/05/24(日) 00:27:48 ID:b5q6+yVC0


What's in your pocket?


Clipboard:=""
SplitPath, A_AhkPath,,Path
Loop, %Path%\Lib\*.ahk
    ClipBoard.=A_LoopFileName "`n"
Loop, %A_MyDocuments%\AutoHotkey\Lib\*.ahk
    ClipBoard.=A_LoopFileName "`n"
















ttp://www.autohotkey.com/forum/topic32704.html
989名無しさん@お腹いっぱい。:2009/05/24(日) 09:35:16 ID:yBv3YwNu0
#EscapeCharを使ってる時に
1バイト圏のスクリプトを組み込む場合って
一々 ‘ を ' に置換しないといけないのが不便だなあ
990名無しさん@お腹いっぱい。:2009/05/24(日) 09:53:12 ID:vNDJNDPd0
#EscapeCharなんて必要なセクションでだけ使って、用が無くなったら元に戻すもんだろ
991名無しさん@お腹いっぱい。:2009/05/24(日) 11:49:24 ID:lkuQ4eum0
うめとく
992名無しさん@お腹いっぱい。:2009/05/24(日) 11:50:30 ID:lkuQ4eum0
梅煮
993名無しさん@お腹いっぱい。:2009/05/24(日) 12:36:45 ID:9d10mISN0
特殊な自分用設定に慣れると、他人の成果物を流用しにくくなる、まさに諸刃の剣
994名無しさん@お腹いっぱい。:2009/05/24(日) 12:41:20 ID:h0rZeR9o0
>>988
ACC.ahk,ahk,Control.ahk,Anchor.ahk,Array.ahk,Array_Test.ahk,
BalloonTip.ahk,Cdll.ahk,Cdll_Test.ahk,cGUI.ahk,Char.ahk,
Class.ahk,CmnDlg.ahk,CoHelper.ahk,Coin.ahk,CoinPurse.ahk,
COM.ahk,Control_AniGif.ahk,cRichEdit.ahk,d.ahk,Dictionary.ahk,
Dime.ahk,Double.ahk,DoubleKey.ahk,execute.ahk,Float.ahk,Functions.ahk,
Gdip.ahk,GL.ahk,IE.ahk,IEControl.ahk,Int.ahk,Int64.ahk,List.ahk,ListIncludes.ahk,
mb_snd.ahk,MI.ahk,Nickel.ahk,Node.ahk,Rectangle.ahk,Rectangle_Test.ahk,
RemoteBuf.ahk,RunDebugView.ahk,SDictionary.ahk,SetConstants.ahk,Short.ahk,
SString.ahk,String.ahk,TB.ahk,tooltipV2.ahk,UChar.ahk,UInt.ahk,UInt64.ahk,
UShort.ahk,Vector.ahk,WINDERS.ahk,WinTraymin.ahk,WM_NCHITTEST.ahk,xpath.ahk

; 行数多くて加工しないと書けなかた
995名無しさん@お腹いっぱい。:2009/05/24(日) 12:49:18 ID:ERJmg4L+0
を、AHKでOOPやってるのか。
996名無しさん@お腹いっぱい。:2009/05/24(日) 13:35:58 ID:xMsj74830
>>994
すごい量だな、それ全部関数ライブラリとしての利用前提なんだ?
997名無しさん@お腹いっぱい。:2009/05/24(日) 13:37:16 ID:fs28sG8t0
>>994
xpath.ahkとかそんなのもあるんかよw
998名無しさん@お腹いっぱい。:2009/05/24(日) 13:51:46 ID:yBv3YwNu0
>>994
zipで
999名無しさん@お腹いっぱい。:2009/05/24(日) 13:56:05 ID:h0rZeR9o0
梅前提で書いてたから反応があるとは思わなかった…
>>994 の大半は
Class Library - Class functions
ttp://www.autohotkey.net/~animeaime/ClassLibrary/docs/Class/
のものどす。
xpath は
ttp://www.autohotkey.com/forum/topic17549.html

今はほとんど分からない状態で色々実験中どす。
1000名無しさん@お腹いっぱい。:2009/05/24(日) 14:29:38 ID:h0rZeR9o0
1000ゲト?

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

Class library (OOP) - Help Thread:
ttp://www.autohotkey.com/forum/topic42244.html
Class library (OOP) - Wish list / Bug reports thread:
ttp://www.autohotkey.com/forum/topic40293.html

; >>994,999,1000のネタ元は某所の裏からっす。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。