XREA.COM Logo XREA.COM Ad

スクリプト質問スレッド

1管理人 ★:04/09/21 20:01 ID:???
質問が多いので独立させます

状況や実現したいことは出来るだけ具体的に書いてください。

スクリプトがうまく動かないなどの問題の場合、問題のあるスクリプトの内容や
エラーメッセージの内容を併記してください。
201unnamed.ahk:2007/10/29(月) 17:29:34
アプリケーションの種類によってコマンドから除外させたいのですがうまくいきません。
IfWinExist Exclude ahk_class 除外したいソフト
{
コマンド
}
現状では除外されず全てのソフトにコマンドが働いています。
除外したいソフト名だけを書き記し、かかれていないソフトでは適用する、
といった風にしたいのですが可能でしょうか?

また、条件で分岐するようにも書いてみました。
IfWinActive ahk_class 当初の除外ソフト
{
~RButton & XButton1::Send {PgUp}
~RButton & XButton2::Send {PgDn}
}
else
{
~RButton & XButton2::Send !{F4}
~RButton & XButton1::Send {Esc}
}
除外したソフトには別にコマンドを与える予定でしたので
こうなったのですが、入力が同じだとダメなようでうまくいきません。
解決法がお解りになるかた、アドバイスお願い致します。
長文、乱文失礼致しました。
202unnamed.ahk:2007/10/29(月) 21:05:31
>>201
http://lukewarm.s101.xrea.com/commands/_IfWinActive.html
203unnamed.ahk:2007/10/30(火) 00:32:49
>>202
#があるかないかで随分意味が違うんですね。
条件の優先順位で解決できました。(一応報告
ありがとうございました。m(_ _)m
204unnamed.ahk:2007/11/05(月) 15:03:23
Ctrlの二度押しで、スタートメニューを開きたいのですが、どうしたらよいでしょうか?
下記のスクリプトで、一見うまくいくのですが、使っているうちにマウスでのドラッグが
開始できなくなるなど、変な副作用が出ます。
ちなみにOSはVista Businessです。。

~LControl::
if (A_PriorHotkey = A_ThisHotKey and A_TimeSincePriorHotkey < 300)
Send,^{ESC}
KeyWait, LControl
return
205unnamed.ahk:2007/11/05(月) 23:43:34
Ctrlキーを重ねて送ってるのがまずいじゃね
普通にWINキーをおくったら?
206unnamed.ahk:2007/11/06(火) 08:35:20
むしろ Vistaが問題なのでは?
207unnamed.ahk:2007/11/06(火) 12:11:09
>>205
確かにCtrlは送る必要ないので、
Send,{Blind}{ESC}
にしたところうまくいきました!
WINキーは最初試したのですが、全くだめなのでCtrl+ESCにした次第です。
ありがとうございました。
208unnamed.ahk:2007/11/06(火) 22:00:44
再現率が低くなっただけで、ドラッグが開始できなくなるという現象は変わりませんでした。
ちなみに、その場合Ctrlを連打していると復旧します。
引き続き試行錯誤。。。
209unnamed.ahk:2007/11/06(火) 23:17:50
PresStart
ttp://www.tordex.com/tools/
ちょっと回りくどいけどw
スタートメニューを出してくれるソフトをはさむとか

Ctrlキーが押しっぱなしになってるんだと思うよ
ttp://pc11.2ch.net/test/read.cgi/software/1184556627/629
この関数を使ってみたら?
210unnamed.ahk:2007/11/07(水) 10:49:49
アドバイスを参考に、こうしました。
PostMessage, 0x0504, 0, 0,,ahk_class Shell_TrayWnd
これなら、副作用は起きないのでは無いかと思います。
ありがとうございました!
211unnamed.ahk:2007/11/14(水) 19:42:16
test
212unnamed.ahk:2007/11/14(水) 19:46:55
管理人さんのActivexスクリプトを使ってEXCELファイルを開きたいのですが、
操作サンプルやWEBのそれらしきページを参考に書いてみましたがうまくいきません。
EXCELは立ち上がるのですが、ファイルが開けません。
どこか勘違いしてるでしょうか?

#include *i %A_ScriptDir%\ActiveX.ahk
ActiveX()
ObjExcel:=CreateObject("Excel.Application")
pp(ObjExcel,"Visible","true")
Inv(Inv(ObjExcel, "Workbooks"), "Open", "C:\Hoge.xls")
213unnamed.ahk:2007/11/14(水) 20:08:22
MS Officeのライセンスを買ってくれたら検証してやってもいい
214unnamed.ahk:2007/11/25(日) 03:20:51
Windows Vista ホームプレミアムです。
サイドバーで気に入ったカレンダーがあって、
それは、クリックすると日めくりカレンダー風になったり普通のカレンダーになったり
その普通のやつの月をクリックすると上に2007と書いてあって、1〜12までの月が出るやつで、
そんな風に、クリックするたびに画像1になったり画像2になったりするスクリプトってないですか?
オンマウスじゃありません。
ブログで使うんです・・・function showimgとかいうやつを使いましたが
これだと一回しか切り替わりません。
215unnamed.ahk:2007/11/26(月) 12:48:45
素晴らしい誤爆力
216unnamed.ahk:2007/11/27(火) 10:11:33
管理人様に公開していただいているProcessMem.ahkを大変重宝させていただいております。
その中でreadProcMem(pid,addr,len)関数で文字列を取得する場合、lenに整数を指定してもエラーが出てました。

65行目の
size:=VarSetCapacity(s,len)+1

size:=VarSetCapacity(res,len)+1
とすることで取得が可能になりました。
217unnamed.ahk:2008/01/19(土) 00:36:45
始めましてAutoHotKey初心者です。
現在、UWSCで自動化している作業をよりGUIが豊富なAutoHotKeyに移植しています。
簡単にできそうなのですが、なかなかよいサンプルが見つからずに困っております。
OSはXP(できれば2000も)です。

【UWSCで行っている作業】
ローカルエリア接続に対して
・IPアドレスの設定
・サブネットマスクの設定
・デフォルトゲートウェイの設定
・プライマリDNSの設定
・セカンダリDNSの設定
・以下のDNSサフィックスを順にDNSサフィックスを4つ追加する ※

※以外はnetshコマンドの利用でいけそうなのですが、、、

UWSCではコンパネの「ネットワーク接続」の画面からコントロールのクリックやstrSendなどでゴリゴリ設定できたのですが
AutoHotKeyでも同様のことは可能なのでしょうか?

少々、コードが複雑でもAutoHotKeyで可能であれば実装するだけの価値は計り知れません。
どなたかご教授頂ければ嬉しいです。
218unnamed.ahk:2008/02/20(水) 17:45:05
すいません、管理人さんの「My Scripts」内の「システムモニタ用関数群」を使用しています。

このスクリプトが起動中に同じスクリプトを起動した時に終了させる記述はどのようにすればいいのでしょうか。
219unnamed.ahk:2008/02/21(木) 00:46:32
#SingleInstance
220unnamed.ahk:2008/02/21(木) 01:32:49
>>219さん
ありがとうございます。
試してみました。
これですと、同じスクリプトを起動した時に、新しいスクリプトの方が起動するかしないかを選択する奴のようです。

希望は、スクリプトを新たに起動した場合、起動している同スクリプトを終了させたいのです。
221unnamed.ahk:2008/03/09(日) 01:21:39
MouseGesture2を愛用しています。
気になった点をいくつか。

MG_Edit.ahkでの条件定義で「どれかに一致」しか選べないように思います。
ini書き換えで対処してもMG_Editで編集してしまうと「And=1」の行が削除されてしまうようです。

8方向モードの場合MG_Edit.ahkでの設定時にDir6:からDir9:までがずれて(6-9が5-8へ)設定されるようです。

アクティブウインドウを切り替えたときジェスチャーがアクティブなウィンドウではなく
アクティブだったウィンドウに送られることがあるようです。
MG_GetMousePosInfo()をMG_TriggerDown()、MG_TriggerUp()、MG_GetMousePosInfo()内に
適当に追加して対処しています。

ご確認いただければ幸いです。
222unnamed.ahk:2008/03/09(日) 01:24:46
訂正
× MG_GetMousePosInfo()内に
○ MG_ButtonPress()内に

失礼いたしました。
223unnamed.ahk:2008/03/13(木) 03:36:19
MouseGesture.ahkではアクティブウィンドウに関係なくジェスチャ開始時点でのカーソル下ウィンドウをターゲットとみなす仕様
224unnamed.ahk:2008/03/13(木) 22:17:11
確認をお願いした部分が完璧に修正されてました。感激です。
それ以上にさまざまな進化をしていて驚きです。
ありがとうございました。
225unnamed.ahk:2008/04/04(金) 12:45:08
shift押下でA
Shift離して、A,Aと打つようなスクリプトはどう書けばいいのでしょうか?
226unnamed.ahk:2008/04/14(月) 18:57:15
特定アプリの特定ボタンを押下できないようにしたい。
ボタンの特定までは出来たんだけど、無効化できないです。


~LButton::
~Space::
~Return::

winclass = #32770
ctrlclass = Button52

IfWinActive, ahk_class %winclass%
{
ControlGetFocus, OutputVar
if OutputVar = %ctrlclass%
{
msgbox, %OutputVar%
return
}
}
227unnamed.ahk:2008/04/15(火) 15:52:42
ボタンを無効化するコマンドあるべ?
228unnamed.ahk:2008/04/16(水) 00:58:51
Controlですね。ありがとうございます!

#Persistent
wintitle = hogewin
ctrlclass = ButtonTako
Control, Disable , , %ctrlclass%, %wintitle%
229unnamed.ahk:2008/05/07(水) 00:34:48
AutoHotkey始めて1週間ですが、
例えば、スクリプトに

a::b

とだけ書いて、Alt+aの操作をするとき(Alt押す→a押す→a放す→Alt放す)、
Altを放そうとするとなぜか直前か直後にCtrlダウンアップが割り込む。v1.0.47.06で確認。
(v1.0.39.00だとエラーでスクリプトを実行できない)

これはバグなのでしょうか?

WinXPHomeSP3RC1、AHKは1.0.47.06と1.0.39.00のzip版です。
230unnamed.ahk:2008/06/05(木) 19:13:10
トラックポイントのセンターボタンとHキーを同時押し→カーソル左
トラックポイントのセンターボタンとJキーを同時押し→カーソル下
トラックポイントのセンターボタンとKキーを同時押し→カーソル上
トラックポイントのセンターボタンとLキーを同時押し→カーソル右

ということをやりたくて、下記のようなスクリプトを書いてみたのですが

MButton & h::left
MButton & j::down
MButton & k::up
MButton & l::right

下記のようなエラーが出てしまいます。
Error at line 1.

Line Text: left
Error: This line does not contain a recognized action.

The program will exit.
AHKで実現する方法はないものでしょうか。
231unnamed.ahk:2008/06/05(木) 21:47:39
AutoHotkeyを流行らせるページ → リマップ のところに
略・・・また、「a & b」のようなコンビネーションキーも使用できない。 と書いてる
キーの置き換えのリマップではなく、同時押しの時に キーストロークを発生させる ならできるでしょう
232unnamed.ahk:2008/06/06(金) 21:21:50
>>231
これで上手くいきました。「キーストロークを発生させる」てこういうことなんですね。

MButton & h::Send, {left}
MButton & j::Send, {down}
MButton & k::Send, {up}
MButton & l::Send, {right}
このスクリプトを起動すると、センターボタンによる本来のスクロールが使えなくなってしまうのでこれの解消が次の課題になります。
やっぱりAHKって難しいですね・・・
233unnamed.ahk:2008/06/06(金) 21:33:18
頭に"~"をつければいいんですね。
~MButton & h::Send, {left}
~MButton & j::Send, {down}
~MButton & k::Send, {up}
~MButton & l::Send, {right}
さっきから自問自答してすいません。簡単な事なのになかなか分からないもどかしさと出来たうれしさというか…。
234unnamed.ahk:2008/06/17(火) 21:11:51
マウスジェスチャについての質問です。

ボタンを押している時間によって動作を変えるという事は可能でしょうか?
具体的には、

X1ボタン押下げ中
@0.5秒以内に左ジェスチャ
⇒ "Alt←" を送る
A0.5秒以内にジェスチャなし
⇒ "Ctrl" を送る(押しっぱなし)

即ち、指定の時間以内ならばジェスチャを発動し
その後は任意のキーを代替させたいのです。

お分かりの方がおられませんでしょうか?
235unnamed.ahk:2008/06/17(火) 22:44:47
>>234
ジェスチャとかやったことないですが思いついた方法2つ
スリープで0.5秒待機して前後のマウス位置を比較する方法か、セットタイマで短間隔でマウス位置比較する方法か
どっちも同じようなものだけど行数長いので質問に近い?セットタイマのほうだけ

X1ボタンダウン::
開始時のマウス位置取得、カウンタ0
セットタイマ0.1秒間隔(間隔と回数は適当に変える
りたーん

タイマのサブルーチン:
マウス位置取得
開始時とのマウス位置の比較(閾値や方向も考慮して、2回連続で左だったら・・等でもいいし
左に移動してれば、タイマストップ、"Alt←" を送る、フラグ0セット、りたーん
なんもなければ、カウンタ5回未満なら、カウンタ+1、りたーん
カウンタ5回以上なら、タイマストップ、"Ctrl"ダウン を送る、フラグ1セット、りたーん

X1ボタンアップ::
フラグ0なら、なにもしない、りたーん
フラグ1なら、 "Ctrl"アップ を送る、りたーん
236unnamed.ahk:2008/06/17(火) 23:51:36
MG_Timer()
237unnamed.ahk:2008/06/18(水) 22:12:21
>235

レスありがとうございます。
処理の方向性は理解できました。
ロジックを書けばなんでもできそうですね。
AHK初心者ですので指向錯誤しつつ実装してみます。
238unnamed.ahk:2008/08/19(火) 16:37:06
すみません。目下勉強中です。
ctrl+C(Copy)という機能を右shiftを押したら同じ操作にしたいのですが
RShift::^A
とだけ記述したahkファイルを作ってみましたがうまく行きません。
ひとつだけヒントとして教えていただければほかの機能も応用できるので教えていただけますか。
239unnamed.ahk:2008/08/19(火) 18:16:58
~Aじゃなくて^Cじゃないの?
240unnamed.ahk:2008/08/19(火) 20:12:20
まちがえました。COPYでなく全選択でした。(ctr+A)
241unnamed.ahk:2008/08/22(金) 03:58:59
RShift::^aでどうか
242unnamed.ahk:2008/08/24(日) 21:28:05
ありがとうございました。
小文字にするんですね。わかりました。
ほかの類似機能もいくつかつくってVistaで使ってみました。うまくゆきました。
感謝します。
これからみなさんの中でいろいろ学んでゆきたいと思います。よろしくお願いします。
243unnamed.ahk:2008/08/26(火) 21:38:05
キーリマップについて質問させて下さい。
カタカナ/ひらがなキーを右Windowsキーに置き替えたく、以下の様に設定していますが、うまくいきませ
ん。
●vkF2sc070::RWin
※"カタカナキー:vkF2sc070"はキーリストを参考
ちなみにAppsKeyを右Windowsキーに置きかえるのはうまくいきます。
●AppsKey::RWin
どなたか原因がおわかりになりませんでしょうか?
244unnamed.ahk:2008/08/27(水) 01:56:50
スタートメニューを表示させるのが目的じゃないなら動いているけど
245unnamed.ahk:2008/08/28(木) 00:01:37
>244
レスありがとうございます。
当方の環境では、Windowsキーが押しっぱなし
になり不安点な状態になります。
希望は通常のリマップなのですが、
根本的な問題があるのでしょうか?
246unnamed.ahk:2008/08/28(木) 07:21:07
ほんとだ押しっぱなしになる

~vkF2sc070::RWIN
vkF2sc070::Send,{RWIN}
vkF2sc070::Send,{RWINDOWN}{RWINUP}

とかいろいろ試したけどだめだった、原因はわからない
247unnamed.ahk:2008/08/31(日) 21:08:40
sc07B & m::send,{Blind}{Down}
sc07B & i::send,{Blind}{Up}
sc07B & j::send,{Blind}{Left}
sc07B & k::send,{Blind}{Right}
sc07B::Send,{sc07B}
といいますように、無変換キー+○○で、
ダイヤモンドキーを実装させています。

ここで、
無変換キー単打→無変換
無変換キー長押し→動作なし
というようにキーを割り当てられないでしょうか?
カーソルを動かそうと思ったけれどやっぱり止めた、
などと言うときに無変換キーが押されては不便ですので。
同時に、無変換キーはよく使いますので単純に無効にはしたくありません。

お力を貸していただけますと本当に助かります。
よろしくお願いします。
248unnamed.ahk:2008/11/16(日) 01:19:40
MauseGesture.ahkから流れてきました。

バックグラウンドのiTunesを操作したくてahkのスクリプトを書いてみようと思ったがうまくいかない。

!b::
DetectHiddenWindows,On
ControlSend,,right,ahk_class iTunes
return

管理人さんの使用例を参考に書いてみたけどダメみたい。
一応iTunesの「次の曲」をAlt→で動作させようとしてるんだけど、どこを治せばよいのでしょう。
249unnamed.ahk:2008/11/16(日) 14:41:12
まずはフォアグラウンドで Sendで操作できるか試してみ
ちなみに Alt→ は !{Right} な
250unnamed.ahk:2008/11/17(月) 23:33:12
#b::
Send,,+{Right},ahk_class iTunes
return

フォアグランドで試すってこういうことですよね。
で色々調べながらControlを抜いて上記にしてみたらアクティブになってるとき動作。
しかし、win+bで起こる動作も同時に発動。
これの殺し方は後で考えればいいということにして

#b::
DetectHiddenWindows,On
Send,,+{Right},ahk_class iTunes
return

あ、ちなみにAlt→じゃなくてShift→でした。
バックグラウンドのiTunesの曲を飛ばしたいだけなんです。

こうすると非アクティブの時でも動作同じように動作すると思ったけど全く動作せず…

便利そうだと思って飛びついたが難しい…。
何かヒントでもいただければ幸いです。
251unnamed.ahk:2008/11/17(月) 23:36:31
return

あ、ちなみにAlt→じゃなくてShift→でした。
バックグラウンドのiTunesの曲を飛ばしたいだけなんです。

こうすると非アクティブの時でも動作同じように動作すると思ったけど全く動作せず…

便利そうだと思って飛びついたが難しい…。
何かヒントでもいただければ幸いです。
252unnamed.ahk:2008/11/28(金) 20:01:59
>248
俺も素人なんだが、こう書いてみた。どうだろう?
ちなみに次の曲を指定するなら→キーだけでよくね?

IfWinExist, ahk_class iTunes
{
ControlGet, iTctl, hwnd, ,iTunesTrackList1
ControlSend, , +{right}, ahk_id %iTctl%
}
return
253unnamed.ahk:2008/12/01(月) 00:39:40
ありがとうございます!
できました!

DetectHiddenWindows,On
これは無くていいのですね…

AHK面白いけど難しいですね。
もう少し勉強してみます。
254unnamed.ahk:2009/04/05(日) 00:48:08
キーコードが別なのに機能が同じ動作のキーで誤作動してしまうバグと思われるものを発見しました。
具体例としてはテンキーの1はNumLockオフ時だとEndとして動作しますが、
メインのキーボードのEndとはキーコードが別です。
しかし、AutoHotKeyに割り当てるとキーコードで一つのキーのみに当てたはずの機能が
同じ意味のキーでも動いてしまいます。

Numlockオフ時のテンキー1のキーコードはvk23sc04Fで動作は"End"となります。
キーボードのEndキーのキーコードはvk23sc14Fです。
sc以降が若干違うので別のキーとして識別できると思ったのですが、同じと見なされている模様。

ちなみにNumLockオン時のテンキー1はvk61sc04Fとなります。

キーコードが同一でないにも関わらず動いてしまうのはバグでしょうか?仕様でしょうか?
255unnamed.ahk:2009/04/05(日) 00:49:44
省略されてるので省略部分の書き直し・・・

Numlockオフ時のテンキー1のキーコードはvk23sc04Fで動作は"End"となります。
キーボードのEndキーのキーコードはvk23sc14Fです。
sc以降が若干違うので別のキーとして識別できると思ったのですが、同じと見なされている模様。

ちなみにNumLockオン時のテンキー1はvk61sc04Fとなります。

キーコードが同一でないにも関わらず動いてしまうのはバグでしょうか?仕様でしょうか?
256unnamed.ahk:2009/05/25(月) 18:36:28
.NETFrameworkで作成されたアプリケーションのコンボボックスの選択値を取得する方法を知っている方がみえましたら教えてください。
ControlGet関数でChoiceを使用しても値を取得できません。
よろしくお願いします。
(管理人様へ:先日は、スレ違いで申し訳ありませんでした。)
257unnamed.ahk:2009/06/01(月) 16:22:39
AutoHotKeyで
Excelのメニューバーを操作する方法についてですが
方法、ヒント、類似物等ありましたらお願いします.
具体例:AutoHotKeyでExcelのメニューバーに独自で
    追加したメニュー(ズームイン(&+))を
    実行、クリックする
    以上です。
258unnamed.ahk:2009/06/01(月) 21:39:23
Send,!+
アクセラレータキー付けてんなら活用したらいいんじゃね
厳密に「クリック動作のエミュレート」がしたいなら
PixelSearch & MouseClick (ControlClick)

「Excelでやりたいこと」が具体的に決まってるなら素直にExcelマクロ使ったほういいとも思うが。
'例) ZoomInマクロ
Sub ZoomIN()
 On Error Resume Next
 ActiveWindow..Zoom = ActiveWindow..Zoom+25
End Sub
259unnamed.ahk:2009/06/01(月) 23:52:36
#257の者です。回答どうもです。
ズームイン(&+)のアクセラレータ(&+)ですが
当初「Alt + ;」で起動すると思ったのですが反応してくれません。
上記は特殊な組み合わせの様で押下してもスルーされますね。
現状、メニュー「ズームイン(&+)」に割当てているマクロは例)で記載されているもののとほぼ同じです。
アクセラレーター気を&L等の他の組み合わせにすれば普通に反応するのですが&+では駄目のようです.
こだわりがあり&+(Alt + ;)で何とか実現したいです。
260unnamed.ahk:2009/06/01(月) 23:54:49
レスにありました.
「PixelSearch & MouseClick (ControlClick)」を少し探ってみます。
※何かしら糸口があると願いつつ。
261unnamed.ahk:2009/06/02(火) 00:19:38
;で+出すにはShiftと同時押ししないとだめなんじゃん?
試してないけどテンキーの 「+」 のほうじゃないの
262unnamed.ahk:2009/06/02(火) 01:18:18
>;で+出すにはShiftと同時押ししないとだめなんじゃん?
そうだったんですね!!
記号の  "+"はShift + ;の同時押しで
テンキーの"+"が単独で押せるというわけなんですね。
Excelのメニュー「ズームイン(&+)」にビットマップの
イメージを付けてこれをPixelSearch()によって座標を
取得しこれをMouseClick()するという面倒な事を検討
していました。
とりあえず、レスの同時押しで運用していけそうです。
なので唐突ですがこれでクローズしたいと思います.
どうもです。
263unnamed.ahk:2009/06/02(火) 09:51:47
こっち人いないみたいなんで一応誘導貼っとく

AutoHotkey スレッド part8
http://pc12.2ch.net/test/read.cgi/software/1243005818/
264unnamed.ahk:2009/10/30(金) 10:41:58
SetWorkingDir, %A_ScriptDir%

p0 := "test.reg", p1 := "test.txt"
hModule := DllCall("LoadLibrary", str,"nkf32.dll")
DllCall("nkf32.dll\SetNkfOption", str,"-s")
;NkfFileConvert2(LPCSTR fInName,LPCSTR fOutName)
DllCall("nkf32.dll\NkfFileConvert2", str,p0, str,p1)
DllCall("FreeLibrary", UInt, hModule)

Unicodeで書かれた文書や文字列はnkfを使ってshift-jisに変換してからというのはググってわかったのですが
DllCallの使い方が下手なのかさっぱり機能しません。空のtest.txtができます。
間違いを指摘いただければありがたいです
265unnamed.ahk:2009/11/22(日) 08:08:17
スクリプト起動時に自動で初期化された変数が欲しいんですが
そんな変数はありますでしょうか?

#Persistent
SetTimer, Foo , -100
return

Foo:
Bar = 100
return

上記コードで一応できるかなと思ったんですが、実行してくれません。
SetTimerの間隔を正の値にし繰り返させても×でした。

よろしくお願いします。
85KB
名前: E-mail:
ファイル:
0ch BBS 2005-10-08