AutoHotkey スレッド part11

このエントリーをはてなブックマークに追加
952名無しさん@お腹いっぱい。:2011/01/26(水) 14:12:27 ID:TQqHCHEl0
「特定のウインドウでなおかつ IME が OFF の場合」に限り、ホットストリングを実行させる方法を試行錯誤しているのですが、両方の条件を満たす記述方法がどうしてもわからず、どなたかにお知恵を拝借したく存じます。
OS は Windows 7 で、AutoHotkey_L 最新版(Unicode x86/1.0.92.01)、ime.ahk を使っています。
具体的には、(1)秀丸メールのメール作成画面で、(2)IME が OFF の場合、この二つの条件が満たされた場合に、以下のホットストリングを実行させたいのですが。

::ce::Dear Mr. Clint Eastwood:
::mf::Dear Mr. Morgan Freeman:
::hs::Dear Ms. Hilary Swank:

(1)のみであれば、次のスクリプトでうまくいきました。
#IfWinActive, ahk_class TuruKameOuterView
::ce::Dear Mr. Clint Eastwood:
::mf::Dear Mr. Morgan Freeman:
::hs::Dear Ms. Hilary Swank:
#IfWinActive

また、(2)のみであれば、ime.ahk を使って、次のスクリプトで正しく動作しました。
#If (IME_GET() == 0)
::ce::Dear Mr. Clint Eastwood:
::mf::Dear Mr. Morgan Freeman:
::hs::Dear Ms. Hilary Swank:
#If

(1)と(2)の両方の条件を満たす書き方がわかりません。
>>1 の AutoHotkeyJp と Autohotkey_L のヘルプを読みましたが、例えば以下のように、
#If (IME_GET() == 0)
#IfWinActive, ahk_class TuruKameOuterView
と、条件文を二行続けるとスクリプトの直上のものしか有効にならないことだけはわかりました。
「AutoHotkey_L ime on off」などのキーワードでググってもみたのですがヒットせず。どなたかおわかりでしたら教えて頂きたく存じます。
953d:2011/01/26(水) 14:19:41 ID:VFIJyQru0


ロリ乳 ふくらみかけ 12歳 でググれ


954名無しさん@お腹いっぱい。:2011/01/26(水) 14:20:08 ID:H0DMm5Xw0
>>952
#If WinActive("ahk_class TuruKameOuterView") and (IME_GET() == 0)
こうじゃね。
ttp://www.autohotkey.net/~Lexikos/AutoHotkey_L/docs/commands/_If.htm
に or の例が出てる
955名無しさん@お腹いっぱい。:2011/01/26(水) 14:57:40 ID:TQqHCHEl0
>>954
できました! ありがとうございます!
ご指摘のページは私も既に目を通して、「or のところを and に書き換えればいい」ということはわかったのですが、「or」 のあとの書き方が間違っていたようです。ともあれ助かりました!
956名無しさん@お腹いっぱい。:2011/01/26(水) 15:19:22 ID:SjubXkKP0
>>951
できるよ。http://www.autohotkey.net/~HotKeyIt/AutoHotkey/ の一番下に例。

でも、面倒だから AutoHotkey_H 同梱の AhkDllObject.ahk と AhkDllThread.ahk を使った方がいい。
obj := AhkDllObject()
obj.ahkTextDll("MsgBox, Sub")
MsgBox, Main

でも、この方法だとスレッド1個に対してDLL1個を必要とするんで
(別ファイルであればいいのでシンボリックリンクでもOK)
動的にスレッド数を増減させるような構成を考えてるなら面倒。

それに対して、COMはDLL登録してしまえばインスタンスは作り放題なんでかなり楽。

スクリプトの最初で、regsvr32 で登録して、 OnExit で regsvr32 /U で解除するって方法もある。
ただ、登録・解除は管理者権限が必要なので、USBでの運用だと厳しいかも知れない。
957名無しさん@お腹いっぱい。:2011/01/27(木) 06:35:48 ID:kJBj9rrj0
mousegesture.ahkをAutoHotkey_Lで使用するために2つのサイトを参考に
何も考えずに以下の事をためしました。OSはwindows7x64です。

とりあえず全ての.ahkを文字コードUTF-8で保存しなおす

MG_Edit.ahkの1572行め1574行目に,UTF-8を加える。

edit.ahkとmousegesture.ahkでnやrの前以外にある全て
の`を消す。

MouseGesture.ahkの187行目にある"GDI32.DLL\TextOutA"からAを抜く。
-------------------------------------------------------
こうすることで文字やタブがちゃんと表示されるようになったんですが、矢印ナビ
だけが表示されません。どうしたら表示されるか分かりますか?
958名無しさん@お腹いっぱい。:2011/01/27(木) 19:38:13 ID:ohVqT6+c0
使った事も、中身見た事もないから、上に書いてないことを一般論で、
**ポインタとして使われているUInt型**をPtr型に変える
構造体でポインタとして使われている所のサイズを A_PtrSize にして、オフセットも変える
ANSI文字列しか対応していない関数に AStr 型で渡すか、StrPutでCP932に変換したバッファアドレスを渡す

まぁ、俺は使わないけど、使う人もいるだろうから、出来上がったら
生存期間の長いロダにでも挙げればヨロ込む意図が居るかもしれん。
959名無しさん@お腹いっぱい。:2011/01/27(木) 23:11:18 ID:PRifpay2P
>>957
MouseGesture.ahkをAutoHotkey_Lに対応させる - Klein*Klein - Prisoner Princess
ttp://retla.g.hatena.ne.jp/retla/20100228/1267373919
960957:2011/01/28(金) 01:37:05 ID:HxIj4fVL0
>>959
参考にして実行したことを>>957に書いたつもりで、そこにのってあることも
全て実行したと思っていて、それでも矢印ナビにチェックいれても表示さ
れないと認識していて質問したんですが、どこらへんが間違っているか
足りないことを教えてくれませんか?
961名無しさん@お腹いっぱい。:2011/01/28(金) 01:41:31 ID:HxIj4fVL0
>>958
どうやら足りないのは自分の頭のようで、説明されてる意味がよくわかりません。
誰かがうpるのをまてってのはわかりました。ツールチップでのナビ表示はできて
るのでこれでそれまで我慢しますか。
962名無しさん@お腹いっぱい。:2011/01/28(金) 01:50:15 ID:nhxiT7Fw0
その記事にx64とは書いてないから、あくまでAHKL Unicodeへの移植だろう。
だとすると、やっぱポインタのはず。
963名無しさん@お腹いっぱい。:2011/01/28(金) 02:26:37 ID:L8uQdRLw0
XPでは>>957の手順で問題なく動くね。うん。そんだけ。
x64とかわかんね
964名無しさん@お腹いっぱい。:2011/01/28(金) 11:12:48 ID:D55wJwxY0
どなたか、スクリプト書いていただけませんか?

クリップボード内にある冒頭h抜きのアドレス(複数行)をちゃんと
httpの文字列にするスクリプトが欲しいです。
お願いします。
965名無しさん@お腹いっぱい。:2011/01/28(金) 11:56:35 ID:vuzmCtie0
>>960-961
他のスクリプトは一切動いてない状態で試してる?
Guiの番号が被ってると表示できなかったりするけど。

>>964
こんな感じで動くと思う。
#h::
Str := Clipboard
Clipboard := RegExReplace(Str, "(?<!h)ttp://", "http://")
Return
966名無しさん@お腹いっぱい。:2011/01/28(金) 12:42:38 ID:D55wJwxY0
>>965
ありがとうございました。動きました。
まさかこんなはやく書いていただける方がでてくるとは。
少し予めぐぐって探していたのですが、なかったんですよね。
近いスクリプトから弄るっていうのも僕できないので
迷っていたのですが。

ttp://がない場合、tp://の処理をするみたいなスクリプトを次
自分でかいてみたいなと思います。
967名無しさん@お腹いっぱい。:2011/01/28(金) 12:43:42 ID:7MsjdgIIP
こんにちわ最近やっとn52teを入手しました。

いまさらって感じなんですがこれから設定をしようといろいろネットを見ていたんですが

なんか割り当てできるキーの数が3モード切り替えしかないから全キー×3しかないと嘆いている

ページがいっぱいかかりますがなんでAHKを使わないんだろうと思いました。

それはさておき、n52teでAHK_Lを使用してモード切り替えをこれからやろうと思うのですが

今現在のモードをモード切り替えをした時に画面に出したいと思うのですがなにかよい方法はないでしょうか?

最前面にでかでかと文字が表示されるようなものをイメージしています。

たしかBDRemoteというソフトのモード切り替えの時にもそんなかんじにできたと思うのですが
968961:2011/01/28(金) 15:17:48 ID:9GcbxX4S0
>>965
セーフモードで起動して矢印ナビが表示されるかためしましたが、
やはり矢印ナビは表示されませんでした。
969名無しさん@お腹いっぱい。:2011/01/28(金) 20:47:57 ID:LkB32x0i0
>>967
Progress, h100 W400 X100 Y100 B1 C00 ZH0 ZW0 ZY2 FM60 WM200 CWFFFFBF , , n52のモード
sleep, 1000
Progress, off

※各オプションは適当
970名無しさん@お腹いっぱい。:2011/01/29(土) 05:49:46 ID:E5eiQxsGP
>>969
ありがとうございます。

やってみます
971名無しさん@お腹いっぱい。:2011/01/29(土) 08:42:06 ID:E5eiQxsGP
>>969
まさにやりたかったことはこれでした

ありがとうございます
972名無しさん@お腹いっぱい。:2011/01/29(土) 15:20:32 ID:E5eiQxsGP
>>969
パラメーターいじってて気づきましたが
これプログレッシブバーの見た目を変えてるんですね

なるほどー
973名無しさん@お腹いっぱい。:2011/01/29(土) 17:36:02 ID:UQ9bBTnM0
MouseGesture.ahkって64bitOSだとナビが出ないのはもちろんのこと、
他のビルトインの機能も動かないの多いだろ、これ。
DllCallの引数、ポインタ型のやつに何も考えないでIntとか渡しちゃうってちょっとひどい
直すの面倒くさかったんだから!
974名無しさん@お腹いっぱい。:2011/01/29(土) 18:07:16 ID:2wNZwkqh0
アップローダが無いのも不便そうだから適当に作った。次のテンプレにでも入れてくれ。
管理は週一くらいで適当にやる予定。
http://loda.jp/ahk/
975名無しさん@お腹いっぱい。:2011/01/29(土) 18:54:19 ID:Gg0j47dF0
>>973
それが開発された当時はx64版なんぞ無いし、Ptr型もサポートされてない。Intで正しかったんだよ。
>>974
乙乙
976名無しさん@お腹いっぱい。:2011/01/30(日) 01:08:41 ID:iFs/AIQK0
ahklからluaを使いたいのですが、1.lua の読み込みに失敗し、Error failed to...エラーがでます
どこを直せばいいのでしょうか

; ahklからluaを使う
; http://www.autohotkey.com/forum/post-268666.html#268666
; http://www.autohotkey.com/forum/post-355457.html#355457

#include lua.ahk
#include lua_ahkfunctions.ahk

hDll := lua_loadDll("lua51.dll")

l := luaL_newstate()

if(luaL_loadfile(L,"1.lua") || lua_pcall(L,0,0,0))
msgbox % "Error failed to load " lua_tostring(L,-1)
else
{
lua_getglobal(L,"screenWidth")
screenWidth := lua_tonumber(L,-1)
out := "Screen Width := " screenWidth "`n"

lua_getglobal(L,"appName")
appName := lua_tostring(l, -1)
out := out "Screen Name := " appName

msgbox % out
}

lua_close(L)
lua_UnloadDll(hDll)
977名無しさん@お腹いっぱい。:2011/01/30(日) 01:09:26 ID:iFs/AIQK0
1.luaの内容は↓です

appName = "Firefox"
screenWidth = 400

どちらのファイルもutf-8(bom)で保存しています
978名無しさん@お腹いっぱい。:2011/01/30(日) 01:32:34 ID:itITJIdo0
既出だったらすまそ
http://www.autohotkey.net/~Lucid_Method/
979名無しさん@お腹いっぱい。:2011/01/30(日) 13:42:14 ID:dtPVEYXx0
exe版Age2chでスレの更新確認しているのですがポップアップでの通知機能がないため
Age2chの外部ツールオプションでexe化したAHKスクリプトを起動し代わりにバルーン等の
ポップアップ通知をさせたいと思っています。
外部ツールにブラウザ等を指定しないのはブラウザを閉じて
作業している時に起動されると困るためです。

レスがあったと言うことを通知するだけならば
MsgBox , 4144, 確認時刻, %A_YYYY% %A_MM%/%A_DD% %A_Hour%:%A_Min%
ExitApp
で出来るのですが複数スレが対象となるとどれか分からなくなります。
URLをWM_COPYDATAで送るオプションがありメッセージで送るのだから
URLのみじゃないかもと思いexe化スクリプトと外部プログラムでのメッセージやりとりを
しらべていたのですがうまく作れません

そもそもメッセージにURL以外含まれていなければどうしようもないのですが形としては
スレタイトル
新着レス数(またはレス数)
確認時刻
の様な、せめてスレタイトルだけでも表示できる物が作りたいです。
どなたかお願いできないでしょうか。また、作らなくても要望を満たせるツールが在れば
探すヒントでもいいので教えて欲しいです。
よろしくお願いします。
980名無しさん@お腹いっぱい。:2011/01/30(日) 14:13:08 ID:Y+N1ABfO0
MouseGesture.ahkです。
ジェスチャ後にアクティブウインドウを画面中央に移動させたいのですが

WinMove, A, , (A_ScreenWidth/2)-(Width/2), (A_ScreenHeight/2)-(Height/2)

このように記述してもウインドウは中央に移動してくれません・・・
アクティブウインドウを中央に移動させるにはどのように記述すればいいのでしょうか?
981名無しさん@お腹いっぱい。:2011/01/30(日) 19:10:30 ID:itITJIdo0
Shift+Spaceで任意の関数実行、Ctrl+Shift+SpaceでShift+Space本来の挙動にするにはどうすればいいですか?
982名無しさん@お腹いっぱい。:2011/01/30(日) 19:55:06 ID:+SDppyu30
>>980
wingetpos, , , width, height, A
WinMove, A, , A_ScreenWidth/2-Width/2, A_ScreenHeight/2-Height/2
983980:2011/01/30(日) 21:22:19 ID:Y+N1ABfO0
>>982
わぁ、できました!
どもですm(_ _)mペコリ
984名無しさん@お腹いっぱい。:2011/01/30(日) 21:35:01 ID:/D168sex0
>>979
WM_COPYDATAで送られてくるデータの内容は、送信元次第なので仕様を確認しろとしか言いようがない。


自前でスレの更新日時を撮りにいくならこんな感じで出来る。要AHKL

url = http://hibari.2ch.net/test/read.cgi/software/1280482227/l50
If RegExMatch(url, "http://(?P<host>\w+\.(?:2ch\.net|bbspink\.com))/test/read.cgi/(?P<board>[^/]+)/(?P<dat>\d+)/?", $) {
 req := ComObjCreate("WinHttp.WinHttpRequest.5.1")
 req.Open("HEAD", "http://" $host "/" $board "/dat/" $dat ".dat")
 req.Send()
 If ("OK" = req.StatusText) {
  If RegExMatch(req.GetAllResponseHeaders(), "Last-Modified:\s(.+)", $)
   MsgBox, % "更新日時: " . $1
 } Else
  MsgBox, % "Error: " req.StatusText
 req :=
}
タイトルと件数は subject.txt を撮りに行けばOK
985名無しさん@お腹いっぱい。:2011/01/30(日) 22:11:44 ID:itITJIdo0
AutoHotKey_Lで32bitや64bitのプロセスのpidから実行ファイルのパスを取る方法を教えてください。
winmgmtsを使う物や、getProcessExeNameNTでは取れませんでした。
986名無しさん@お腹いっぱい。:2011/01/30(日) 22:22:37 ID:Wb8eDpAJ0
!#z::
>>985
WinGet, pid, PID, A
For process in ComObjGet("winmgmts:").ExecQuery("SELECT * FROM Win32_Process WHERE ProcessId='" pid "'")
MsgBox, % process.ExecutablePath
return
987名無しさん@お腹いっぱい。:2011/01/30(日) 22:54:50 ID:itITJIdo0
>>985
0x80020003 - メンバーが見つかりません。
ってなります。AutoHotKey_Lは32bit版、OSはWindows 7 x64です。
988名無しさん@お腹いっぱい。:2011/01/30(日) 23:28:06 ID:/D168sex0
x64版を使わないから
989名無しさん@お腹いっぱい。:2011/01/31(月) 00:01:37 ID:sNxLvINW0
DllCall使ってるところが動かなくなってしまうので。。
DllCallの所を直しつつ、64bit版でやってみます。
990名無しさん@お腹いっぱい。:2011/01/31(月) 12:56:09 ID:qh3anlvR0
建ててくる
991名無しさん@お腹いっぱい。:2011/01/31(月) 13:15:43 ID:qh3anlvR0
AutoHotkey スレッド part12
http://hibari.2ch.net/test/read.cgi/software/1296446228/

ツッコミ処は多々あると思うが、独断と偏見でやってみた。
もたもたしてたら変なのを貼られちまった。スマソ。
992530:2011/01/31(月) 14:26:17 ID:EA7pWmp2P
>>969
sleepだと連続切替が効かないのでSetTimerに変更しました。ま、n52teにJoyToKeyを併用しないと服飾キーが押せないみたいですが
n52pf := Object()
n52pf[0] := "SAI"
n52pf[1] := "Photoshop"
#x::
If ( n52 > n52pf.MaxIndex() - 1 ){
n52 = 0
} else {
n52++
}
BlnMsg( n52pf[n52], "1000", "X10 Y10 B1 C00 ZH0 ZW0 ZY2 FM12 WM1 CWFFFFBF" ) ;
return
BlnAct = 0
BlnMsg(Txt, Time, Opt) {
global BlnAct
BlnOffSet()
Progress, %Opt%, , %Txt%
SetTimer, BlnOff, %Time%
BlnAct = 1
return
BlnOff:
BlnOffSet()
return
}
BlnOffSet(){
global BlnAct
If (BlnAct = 1) {
Progress, off
BlnAct = 0
}
}
993名無しさん@お腹いっぱい。:2011/01/31(月) 15:11:51 ID:JQU1QPMp0
服飾わろた
994名無しさん@お腹いっぱい。:2011/01/31(月) 15:19:10 ID:EtuGOY5s0
突っ込もうと思ったら、すでに突っ込まれててワロタ
995名無しさん@お腹いっぱい。:2011/01/31(月) 15:25:19 ID:EA7pWmp2P
装飾キーw
996名無しさん@お腹いっぱい。:2011/01/31(月) 16:19:13 ID:qh3anlvR0
いや、それも違うだろw
997名無しさん@お腹いっぱい。:2011/01/31(月) 16:32:02 ID:JQU1QPMp0
どんだけオシャレさんなんだw
998名無しさん@お腹いっぱい。:2011/01/31(月) 22:12:45 ID:LH5icIBH0
.
999名無しさん@お腹いっぱい。:2011/01/31(月) 22:16:24 ID:LH5icIBH0
.
1000小倉優子 ◆YUKOH0W58Q :2011/01/31(月) 22:17:08 ID:LH5icIBH0
  ∧,,,∧ 
 (  ・∀・) 1000ならジュースでも飲むか
  (    ) 
  し─J 
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。