AutoHotkey スレッド ..
[2ch|▼Menu]
751:名無しさん@お腹いっぱい。
09/04/23 22:45:13 neftGxox0
>>745
レスありがとうございます。
やっぱり仕様なのかなあ・・・

752:名無しさん@お腹いっぱい。
09/04/24 00:13:08 4ogwzjQN0
GUI, Add, Text,Vaaa, %clipboard%
GUI, Show
return
OnClipboardChange:
GuiControl, MoveDraw, aaa,
return
GuiClose:
Exitapp

わからん・・・。

753:名無しさん@お腹いっぱい。
09/04/24 00:14:45 +WwSzOjf0
>>647
誰かそれを作った人はいませんでしょうか?

754:736
09/04/24 00:27:01 umX25vaH0
>>750 thx
> テストした文字列の1行目に禁則文字「 \ / : * ? " < > | 」が入ってて
それでしたw

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

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

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

757:名無しさん@お腹いっぱい。
09/04/24 11:18:44 BW5MCYnb0
今気づいたけど

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

758:名無しさん@お腹いっぱい。
09/04/24 20:36:29 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:名無しさん@お腹いっぱい。
09/04/24 22:41:32 4Tp5poaX0
おめ。

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



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

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

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

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

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

765:名無しさん@お腹いっぱい。
09/04/26 00:14:17 RsidKdjm0
>1

766:名無しさん@お腹いっぱい。
09/04/26 00:42:15 XR0J5Yoc0
これだな。2007/09/05だから少々古い。
URLリンク(www.flib.jp)

767:名無しさん@お腹いっぱい。
09/04/26 15:13:57 AJINZZJZ0
exeからahk取り出せませんか?

768:名無しさん@お腹いっぱい。
09/04/26 15:20:55 7UkZFFcM0
>>767
できます。パスワードなければ

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

770:名無しさん@お腹いっぱい。
09/04/26 15:33:35 E78MgH1L0
exe2ahkでググレクズ

771:名無しさん@お腹いっぱい。
09/04/26 15:38:55 AJINZZJZ0
>>769,770
ありがとう

772:名無しさん@お腹いっぱい。
09/04/26 16:30:26 yHBXLU9I0
::a::autohotkey{ENTER}
の動作にツールチップ(一秒後に消える)
を着けたいのですがうまくいかず困っています。
RemoveToolTip:の部分でエラーを出されてしまいます。

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

RemoveToolTip:
SetTimer, RemoveToolTip, Off
ToolTip
return

なにぶん最近いじり始めたばかりなので
根本的なところで間違えてるかもですが
問題点を教えてください。
よろしくお願いします。


773:名無しさん@お腹いっぱい。
09/04/26 17:19:15 ViVhDQ+t0
>>772
2行目のsendの後が全角スペースになってる。
あとsendで送られたのがautohotkeyじゃなくてutohotkeyになった。
a::を$a::に変えたら直った。

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

774:名無しさん@お腹いっぱい。
09/04/26 17:52:28 PRYSHYE50
> SetTimer, RemoveToolTip, -1000

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

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

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

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

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


778:名無しさん@お腹いっぱい。
09/04/27 00:09:04 +ovk7Hbu0
>>766
> これだな。2007/09/05だから少々古い。
> URLリンク(www.flib.jp)

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

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

780:名無しさん@お腹いっぱい。
09/04/27 12:05:09 /pHC43gt0
本の宣伝にならないからw

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

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

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

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

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

783:名無しさん@お腹いっぱい。
09/04/27 19:20:25 HMa7F1Xh0
>>778
てかそれ、流行らせるページの人が書いてるものでしょ

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

785:名無しさん@お腹いっぱい。
09/04/27 22:16:23 wELKguDV0
まず前金で200万振り込んでくれ

786:名無しさん@お腹いっぱい。
09/04/27 23:42:24 l7+SdciM0
>>781
前者はわかるが後者はなんだい?


787:名無しさん@お腹いっぱい。
09/04/28 00:11:36 KKp3NETS0
等価だよ
IfEqual, Var1, %Var2%
If Var1=%Var2%
If (Var1=Var2)

こういうのも通るし
count=0
Loop {
 If (count++==3)
  Break
 MsgBox, % A_Index
}

788:名無しさん@お腹いっぱい。
09/04/28 01:01:30 E1vvN/jt0
>>787
ありがとう
最後の例はすごいな
そういう発想はなかった

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

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

790:名無しさん@お腹いっぱい。
09/04/28 09:00:55 tUgDcu7Y0
>>787の3つのIF、速度が違ったりするのかな

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

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

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

794:名無しさん@お腹いっぱい。
09/04/28 17:58:54 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:名無しさん@お腹いっぱい。
09/04/28 18:10:30 BorXmBFr0
>>794
できない言語を探す方が難しいと思うよ

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

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

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

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

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

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


801:名無しさん@お腹いっぱい。
09/04/29 19:08:35 k0T7d2ZLP
%1%

802:名無しさん@お腹いっぱい。
09/04/30 17:50:27 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:名無しさん@お腹いっぱい。
09/04/30 18:03:27 /B3Hmf7f0
でっていう

804:名無しさん@お腹いっぱい。
09/04/30 19:01:28 SRqHNfq20
素晴らしい中身の薄さにワロタ

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

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

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

807:名無しさん@お腹いっぱい。
09/05/02 02:44:30 tK7xHrIL0
URLリンク(questionbox.jp.msn.com)

808:名無しさん@お腹いっぱい。
09/05/02 02:57:12 V4O1Kqdz0
即レス感謝!おかげさまで解決できました

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

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

810:名無しさん@お腹いっぱい。
09/05/02 19:34:18 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.管理人さんのホイールリダイレクト で正常に動くかどうか
 URLリンク(lukewarm.s101.xrea.com)

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


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

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

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

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


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5383日前に更新/279 KB
担当:undef