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


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

AutoHotkey スレッド part8



1 名前:名無しさん@お腹いっぱい。 [2009/05/23(土) 00:23:38 ID:78PWRd9v0]
■公式
www.autohotkey.com/

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

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

■派生版
AutoHotkey_L
www.autohotkey.net/~Lexikos/AutoHotkey_L/

駄目文字微対策版
yak.myhome.cx/junks/#ahk.cp932

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


331 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/30(火) 11:22:41 ID:ZWlKlVyy0]
SHIFT+カーソルの範囲選択を
SHIFT+無変換+IJKLでやる書き方って出来る?
三つのコンビネーションって指定できないっぽいんだけど

332 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/30(火) 11:45:52 ID:z7lSMuFpP]
通常のカーソル移動も兼ねて良いのなら
~SC7B & i:: Send, {Blind}{Up}
~SC7B & j:: Send, {Blind}{Left}
~SC7B & k:: Send, {Blind}{Down}
~SC7B & l:: Send, {Blind}{Right}

333 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/30(火) 16:39:04 ID:gVhvA3S20]
今更ながら>>63>>76-77を試したんですが、これすごい良いですね。
自分は単なるリマップとマクロにしか使ってなかったので、こんな事も
出来るのかと驚きました。

334 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/30(火) 21:34:48 ID:WurnbeTc0]
>>332
うまくいった。ありがとう。

キーボード眺めてたら変換キーが丸々あいてるんだよな。
JKでタスク切り替え、残りのA-Zをランチャなんかに割り当てたら
めちゃくちゃ便利そうな気がしてきた。

335 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/30(火) 23:43:51 ID:hpTcuIjN0]
ひらがなキーを押したときの動作を key stroke and script info で見てみたら
ひらがなキーがなぜか押上されることが解りました
この不具合?を解消するにはどうすればいいのでしょうか


336 名前:名無しさん@お腹いっぱい。 [2009/07/01(水) 02:28:14 ID:JH7gYY9R0]
 ∧∧∧∧∧∧∧∧∧∧      ___/ ̄ ̄ ̄\
< ┌┐  ┌───┐ >   /  / / ̄ ̄ ̄ ̄\
< ││  │┌─┐│ >  /    ̄          \
< ││  └┘ //  >/    □            \
< ││    //    >// ̄~\ / ̄ ̄ ̄\      |
< ││     ̄     >|//\ヽ ∨〃/\   \   /\
< ││       _  >//(・) \ゞ/ /(・)  〉   |  | ∩|
< ││     //  >| \_/ノ  \_/ ノ し|:   | ∪|
< ││    / |   >l:::::::::∠~         ⌒ |   \/
< ││   //||   >|:::::::::r〜〜‐、ヽ      /   /
< ││   ̄  ||   >|:::::::::)jjjjjjjjjjjヽヽ   /   /
<   ̄       ̄    >|:::::::::|,,    || /   /
<.  ロロ┌┐┌┐┌┐  >!:::: ヽiiiiiiiii//  /   /
<   ┌┘│││││  >ヽ  ヽ〜〜"/   /
<     ̄ ̄ └┘││  > ヽ、__,,,_∠__/
< ┌┐┌┐    ││  >  _]:::::::   [_
< ││││   //   > ̄~        ゙ ̄ ̄ ̄ ̄ヽ
< ││││    ̄    >               ,〜ヽ
< └┘└┘        >             〜 ノ ̄\
<   []  []         >           ’ノ⌒⌒⌒⌒〉〉
 ∨∨∨∨∨∨∨∨∨∨∨            {       Y∫

337 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/01(水) 11:19:06 ID:qaOF2plA0]
2バイトコードの処理方法で質問です。
TV録画用途のPCで、テレビ番組名をINIファイルのセクションに割り当てて、
いろいろ自動処理しています。

INIコマンドで、セクションに使ってはいけない文字(たとえば括弧「[」「]」)
が入ると、INI自体は書けるものの、同一のセクションに書いてくれなかったり、
セクションを正しく読めないなどの不具合が出ます。
とりあえず、使ってはいけない特定の文字をアンダーバーに置換してみました。

name := RegExReplace(name,"(\.|\*|\?|\+|\[|\]|\{|\}|\||\(|\)|\^|^$|\\)","_")

成功
 前 [道徳ドキュメント[再]]
 後 [道徳ドキュメント_再_]

失敗1
 前 [スパイスTVどーも・キニナル!]
 後 [スパイスTVど\も・キニナル!]

失敗2
 前 [暴れん坊将軍[再]]
 後 [棒れん坊将軍_再_]

これって2バイトコードが1バイトずつ処理されてるのが原因っぽいですね。
2バイトコード部分に混入する文字は無視し、1バイト部分だけ置換したいのですが、
なにかうまい回避策はないでしょうか。

338 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/01(水) 11:49:08 ID:qJNMhI6B0]
>>337
マルチバイトの1バイト目の文字コードは 0x80〜0x9F 0xE0〜0xFC の範囲のはずなので
(?<=^|[^\x80-\x9F\xE0-\xFC])
で弾けると思う

>>335
OSやAHKのバージョンも書かずにそんなこと言われても答えられるやつはいないだろ。
マジレスするとKeyHistory まわりの問題は環境依存の可能性が高い。
(OS側が返してくる値自体が問題なのでAHK側でどうにかするのはたぶん無理)
現実的な解決策としてはキーボード変えるとかしかないと思われ

339 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/01(水) 11:52:56 ID:ll+32tHk0]
>>1
駄目文字微対策版
って消えてない?サイトに繋がらない

>>337
RegExReplaceじゃなくて
流行らせるページのBREGEXP.ahkを使えばいけると思う



340 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 11:36:06 ID:i54unxpm0]
しつもーん。
自分で作成したGUIのウィンドウを
WinSetのTransparentで半透明にしようとすると透過度の数値に関わらずウィンドウが消えるけど、バグ?

341 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 12:11:48 ID:rnkVZ9Ym0]
そんな事起きた事がない

342 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 12:14:52 ID:i54unxpm0]

だけど、いろいろ実験したら、半分自己解決。

一定サイズ以上のGUIウィンドウを、半透明にしようとすると、ウィンドウが消えるみたい。
たとえば、30000×10000のウィンドウを半透明にしようとすると消える。
ウィンドウサイズが超でかいのを半透明にするとすごく重そうだしそれを防止するための処理が組まれてるのかな?
回避方法はないだろうか。。。。

343 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 12:20:25 ID:i54unxpm0]
ちょっと極端な数値を書いたけど、
5000×2000のウィンドウでもダメみたい。

というか、マルチモニタ環境だけかもしれないけど、
挙動がちょっとおかしい。

5000×2000のGUIウィンドウを半透明にしようとすると
なぜかプライマリモニタにはウィンドウが表示されず、セカンダリにだけ表示される。
セカンダリにウィンドウが完全に移動したわけではなく、
プライマリとセカンダリの両方にウィンドウがまたがっているはずなのに、
プライマリの部分だけが表示されない。

マルチモニタ環境用にちょっとでかいウィンドウを使っていろいろやりたいのだけれど、
想定されていないバグってしまうサイズなのかな?。。。。

344 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 13:25:08 ID:YojB3hE5P]
ウチは6000x6000くらいはOKだったな
というか、ウィンドウスタイルでWS_EX_TRANSPARENTを指定してるだけだし
AutoHotkeyのバグではないと思うが
そもそも透明にする必要性があるのか分からんし、回避方法は勝手に探求してくれ

345 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 15:07:53 ID:0ufGIgHi0]
DOSの
%1
%~d1
%~p1
%~n1
%~x1
%~s1
のようなコマンドはありますか?


346 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 15:18:55 ID:odzNiaBs0]
えっ

347 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 15:32:24 ID:6MEA84T00]
ない
文字列操作、正規表現ライブラリ駆使して頑張れ

348 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 15:38:42 ID:LzARIfnI0]
>>345
コマンドラインからの引数で、なにかを利用したいなら

%1%
%2%
%3%
%4%
・・・

で取れる。使い方はDOSの%1と同様。

ファイル名に含まれる各種情報を取り出したいなら、
lukewarm.s101.xrea.com/commands/SplitPath.html

SplitPath, InputVar [, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive]
>InputVar 分解するファイルパスを格納した変数名
>OutFileName フォルダパスを除いたファイル名を格納する変数名フォルダパスのみの場合は、空になる
>OutDir フォルダパス(最後の「\」を含まない)を格納する変数名
>InputVarがファイル名のみの場合は、空になる。
>OutExtension ファイルの拡張子(「.」は含まない)を格納する変数名
>OutNameNoExt 拡張子を除いた名前部分を格納する変数名フォルダパスのみの場合は、空になる
>OutDrive ドライブ文字(「:」付き)やネットワーク上のパスのマシン名を格納する変数名 InputVarが相対パスなどの場合は、空になる。

349 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 15:50:24 ID:0ufGIgHi0]
>>348
ありがとうございます。



350 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 17:05:05 ID:YojB3hE5P]
ダメ文字があるので、BREGEXP使ってごにょごにょした方が確実かと。
>>1の対策版は繋らないね…

351 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 18:37:31 ID:0ufGIgHi0]
SplitPath, %1%, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive

で、 %1%,を使えないです。
X:= %1%,
も使えないです。どうすれば使えるようになりますか?

>>350
Batでダメ文字があったので逃げてきたのに・・・

352 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 18:42:48 ID:LzARIfnI0]
X= %1%
SplitPath, %X%, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive

でどうよ

353 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 18:47:08 ID:LzARIfnI0]
おっと間違ったかも

手元のコードを見直したら

X= %1%
SplitPath,X, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive

これで動くはず

354 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 19:09:24 ID:0ufGIgHi0]
>>353
ありがとうございます。動きました。
がんばってみます。

355 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 22:17:47 ID:0ufGIgHi0]
DOSのSHIFTコマンドの代わりになるようなコマンドありますか?
また、X= %1%
の中の1の部分を
%%y%%として数字を増やしたいのですが出来ません。%%の間に%%を入れることは不可能なんですか?


356 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 22:23:21 ID:F+s6QMxA0]
演算子を:=にして式にする
X := %y%

357 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 22:34:25 ID:qjImDfCp0]
;AutoHotkey Help の「command line parameters」をそのままコピペ

Loop, %0% ; For each parameter:
{
param := %A_Index% ; Fetch the contents of the variable whose name is contained in A_Index.
MsgBox, 4,, Parameter number %A_Index% is %param%. Continue?
IfMsgBox, No
break
}

358 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 22:41:42 ID:0ufGIgHi0]
>>356
>>357
度々すみませんでした。ありがとうございました。
がんばってみます。

359 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/03(金) 05:14:43 ID:c5pAeyeU0]
>>335
環境依存ではなく、Windowsの仕様(?)らしい。
ttp://lukewarm.s101.xrea.com/test/read.cgi/bbs/1095764510/243-246
ttp://d.hatena.ne.jp/blechmusik2/20090513/1242142080

2番目のリンク先のコメントによると他のキーと違いひらがなキーは Up → Down ということらしいので
(UWSCでキーのOn/Offチェックをしてみたけど、AutoHotkeyのKeyHistoryと同様にOnのままになってた)
ひらがなキーをAutoHotkeyでカスタマイズしたい場合はドライバレベルで別のキーに変更しておく必要があるみたい。
別キーに置き換えるなら他のキーと重複しないF13〜F24がいいかも。

ということでひらがなキーをF13に置き換える手順。
AutoHotkeyで任意のキーをF13にリマップする。
例:F12をF13にリマップし、スクリプトを実行させる。
F12::F13

Changekeyを起動する。(Changekeyが無いならググって入手する)
「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。
F12を押すとスキャンコード「0x0064」、該当するキーは「該当なし」と表示される。
(0x0064 はF13のスキャンコード)
「上のスキャンコードでキー変更する」をクリックすると
「変更前 (中略) 0x0064 をどのキーに変更しますか?」
というウィンドウが表示されるので「ひらがな」キーを選択。
「登録」をクリックし、Windowsを再起動する。
リマップ( F12::F13 )を解除する。




360 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/03(金) 19:37:40 ID:RmoLSHNq0]
クリップボード内のテキストの中に、機種依存文字がないかチェックする処理って
どうやって書けばいいかな。メール送信前にチェックするのに使いたいと思ってるんだけど。

機種依存文字一文字一文字について、検索処理するのは非効率だと思うんだけど
ほかに何か良い方法ある?

361 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/03(金) 19:53:11 ID:eBItoHy+0]
それぞれ(非)存在チェックするしかないと思うが。
If var [not] contains values
で一発じゃないの

362 名前:360 mailto:sage [2009/07/04(土) 01:39:53 ID:NLnkQJFM0]
今、こんな感じに書いてて、処理を呼び出しとります。

m0:
sleep,200
Send,^a
sleep,200
Send,^c
ClipWait
sleep,200
Words = @,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S … (略)

Loop, parse, Words, `,
{
StringGetPos, pos, clipboard, %A_LoopField%
if pos >= 0
MsgBox, %pos%文字目に機種依存文字の%A_LoopField%が使われています。
}
return

>>361
If var [not] contains values を使って書くと、どんな感じになるんでしょう?

363 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/04(土) 02:09:25 ID:NLnkQJFM0]
おぉお…機種依存文字じゃない文字が機種依存文字として認識されてしまう…

ムズかしい。

364 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/04(土) 02:33:45 ID:RHUozl570]
正規表現か何かで文字コードを指定した方がいいんじゃない?

365 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/04(土) 16:48:06 ID:RdF1EmR40]
指定ドライブの空き容量を取得する方法はありますか?

366 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/04(土) 16:52:03 ID:RdF1EmR40]
自己解決しました
DriveGetっていうのが用意されてたんですね
無駄にSystemMonitor関数とか探してました

367 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/05(日) 05:31:00 ID:rCPgZ7Wd0]
質問よろしいでしょうか?

タイトルバーの中クリックを検出する方法はないでしょうか?
具体的にやりたいことは、タイトルバーの中クリックを押すとウインドウを最小化する機能をつけることです。

他のソフトでもできそうなのですが、
というか同機能のすでにTTBaseのMinimizeプラグインを使っているのですが、
これだと、Office2007系(Excel2007とか)のメニューがバグって最小化できずしかも操作不能になってしまうのです。
その点をカスタマイズしたいのです。
(TTBaseのプラグイン作者はすでにおられないみたいでした)

368 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/05(日) 05:39:38 ID:1ELefC3x0]
~MButton::
CoordMode, Mouse, Screen
MouseGetPos,x,y,hwnd
SendMessage, 0x84, 0, x|y<<16,, ahk_id %hwnd% ; WM_NCHITTEST
If (ErrorLevel==2) ; HC_CAPTION
PostMessage, 0x112, 0xF020,,, ahk_id %hwnd% ; WM_SYSCOMMAND / SC_MINIMIZE
Return


369 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/05(日) 07:16:54 ID:rCPgZ7Wd0]
>>368
すげええw
WM_NCHITTESTにメッセージ送ったらどこにあるか状態返ってくるんかw
知らんかった。サンクス

参考:WM_NCHITTEST [WinAPI Database for VB Programmer]
www.winapi-database.com/Message/WM/WM_NCHITTEST.html

Excelだと WM_NCHITTEST だと 1(クライアント領域内)が返ってきてうまくいかないけど、バグるよりはよいや…
これでしばらく使ってみます

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



370 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/05(日) 16:17:11 ID:cg382fnr0]
#q::
Loop{
延々ループ処理
}
return
こんな感じのホットキー作ったんだけど
別のホットキーで、#qで動作させているホットキーの内容を強制的に停止させる方法って無い?
#e::
ExitApp
return
こういうのしてみたけどプログラム終了しなかった(´・ω・`)

371 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/05(日) 16:32:19 ID:1ELefC3x0]
普通に動くけどなぁ

#q::
exec:=true
While (exec)
Tooltip, Mouse is Here!
Tooltip
Return

#e::exec:=false


372 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/05(日) 17:13:15 ID:cg382fnr0]
>>371
んーだめっぽいなぁ
CoordMode,Mouse,Relative
CoordMode,Pixel,Relative
SetDefaultMouseSpeed,0
SetMouseDelay,10
SetKeyDelay,10,10
SendMode EVENT
hModule := DllCall("LoadLibrary", str, "***.dll")
こんな感じにやってるけど設定になんか問題でもあるのかなー

373 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/05(日) 18:12:19 ID:bzcOmVnlP]
そもそも>>370の方法で終わらないのがおかしい
#MaxThreadsが1になってるとか、OnExit絡みがおかしくて失敗してるのでは

とは言え、1行目がExitApp等なら割り込まれるから(#MaxThreadsヘルプ参照)、
純粋に>>370のコード例は動くはずなんだけどな

374 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/05(日) 20:47:52 ID:lEC8MHrV0]
%A_YYYY% %A_MM% %A_DD%

これらの組み込み変数で、
・昨日
・先月

を、うまく呼び出す方法ってないでしょうか。
単純にマイナス1でやると、あたりまえですが1月や毎月1日の時に、
先月や昨日が0月 や 0日になってしまいます。

375 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/05(日) 21:09:54 ID:1ELefC3x0]
タイムスタンプ形式文字列(YYYYMMDDHH24MISS)にして、負数を加算

dt = 20090101000000
dt += -1, Days
MsgBox, % dt

376 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/05(日) 21:13:06 ID:lEC8MHrV0]
>>375
ありがとうございます。
これでstringmidで抜き取れば、ゼロ桁揃えもバッチリですね。

377 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/05(日) 21:42:40 ID:TpLw+W1E0]
>>375
横レスだが、こんなことができることに驚いた


378 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/06(月) 11:18:51 ID:+bpunDPa0]
特定アプリケーションの特定クラスで

マウスを1クリックしたときは、そのアプリケーションクラスにキーを送る
マウスをWクリックしたときは、ダブルクリック
マウスを3回連続クリックしたときは、そのアプリケーションを閉じる
マウスを2秒以上押したときは、閉じる

そのほかのアプリケーションでは通常動作。

って設定するにはどうすればいいですか?

379 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/06(月) 11:57:42 ID:D5LcDuIT0]
解説読んでその通りに作ればいい



380 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/06(月) 13:12:35 ID:afPTjDljP]
dt:=DllCall("GetDoubleClickTime")/1000

#IfWinActive hogehoge

LButton::
t:=A_TickCount
KeyWait LButton
KeyWait LButton,D T%dt%
if( ErrorLevel=1 ) {
if( A_TickCount-t > 2000 ) {
ToolTip Press 2sec %A_TickCount%
return
}
ToolTip SingleClick %A_TickCount%
return
}

KeyWait LButton
KeyWait LButton,D T%dt%
if( ErrorLevel=1 ) {
ToolTip DoubleClick %A_TickCount%
return
}

ToolTip,TrippleClick %A_TickCount%
return

381 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/06(月) 16:06:11 ID:+bpunDPa0]
>>380
ありがとうございました。

382 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/10(金) 12:19:20 ID:n1t9ih6R0]
全角英数字→半角英数 と 特定文字列を置き換えたいのですが
どういう手順が一番いいですか?
外部ソフト使ったほうがいいですか?内部で処理できます?

383 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/10(金) 15:00:57 ID:h/ikD8t3P]
それくらいの内容だったら1バイトずつチェックして自分で変換してもいいし、
外部のツールを使ってもどちらでもいいと思う

BREGEXP.DLLのBTransを使えば比較的楽だと思うけど、
流行らせるページのラッパーには無いんだな…
次に貼っておく
BTransの返値には置換された個数が帰ってくるので、
ちょっと変えれば>>360の用途にも使えると思う

384 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/10(金) 15:23:04 ID:h/ikD8t3P]
; 省略してるけど、2, 3番目のパラメータに変換前、後に対応する文字列を指定する。
str:=_BTrans("abc cba AutoHotkey", "[a-z]", "[A-Z]", "k")
str:=_BTrans("ABXYZ", "ABCDEFGXYZ", "abcdefgあいう", "k")

_BTrans(target,pattern,trans,opt="")
{
s:="tr/" . pattern . "/" trans . "/" . opt
t:=target
outendp:=&target+StrLen(target)
pRExp=0
VarSetCapacity(msg,256)
hModule:=DllCall("LoadLibrary", str, "BREGEXP.DLL")
if(DllCall("BREGEXP.DLL\BTrans", Str,s, Str,target, Int,outendp ,IntP,pRExp, Str,msg, "Cdecl int")) {
start:=StructGetInt(pRExp,0)
len:=StructGetInt(pRExp,4)-start
VarSetCapacity(result,len+1)
DllCall("RtlMoveMemory", Str,result, UInt,start, UInt,len+1)
}
else {
result:=target
}
DllCall("BREGEXP.DLL\BRegFree",Int,pRExp)
DllCall("FreeLibrary", UInt, hModule)
return result
}

StructGetInt(pStruct,offset)
{
DllCall("RtlMoveMemory", UIntP,r, UInt,pStruct+offset, Int,4)
return r
}

385 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/10(金) 16:00:26 ID:n1t9ih6R0]
>>383
ありがとうございます。ちょっと試してみます。

386 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/10(金) 16:10:24 ID:UjJB4Kmb0]
>>302のサクラエディタ用のキーワード定義をひろった方がいたら
再upしてもらえないでしょうか?
お願いします。

387 名前:385 mailto:sage [2009/07/10(金) 16:29:10 ID:n1t9ih6R0]
試してみました。
むずかしくて意味がわかりませんでした。
せっかく教えていただいたのでじっくり取り組んでレベル向上するように頑張ります。

388 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/11(土) 14:07:36 ID:cI0LSYAf0]
マウスの左メイン押下&サイドボタンクリックでスクリプト発動したいんですが、
マウス左ボタン押下状態でちょっとでもカーソル動かすとうまく発動できません。
何かうまい方法ないでしょうか?

~LButton & XButton1::
hogehoge
return

389 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/11(土) 14:29:41 ID:xRlAh2IZP]
~XButton1::
if( GetKeyState("LButton", "P") ) {
hogehoge
}
return

ちなみに>>388はウチではうまく動作する。



390 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/11(土) 21:37:47 ID:cI0LSYAf0]
>>389
レスthxです。
教えていただいたスクリプト、ダメでした・・・
何も反応しません。

LButtonとXButtonが逆なのかと思って逆にしてみてもダメでした。

~LButton & XButton1::Send ^tをgoogle chromeで使っているんですが、
XButton1をクリックする前にマウスが動くとうまくいかないんですよね・・・


391 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/11(土) 21:47:30 ID:SAtGLE1R0]
>>390
ふつうにLButton:: でまずスレッドを立てて、その中で
LButtonが離されるまでLoopさせ、そのループ中にXButtonが押されているか検知し、
そこで分岐させればいいんじゃね?


392 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/11(土) 21:50:14 ID:e08r4NpA0]
というか、コンビネーションキーが認識出来ていない段階でおかしい
何らかのマウスユーティリティ入れてたりしないよな?

393 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/12(日) 09:23:18 ID:PeyC4smHP]
Chromeが原因っぽい
ウチのSRWare Ironで確認したんだけど、他のアプリでは大丈夫だけどIronでだけダメだった

以前からChrome(Iron)は、Sendで取りこぼしがよく発生すると思ってたんだけど
これもそのうちの一つかもしれない
(例えばコンテキストメニュー出して即アクセラレータキーを送っても、それを拾ってくれない場合があったりする)

どうやらLButtonでドラッグしている間はキーを無視してるらしいので、
無理矢理LButton Upを送ってからキーを送ったらうまくいくようになったけど、
ちょっと試しただけなので、副作用があるかもしれないし、Ironでしか確認してないが、
参考にでもなれば

~LButton & XButton1::
Send {LButton Up}
Send ^t
return

394 名前:390 mailto:sage [2009/07/12(日) 18:27:18 ID:sKIcc7dc0]
>>391-393
>>393の方法でうまくいきました。ありがとうございます。
確かにchromeが問題っぽいですね。
試しにドラッグ中にキーボードでCtrl+tを押してみても新タブ開かないですし

ともあれ、これで快適にAHKを活用できそうです。ありがとうございました。

395 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/12(日) 21:31:22 ID:tYrCWj8c0]
じぐざぐマウス
ttp://lukewarm.s101.xrea.com/up/file/113.zip

396 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/12(日) 21:41:42 ID:XcNgENWm0]
>>395
なにこれ?
説明もないし、実行しても何も起こらないし、意味が全くわからない

397 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/12(日) 22:04:43 ID:4APWhaXL0]
DllCallでimm32.dllのImmGetContextを呼んでhIMCを取得したいのですが、0 しか返ってきません
ErrorLevelは 0 になってるので書き方は↓であってるはずなのですが・・・

WinGet,hWnd,ID,A
hIMC := DllCall("imm32\ImmGetContext",Uint,hWnd, Uint)

どなたか解決方法をご教示願えないでしょうか

398 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/12(日) 22:12:49 ID:tYrCWj8c0]
>>396
すまん、マウスを横にギザギザするだけ。
DExposE2とかと使ってSend, !{tab}を送ったりするといい。

最後らへんは、下手したら多重起動しちゃう。
まだまだ、要変更でしたorz
DExposE2を使うなら最後のReturn前に、KeyWait, LButton, D T1とか。

399 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/12(日) 22:19:20 ID:XcNgENWm0]
>>398
あぁやっと意味がわかった。ギザギザにカーソルを移動するんじゃなくて、
マウスを縦横に振り回すと、縦横に応じたRunが発動されるってことね。

それなら、名称がギザギザよりもフリフリのほうがいいんじゃないの?

ソースを見ても何をやりたいのか全く理解できなかったコードは、
これが初めてだわw

こういった公共の場にリンクを貼るなら、最低限の説明は書いてくれよ。
だれも俺みたいな暇人じゃないんだから。



400 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/12(日) 22:43:47 ID:/CYjiatT0]
>>397
無理。対象ウィンドウを生成したプロセスでしか操作出来ない。
AttachThreadInputしても同じ。

>>99とかその辺りの流れで我慢汁

401 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/12(日) 22:44:29 ID:tYrCWj8c0]
>>399
まあそうなんだけどね\(^O^)/
じぐざぐマウスはClockLauncherの機能で、それをパクって、縦横で分け判定を厳しくしただけだから、
名称は統一感があったほうがいいかなと。

ソースはくるくるスクロールをリスペクトw

402 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 03:02:54 ID:9veVwPlv0]
>>395
くるくるじぐざぐマウスに修正(´・ω・`)

403 名前:名無しさん@お腹いっぱい。 [2009/07/13(月) 15:24:53 ID:EfchmhA10]

あるペイントソフトで
デフォルトで画面の拡大・縮小がそれぞれ
num+ nun-と割り当てられている状況で
これをマウスホイールのwheelup,wheeldownにできないかと

#IfWinActive, ahk_class Afx:400000:8:10011:x:xxxxxxxx
WheelUp::send, NumpadAdd
WheelDown::send, NumpadSub
return
としてみたのですが、AU3_Spyで調べた
ウインドウクラス名が起動毎に変わってしまいます
このウインドウクラス名は特定する事はできるのでしょうか?

404 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 15:47:32 ID:L6IuKEblP]
SetTitleMatchMode RegEx
#IfWinActive, ahk_class Afx:400000:8:10011:.*

;ウィンドウのタイトルが Untitled - hogehoge paint だったら、さらに
#IfWinActive, -\shogehoge\spaint$ ahk_class Afx:400000:8:10011:.*

自分の使う環境で誤爆が起きない範囲で調整すればいいと思う


405 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 17:04:24 ID:9QQrzBKg0]
なんで「あるペイントソフト」とか意味もなく隠すんだろうか。

具体的にソフト名を書いておけば、
別の方法で回避する方法がわかるかもしれないのに

406 名前:名無しさん@お腹いっぱい。 [2009/07/13(月) 17:43:13 ID:EfchmhA10]
403です、間違えましたahk_class Afx:400000:8:10011:0:xxxxxxの
x以下六桁が変動でした。ソフトはpaintgraphic2ですが(スレ違いかなって思って)
続け様で申し上げないのですが
SetTitleMatchMode RegEx
#IfWinActive, ahk_class Afx:400000:8:10011:0:.*
でいいのかなと思って色々弄ってみたけど駄目でした
因みにウインドウクラス名は新規作成(Untitled )を開いても
変化はありませんでした

407 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 17:52:58 ID:Jqm7FBF10]
SetTitleMatchModeコマンドがきちんとAutoexecブロック内にあるかい?

408 名前:名無しさん@お腹いっぱい。 [2009/07/13(月) 19:11:45 ID:EfchmhA10]
何度もすいません
Autoexeもブロック化もしていなかったのでしてみました
{
SetTitleMatchMode RegEx
}

#IfWinActive, ahk_class Afx:400000:8:10011:0:.*
WheelUp::send, NumpadAdd
WheelDown::send, NumpadSub
return
こういう感じでしょうか?(しつこくスイマセン)

409 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 19:14:52 ID:gpgKXs+F0]
SetTitleMatchMode RegEx
#IfWinActive, ahk_class Afx:400000:8:10011:0:.*
return

WheelUp::send, {NumpadAdd}
WheelDown::send, {NumpadSub}
かな?ァァァアアアアア〜アッヒャッヒャ!ヽ(;`・∀)ノ



410 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 20:45:49 ID:6dlsOKO00]
>>400
ahkじゃむりですか・・・
何か他の手を考えてみます、ありがとうございました

411 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 21:13:28 ID:nb47aZHk0]
>>408
lukewarm.s101.xrea.com/Scripts.html
の「スクリプトの起動とAuto-executeセクション」を熟読


412 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/14(火) 16:57:18 ID:3/lvv1eT0]
F12::#D

こんな感じのキー変更を行いたいのですがなんか上手く動作しません
キー変更先にWINキーは使えない仕様なのか、それとも環境の問題か…
デスクトップ表示の命令が分かれば解決しそうだけど誰か情報あったらplz!

413 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/14(火) 17:04:03 ID:4gFEIoud0]
大文字のDだとシフト押した扱いになるんじゃないかな

F12::#d

414 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/14(火) 17:05:29 ID:3/lvv1eT0]
えー事故解決しますた。。。あまりスマートな方法じゃないけど
デスクトップ表示のショートカットアイコンを起動する形で実現出来ました

415 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/14(火) 17:07:21 ID:3/lvv1eT0]
>>413
うわっホントでした、なんという恥ずかしい間違いw
ありがとうございました。

416 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/14(火) 18:01:13 ID:tjaNVAHDP]
Run, shell:::{3080F90D-D7AD-11D9-BD98-0000947B0257}

417 名前:名無しさん@お腹いっぱい。 [2009/07/14(火) 19:03:55 ID:rlrvyAbn0]
403です
おかげでなんとか
動くようになりました
ありがとうございます

418 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/14(火) 19:32:35 ID:v50nfNmk0]
質問の際、ソフト名を書かない
解決の際、解決に至った情報を書かない

まさに自分のことしか考えていない。
情報を共有する場所で、あるまじき行為

419 名前:名無しさん@お腹いっぱい。 [2009/07/14(火) 20:48:40 ID:rlrvyAbn0]
嗚呼失礼そういうルールでしたか
直接に解決に至った情報は409の方が提示されていたんですが
スペルチェックというか「,」であったり半角スペースを忘れる
イージーミスだったので
ちゃんと
SetTitleMatchMode, RegEx
#IfWinActive, Paintgraphic2 ahk_class Afx:400000:8:10011:0:.*
return

WheelUp::send, {NumpadAdd}
WheelDown::send, {NumpadSub}
return
で今のところ順調に動くようになりました
ご忠告を含め大変感謝です!



420 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/14(火) 20:59:28 ID:v50nfNmk0]
よし、合格!
これで、同じ悩みを持つ人の糧になる。

421 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/15(水) 04:48:01 ID:ZstWjcqp0]
FavoriteFinder.ahk消えちゃったね(´-ω-`)

422 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/15(水) 09:05:36 ID:0bQiTwD20]
Internet Archiveにも情報が残ってないとか

423 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/15(水) 09:44:47 ID:NhmkqrjQ0]
AutoHotkeyでマルチバイト(全角)文字を文字化けなしで出力する関数 - Knowledge Database IT
it.kndb.jp/entry/show/id/1188

これを使うと、文字が確定した状態で出力されてしまいます。
文字を未確定のまま出力させるにはどうすればいいのでしょうか。

424 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/15(水) 10:29:13 ID:eRZrTUyIP]
日本語入力モードにしてローマ字(ひらがな)を送った後、スペース等の変換キーを送るとか、
  IME_Set(1)
  Send mikakuteide{Space}

IMEが再変換に対応してれば>>423で漢字を送った後、再変換させるキー(MS IMEだと変換)を送るとか、
  mb_send("未確定で")
  Send {SC79}
  ※厳密に再変換させるなら、日本語文字数分だけShift+←を送って選択させた後に再変換






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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