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」などのキーワードでググってもみたのですがヒットせず。どなたかおわかりでしたら教えて頂きたく存じます。
953 :
d :2011/01/26(水) 14:19:41 ID:VFIJyQru0
ロリ乳 ふくらみかけ 12歳 でググれ
955 :
名無しさん@お腹いっぱい。 :2011/01/26(水) 14:57:40 ID:TQqHCHEl0
>>954 できました! ありがとうございます!
ご指摘のページは私も既に目を通して、「or のところを and に書き換えればいい」ということはわかったのですが、「or」 のあとの書き方が間違っていたようです。ともあれ助かりました!
>>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での運用だと厳しいかも知れない。
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を抜く。 ------------------------------------------------------- こうすることで文字やタブがちゃんと表示されるようになったんですが、矢印ナビ だけが表示されません。どうしたら表示されるか分かりますか?
使った事も、中身見た事もないから、上に書いてないことを一般論で、 **ポインタとして使われているUInt型**をPtr型に変える 構造体でポインタとして使われている所のサイズを A_PtrSize にして、オフセットも変える ANSI文字列しか対応していない関数に AStr 型で渡すか、StrPutでCP932に変換したバッファアドレスを渡す まぁ、俺は使わないけど、使う人もいるだろうから、出来上がったら 生存期間の長いロダにでも挙げればヨロ込む意図が居るかもしれん。
960 :
957 :2011/01/28(金) 01:37:05 ID:HxIj4fVL0
>>959 参考にして実行したことを
>>957 に書いたつもりで、そこにのってあることも
全て実行したと思っていて、それでも矢印ナビにチェックいれても表示さ
れないと認識していて質問したんですが、どこらへんが間違っているか
足りないことを教えてくれませんか?
>>958 どうやら足りないのは自分の頭のようで、説明されてる意味がよくわかりません。
誰かがうpるのをまてってのはわかりました。ツールチップでのナビ表示はできて
るのでこれでそれまで我慢しますか。
その記事にx64とは書いてないから、あくまでAHKL Unicodeへの移植だろう。 だとすると、やっぱポインタのはず。
XPでは
>>957 の手順で問題なく動くね。うん。そんだけ。
x64とかわかんね
どなたか、スクリプト書いていただけませんか? クリップボード内にある冒頭h抜きのアドレス(複数行)をちゃんと httpの文字列にするスクリプトが欲しいです。 お願いします。
>>960-961 他のスクリプトは一切動いてない状態で試してる?
Guiの番号が被ってると表示できなかったりするけど。
>>964 こんな感じで動くと思う。
#h::
Str := Clipboard
Clipboard := RegExReplace(Str, "(?<!h)
ttp:// ", "
http:// ")
Return
>>965 ありがとうございました。動きました。
まさかこんなはやく書いていただける方がでてくるとは。
少し予めぐぐって探していたのですが、なかったんですよね。
近いスクリプトから弄るっていうのも僕できないので
迷っていたのですが。
ttp://がない場合 、tp://の処理をするみたいなスクリプトを次
自分でかいてみたいなと思います。
967 :
名無しさん@お腹いっぱい。 :2011/01/28(金) 12:43:42 ID:7MsjdgIIP
こんにちわ最近やっとn52teを入手しました。 いまさらって感じなんですがこれから設定をしようといろいろネットを見ていたんですが なんか割り当てできるキーの数が3モード切り替えしかないから全キー×3しかないと嘆いている ページがいっぱいかかりますがなんでAHKを使わないんだろうと思いました。 それはさておき、n52teでAHK_Lを使用してモード切り替えをこれからやろうと思うのですが 今現在のモードをモード切り替えをした時に画面に出したいと思うのですがなにかよい方法はないでしょうか? 最前面にでかでかと文字が表示されるようなものをイメージしています。 たしかBDRemoteというソフトのモード切り替えの時にもそんなかんじにできたと思うのですが
968 :
961 :2011/01/28(金) 15:17:48 ID:9GcbxX4S0
>>965 セーフモードで起動して矢印ナビが表示されるかためしましたが、
やはり矢印ナビは表示されませんでした。
>>967 Progress, h100 W400 X100 Y100 B1 C00 ZH0 ZW0 ZY2 FM60 WM200 CWFFFFBF , , n52のモード
sleep, 1000
Progress, off
※各オプションは適当
>>969 まさにやりたかったことはこれでした
ありがとうございます
>>969 パラメーターいじってて気づきましたが
これプログレッシブバーの見た目を変えてるんですね
なるほどー
MouseGesture.ahkって64bitOSだとナビが出ないのはもちろんのこと、 他のビルトインの機能も動かないの多いだろ、これ。 DllCallの引数、ポインタ型のやつに何も考えないでIntとか渡しちゃうってちょっとひどい 直すの面倒くさかったんだから!
>>973 それが開発された当時はx64版なんぞ無いし、Ptr型もサポートされてない。Intで正しかったんだよ。
>>974 乙乙
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)
1.luaの内容は↓です appName = "Firefox" screenWidth = 400 どちらのファイルもutf-8(bom)で保存しています
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) このように記述してもウインドウは中央に移動してくれません・・・ アクティブウインドウを中央に移動させるにはどのように記述すればいいのでしょうか?
Shift+Spaceで任意の関数実行、Ctrl+Shift+SpaceでShift+Space本来の挙動にするにはどうすればいいですか?
>>980 wingetpos, , , width, height, A
WinMove, A, , A_ScreenWidth/2-Width/2, A_ScreenHeight/2-Height/2
983 :
980 :2011/01/30(日) 21:22:19 ID:Y+N1ABfO0
>>982 わぁ、できました!
どもですm(_ _)mペコリ
>>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
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
>>985 0x80020003 - メンバーが見つかりません。
ってなります。AutoHotKey_Lは32bit版、OSはWindows 7 x64です。
x64版を使わないから
DllCall使ってるところが動かなくなってしまうので。。 DllCallの所を直しつつ、64bit版でやってみます。
建ててくる
992 :
530 :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
}
}
服飾わろた
突っ込もうと思ったら、すでに突っ込まれててワロタ
装飾キーw
いや、それも違うだろw
どんだけオシャレさんなんだw
.
.
∧,,,∧ ( ・∀・) 1000ならジュースでも飲むか ( ) し─J
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。