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


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

AutoHotkey スレッド part7



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

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

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

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

754 名前:736 mailto:sage [2009/04/24(金) 00:27:01 ID:umX25vaH0]
>>750 thx
> テストした文字列の1行目に禁則文字「 \ / : * ? " < > | 」が入ってて
それでしたw

あとひとつだけ、
StringReplace, fname, name1, %A_Tab% \ / : * ? " < > | ,, ALL
複数の検索文字列はどう書けばいいんでしょうか?

755 名前:名無しさん@お腹いっぱい。 mailto:sage [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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/24(金) 09:01:46 ID:iP7K7SB40]
ラジオボタン
途中で別のコントロールを追加すると、次からは新しいグループになる。

同じグループにすることってできないだろうか・・・。

757 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/24(金) 11:18:44 ID:BW5MCYnb0]
今気づいたけど

組み込み関数の引数にコマンドライン引数を指定する事って出来ないんだな
a = %1%
とか一々しないといけないのは面倒

758 名前:名無しさん@お腹いっぱい。 mailto:sage [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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/24(金) 22:41:32 ID:4Tp5poaX0]
おめ。

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



760 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/25(土) 13:20:37 ID:RzJzru2Y0]
NoCloseでクローズボタンの無効化をしたいのですが、
ウィンドウ生成とともに無効化されるようになりません。
ショートカットキーによる無効/有効のトグルはできるのですが、
Rulesに ahk_class Notepad と書いた状態で notepad を起動しても、
新規ウィンドウのクローズボタンは有効のままです。
Disable close buttons on Window Creation
のチェックボックスはチェックしています。
なぜRulesの記述が有効にならないのか
わかる方がいましたらご助言お願いします。

761 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/25(土) 15:24:35 ID:LVJjcW7S0]
XPのExplorerで、ファイルをドラッグアンドドロップしはじめると、
マウスカーソルが禁止マークになって、
掴んだファイルが半透明で表示されます。

このとき、マウスの左ボタンから手を離す前に
掴み中であることを識別して別の処理をしたいのですが、
掴んでるファイル名を取得する方法はないでしょうか。

762 名前:名無しさん@お腹いっぱい。 mailto:sage [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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/25(土) 17:08:39 ID:Y2iaPllI0]
おーありがとうございます!
自スクリプトに組み込んで活用させていただきます。

764 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/25(土) 23:47:43 ID:Aak6Bmgi0]
だれか、ahk の日本語解説本、書いて下さい。
英語は細かいところがわからなくて困る。

765 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/26(日) 00:14:17 ID:RsidKdjm0]
>1

766 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/26(日) 00:42:15 ID:XR0J5Yoc0]
これだな。2007/09/05だから少々古い。
ttp://www.flib.jp/D800/book854.html

767 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/26(日) 15:13:57 ID:AJINZZJZ0]
exeからahk取り出せませんか?

768 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/26(日) 15:20:55 ID:7UkZFFcM0]
>>767
できます。パスワードなければ

769 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/26(日) 15:29:58 ID:AJINZZJZ0]
パスはつけてないんですがどうやってソース取り出すか教えてください

770 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/26(日) 15:33:35 ID:E78MgH1L0]
exe2ahkでググレクズ

771 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/26(日) 15:38:55 ID:AJINZZJZ0]
>>769,770
ありがとう

772 名前:名無しさん@お腹いっぱい。 mailto:sage [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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/26(日) 17:19:15 ID:ViVhDQ+t0]
>>772
2行目のsendの後が全角スペースになってる。
あとsendで送られたのがautohotkeyじゃなくてutohotkeyになった。
a::を$a::に変えたら直った。

どんなエラーが出てたのかわからんけど、基本的にそのままで行けた。

774 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/26(日) 17:52:28 ID:PRYSHYE50]
> SetTimer, RemoveToolTip, -1000

で1度だけの呼び出しに出来るよ

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

> 動作速度が遅くなるのは仕方ないのでしょうか?
SetKeyDelay

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

>>775の時はこのスクリプトの前の他のスクリプトで既にRemoveToolTip:を使用していたため
RemoveToolTip:の部分でエラーを吐いていたようです。
WhichToolTipのあたりを勉強してきます。


778 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/27(月) 00:09:04 ID:+ovk7Hbu0]
>>766
> これだな。2007/09/05だから少々古い。
> ttp://www.flib.jp/D800/book854.html

ありがとうございます。
しかし、専用viewer が怪しそうで、downloadしなかったので、見られませんでした。
残念

779 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/27(月) 11:31:05 ID:0QYIMn790]
書籍の形にこだわる理由は何?
流行らせるページはなんでスルーなの?

780 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/27(月) 12:05:09 ID:/pHC43gt0]
本の宣伝にならないからw

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

流行らせるページも万能じゃないし、
もうちょっと優しめに書かれた入門書が欲しいという初心者がいても不思議じゃないと思うけど

781 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/27(月) 12:40:58 ID:+rxhALv90]
If Var1 = %Var2% と If (Var1=Var2) とか、文法にずいぶん癖があるからなあ
最初は俺も苦労した

782 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/27(月) 17:00:26 ID:0QYIMn790]
いや、入門レベルならそれこそググればブログなどで取っかかりから説明してるとこ沢山見つかるっしょ

英語云々書いてるってことはわざわざ原点に当たってるみたいだし
むしろより高度な方向の解説を求めてるのかと思ったんだけど。



783 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/27(月) 19:20:25 ID:HMa7F1Xh0]
>>778
てかそれ、流行らせるページの人が書いてるものでしょ

784 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/27(月) 21:17:12 ID:ZpVxt0r00]
わかりやすい書籍があれば
どこででも読むかたちで予習復習できるじゃん

785 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/27(月) 22:16:23 ID:wELKguDV0]
まず前金で200万振り込んでくれ

786 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/27(月) 23:42:24 ID:l7+SdciM0]
>>781
前者はわかるが後者はなんだい?


787 名前:名無しさん@お腹いっぱい。 mailto:sage [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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 01:01:30 ID:E1vvN/jt0]
>>787
ありがとう
最後の例はすごいな
そういう発想はなかった

789 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 08:49:47 ID:XnR93Z5I0]
>>679 の := の話と似てるな
:= や if() は、式を書ける分だけ一般の高級言語に近い仕様

ahkは発展途上の過程で色々盲腸的な部分が残ってるんで分かりにくいね

790 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 09:00:55 ID:tUgDcu7Y0]
>>787の3つのIF、速度が違ったりするのかな

791 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 11:14:37 ID:KKp3NETS0]
ちょっとテストしてみた。1万回ループしてms単位の差がでてきた。
バッチ的に回すにしても他の処理の方が圧倒的に重いだろうし、気にするほどじゃない。

792 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 14:00:29 ID:tUgDcu7Y0]
>>791
てことは if() に統一して問題無さそうだね。ありがと。



793 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 15:18:00 ID:6TUioa2p0]
if()で使うけど、結局は%%つけちゃったり、""をつけ忘れたりする。

794 名前:名無しさん@お腹いっぱい。 mailto:sage [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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 18:10:30 ID:BorXmBFr0]
>>794
できない言語を探す方が難しいと思うよ

796 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 18:21:57 ID:lIOj1va90]
>>794
bat偽装っていう意味がわからないんだけど、どんなシーンでなんのメリットがあるの?

797 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 18:48:08 ID:cLThndOM0]
>>796
Autohotkey.exeがハードディスクにインストールしてない環境や、
関連付けしてない環境でAhkスクリプトを実行したいときに便利かもしんない。
>>795
よく使ってるUWSCは拡張子をチェックしてるみたいでBatだとはねられちゃった。
なでしこも出来るわな。Dosの複数行をコメントや変数でエラーにならんように
誤魔化せて、拡張子チェックしてない場合はいけそうだ。

798 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 20:02:51 ID:c0gmFX8Z0]
他のアプリからパスを受け取るコマンドってないんですか?

799 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 20:13:23 ID:KKp3NETS0]
その他のアプリがパスをくれるなら、引数なりドラッグ&ドロップなりで煮るなり焼くなりなんなりと。
くれないならアドレスバーとかタイトルバーとかから読む。

800 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 20:45:45 ID:c0gmFX8Z0]
>>799
こういうのがしたいとおもって
FileAppend,
(
これは
%ぱす%
です
),D:\aaa.txt

うまくいえないので半年ろむってます


801 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/29(水) 19:08:35 ID:k0T7d2ZLP]
%1%

802 名前:名無しさん@お腹いっぱい。 mailto:sage [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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/30(木) 18:03:27 ID:/B3Hmf7f0]
でっていう

804 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/30(木) 19:01:28 ID:SRqHNfq20]
素晴らしい中身の薄さにワロタ

805 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/30(木) 19:07:22 ID:kybyWs4G0]
>>803
SFCminiとかDynaWrapperをインストール出来ない環境で、
jscriptからDLLを使ったり、アプリのウィンドウを制御したり、
ドロップ可能なGUIを使える程度かなw
Suppon.exeからでもDLL使えるんでいろいろできそうだけど
Autohotkey経由のほうが楽。HTAより凝ったことが出来そう。

806 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 02:30:29 ID:V4O1Kqdz0]
タスクバーの上からGUIを貼り付けていろいろ改造してるのですが、
現在のテーマがLunaかClassicかを判別する、ウマイ方法はないでしょうか?

現状、タスクバーの太さ(高さ)で判別していて一見うまくいってたのですが、
「タスクバーを固定する」をONにしている環境だと、LunaでもClassicでも
高さが22で同じになってしまい、判別できなくなってしまいました。

807 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 02:44:30 ID:tK7xHrIL0]
questionbox.jp.msn.com/qa3095644.html

808 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 02:57:12 ID:V4O1Kqdz0]
即レス感謝!おかげさまで解決できました

809 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 17:58:20 ID:8PsslnK50]
WheelScroll.ahk の作者さん、ここ見ていらっしゃいますか?
マルチモニタサブモニタ側 (座標がマイナス値) でホイールが利かないようなのですが、どこを直せばいいものやら…
ヒントをいただければ幸いです。

AHK 1.0.48
Vista SP1
ロジクールのマウスドライバ SetPoint 4.60.122 を併用

810 名前:名無しさん@お腹いっぱい。 mailto:sage [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.管理人さんのホイールリダイレクト で正常に動くかどうか
 lukewarm.s101.xrea.com/myscripts/WheelRedirect.zip

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


あー、もう一週間くらい風邪が治んない。頭痛すぎてモノ考えられないっす
GW前に医者行っとけば良かったわ

811 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 20:52:47 ID:8PsslnK50]
>>810
早速のご返信ありがとうございます。
実はマルチモニタは勤務先のマシンなので連休明けまで確認できません。
調べがつき次第、またここで報告させていただきます。
ちなみにサブモニタは左です。

風とのこと、どうぞお大事になさってください。インフルじゃありませんように。。。。

812 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 21:55:34 ID:17i2D6iq0]
A_EventInfo 分だけ WM_MOUSEWHEEL を Post してるけど、
wParamの上位ワードを ±120*A_EventInfo にしてもいいんじゃないかと思う








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

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

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