■ このスレッドは過去ログ倉庫に格納されています
AutoHotkey スレッド part11
- 1 :名無しさん@お腹いっぱい。:2010/07/30(金) 18:30:27 ID:9VNdm34c0
- ■公式
http://www.autohotkey.com/
■日本語解説
AutoHotkeyを流行らせるページ(ミラー)
http://ahk.xrea.jp/ (不調時は http://hdd.s300.xrea.com/ahk/ )
AutoHotkeyJp
http://sites.google.com/site/autohotkeyjp/
Autohotkey日本語ヘルプ(chmファイル)
http://www6.atwiki.jp/eamat/
■過去スレ
1 http://pc7.2ch.net/test/read.cgi/software/1098531338/
2 http://pc7.2ch.net/test/read.cgi/software/1129836713/
3 http://pc11.2ch.net/test/read.cgi/software/1157043396/
4 http://pc11.2ch.net/test/read.cgi/software/1184556627/
5 http://pc11.2ch.net/test/read.cgi/software/1201502896/
6 http://pc11.2ch.net/test/read.cgi/software/1219130051/
7 http://pc12.2ch.net/test/read.cgi/software/1230694774/
8 http://pc12.2ch.net/test/read.cgi/software/1243005818/
9 http://pc12.2ch.net/test/read.cgi/software/1253888736/
10 http://pc12.2ch.net/test/read.cgi/software/1265518996/
【重要】 スクリプトが動かない等の質問は、OS・AHKのどのバージョンを利用しているかを明記すること。
関連リンク>>2以降も参照
- 2 :名無しさん@お腹いっぱい。:2010/07/30(金) 18:31:07 ID:9VNdm34c0
- ■派生版
AutoHotkey_L (内部Unicode、オブジェクト指向などの言語仕様拡張)
http://www.autohotkey.net/~Lexikos/AutoHotkey_L/
ironahk (.NET製、クロスプラットフォーム)
http://code.google.com/p/ironahk/
AutoHotkey64 (ネイティブ64ビット版) (AHKLベース)
http://www.autohotkey.com/forum/topic58237.html
AutoHotkey.dll (真のマルチスレッド対応など) (AHKLベース)
http://www.autohotkey.net/~tinku99/ahkdll/
駄目文字微対策版 (ファイル名処理部分のみ不具合対応)
http://yak.myhome.cx/junks/#ahk.cp932
■ 関連スレ
AutoIt
http://pc12.2ch.net/test/read.cgi/software/1277173327/
- 3 :名無しさん@お腹いっぱい。:2010/07/30(金) 18:52:13 ID:JeFr0hn90
- ■ 関連記事のあるサイト
AutoHotkey メモ - Principia
http://principia.s54.xrea.com/index.php?AutoHotkey%20%A5%E1%A5%E2
AutoHotKey - notitle.txt
http://kan.s151.xrea.com/?AutoHotKey
なまず日記
http://www.tierra.ne.jp/~aki/diary/
eamatの日記
http://d.hatena.ne.jp/eamat/
おばけ日記
http://d.hatena.ne.jp/obake/
1 Hour Software by Skrommel - DonationCoder.com
http://www.donationcoder.com/Software/Skrommel/
Tips N Tricks(公式フォーラムのトピック)
http://www.autohotkey.com/forum/topic8795.html&highlight=gui
- 4 :名無しさん@お腹いっぱい。:2010/07/30(金) 18:52:54 ID:JeFr0hn90
- ■ リマップ・ホットキー割り当て
Q1:[CapsLock(英数)]や[ひらがな]キーの割り当てがうまくいかないよ
A1:OSのローカライズ段階で発生してる問題なので日本語環境だとLock系キーの動作は不定。
OS側がキーUp/Down情報が正しく返してこないのでAHKのみで対処は無理なので、
ドライバレベルでのリマップソフト(窓使いの憂鬱など)や、レジストリ変更でリマップを行う(ChangeKeyなど)を利用して
[CapsLock]を別の普段使わないキー([F13]〜[F24]など)に割り当ててからAHKで利用すると良い。
例) ChangeKeyを使って[ひらがな]を[F13]にする
AutoHotkeyで任意のキーをF13にリマップする例えばF12をF13にリマップし、スクリプトを実行)。
F12::F13
Changekeyを起動する。( ttp://www.forest.impress.co.jp/lib/sys/hardcust/keyboard/changekey.html )
「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。
F12を押すとスキャンコード「0x0064」,該当するキーは「該当なし」と表示される。(0x0064はF13のスキャンコード)
「上のスキャンコードでキー変更する」をクリックすると「変更前 (中略) 0x0064 をどのキーに変更しますか?」
というウィンドウが表示されるので「ひらがな」キーを選択。「登録」をクリックし、Windowsを再起動する。
リマップ( F12::F13 )を解除する。
Q2:「^1::Esc」とリマップ定義したけど [Ctrl]+[1] を押したらスタートメニューが出ちゃうけどどうすればいいの?
A2:リマップは修飾キー(Ctrl,Shift,Alt,Win)の押下状態を引き継いでキー発行するので、[Ctrl]+[Esc] がキー送信されるため。
これを避けるには、「Send」コマンドを利用して明示的に修飾キーなしのキーを発行をすればよい。
^1::Send, {Esc}
Q3:[Shift], [Ctrl], [Alt], [Win]以外を修飾キーとしてキー割り当てしたいよ
A3:コンビネーションキーの機能で実現ができる。
例) 無変換 + IKJLキーをそれぞれ「↑↓←→」に割り当てたい場合は以下のように記述する。
sc07B & I::Send, {Blind}{Up}
sc07B & K::Send, {Blind}{Down}
sc07B & J::Send, {Blind}{Left}
sc07B & L::Send, {Blind}{Right}
- 5 :名無しさん@お腹いっぱい。:2010/07/30(金) 18:53:38 ID:JeFr0hn90
- Q4:「XX hotkeys have been received in the last XXXXms.」って怒られるんだけど、、、(XXは環境による)
A4:多分自分自身のキーを送って無限ループになっている。 例) 「a::Send, a 」
先頭に $ を付ければ回避できる(NT系のみ)。 例) 「$a::Send, a」
#UseHookで全部にキーボードフックを適応する方法でも可。
■ マウス関連
Q1:「RButton & WheelDown::〜」とやったら右ボタンが使えないし、
「~RButton & WHeelDown::〜」とやったらメニューがでてうざい。
A1:決定的な解決策はないけど、メニューが出たら消すって方法なら↓。
~RButton & WheelUp::
Send, +^{Tab}
SetTimer, CancelRMenu, -1
Return
~RButton & WheelDown::
Send, ^{Tab}
SetTimer, CancelRMenu, -1
Return
CancelRMenu:
KeyWait, RButton
SetTitleMatchMode, RegEx
WinWait, ahk_class #32768|MozillaDropShadowWindowClass,,0.5
If (!ErrorLevel)
Send, {ALt}
Return
Q2:キーリマップを使うとキー押下中に連打するけど、マウスボタンの場合は連打しない・・・
A2:マウスはキーリピートしないので、Loopなどを使って自前でリピートさせてください。
- 6 :名無しさん@お腹いっぱい。:2010/07/30(金) 18:54:18 ID:JeFr0hn90
- ■ IME関連
Q1:IMEのOn/Offの切り替えや、On/Offの状態を得るにはどうすればいいの?
A1:http://www6.atwiki.jp/eamat/pub/MyScript/ の「IME.ahk」を使いましょう。
Q2:IMEが現在文字を入力している、または変換中であるかどうかを得ることはできる?
A2:↑のIME.ahkで一部可能(IEやFirefox,MS-Wordのようにインライン化しているアプリでは無理)
■ ジョイスティック関連等
Q1:ジョイスティックのリマップがうまくいきません!!助けて
A4:ジョイスティックではリマップできないので、「Send」コマンドでキー発行してちょ
× Joy1::Esc
○ Joy1::Send, {Esc}
Q2:ジョイスティックの上下左右にキーを割り当てたいけど、JoyLeft とか JoyUp って仮想キーは無いの?
A2:無いです。AHKのジョイスティックサポートはかなり貧弱なのでプログラマブルにやる必要がある。
Q3:ジョイスティックのボタン1とボタン2の入れ替えなどはどうやってやるの?
A3:AutoHotkeyではできません。
Q4:Bluetoothリモコン等を使えたらいいなぁ・・・
Q5:過去ログを漁るといいかも。
- 7 :名無しさん@お腹いっぱい。:2010/07/30(金) 18:55:03 ID:JeFr0hn90
- ■ 日本語の取り扱い
AuthoHotkeyは英語圏でつくられたソフトでマルチバイト文字列のことを全く考慮していないので以下の問題が起き得る。
なお、ユニコード対応されたAutoHotkey_Lでは以下の問題は発生しない。
Q1:「〜AチЯ`荏柿義形港餐汁秦疏蛋伝覗描冒輿倭兪啻嫣彖拜杼歔」を含む文字列がうまく扱えないよ
A2:これらの文字の2バイト目が、AHKのエスケープ文字である0x60[`]であるために起きる。
回避方法は以下の通り
(1) これらの文字の"直後"に「`」を記述する(例:「線形`代数」)
(2) 外部ファイルに文字列を定義して後から読み込む方式にする(IniRead、FileRead 等)
(3) #EscapeCharでエスケープ文字を別のものに変える(玄人向け)
Q2:IfInString や InStr()、StringReplaceで意図しない結果が出ることがあるんだけど、、、
A2:文字単位ではなくバイト毎に比較するだけなので、以下のような場合は意図せずにマッチしたりする。
回避したい場合は、流行らせるページの「マルチバイト文字列操作関数群」などを使う。
例) 意図しない置換
str = モノ ; 0x83 0x82, 0x83 0x6d,
StringReplace, str, str, c, c, All ; c:0x82 0x83
MsgBox, %str%
Q2:A_ScriptDir、A_LoopFileName や SplitPath の結果がおかしいことがあるんだけど?
A2:「\」記号を無条件でディレクトリ区切り文字としてファイル/ディレクトリ/拡張子を分割してしまうことによる。
対象となりうる文字:
―ソЫ\噂浬欺圭構蚕十申曾箪貼能表暴予禄兔喀媾彌拿杤歃濬畚秉綵臀藹觸軆鐔饅鷭xx\\
これは、>>1にある「駄目文字微対策版」を使うことで回避できる。
- 8 :名無しさん@お腹いっぱい。:2010/07/30(金) 18:56:29 ID:JeFr0hn90
- ■ スクリプト仕様
Q1:「a=abc」と「a:="abc"」って違いがある? / 「If a=1」と「If (a=1)」って違いがある?
A1:意味としては違いは無い。単体では、コマンド形式(共に前者)の方が「式」形式(同後者)より*少し*速い。
複数条件の場合、IfのネストよりはAND(&&)条件で「式」を並べた方が速い。
が、バッチでかなりの回数(数万↑〜)回したりする場合以外は、体感出来るほどの差はない。
Q2:配列変数やハッシュ(仮想配列)は使ええないの?
A2:「式」を使うと配列やハッシュのように変数を参照できる。
Loop, 10
value_%A_Index% := A_Index**2
Q3:テキストエディタでキーワードの色づけなどをしたいんだけど。
A3:「{AutoHotkeyのフォルダ}\Extras\Editor」に各種エディタの定義ファイル及びキーワード一覧あり
Q4:GUI作るのめんどくせ〜〜
A4:公式( ttp://www.autohotkey.com/download/ )から SmartGUI Creator をDLして使うと楽。
Q5:AHKってマルチスレッドじゃないの?
タイマーやMsgBox, WinWait, KeyWaitを使ってるけど思った通りに動かない。
A5:「擬似マルチスレッド」です。最後に割り込んだスレッドが終わるまで元スレッドは動きません。
MsgBox、WinWait、KeyWait、Process,WaitClose などをタイマーで複数動かす時は注意。
> 要は処理系統が複数同時に走らないってこと。図にするとこんな感じ。
> → 実行中、 …:割り込み終了待ち
> 元スレッド →→→→→→……………………………………→→→→
> ★割込 ↑再開
> 割り込みスレ →→→→…………→→→→→→END
> ◆割込 ↑再開
> 更に割り込み →→→END
Q6:このスレからコピペしたんだけど、うまく動かないよ。どうして?
A6:このスレではインデントに全角スペースを使ってコードを貼り付ける事があるので、
全角スペースをタブや半角スペースに変換してみよう。
- 9 :名無しさん@お腹いっぱい。:2010/07/30(金) 18:57:10 ID:JeFr0hn90
- ■ AutoHoekey_Lって具体的にどう違うの?
本家との違いは以下の通り
(1) ユニコード対応されているので、駄目文字(>>6)が無いなど日本語の取り扱いが楽。
(2) #If 任意の「式」を用いてキーマップ定義ができる
(3) メニューにアイコン表示ができる
(4) Exeやトレイアイコン描画の向上
(5) GUIのテキスト表示のレンダリング方法を変更できる(アンチエイリアスOFF等)
(6) 正規表現にマッチした文字列を引数にして関数を呼べる
(7) Send, {Asc XXXX}のUnicode版が使える
(8) 配列変数や連想配列として使えるオブジェクトの導入。
目玉は(1)および(2)。 ユーザ定義関数作って #If で使うととても便利。
例1) [Ctrl]+[Alt]+[Space]で On/Off 切り替え。変数がOnの時のみIKJLでカーソル移動可。
^!Space::KeyMap:=!KeyMap
#If (KeyMap=1)
I::Up
K::Down
J::Left
L::Right
#If
例2) トレイの時計部分でホイールを回すと音量変更
#If MouseOver("ShellTray_Wnd", "TrayClockWClass")
WheelUp::SoundSet,+5, Master
WheelDown::SoundSet, -5, Master
#if
MouseOver(win, ctrl="") {
MouseGetPos,x,y,hwnd,class2,1
WinGetClass, class1, ahk_id %hwnd%
Return InStr(class1, win) && InStr(class2, ctrl)
}
- 10 :名無しさん@お腹いっぱい。:2010/07/30(金) 19:35:22 ID:elYoeAxq0
- Q:[Ctrl]や[Shift], [Alt]が押されっぱなしになることがあるけど、これってAHKのせい?
もしそうじゃないとしたら、AHKで何か対処できる?
A:報告が多くありますが、よく分かっていません。以下のような報告があります。
・クリップボードユーティリティ(CLCLなど)で[Ctrl]+[V]で貼り付けを行った後に起きるという報告があります。
・Logicool(Logitec) の "SetPoint" は「クロ」との報告があります。
・窓使いの憂鬱をデュアルコア以上のプロセッサで使っている場合に起きるという報告もあります。
・VMWareが悪さしているという報告もあります。
上記のソフトはAHKより下位(物理層寄り)なので、AHKでは物理的にキーが押されているとしか分かりません。
タイマーでキー押下を監視して一定時間以上押下されていたら警告を出したり、
SetPoint を再起動などで対処していたりするようです。
ttp://pc11.2ch.net/test/read.cgi/software/1219130051/782
782 名前:名無しさん@お腹いっぱい。[sage ] 投稿日:2008/11/27(木) 01:43:58 ID:pOwnMABe0
よく分からんけど、 Ctrl とかが押しっぱなしになる。解決はよく分からんが対処法としてアラートだすようにした。
if書きたくないから、三項演算子だいすき
#SingleInstance
#Persistent
keys = Ctrl|Shift|Alt|LWin|RWin
alertDur = 3000 ;(ms)
SetTimer, Alerter,200
return
Alerter:
alert =
Loop, PARSE, keys, |
{
%http://www1.axfc.net/uploader/A/so/
alert .= (%http://www1.axfc.net/uploader/A/so/
}
Tooltip, %alert%
return
- 11 :名無しさん@お腹いっぱい。:2010/07/30(金) 19:35:37 ID:elYoeAxq0
- 10 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2010/02/07(日) 14:26:39 ID:q0UbybZB0
お役立ちリンク
公式フォーラムより
http://www.autohotkey.com/forum/topic34517.html 標準入出力を扱いたい
http://www.autohotkey.com/forum/topic26855.html ListViewで大きな画像を扱いたい
http://www.autohotkey.com/forum/topic19509.html GUIで標準のもの以外を使いたい
http://www.autohotkey.com/forum/topic20097.html GUIを手軽に作りたい
http://www.autohotkey.com/forum/topic39598.html DllCallで定数調べるのマンドクセ
http://www.autohotkey.com/forum/topic22975.html コンパイルユーティリティ(Compile_AHK II)
http://www.autohotkey.com/forum/topic23072.html HIDを直に読んで、キーボードやマウスの拡張ボタンの状態を得たい
http://www.autohotkey.com/forum/topic19367.html Windowsのイベントをフックして色々やりたい
http://www.autohotkey.com/forum/topic20701.html ShellFolder() : エクスプローラのPathおよび選択ファイルを取得
http://www.autohotkey.com/forum/topic20701-42.html ShellDesktop() : デスクトップで選択されたファイルを取得
http://www.autohotkey.com/forum/topic22923.html COM Standard Library
http://www.autohotkey.com/forum/topic49433.html COMをオブジェクト指向で使う
http://www.autohotkey.com/forum/topic21451.html ポップアップメニューの情報を得る
http://www.autohotkey.com/forum/topic53103.html 高速・軽量配列ライブラリ
http://www.autohotkey.com/forum/topic17549.html XPATHライブラリ
- 12 :名無しさん@お腹いっぱい。:2010/07/30(金) 19:35:53 ID:elYoeAxq0
- 11 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2010/02/07(日) 17:32:06 ID:3wCYCZ7UP
■自分の環境で、どのキーを押したかを調べる方法
キーボードのキーアサインや、Up/Downの状態を知りたければ、
AHKを常駐させて、トレイアイコンで右クリしてKeyHistoryを開けば、出てくる。
F5でリフレッシュされるので、調べたいキーを押した後、F5を連打する。
KeyHistoryは、キーを押した後にF5を押してリフレッシュしないと
内容が表示されない。また、F5でリフレッシュすると、F5を押した、という内容も
合わせて出てくるため、少々見にくい。
そんなときは>>10の
「HIDを直に読んで、キーボードやマウスの拡張ボタンの状態を得たい」
のリンク先にあるスクリプトを実行する。コンソール(DOSプロンプトウインドウ)が
でてきて、そのウインドウへ、リアルタイムにキーの上げ下げ状況が表示される。
PrintScreenや、日本語入力などの特殊キーにHotkeyを定義しようとして、
うまく動かない場合は、これで調査すると、原因を掴みやすい。
- 13 :名無しさん@お腹いっぱい。:2010/07/30(金) 19:36:48 ID:elYoeAxq0
- ネタ: テキスト音声合成ミドルウェア AquesTalk を使って時報
準備:
http://www.a-quest.com/products/aquestalk.html からWin版を落として、
書庫にあるAquesTalk2Da.dll を Autohotkey.exe のフォルダに置く。
以下のスクリプトを実行する。[Win]+[1]で現時刻を喋る。
#1::Talk("<NUMK VAL=http://www1.axfc.net/uploader/A/so/
; phrase: 喋る内容(音声記号列という名の文字列)
; speed:速さ(遅50〜300速)
; sync:喋り終わるまで待つかどうか(真偽値)
Talk(phrase, speed=100, sync=true) {
static hModule, hMe
If (!hModule) {
hModule := DllCall("LoadLibrary", "Str", "AquesTalk2Da.dll", "Ptr")
hMe := DllCall("AquesTalk2Da\AquesTalk2Da_Create", "Ptr") ; 合成エンジン作成
}
If (sync) {
Return DllCall("AquesTalk2Da\AquesTalk2Da_PlaySync", "AStr", phrase, "Int", speed, "UInt", 0, "Int")
} Else {
If DllCall("AquesTalk2Da\AquesTalk2Da_IsPlay", "Ptr", hMe, "Int") ; 喋り中なら
DllCall("AquesTalk2Da\AquesTalk2Da_Stop", "Ptr", hMe) ; 止める
Return DllCall("AquesTalk2Da\AquesTalk2Da_Play", "Ptr", hMe, "AStr", phrase, "Int", speed, "UInt", 0, "UInt", 0, "UInt", 0, "UInt", 0, "Int")
}
}
※ 上はAHKL(Unicode)用なので、本家で使う場合は "Ptr"→"UInt", "AStr"→"Str" に置換する
- 14 :名無しさん@お腹いっぱい。:2010/07/30(金) 19:37:53 ID:elYoeAxq0
- テンプレ以上。
>>11>>12の
>11 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2010/02/07(日) 17:32:06 ID:3wCYCZ7UP
とかの部分が余計なので次スレから削除よろしく。手違いスマン。
- 15 :名無しさん@お腹いっぱい。:2010/07/30(金) 19:53:34 ID:p5e5vCII0
- いちおつ
- 16 :名無しさん@お腹いっぱい。:2010/07/30(金) 20:37:12 ID:E3vpMotR0
- >>1おつ
過去ログが多いスレだと
過去URL1 過去URL2
過去URL3 過去URL4
っていう風になってるスレもあるね
- 17 :名無しさん@お腹いっぱい。:2010/07/30(金) 20:42:03 ID:elYoeAxq0
- ●持ちでも数スレ〜10スレだけ遡って書いてあれば、part1まで辿っていけるわけだし
- 18 :名無しさん@お腹いっぱい。:2010/07/30(金) 23:55:59 ID:7qkG/NZl0
- いちおつ
しっかしテンプレなげーなw
- 19 :名無しさん@お腹いっぱい。:2010/07/31(土) 14:16:51 ID:K6Z0VvT+0
- > ttp://pc12.2ch.net/test/read.cgi/software/1265518996/979 の「ERROR: No COM Dispatch Object!」の件
これはウチでも起きる。
ちなみにAHK64の32ビット版のビルトインのやつでも起きる。
(COM_CreateObject を ComObjCreate に置換するだけ)
よくわからないけど、メソッドとプロパティがごっちゃになってるっぽい感じ。
解決法はわからんorz
- 20 :名無しさん@お腹いっぱい。:2010/08/01(日) 06:42:39 ID:uqxw/fPd0
- ankでファンクションキー割り当てたいんだけど
Alt+F4の場合Send,!F4では無理みたいなんだけど
ファンクションキーってどうやったら割り当て出来るの?
- 21 :名無しさん@お腹いっぱい。:2010/08/01(日) 06:45:10 ID:lw0qNV5A0
- !{F4}
ってか、もうちょっとマニュアル読もうぜ。試行錯誤も足りん。
- 22 :名無しさん@お腹いっぱい。:2010/08/01(日) 07:56:17 ID:uqxw/fPd0
- あれ?それで行けた?
まず最初に試したのがソレだったんだが無理だったんだ
!{f4}だったのが駄目だったのか
- 23 :名無しさん@お腹いっぱい。:2010/08/01(日) 08:02:51 ID:uqxw/fPd0
- 右↑とか↓とかだと閉じれるが右↓↑だと設定が機能しないのはなぜ?
- 24 :名無しさん@お腹いっぱい。:2010/08/01(日) 08:06:42 ID:uqxw/fPd0
- ank解凍してもう一度設定したら出来た
>>21
バカでごめん
ありがとう
- 25 :名無しさん@お腹いっぱい。:2010/08/04(水) 05:33:02 ID:KpoLKvEb0
- リマップを使ってキーを入れ替えるスクリプトを書いたのですが、
困ったことにキーボードからの入力だけでなくマウスやアプリケーションが
はき出したキーまでもリマップされるようになりました。
例えばa::b b::c c::aとした時、キーボードでaを押したときにbが入力され、これは希望動作なのですが
アプリケーションでaをはかせたときにbが入力されてしまい、これは避けたいです。
aをはかせたい時にリマップを考慮してcをはかせるのも避けたいです。
リマップされるのはキーボードによる入力の場合だけで良く、
アプリケーションによる入力の場合(ahkのkeyhistoryでtype:aフラグが立っていた)
はリマップさせたくないのですが可能でしょうか?
- 26 :名無しさん@お腹いっぱい。:2010/08/04(水) 07:58:00 ID:7S5kTAOq0
- DllCall を使ったスクリプトを AHK64 に移植する際、どういうことに気をつければ良い?
さっぱり動かないんだけどw
これを機会に勉強したいので、参考になるサイトなど教えてもらえたら嬉しいです。
- 27 :名無しさん@お腹いっぱい。:2010/08/04(水) 09:10:53 ID:a8HN120B0
- 前スレかそのまた前スレ辺りに一通り出てたな>64に移植
- 28 :名無しさん@お腹いっぱい。:2010/08/04(水) 10:34:11 ID:7S5kTAOq0
- 流行らせるページにあった ThumbRemap スクリプトを適当に書き換えて使っています。
こいつを AHK64 で動かしたのですが、どうにも動きません。
前スレ該当レス (>>749,752,755,757,762-765) を見たところ
Put/Get のところがマズそうなんですがよく分かりせん。
(参考のスクリプトはファイルの期限切れで閲覧できませんでした)
どなたか、アドバイスをいただけないでしょうか。
下記に該当のスクリプトを記載します。
オリジナルからの更新は、パッドが対応していれば 2 本指 + キーも定義できます。
(#If, TouchPad =2 以下に定義する)
- 29 :名無しさん@お腹いっぱい。:2010/08/04(水) 10:35:14 ID:7S5kTAOq0
- ; AHK_L 版 ThumbRemap モドキ / Synaptics 製タッチパッド専用
TouchInit:
IBuf := DllCall("GlobalAlloc", "Ptr", 0x40, "Ptr", A_PtrSize * 4, "Ptr")
OBuf := DllCall("GlobalAlloc", "Ptr", 0x40, "Ptr", A_PtrSize * 2, "Ptr")
NumPut(0x01000000 | 10, IBuf + A_PtrSize * 0, 0, "Ptr")
NumPut(0x01000000 | 729, IBuf + A_PtrSize * 1, 0, "Ptr")
NumPut(~0 - 1, IBuf + A_PtrSize * 3, 0, "Ptr")
SetTimer, TouchCheck, 10
TouchCheck:
If GetKeyState("LButton")
Return
hSynTP := DllCall("CreateFile", "Str", "\\.\SYNTP", "Ptr", 0xC0000000, "Ptr", 3, "Ptr", 0, "Ptr", 3, "Ptr", 80, "Ptr", 0, "Ptr")
DllCall("DeviceIoControl", "Ptr", hSynTP, "Ptr", 0x80006004, "Ptr", IBuf, "Ptr", A_PtrSize * 4, "Ptr", OBuf, "Ptr", A_PtrSize * 2, "Ptr", 0, "Ptr", 0, "Ptr")
DllCall("CloseHandle", "Ptr", hSynTP, "Ptr")
TouchPad := NumGet(OBuf + A_PtrSize) & 0xFF
Return
- 30 :名無しさん@お腹いっぱい。:2010/08/04(水) 10:36:01 ID:7S5kTAOq0
- ; 続き、キーバインド定義
#If, TouchPad = 1
I:: Click, WheelUp
K:: Click, WheelDown
*J::Click("Left")
*L::Click("Right")
*O::Click("Middle")
Click(value) {
StringReplace, key, A_ThisHotKey, *
Click, % "Down " value
KeyWait, % key
Click, % "Up " value
}
#If, TouchPad =2
#If
- 31 :名無しさん@お腹いっぱい。:2010/08/04(水) 11:45:02 ID:5a8nfcIui
- 32bit符号なしが UINT だけど、全部がポインタじゃないよ。
フラグとかで使う DWORD 型はそのまま UINT のままでいい。
あそこのは相当古いし上に、コメントも少ないからかなり苦労するな。
GlobalAlloc は大抵は VarSetCapacity でいいし、
NumPut/Get, StrPut/Get を使う方がいいところも多い。
- 32 :名無しさん@お腹いっぱい。:2010/08/04(水) 14:08:02 ID:RjWEdL6U0
- >>25
$
- 33 :25:2010/08/04(水) 17:34:52 ID:KpoLKvEb0
- >>32
レスありがとうございます。
$a::bとしてみましたが、以前と変わらずアプリケーションからの入力もリマップされてしまいます。
スクリプト実行前
41 01E a d 0.56 A
41 01E a u 0.11 A
スクリプト実行後
41 01E h d 0.78 A
42 030 i d 0.00 B
41 01E h u 0.14 A
42 030 i u 0.00 B
- 34 :名無しさん@お腹いっぱい。:2010/08/04(水) 23:03:24 ID:0HOUPXSK0
- Windows7のエクスプローラのリストビューにアクセスする方法ってありますか?
デスクトップ以外だとうまくいかないのですが
- 35 :名無しさん@お腹いっぱい。:2010/08/05(木) 00:20:17 ID:6WJcNi4Y0
- >>25
前スレの795にデバイスID(キーボードのデバイスID)で分岐させる方法が希望通りの動作に近いと思う。
代案としてはカスタマイズや設定の全てをAutohotkeyに任せること。
- 36 :28:2010/08/05(木) 03:39:36 ID:hd9YaTXp0
- >>31
そうなんですね。一部をオリジナルの UInt 型に戻しました。
ポインタ型についてもう少し勉強してみます。
不躾なお願いなのですが、どなたかに本スクリプト (>>29-30) の流れを解説して
いただけないでしょうか。DllCall 内の関数は型通りに使われているようなので、
問題点はバッファー確保 (IBuf & OBuf) と NumPut/Get の使い型だと思っています。
ここから先を理解するのに難儀しており、アドバイスいただければ幸いです。
- 37 :名無しさん@お腹いっぱい。:2010/08/05(木) 04:24:50 ID:dptoT0ZSi
- デバイス開いて(CreateFile)制御命令送って(DeviceIoControl)データ読みだし(NumGet)。
開いたものは閉じる。
命令用(in)と結果用(out)のバッファはあらかじめ確保(Alloc)しておく。
というか、書いてあるとおりだぜ。
DllCall いじるなら、 MSDN で関数を調べようぜ。
- 38 :名無しさん@お腹いっぱい。:2010/08/05(木) 04:27:53 ID:dptoT0ZSi
- あと、Vista/7 持ってないからわかんないけど、
デバイス開くあたりが、UACにひっかかるんじゃないかねぇ。
- 39 :名無しさん@お腹いっぱい。:2010/08/05(木) 21:18:42 ID:KSKnEENb0
- http://sites.google.com/site/autohotkeyjp/
左メニューに組み込み変数追加お願いします、とか書いてみる
それとアイコンがオレンジ色の変わって一瞬驚きました
- 40 :名無しさん@お腹いっぱい。:2010/08/05(木) 23:55:15 ID:KSKnEENb0
- 今見たら左メニューに組み込み変数追加されてました。
ありがとうございました!
- 41 :名無しさん@お腹いっぱい。:2010/08/06(金) 14:04:18 ID:kcR3Cisg0
- AutoHotkey64がAVGでwin32/Heurとか検出されてるんだがもちろん誤検出だよな?
- 42 :名無しさん@お腹いっぱい。:2010/08/06(金) 14:09:58 ID:YArs/9MG0
- オンラインで検体を送れるところがあるから送ってみれば?
- 43 :25:2010/08/06(金) 22:28:27 ID:TY2IF4pN0
- >>35
うーん、一行でポンと出来るようなものではないんですね。
前スレ795は何をやっているか分からない行が多かったですが全体としては入力時にdeviceIDを取得して
比較しているだけのようなのでリファレンス見ながらやっていこうと思います。
レスありがとうございました。
- 44 :名無しさん@お腹いっぱい。:2010/08/07(土) 00:12:47 ID:k0UxEdTq0
- >>25>>43
こういうことかと思ったけど違うのかな
$a::
If GetKeyState("a","P")
Send, b
Else
Send, a
Return
- 45 :25:2010/08/07(土) 01:55:44 ID:tQubyQTW0
- >>44
おお、GetKeyStateにPを添えるとバッチりの挙動をするんですね。
*と{Blind}を付け加えたら理想の動きをするようになりました。
レスありがとうございます。検索が足りませんでした。
a::b
41 01E h d 1.05 A
42 030 i d 0.00 B
GetKeyState
41 01E h d 0.70 A
41 01E i d 0.00 A
- 46 :名無しさん@お腹いっぱい。:2010/08/08(日) 01:11:57 ID:3q3w8jHr0
- AutoHotkeyでボス(嫁)が来たスクリプトを作ろうとしているのですが
Ctrlキーの二度打ちを設定するのは不可能でしょうか
^1::Send, #dでは危うかったので、御存知の方宜しく御願いします。
- 47 :名無しさん@お腹いっぱい。:2010/08/08(日) 06:57:40 ID:KpyNAP6d0
- >>46
http://endoh-namazu.tierra.ne.jp/diary/?date=20050916
- 48 :名無しさん@お腹いっぱい。:2010/08/09(月) 10:32:44 ID:aYtdGkcui
- Lにいろいろと統合されたな。
スレが建った頃に大きく変わるのがデフォだなぁw
Significant functionality developed by other community members:
* Native 64-bit support by fincs.
* Native COM support by Sean.
* Native Unicode support by jackieku.
* Support for various text encodings.
* New DllCall arg types for portability.
* Object-oriented file I/O.
- 49 :名無しさん@お腹いっぱい。:2010/08/09(月) 10:55:46 ID:JfWbspPo0
- どうせならこのぐちゃぐちゃな文法も直してくれればいいのに
- 50 :名無しさん@お腹いっぱい。:2010/08/09(月) 12:43:28 ID:qUuquxFLP
- なんだかなあ・・AutoHotkey64からAutoHotkey_Lw64にしたらどうもうまく動かない
何が違うんだ
- 51 :名無しさん@お腹いっぱい。:2010/08/09(月) 13:27:05 ID:qUuquxFLP
- #Persistent
OnExit,_Exit
hHookMinimize:=DllCall("SetWinEventHook","UInt",0x16,"UInt",0x16,"UInt",0,"Ptr",RegisterCallback("WinMinimizeHandler"),"UInt",0,"UInt",0,"UInt",0,"Ptr")
return
WinMinimizeHandler(){
MsgBox
}
_Exit:
DllCall("UnhookWinEvent","Ptr",hHookMinimize)
ExitApp
いろいろ試したみたけど_Lw64だとイベントフックが腐ってる気がする
コールバック呼ばれない
- 52 :名無しさん@お腹いっぱい。:2010/08/09(月) 14:35:57 ID:W80hlfpgi
- > Quote:
> EDIT: RegisterCallback() broken:
>
> Thanks. I should've known there was a reason for that 'add'. Quote:
New code:
フォーラムで報告あがってるし、Lexikosも認識してるからすぐ治るっしょ
- 53 :名無しさん@お腹いっぱい。:2010/08/09(月) 21:22:05 ID:L1oQFIkS0
- BREGEXP.ahkのLoadLibraryとFreeLibraryの繰り返しを無くそうと思って試してみたら
メモリ使用量がどんどん上がっていってうわーと思ったのですが、
DllCall("BREGEXP.DLL\BRegFree",Int,pRExp)
↓
DllCall("BREGEXP.DLL\BRegfree",Int,pRExp)
とFreeでは無くfreeとFを小文字ににしたらうまくいくようになりました。
- 54 :名無しさん@お腹いっぱい。:2010/08/09(月) 23:48:36 ID:5nQelkET0
- if(flag) func1() ←ダメ
else func2() ←OK
なんなのこれぇ
- 55 :名無しさん@お腹いっぱい。:2010/08/10(火) 01:38:40 ID:T9NAOBvp0
- ahkで複数行のDOSコマンドを実行することは可能でしょうか?
- 56 :名無しさん@お腹いっぱい。:2010/08/11(水) 10:46:57 ID:lC1eENfji
- >>55
バッチファイルを起動するのが簡単・確実かと。
ただ、多くのケースでahkのコマンド群で置き換えが可能なはず。
リダイレクト、パイプを使うならバッチのままがいいけど。
- 57 :名無しさん@お腹いっぱい。:2010/08/12(木) 12:53:39 ID:jCmOCBci0
- AHK で "文字列タイピング中" という状態をフックし、その時にだけ一部のキー定義を変更したいと考えています。
1. Windows にタイピング状態を同定する機能はありますか? その場合はどのような Dll を用いればよいのでしょうか?
2. 自分で定義するとしたら、どのような方法があるでしょうか?
どなたかアドバイスをいただければ幸いです。
- 58 :名無しさん@お腹いっぱい。:2010/08/12(木) 13:10:41 ID:XWlXU4kH0
- お、やっと規制解除されたか。
>>57
(1) "文字列タイピング中"ってのをどう定義すんの?って話だとおもうけど。
■ 文字キーを押してから指定時間以内
~a::
~b::
:
~z::
~0::
~1::
:
~9::
typing := True
SetTimer, TypingOff, 1000
Return
TypingOff:
typing := False
Return
■ キャレット(文字入力カーソル)が表示されているかどうかで判断するなら
http://pc12.2ch.net/test/read.cgi/software/1265518996/53
(2) (1)で判断したのを使って AHKL の #If 使えば楽。
以下だと、グローバル変数 typing の真偽値でホットキーが有効かどうかを判断。
#If (typing)
F1::Send, Hoge
F2::SomeFunction()
#If
- 59 :名無しさん@お腹いっぱい。:2010/08/13(金) 08:34:06 ID:rBSM7S8O0
- >>58 ありがとうございます。
最初の例がヒントになりました。
これをベースにやってみようと思います。
- 60 :名無しさん@お腹いっぱい。:2010/08/13(金) 09:56:25 ID:WLbyInsx0
- str = hoge
if(str == hoge){
Msgbox, true`n %str% == hoge
}else{
Msgbox, false`n %str% != hoge
}
これが何故かfalse hoge != hogeになってしまって困った。
str = hogeの場合は"を付けなくていいが==で比較する場合は付けないとダメなんだな。
Perlを嫌っている奴の気持ちが分かった気がした。
- 61 :名無しさん@お腹いっぱい。:2010/08/13(金) 14:09:50 ID:lCisbYU10
- >>60
var = literal
var := expr
if (expr)
Perl関係なくね?
- 62 :名無しさん@お腹いっぱい。:2010/08/13(金) 16:26:58 ID:6zEgbGxa0
- リテラルを引用符無しで記述できるバッチの仕様を引き摺りすぎてるからなぁ
まぁ、Lexikos曰く、リテラルの方が処理的に速いらしいけど
>>60だと、If (〜) とした段階で式を使ってるものとして処理が動いてる。
たとえば、
str = hoge piyo ; str := "hoge piyo"
If (str == hoge piyo)
としたら、
If (str == hoge . piyo)
という様に二つの変数を結合したものとの比較を行ってることになって
hoge と piyo 二つの未定義のグローバル変数が変数一覧に出てくる。
- 63 :名無しさん@お腹いっぱい。:2010/08/14(土) 00:04:04 ID:g1cPPVB90
- TrackWheelってwindows7(32bit)で動かないのかな。
起動させてもプログラムが停止しましたってなっちゃうな。
- 64 :名無しさん@お腹いっぱい。:2010/08/14(土) 08:06:19 ID:seaXUFJTP
- 自分で答え書いてるじゃん
- 65 :名無しさん@お腹いっぱい。:2010/08/14(土) 09:04:46 ID:ktkxi1E40
- >>63
中の人っす。実機がないんでよく分からないっす。
秋頃にPCを新調する予定なんでそれくらいになら対応できるかも。
- 66 :名無しさん@お腹いっぱい。:2010/08/15(日) 16:47:42 ID:+3mGXcL00
- runコマンドで、hideオプションをつけて起動したコマンドラインツールのコンソールを、
あとから表示させる方法って、ないでしょうか。
コンソールコマンドの中で、通常の処理であれば正常に終わるように作っていますが、
まれにイレギュラーな対話メッセージが出た際、hideをつけていると操作を続行できず、
ウインドウがないので何が原因で止まっているかも判断できず、行き詰ってしまいます。
イレギュラーな場面のためにminオプションで起動させると、タスクバーの余白で
コマンドプロンプトのタスクがチラチラ出てしまい、これもまた目障りです。
いまは、settimerで、コマンドの実行時間を監視し、一定時間を経過しても終了しない場合は
対話でひっかかっていると判断させるようにしました。
が、問題が起きたまではわかるものの、コマンドコンソールを表示させる方法が思い浮かびません。
hideで起動させたウインドウを表示させる、うまい方法は、ないでしょうか。
- 67 :名無しさん@お腹いっぱい。:2010/08/15(日) 17:08:23 ID:zPLp0lVT0
- show
- 68 :名無しさん@お腹いっぱい。:2010/08/15(日) 19:07:20 ID:uIR+EQMw0
- Run, cmd.exe,, Hide, pid
MsgBox
WinShow, ahk_pid %pid%
- 69 :名無しさん@お腹いっぱい。:2010/08/15(日) 20:00:36 ID:+3mGXcL00
- >>67 >>68
できました、ありがとうございます。
- 70 :名無しさん@お腹いっぱい。:2010/08/15(日) 21:29:30 ID:uIR+EQMw0
- 更新きた
Revision 54 - August 15, 2010
Fixed: RunAs in Unicode build. [jackieku]
Fixed: RegisterCallback in x64 build. [fincs]
Fixed: Executables failing to run on Win2k and WinXP prior to SP2. Win2k requires SP4 and updates (probably KB 816542). XP not tested.
Fixed: Dialogs such as MsgBox became unresponsive when interrupted by another script thread. Message filter/workaround added in L45 had to be removed. [Bug report]
Fixed: Multi-byte characters in default ANSI codepage; this was also causing a memory leak. [Bug report]
Fixed: ComObject now allows purely numeric property/method names. [Bug report]
Enhanced usability and capabilities of FileOpen/File object.
* FileOpen's Flags parameter accepts a human-readable string of flags.
* FileOpen's "update" mode has been renamed "read/write" and now creates the file if it didn't already exist.
* FileOpen sets A_LastError as appropriate.
* File := FileOpen(handle,"h") wraps an existing file handle in an object.
* File.Seek(n) defaults to SEEK_END when n is negative.
* File.Pos (or File.Position) can be used in place of Tell and Seek.
* File.Pos, File.Length, File.AtEOF and File.__Handle can be used without empty parentheses().
* File.Length can be set, as in File.Length:=n.
* File.ReadNum() and File.WriteNum(n) read or write a number, where Num is a NumGet-compatible type name.
* File.WriteLine(s) is equivalent to File.Write(s "`n"), for symmetry with File.ReadLine().
* File.Read() reads and returns the remainder of the file when used without parameters.
* File object now returns "" for unrecognized methods and invalid syntax rather than the numeric address of "".
(続く)
- 71 :名無しさん@お腹いっぱい。:2010/08/15(日) 21:30:46 ID:uIR+EQMw0
- (続き)
Changed: GroupAdd's Label parameter now applies to the whole group. [Discussion]
Changed: GroupActivate sets ErrorLevel on success/failure. (Same thread as above.)
Changed: */ at the beginning of a line is ignored if there was no /*. [Discussion]
Removed ToCodePage and FromCodePage subcommands of Transform.
>>51 は治ったかな。
個人的には From/ToCodePage 廃止で色々書き直しだw
- 72 :名無しさん@お腹いっぱい。:2010/08/15(日) 22:02:40 ID:ZDKKr+GM0
- インストーラにUnicode版とANSI版を同梱するなら、x64版も同梱すればいいのに
大して容量変わらないじゃん…
- 73 :名無しさん@お腹いっぱい。:2010/08/15(日) 22:07:54 ID:mi2wQMh6P
- RegisterCallbackは直ったけどなんかGUI怪しくない?
付箋のスクリプト動かしたらフリーズする
- 74 :28:2010/08/16(月) 06:53:54 ID:I066VLbw0
- 懲りずに >>28-30 の AHKL_x64 ポート化を試みています (まだ動いていません)。
>>31 さんのコメントを参考にバッファの取り扱い方法を書きかえてみました。
また原作者のコメントとメーカーのサンプルコードも参照しました。
http://lukewarm.s101.xrea.com/test/read.cgi/bbs/1146398137/63-67
; Synaptics 製タッチパッド情報取得
VarSetCapacity(IBuf, A_PtrSize * 4)
VarSetCapacity(OBuf, A_PtrSize * 2)
NumPut(0x01000000 | 10 , &IBuf) ; TP_DeviceHandle
NumPut(0x01000000 | 729, &IBuf + A_PtrSize) ; TP_PacketFingerInfo
NumPut(0x00000000, &IBuf + A_PtrSize * 2) ; TP_StartData
NumPut(0xFFFFFFFE, &IBuf + A_PtrSize * 3)
hSynTP := DllCall("CreateFile", "Str", "\\.\SYNTP", "UInt", 0xC0000000, "UInt", 3, "UInt", 0, "UInt", 3, "UInt", 80, "UInt", 0, "Ptr")
DllCall("DeviceIoControl", "Ptr", hSynTP, "UInt", 0x80006004, "Ptr", &IBuf, "UInt", A_PtrSize * 4, "Ptr", &OBuf, "UInt", A_PtrSize * 2, "UInt", 0, "UInt", 0, "Ptr")
DllCall("CloseHandle", "Ptr", hSynTP, "Ptr")
MsgBox % hSynTP "`n" A_PtrSize "`n" NumGet(&OBuf) "`n" NumGet(&OBuf + A_PtrSize)
x64 でもハンドルは取れているので、次の DeviceIoControl が動作していないようです。
バッファサイズ変更は効果ありませんでした。
これを x64 で動かすには、どのような情報が必要で何を試みたら良いでしょうか。
- 75 :名無しさん@お腹いっぱい。:2010/08/16(月) 06:55:58 ID:I066VLbw0
- AHKL_x86 では NumGet(&OBuf + A_PtrSize) がタッチパッド状態を反映します。
- 76 :名無しさん@お腹いっぱい。:2010/08/17(火) 00:52:27 ID:NHeek7OJ0
- 本家のフォーラムでも質問してみようと思います。
ひきつづき、何かヒントらしきものがありましたら教えて下さい。
- 77 :名無しさん@お腹いっぱい。:2010/08/17(火) 16:56:35 ID:/diIoqjP0
- ドキュメント日本語化追いつかねぇ
- 78 :名無しさん@お腹いっぱい。:2010/08/17(火) 17:02:29 ID:qrUFtLJWP
- 英語読めないから助かる
- 79 :名無しさん@お腹いっぱい。:2010/08/17(火) 17:43:30 ID:/diIoqjP0
- 俺が読めるくらいだから、英語自体は平易なんだけどさ、
プログラミングの素人なんで、COMの辺りの知識がないからどう訳していいものやら・・・
- 80 :名無しさん@お腹いっぱい。:2010/08/19(木) 15:38:09 ID:TJw3lxMz0
- Revision 55 - August 19, 2010
Fixed: GroupActivate not setting ErrorLevel=1 if no Label was specified.
Fixed: Tab controls in x64 build.
Fixed: String-copy mode of StrPut when length is omitted; broken by L53.
Fixed: Data-alignment issues in x64 builds.
Changed: Set A_LastError for more File* commands to assist debugging.
Includes FileAppend, FileRead, FileReadLine, FileDelete, FileCopy, FileMove, FileGetAttrib/Time/Size/Version and FileSetAttrib/Time.
Excludes FileCopyDir, FileRecycle, FileMoveDir, FileRemoveDir, FileRecycleEmpty, FileCreateDir and FileInstall as the APIs used do not consistently set or return a Win32 error code.
- 81 :名無しさん@お腹いっぱい。:2010/08/21(土) 17:49:24 ID:LHqwtwThP
- 関数で、渡したいパラメータは1つで、そこで処理させて、返却したいデータが複数(5個くらい)で、
もらったデータのうち、次の処理で必要なものが、その時々で異なる関数があります。
場合によっては、関数を呼び出すだけで、もらうデータが全く不要なときもあります。
このような場合、関数を呼び出すときにbyrefで全パラメータを毎回指定する以外に、
なにか別の受け渡し方法は、ないでしょうか。
いまは、関数内で、出すべきデータをグローバル変数に書き出しておいて、
関数を抜けた後に、その変数を読むという、裏ルートの送受信をさせていますが、
他所からの不意な書き換え事故を考えると、もっとよい方法が無いかなと。
- 82 :名無しさん@お腹いっぱい。:2010/08/21(土) 19:03:33 ID:ccGQQVvm0
- その文章だと関数設計がおかしく感じるけど…
戻り値で不特定数を返す時はオブジェクトを利用すると楽。
ret := HogeFunc("あああ")
MsgBox, % ret.value1
HogeFunc(param1) {
; 〜何か〜
retValue := Object()
retValue.value1 := "あいうえお"
retValue.value2 := 100
Return retValue
}
- 83 :名無しさん@お腹いっぱい。:2010/08/21(土) 21:10:54 ID:LHqwtwThP
- >>82
ありがとうございます。まさにそれが必要としていたものでした。
AutoHotkey_Lでのみ使える機能のようですね。
AHKを_Lに乗り変えて、ちぐはぐな設計で進めてしまった関数を見直すことにします。
- 84 :名無しさん@お腹いっぱい。:2010/08/27(金) 23:36:55 ID:VYFDDX400
- なんか派生バージョンがいろいろあるけど
どれ入れたらいい?
windows7 64bit なんで autohotkey_L の 64bit版いれようとしたけど、
インストーラーがないよ。
- 85 :名無しさん@お腹いっぱい。:2010/08/28(土) 00:15:58 ID:2vpQQNqx0
- ないからどうしたの?
- 86 :名無しさん@お腹いっぱい。:2010/08/28(土) 00:38:30 ID:RyaOMqig0
- インストーラーなしのでいいじゃん
- 87 :名無しさん@お腹いっぱい。:2010/08/28(土) 00:39:58 ID:OOl+TLHv0
- インストーラーなんていらね。
色々厄介な事になりやすい
- 88 :名無しさん@お腹いっぱい。:2010/08/28(土) 00:55:26 ID:L+vqbGxt0
- TheGood > Are you also going to make an installer for the 64-bit build?
Lexikos > I'm a bit reluctant to do that since compiling x64-based scripts isn't possible yet.
We need to replace the library which is used to embed the script into the exe file.
64bit版のインストーラを作るのに色々問題があるんだとさ。
利用する上でインストーラ無くても利用には全然問題はない。
「AutoHotkey.ahk」ってテキストファイルをAutoHotkey.exeと同じフォルダに作って、
AutoHotkey.exeをダブルクリックすりゃおk。
関連付けはフォルダオプションで簡単にできる(アイコンはexeの中に入っている)。
- 89 :名無しさん@お腹いっぱい。:2010/08/30(月) 12:06:03 ID:d9zUkDoY0
- http://www.autohotkey.net/~Lexikos/AutoHotkey_L/ 更新。
Revision 56 - August 29, 2010
Added support for x64 compiled scripts. Requires Ahk2Exe_L and x64 AutoHotkeySC.bin.
Fixed: Deref operator (*addr) rejected addresses outside 32-bit range.
Fixed: #If expression memory allocation error on x64.
Fixed: Custom hotstring end chars with code points greater than U+00FF.
Fixed: Special characters being sent out of sequence by SendInput/Play.
Fixed: */ being discarded in continuation sections (see L54).
- 90 :名無しさん@お腹いっぱい。:2010/08/30(月) 12:09:16 ID:d9zUkDoY0
- Lexikos > I've added a 64-bit option to the installer, enabled only if you're on a 64-bit system.
とのことなので x64 もインストーラでイケるようになったみたい。
- 91 :名無しさん@お腹いっぱい。:2010/09/04(土) 14:30:19 ID:ZIpAVQUt0
- MouseGenture.ahk の相談はここでいいの?
- 92 :名無しさん@お腹いっぱい。:2010/09/04(土) 16:58:03 ID:TlzoJX8wP
- おk
- 93 :名無しさん@お腹いっぱい。:2010/09/04(土) 23:58:47 ID:uTvDAlp20
- 何かキテルー
Revision 57 - September 4, 2010
Fixed Str*, WStr* and AStr* DllCall return types on x64.
Added functionality to InStr to bring it in line with StringGetPos:
* If StartingPos is negative, the search is conducted right-to-left beginning at that offset from the end.
* An additional parameter is available to specify which occurrence of the string to find.
Added #include <LibName> for explicitly including a script from a function library folder.
Added functionality to IniRead and IniWrite allowing an entire section to be read or written.
Added functionality to IniRead allowing a list of section names to be retrieved.
Added support for custom verbs to Run/RunWait: Run *verb file.
Made improvements to the way Run/RunWait extracts the action and its parameters from the Target parameter.
Changed NumGet/NumPut to allow Offset to be omitted entirely since Type is always non-numeric.
Removed the restriction that a label can't point to the end of a block.
- 94 :名無しさん@お腹いっぱい。:2010/09/05(日) 17:18:59 ID:GLHR6bhm0
- 最小化状態のFirefoxをWinActivateでアクティブ化すると、
ウィンドウは元に戻るんですがFirefoxがキー入力を受け付けない変な状態になります
どうにか対策方法とかないでしょうか? Firefox側の問題じゃないかとは思うんですが
- 95 :名無しさん@お腹いっぱい。:2010/09/05(日) 17:56:00 ID:m6I/5iFo0
- タスクトレイアイコンをマウスオーバーしたときにツールチップ?として出てくるテキストを
取得することってこのソフトでできますか?
- 96 :名無しさん@お腹いっぱい。:2010/09/05(日) 18:05:16 ID:KFv0gG8x0
- 出来るけど、コマンド1つでは出来ない。
- 97 :名無しさん@お腹いっぱい。:2010/09/05(日) 18:50:39 ID:NvhQsR8q0
- >>95
http://www.autohotkey.com/forum/topic24234.html
※上記ページからacc.ahkとcom.ahkをDLしてAutohotkeyのLibフォルダに入れ、下記スクリプトを実行する。
※これはAutohotkey本家用
F1::ChildUnderCursor()
ChildUnderCursor() {
ACC_Init()
CoordMode, Mouse, Screen
MouseGetPos, x, y
pacc := Acc_AccessibleObjectFromPoint(x, y, _idChild_)
If paccChild:=acc_Child(pacc, _idChild_)
sResult := "Name:`t`t" . acc_Name(paccChild) . "`n"
. "(l,t,w,h):`t`t" . acc_Location(paccChild) . "`n"
, COM_Release(paccChild)
Else sResult := "Name:`t`t" . acc_Name(pacc, _idChild_) . "`n"
. "(l,t,w,h):`t`t" . acc_Location(pacc, _idChild_) . "`n"
COM_Release(pacc)
MsgBox, % sResult
ACC_Term()
}
- 98 :名無しさん@お腹いっぱい。:2010/09/05(日) 19:39:33 ID:m6I/5iFo0
- >>96-97
ありがとうございます。
こういう関数結構あるみたいですね。
Lだと
http://www.autohotkey.net/~majkinetor/Tray/Tray.html
- 99 :名無しさん@お腹いっぱい。:2010/09/07(火) 22:26:43 ID:nAVBDwuS0
- Revision 58 - September 5, 2010
Added: static var := expression
ふむ。これは地味だが便利だ。
- 100 :名無しさん@お腹いっぱい。:2010/09/07(火) 23:10:22 ID:sUMdgTS6P
- やっと静的変数に式代入できるようになったか
何度エラーで弾かれたことか
- 101 :名無しさん@お腹いっぱい。:2010/09/08(水) 05:18:11 ID:6k+yxaz30
- Win7で、全体のボリュームコントロールをいじりたいのですが、
うまくできません。
XPでSoundSetコマンドでMasterを指定すると上げ下げできていましたが、
Win7以降だと、AHKの実行しているプロセスの音量だけが変わってしまいます。
Win7で、全体の音量を制御する方法って、ないでしょうか。
- 102 :名無しさん@お腹いっぱい。:2010/09/08(水) 07:24:47 ID:H/2J7Uq00
- >>101
どうにも上手くいかないから
Volume_Up、Volume_Downキー送ってる
- 103 :名無しさん@お腹いっぱい。:2010/09/08(水) 07:44:18 ID:6k+yxaz30
- >>102
おお、それは盲点でした。おかげさまで音量の操作ができました。
音量変更後に現在の音量値の取得を画面に表示していたのですが、
現在値の取得ができず、完全な移植にはまだまだ遠いようです。
- 104 :名無しさん@お腹いっぱい。:2010/09/08(水) 10:09:58 ID:8OHW3hlN0
- これじゃアカンの?
Vista Audio Control Functions v2.0
http://www.autohotkey.com/forum/topic23792.html
- 105 :名無しさん@お腹いっぱい。:2010/09/08(水) 10:14:01 ID:8BWMvBiW0
- >>101-103
こんなのもある。
ttp://www.autohotkey.com/forum/topic23792.html
とりあえずマスターボリュームを5ずつ上下させるとかはできた。
- 106 :名無しさん@お腹いっぱい。:2010/09/08(水) 11:41:07 ID:QBr5t/WC0
- MouseGenture
ATOKの入力モードに反応させないようにできませんか
- 107 :名無しさん@お腹いっぱい。:2010/09/08(水) 14:45:46 ID:S/7Cvc9AO
- MouseGesture.ahk で、
中ボタンを WinMinimize に設定しているのですが、
中+右ボタンや、中+各方向ドラッグ の後で中ボタンを
押した時にも発動してしまいます。
他の動作をした場合には中ボタン単体を無効にする方法はありませんか?
- 108 :名無しさん@お腹いっぱい。:2010/09/08(水) 14:56:59 ID:lAduna1y0
- 説明書読め
- 109 :名無しさん@お腹いっぱい。:2010/09/08(水) 21:59:36 ID:LyMV39xS0
- AHK64のコンパイラが欲しかったのですがzip版には同梱されていなかったので
インストーラ版を入れたところ.ahkの関連付けがAHKLに変更されました。今まで
使っていたスクリプトが一部動かなくなったので関連付けを戻そうと.ahkファイル
右クリ→プログラムから開く→ahkを選択してみても、ahklと実行ファイル名が同
じからなのか、うまく設定できませんでした。ahklのコンパイラフォルダだけコピー
してアンインスコし、再度ahkに関連付けました。うまく関連付けられましたが、今
度はアイコンがおかしくなりました。.ahkファイルのアイコンが紙の中にahk.exeの
アイコンが描かれているアイコンになりました。なのでahkをインスコし直しました。
すると元の環境に戻せました。おしまい。
- 110 :名無しさん@お腹いっぱい。:2010/09/08(水) 22:22:03 ID:8OHW3hlN0
- 日記かよw
インストーラは Uninstall Information とか使うと解凍できるぞ。
- 111 :名無しさん@お腹いっぱい。:2010/09/08(水) 22:23:13 ID:8OHW3hlN0
- 隣のフォルダ名コピってたw
Universal Extractor な
- 112 :名無しさん@お腹いっぱい。:2010/09/08(水) 22:52:29 ID:6k+yxaz30
- >>104-105
ありがとうございます。これで全部解決できそうです。
- 113 :名無しさん@お腹いっぱい。:2010/09/09(木) 00:56:06 ID:s6czYEFU0
- 誰かAHKL最新版で使えるmigemo検索のサンプルスクリプトをおくれ。
流行らせるページのやつ全然動かなかった。
- 114 :名無しさん@お腹いっぱい。:2010/09/09(木) 16:46:26 ID:bxRMK4yrO
- MouseGesture.ahk で、
中ボタンを WinMinimize に設定しているのですが、
中+右ボタンや、中+各方向ドラッグ の後で中ボタンを
押した時にも発動してしまいます。
他の動作をした場合には中ボタン単体を無効にする方法はありませんか?
流行らせるページやmouseGesture.ahkのマニュアルや解説サイトを見たが見つかりませんでした。
- 115 :名無しさん@お腹いっぱい。:2010/09/09(木) 18:02:15 ID:9DOorRwvP
- アルファベットのA〜Zをループで処理したいのですが何かいい方法ってないでしょうか?
取りあえずは
alphabet1=A
...
alphabet26=Z
Loop, 26
{
MsgBox, % alphabet%A_Index%
}
という感じで間に合わせているのですが他に何か方法ってないでしょうか?
- 116 :名無しさん@お腹いっぱい。:2010/09/09(木) 18:18:24 ID:aMuCAznK0
- alphabet = A|B|…|Z
Loop, Parse, alphabet, `|
{
MsgBox, %A_LoopField%
}
- 117 :名無しさん@お腹いっぱい。:2010/09/09(木) 19:32:06 ID:pRAMZm790
- >>115
CharStart = A
CharEnd = Z
Loop, % Asc(CharEnd) -Asc(CharStart) + 1
MsgBox, % Chr(Asc(CharStart) + A_Index - 1)
- 118 :名無しさん@お腹いっぱい。:2010/09/09(木) 19:38:32 ID:pRAMZm790
- >>113
以下の"migemo.ahk" をライブラリフォルダに保存。ちなみに c/migemo 1.2 用(つまり32bit用)。
これは文字から正規表現パターンを作るだけなので、あとは普通に正規表現で検索する。
migemo インスタンスは最初に作ってグローバル変数か何かに入れておく。
migemo:=Migemo_Open("C:\Program Files\cmigemo-1.2-dll\dict\migemo-dict")
str = 米日露西伯中韓仏蘭独
If RegExMatch(str, migemo.Query("amerika"), $)
msgbox, % $
; ---- migemo.ahk ----
Migemo_Open(dict) {
static base := Object("__Delete", "Migemo_ObjDelete", "Query", "Migemo_ObjQuery", "hModule", DllCall("LoadLibrary", "Str", "migemo.dll", "Ptr"))
Return Object("base", base, "hMigemo", DllCall("migemo.dll\migemo_open", "AStr", dict, "Ptr"))
}
Migemo_ObjDelete(self) {
If DllCall("migemo.dll\migemo_close", "Ptr", self.hMigemo)
self.Remove("hMigemo")
}
Migemo_ObjQuery(self, word) {
Return DllCall("migemo.dll\migemo_query", "Ptr", self.hMigemo, "AStr", word, "AStr")
}
- 119 :名無しさん@お腹いっぱい。:2010/09/09(木) 20:20:32 ID:s6czYEFU0
- >>118
おお、できた!ありがとう!
- 120 :名無しさん@お腹いっぱい。:2010/09/09(木) 20:56:37 ID:9DOorRwvP
- >>116,117
ありがとうございました!
二つともとても参考になりました
- 121 :名無しさん@お腹いっぱい。:2010/09/10(金) 14:33:44 ID:p9QDLVxs0
- >>94わかるかたどなたかお助けを…
- 122 :名無しさん@お腹いっぱい。:2010/09/10(金) 18:09:35 ID:NLRyA43v0
- 強制的にフォーカス変えてやればなんとかなるね
#SingleInstance, force
#UseHook
^Space::
SetTitleMatchMode, 2
IfWinExist, - Mozilla Firefox ahk_class MozillaUIWindowClass
{
WinGet, MinMax, MinMax
WinActivate
If (MinMax=-1)
ControlFocus, MozillaWindowClass1
}
Return
- 123 :名無しさん@お腹いっぱい。:2010/09/10(金) 19:16:36 ID:Qrfx82VL0
- zzz()が何千回と繰り返し利用される関数な場合
ptrn000〜ptrn111への変数の代入は、どこにどうやって書くのが
パフォーマンス的に優れてるとか分かる人いますか?
zzz(){
ptrn000=a
ptrn001=b
ptrn010=c
ptrn011=d
ptrn100=e
ptrn101=f
ptrn110=g
ptrn111=h
abc:=CheckA() CheckB() CheckC()
Return ptrn%abc%
}
- 124 :名無しさん@お腹いっぱい。:2010/09/10(金) 19:19:47 ID:HWyeVSxk0
- ptrn000=a
ptrn001=b
ptrn010=c
ptrn011=d
ptrn100=e
ptrn101=f
ptrn110=g
ptrn111=h
zzz(){
abc:=CheckA() CheckB() CheckC()
Return ptrn%abc%
}
- 125 :名無しさん@お腹いっぱい。:2010/09/10(金) 19:22:41 ID:Qrfx82VL0
- それとも、単純にIFで場合分けした方が良いのでしょうか
こっちは使いにくすぎてやりたくないけどw
zzz(){
If(CheckA){
If(CheckB){
If(CheckC){
Return h
}Else Return g
}Else If(CheckC){
Return f
}Else Return e
}Else If(CheckB){
If(CheckC){
Return d
}Else Return c
}Else If(CheckC){
Return b
}Else Return a
}
- 126 :名無しさん@お腹いっぱい。:2010/09/10(金) 19:52:36 ID:NLRyA43v0
- 意味がよく分からんけど、比較式の回数が少なくなるようにIfを組んだ方が速いのは確か。
>>8のQA1 にもあるけど、Ifのネストよりは論理和・論理積を使った方が速い。
AHKに限らず一般的なことだけど、式を論理演算子で並べる順序でも差が出る。
論理和では真、論理積では偽を、左側に置いた方が1個目の評価で式を抜ける可能性が高くなる。
多分、三項演算子と論理演算子を使うのが一番速いとは思う。
- 127 :名無しさん@お腹いっぱい。:2010/09/11(土) 21:31:43 ID:IwJc94rqP
- 質問です
コマンドプロンプトでCtrl+Vを押したら、クリップボードでコピペできるようにしたいのですが、
Spyで見て ahk_class が ConsoleWindowClass とわかったため、
#IfWinActive ahk_class ConsoleWindowClass
^v::Send,!{Space}ep
^c::Send,unko ; test
#IfWinActive
というように書いてみたのですが、Ctrl+Vで^Vがそのままコマンドプロンプトに送られてしまいます。
(Ctrl+Cもテストで書きましたがこちらも送られませんでした)
試しに^c::Send,unko とだけ書いてCtrl+Cすると、
ちゃんと他のアプリでunkoに贈られるのでAutoHotKey自体は動作しているようです。
Key history and info で表示してみたところ、確かに設定したキーが送られていないようでした。
以前は動いていたような気がするのですが、今になって何故か動かない状況です
- 128 :名無しさん@お腹いっぱい。:2010/09/11(土) 21:39:31 ID:wTBLOOWg0
- オプションで「簡易編集」にチェックが入っているかどうかを確認。
あと、Send, {RButton} でもおk。
- 129 :名無しさん@お腹いっぱい。:2010/09/11(土) 22:18:40 ID:9qTkeMmx0
- ^v::SendInput, {Raw}%clipboard%
- 130 :名無しさん@お腹いっぱい。:2010/09/11(土) 22:20:52 ID:VH8Xeow80
- >>127
その記述自体はそれで合ってるから、別の場所がおかしいんじゃないの。
たとえば、その記述の前で不適切なコメントアウトしてるとか。
違うかもしれないけど失敗しやすい問題から一応書いておくと、
/*と*/はそれぞれ行頭に書かないとコメントアウトにならない。
以下のようなのはコメントが閉じられてないと解釈される。
/*〜*/
/***
hoge
***/
あと何か書いてある行での;は、中身とくっついてるとコメントにならない。
#IfWinActive ahk_class ConsoleWindowClass;プロンプト
こんなのは動作しない。
- 131 :名無しさん@お腹いっぱい。:2010/09/11(土) 23:34:59 ID:El0rBh4T0
- >>127
俺Vista使ってるけど、管理者権限でAHKを起動しないと、
コマンドプロンプトでホットキーが動作しなくなったことがある。
コマンドプロンプトは一般権限で起動しているのに。
再起動したら直ったので原因不明。
- 132 :名無しさん@お腹いっぱい。:2010/09/12(日) 09:23:11 ID:hFe7w6e00
- なんかよくわからないけどAHKきかなくなることはある
Win7でInternetExplorerとかMouseGesture.ahkのジェスチャまったくきかない
- 133 :名無しさん@お腹いっぱい。:2010/09/12(日) 09:24:26 ID:hFe7w6e00
- ↑ユーザーアカウント制御どうたらこうたらってでたアプリからの起動でってぬけてた
- 134 :名無しさん@お腹いっぱい。:2010/09/12(日) 13:47:56 ID:XZfOs3RC0
- 管理者権限で動いてるアプリには効かない。
AHKも管理者権限で動かせば聞くようになる。
- 135 :名無しさん@お腹いっぱい。:2010/09/12(日) 20:40:07 ID:hGZO2mS20
- >>122
ありがとうございます。遅くなってすみません
その方法でもうまく行きませんでした
というかAHKに限らず、Alt+Tab、タスクバーのクリックなど以外の殆んどの方法でうまくアクティブ化できないみたいです
もうFirefoxやめてChromeにでもしようかと
- 136 :名無しさん@お腹いっぱい。:2010/09/12(日) 23:26:47 ID:/5B09T1v0
- Revision 59 - September 12, 2010
Fixed: #If expression should now evaluate each expression at most once per keypress in all cases.
Changed: SplashImage uses common image-loading routines; now supports PNG and similar, but results may differ from before for icon files.
Added: For x,y in z.
Added: Loop .. Until expression, usable with any Loop or For-loop.
Added: Named loops; continue outer_loop, break 2, etc.
Debugger: Encode stdout and stderr packets as UTF-8.
Debugger: Allow user to Abort, Retry or Ignore when the initial connection fails.
Debugger: Allow attaching a debugger client by sending the script a registered window message.
Debugger: Allow detaching debugger client by sending the "detach" DBGp command.
ふむ。ループ関連で色々追加か。
こういうのは地味に便利だな
For key,value in Object(1, "あああ", 2, "いいい", 3, "ううう")
MsgBox, % key " = " value
- 137 :名無しさん@お腹いっぱい。:2010/09/13(月) 00:12:32 ID:ogaimglM0
- enumオブジェクト涙目
- 138 :名無しさん@お腹いっぱい。:2010/09/13(月) 00:46:49 ID:MngYOI9N0
- そろそろ仕様を固めてほしいわ
- 139 :名無しさん@お腹いっぱい。:2010/09/13(月) 05:50:39 ID:UQiZZW3K0
- 質問なのですが、AutoHotkeyでSandSを実現するコードってのが、あるじゃないですか。
こういうの。
Space Up:: Send, % "{Shift Up}" (A_TimeSincePriorHotkey < 130 ? " " : "")
+Space:: Send, +{Space}
>+Space:: Return
Space:: RShift
このコードの一行目の%って、どういう意味なんですか?
- 140 :名無しさん@お腹いっぱい。:2010/09/13(月) 06:01:55 ID:bpPcPXR70
- AHK本家バージョンをWin7で使ってるものだけど、
スタンバイから回復した瞬間に、たまにアプリエラーで死んでしまう。
はやらせるページのCPU使用率とメモリ使用量を知るためのdllを入れてるが、
ほかにとくに目立った処理はしていない。
こんな変な症状で困ってるのは俺だけかな。
どうやって診断すればいいんだろうか?
- 141 :名無しさん@お腹いっぱい。:2010/09/13(月) 07:38:26 ID:8oWcPn2M0
- ヘルプより
Force an expression:
An expression can be used in a parameter that does not directly support it by preceding the expression with a percent sign and a space or tab.
- 142 :名無しさん@お腹いっぱい。:2010/09/13(月) 15:25:38 ID:g6OmHOf00
- これ凄く難しいね
C言語ちょろっとかじっただけだけど、全然わかんね
USBテンキーを識別して、個別にリマップするのは可能ですか?
- 143 :名無しさん@お腹いっぱい。:2010/09/13(月) 16:01:21 ID:dE5gyF1iP
- >>142
USB接続のテンキーが押されたかどうかは、このソフトだけでは識別できない。
HIDのデバイスごとに識別できる外部ツールを使えば出来たはずだが、
やり方は忘れた。過去ログにあるはず。
あるいは、テンキーそのもの(フルキーの右側のキー)と共通して反応してもよければ、
NumpadAdd::
msgbox,テンキーのプラスが押された
return
みたいに記述することは可能
- 144 :名無しさん@お腹いっぱい。:2010/09/13(月) 16:57:39 ID:g6OmHOf00
- >>143
ありがとうございます。
その辺が良くわからなかったので勉強になりました。
右側テンキーは数字入力の為に出来れば残したいと思っていましたが、
アプリ毎に切り替える形で対応しようと思っています。
- 145 :名無しさん@お腹いっぱい。:2010/09/13(月) 17:50:14 ID:zNoAbLLW0
- 他の言語を使ったことがないのでよくわからないのですが
IfEqual, A, foo, SetEnv, B, bar
と
SetEnv, B, % A = foo ? bar : ""
ならどちらの方が処理が速いのでしょうか
>>8からすると前者のほうが速いのでしょうか?
- 146 :名無しさん@お腹いっぱい。:2010/09/13(月) 18:04:18 ID:zNoAbLLW0
- 書き込んだあとに自分で確かれれば良いことに気づいた
10万回ループさせても気になるほどの速度の差はないのですね
式を書き間違えた上に板を汚して申し訳ないです
- 147 :名無しさん@お腹いっぱい。:2010/09/13(月) 18:36:13 ID:oIa5T8Q/0
- >>118
これでmigemo.dllのパスもdictと同じように指定するにはどうしたらいいんでしょうか。
Migemo_Open(dll,dict) {
みたいにしようと思ったんですが、"migemo.dll"をdllで置き換えたら
空文字が返ってくるようになるだけでした。
- 148 :名無しさん@お腹いっぱい。:2010/09/13(月) 22:51:27 ID:ygAoD+jc0
- >>147 こんなんでどうじゃろ?
; ---- migemo.ahk ----
Migemo_Open(dict, dll="migemo.dll") {
static base := Object("__Delete", "Migemo_ObjDelete", "Query", "Migemo_ObjQuery", "hModule", 0)
If (!base.hModule) {
If (hModule := DllCall("LoadLibrary", "Str", dll, "Ptr")) {
base.hModule := hModule
base.func_close := DllCall("GetProcAddress", "Ptr", hModule, "AStr", "migemo_close", "Ptr")
base.func_query := DllCall("GetProcAddress", "Ptr", hModule, "AStr", "migemo_query", "Ptr")
} else {
MsgBox, 65, Warning, Failed to initialize Migemo.dll`nContinue?
IfMsgBox, Cancel
Exit
}
}
Return Object("base", base, "hMigemo", DllCall("migemo.dll\migemo_open", "AStr", dict, "Ptr"))
}
Migemo_ObjDelete(self) {
If DllCall(self.base.func_close, "Ptr", self.hMigemo)
self.Remove("hMigemo") := 0
}
Migemo_ObjQuery(self, word) {
Return DllCall(self.base.func_query, "Ptr", self.hMigemo, "AStr", word, "AStr")
}
- 149 :名無しさん@お腹いっぱい。:2010/09/13(月) 23:55:10 ID:Mf5787bW0
- >>142
ぶっちゃけAutoHotKeyの言語仕様が普及している高級言語と比べて(C言語は今や中級かも知れないけど)
かなり異質なので既存の言語経験者にも慣れにくいと思う
どうしてこうなった?みたいな言語仕様だからなw
似たような用途のAutoItは互換性捨ててバージョン3からふつーの言語っぽくなってC言語経験者なら書きやすいと思うよ
日本語情報は少ないけどね
- 150 :名無しさん@お腹いっぱい。:2010/09/14(火) 00:36:49 ID:0t8RRXrH0
- AutoIt はホットキーをがしがし使いたいと思うならちょっと不利かも。
たしか以前はホットキー定義に数の制限があったような。
- 151 :名無しさん@お腹いっぱい。:2010/09/14(火) 18:13:05 ID:4mkZ8V+x0
- >>149
AutoHotKeyはAutoIt ver2を元にした言語仕様だから
- 152 :名無しさん@お腹いっぱい。:2010/09/15(水) 10:17:54 ID:bNT4JkPw0
- A_LineFileに対してA_LineDirって無いよね?
今まではSplitPathでフォルダパス取得してたんだけど、
なんかA_LineFile . "\..\hoge.xyz"で同階層のファイルパス取得できた。
「ファイル名\..\ファイル名」って相対パスとして問題あるかな?
- 153 :名無しさん@お腹いっぱい。:2010/09/15(水) 16:37:28 ID:iTlL7tEk0
- >>10
このテンプレおかしいな
ReplaceStr.txtとかで置換されちゃってるっぽい感じだけど
> %http://www1.axfc.net/uploader/A/so/
> alert .= (%http://www1.axfc.net/uploader/A/so/
の部分正しくは↓
%A_LoopField% := !GetKeyState(A_LoopField) ? 0 : !%A_LoopField% ? A_TickCount : %A_LoopField%
alert .= (%A_LoopField% && (A_TickCount - %A_LoopField%) > alertDur) ? "[" A_LoopField ": " (A_TickCount - %A_LoopField%) "ms]" : ""
A_ とかを片っ端から斧のアドレスに置換してるんだろうか・・・
- 154 :名無しさん@お腹いっぱい。:2010/09/15(水) 16:43:34 ID:iTlL7tEk0
- >>13もおかしいな
> #1::Talk("<NUMK VAL=http://www1.axfc.net/uploader/A/so/
↓
#1::Talk("<NUMK VAL=" A_Hour ">じ/<NUMK VAL=" A_Min " COUNTER=ふん>")
スレ違いだけど自分のJaneStyleのReplaceStr.txtはこうしてる
<rx2>(?<![!-')-=?-Z\\-~])(Sc|He|Ne|H|Li|N|Si|C|O|Al|S|P|Ar|B|K|F|Be|Na|Ca|Mg|Cl|Img|Flv|Flash|File)_(\d+)(?![!-(*--/:;=-\\^-~]) <font color=gray>[URL化]</font> http://www1.axfc.net/uploader/$1/so/$2 msg
- 155 :名無しさん@お腹いっぱい。:2010/09/15(水) 20:20:02 ID:o22lD/5M0
- ホントだw いつも同じだろうという感じでよく読んで無かったわ
- 156 :127:2010/09/16(木) 00:09:51 ID:rgwZW5mqP
- >>128-129
ありがとうございます。
なんということでしょう、マシンを再起動したら問題なく動きました orz
しかし、他にもそんな手があるんですね、すごい・・・
- 157 :名無しさん@お腹いっぱい。:2010/09/21(火) 16:33:22 ID:2zEfBL3u0
- autohotkeyでcapslockを入れ替えられないのは
autohotkeyのバグなのでしょうか?
- 158 :名無しさん@お腹いっぱい。:2010/09/21(火) 16:36:09 ID:UVFUFRK90
- 入れ替えって、具体的にどういうこと?
- 159 :名無しさん@お腹いっぱい。:2010/09/21(火) 16:43:29 ID:1iHcliyr0
- >>157
>>4
- 160 :名無しさん@お腹いっぱい。:2010/09/21(火) 23:37:23 ID:EZZTxzxq0
- ホイール上下で常にマウスカーソルのあるコントロールを操作できるようにすべく
下記のように入力したのですが上だけが効果がありません。
間違いを修正していただけないでしょうか。
[ホイール↑]
CoordMode,Mouse,Screen
MouseGetPos,x,y,hwnd,ctrl,3
wp:=0x00780000|GetKeyState("LButton")|GetKeyState("RButton")<<1|GetKeyState("Shift")<<2|GetKeyState("Ctrl")<<3|GetKeyState("MButton")<<4|GetKeyState("XButton1")<<5|GetKeyState("XButton2")<<6
lp:=y<<16|x
IfWinExist,ahk_id %hwnd% {
SendMessage,0x84,0,%lp%,,ahk_id %ctrl%
If ErrorLevel=4294967295
MouseGetPos,,,,ctrl,2
ctrl := !ctrl ? hwnd : ctrl
Loop,%A_EventInfo%
PostMessage,0x020A,%wp%,%lp%,,ahk_id %ctrl%
}
[ホイール↓]
CoordMode,Mouse,Screen
MouseGetPos,x,y,hwnd,ctrl,3
wp:=0xFF880000|GetKeyState("LButton")|GetKeyState("RButton")<<1|GetKeyState("Shift")<<2|GetKeyState("Ctrl")<<3|GetKeyState("MButton")<<4|GetKeyState("XButton1")<<5|GetKeyState("XButton2")<<6
lp:=y<<16|x
IfWinExist,ahk_id %hwnd% {
SendMessage,0x84,0,%lp%,,ahk_id %ctrl%
If ErrorLevel=4294967295
MouseGetPos,,,,ctrl,2
ctrl := !ctrl ? hwnd : ctrl
Loop,%A_EventInfo%
PostMessage,0x020A,%wp%,%lp%,,ahk_id %ctrl%
}
- 161 :名無しさん@お腹いっぱい。:2010/09/22(水) 00:54:06 ID:0PF8kK/50
- 明らかにおかしいのは
IfWinExist,ahk_id %hwnd% {
コピペなんだろうけど無理に変えようとしなきゃいいのに
- 162 :名無しさん@お腹いっぱい。:2010/09/22(水) 00:55:10 ID:KjsfamAG0
- 冗長だけど、処理としてはいいんじゃないの? 単にRetrun が抜けてるのかも知れんけど。
俺ならこうするけど。
WheelUp::
WheelDown::
CoordMode,Mouse,Screen
MouseGetPos, x, y
PostMessage, WM_MOUSEWHEEL:=0x020A
, 120 * (InStr(A_ThisHotkey, "Up") ? 1 : -1) * (A_EventInfo ? A_EventInfo : 1) << 16
| GetKeyState("LButton") | GetKeyState("RButton")<<1 | GetKeyState("Shift")<<2 | GetKeyState("Ctrl")<<3 | GetKeyState("MButton")<<4 | GetKeyState("XButton1")<<5 | GetKeyState("XButton2")<<6
, x | y<<16
,, % "ahk_id " DllCall("WindowFromPoint", "Int",x, "Int", y, "Ptr")
Return
- 163 :名無しさん@お腹いっぱい。:2010/09/22(水) 00:58:13 ID:GpWbe7BW0
- 可読性って大事だな、と思った
- 164 :名無しさん@お腹いっぱい。:2010/09/22(水) 09:26:05 ID:rTjPB2Jq0
- ? や | 演算子で1行まとめにしてコンパクトにするのもいいけど
動かないときはいったん分解してわかりやすい形に書き直したほうがいい
その過程でtypoなどの間違いを見つけやすくなるし
人からもらったもののコピペなどでも自力で解読しようとする努力は必要
最終的に質問するにしてもはコード追いやすくしといたほうが答えてもらえる確率高くなる
- 165 :名無しさん@お腹いっぱい。:2010/09/22(水) 22:56:31 ID:1Oe7LKkO0
- という先輩の有り難いお言葉だ、感謝しろ>>160
- 166 :名無しさん@お腹いっぱい。:2010/09/24(金) 13:31:24 ID:sutlVDhd0
- 何時間間隔とかで実行したいときは、SetTimerを使うようですが、
1日1回13時に実行とか、0:30 1:30 〜 23:30 とか時間を指定して実行したいときはどうすればいいですか?
- 167 :名無しさん@お腹いっぱい。:2010/09/24(金) 13:37:39 ID:1cwmGOJQP
- >>166
if A_Hour=13
{
msgbox,本日13時処理分
}
これをsettimerで1時間なり1分間隔でまわす
あるいはifの中に実行済みフラグを付けて実行済みかどうか判別させる
- 168 :名無しさん@お腹いっぱい。:2010/09/25(土) 15:51:08 ID:mGiGP7FJ0
- Compile_AHK IIだとUPS圧縮せずにコンパイルできますが、
最近のAHK_Lには対応していない様です。
新しいAHK_L用のコンパイラでmpress圧縮せずに
コンパイルする方法ってありますでしょうか?
- 169 :名無しさん@お腹いっぱい。:2010/09/25(土) 15:52:36 ID:mGiGP7FJ0
- UPS → UPX です
- 170 :名無しさん@お腹いっぱい。:2010/09/25(土) 16:16:33 ID:0E4EGhFa0
- MouseGesture.ahkを使い始めたのですが
ジェスチャーの条件定義で全てのアプリ(ウィンドウ)に適用させる
条件定義ってどう設定したら良いんでしょうか?
分かる方いましたら教えてください。
- 171 :名無しさん@お腹いっぱい。:2010/09/25(土) 16:21:21 ID:g1E8I3WA0
- >>170
>>108
- 172 :名無しさん@お腹いっぱい。:2010/09/25(土) 17:04:26 ID:0E4EGhFa0
- >>171
出来ました。ありがとござます。
- 173 :名無しさん@お腹いっぱい。:2010/09/25(土) 21:06:51 ID:AE9eVbN40
- Space::Send,{Joy2} とかジョイスティックのキーイベント発生させようとしても動作してくれないね
AHKって基本的にジョイスティックの入力を監視は出来るけど乗っ取れないって理解で良いのかな
Sendmode弄ってみたけどInputでもPlayでもダメみたい、Timerでパッドボタン連射させようと思ったんだけど・・・
- 174 :名無しさん@お腹いっぱい。:2010/09/25(土) 23:40:30 ID:yf5nDDog0
- そう。できない。>>6 だとちと分かりにくいかもしれんな。
- 175 :名無しさん@お腹いっぱい。:2010/09/26(日) 00:47:21 ID:nkRDvKD10
- AutoHotkey_L でMsgbox を使って出力すると文字化けします。どうすれば解決しますか?
- 176 :名無しさん@お腹いっぱい。:2010/09/26(日) 01:05:54 ID:Q01KCdZZ0
- >>175
スクリプトファイルをUTF-8で保存する。
- 177 :名無しさん@お腹いっぱい。:2010/09/26(日) 03:55:08 ID:qHniXqZL0
- IEキャッシュフォルダ内のファイルを削除したいのですができますか?
FileDelete,C:\Users\owner\AppData\Local\Microsoft\Windows\Temporary Internet Files\*
こう書けばできるかなと思ったんですが削除できませんでした。
- 178 :名無しさん@お腹いっぱい。:2010/09/26(日) 06:54:22 ID:nkRDvKD10
- ありがとうございました。
- 179 :名無しさん@お腹いっぱい。:2010/09/26(日) 23:55:01 ID:npQ7FQgg0
- AutoHotkey_L 更新
Revision 60 - September 24, 2010
Added: File.Encoding for changing or retrieving the codepage in use by a File object.
Added: Variadic functions and function-calls and indirect mode for callbacks.
Added: Object.Clone()
Changed: ByRef parameters no longer require the caller to supply a variable.
Changed: Obj.foo := "" now frees foo's contents as originally intended (but still doesn't remove the field).
Changed: OnMessage functions now tolerate optional and ByRef parameters.
Changed: RegisterCallback now enables execute access on callbacks in 32-bit builds (already did in 64-bit builds).
Changed: RegisterCallback now treats explicit ParamCount="" as omitted.
Fixed: For-loop was treating non-expression "0" as true for scripted enumerators.
Fixed: ComEvent (ComObjConnect) not working on the ANSI build.
Fixed: ComEvent (ComObjConnect) not correctly backing up/restoring local vars when calling a function which is already running.
Fixed: Buffer overflow in A_EndChar when there is no end char.
Fixed: Func->mNextFunc not inititialized to NULL (used only by LowLevel scripts).
Debugger: Added the capability to retrieve an object's contents (with a supported debugger client).
Debugger: Fixed a few bugs.
----
可変長引数は便利そうだ。
DllCallの引数に配列オブジェクトを渡すことが出来たみたいで、
可変長引数との連携でDLLの関数のインポートが簡単にできそうでフォーラムが盛り上がっとる。
- 180 :名無しさん@お腹いっぱい。:2010/09/27(月) 00:03:23 ID:5TbViGzm0
- なるほど、ふむふむ
ほうほうなるほどねーなるほど、うん、なるほどね
すみません英語わかりません
- 181 :名無しさん@お腹いっぱい。:2010/09/27(月) 00:38:35 ID:7U+YabrZ0
- Cdecl には便利だなぁ
Random, value, 0, 999
MsgBox,% sprintf("%d = 0x%08x", "Int", value, "Int", value)
sprintf(format, params*) {
VarSetCapacity(buff, 1024) ; バッファ長は適当
params.Insert(1, "msvcrt\" . (A_IsUnicode ? "swprintf" : "sprintf"))
params.Insert(2, "Ptr"), params.Insert(3, &buff)
params.Insert(4, "Str"), params.Insert(5, format)
params.Insert("Cdecl Int")
If DllCall(params*)
Return buff
}
- 182 :名無しさん@お腹いっぱい。:2010/09/27(月) 16:10:50 ID:LQAeJ7X/0
- IMEがONになっているときだけ、
A & $B::などのコンビネーションキーを有効にするには、
どうすればいいでしょうか?
IMEがOFFのときには、A押しっぱでAのキーリピートを発生させたいです。
当方、WinXP、AutoHotkey_L使用。IME.ahk導入済みです。
以下、うまくいかなかった残骸。
Hotkey,If,(IME_Get() == 0)
Hotkey,a & $b, Off
Return
Hotkey,If,(IME_Get() == 1)
Hotkey,a & $b,LabelA
Return
LabelA:
Send,{Blind}@
Return
- 183 :名無しさん@お腹いっぱい。:2010/09/27(月) 18:12:37 ID:MKGzi6kB0
- > Hotkey,If,(IME_Get() == 0)
AutoHotkey_Lは使ってないので文法に違いがあるのかも知れんけど
こういう書き方ってできるんだっけ?
あと、IME_Get() はLoopかSetTimerで定期的に見てやらんといかんのでは?
- 184 :名無しさん@お腹いっぱい。:2010/09/27(月) 19:12:21 ID:WJ6+ZZnJ0
- >>182
>>9に書いてあるけど、AHK_Lならこんな感じでできる。
#If (IME_GET() == 1)
a & $b::Send,{Blind}@
#If
- 185 :名無しさん@お腹いっぱい。:2010/09/27(月) 20:35:00 ID:T8of1KY90
- コマンドラインで受け取ったときの%1%とかを関数の中で使う場合
p1 = %1%
IF( p1 ){
って使うしかない?
あとLにするデメリットって何かあるっけ?
2バイト文字を1文字あたり2文字として扱ってるスクリプトがたくさんあると
移行がめんどくさそうだけど
- 186 :名無しさん@お腹いっぱい。:2010/09/27(月) 22:14:52 ID:7U+YabrZ0
- > p1 = %1%
ってのは、しょうがないとおもって諦めて同じようにやってる。
それ以外のデメリットというか、非互換はDllCall系かな。
ANSI版の関数を決め打ちで呼んでいるスクリプトは修正が必要。
旧流行らせるページのものは殆どこれに該当。
ユニコード版の場合、そこの ActiveX は使わないのが吉。ComObjCreate() を使うべし。
- 187 :名無しさん@お腹いっぱい。:2010/09/28(火) 13:55:48 ID:VotiS8pN0
- autohotkey_lの話が出ているので便乗して質問します。
ime.ahkを使っています。
goolge日本語入力で、sendで漢字を表示しようとすると文字化けします。
ユニコードでソースを保存しているのですが、なぜかそうなってしまいます。
microsoft imeとatokでは問題ありません。
google日本語入力とautohotkey_lの相性問題でしょうか?
- 188 :名無しさん@お腹いっぱい。:2010/09/29(水) 00:35:58 ID:bWv2wkfB0
- 簡単な再起呼び出し自体はなんとなくわかるのですが
RegExでの再起呼び出しの仕方がよく分かりません
どなたか例を書いていただけないでしょうか
- 189 :名無しさん@お腹いっぱい。:2010/09/29(水) 02:10:37 ID:FDn4qtCl0
- ; 後方参照 : マッチした語句を参照
Haystack = キュウリキャベツトマト
Pattern = ([ア-ン])[ア-ン]\1
MsgBox, % RegExMatch(Haystack, pattern, $) ? $ :
; 再帰 : パターンの再利用
Haystack = キュウリキャベツトマト
Pattern = ([ア-ン])(?1)(?1)
MsgBox, % RegExMatch(Haystack, pattern, $) ? $ :
- 190 :182:2010/09/29(水) 12:45:50 ID:UMOsfPx00
- >>184
ありがとうございます。
ずいぶんシンプルな記述ができるのですね。
昨日、遠回りな記述を発見しまして、それでずっと書いていましたが、これで少しは楽できそうです。
↓遠回りな記述
$b::
If(IME_Get() == 0)
{
Send,b
}Else
{
If(GetKeyState("a","P") == 1)
{
Send,{Blind}@
}Else
{
Send,b
}
}
Return
- 191 :名無しさん@お腹いっぱい。:2010/09/29(水) 18:04:59 ID:bWv2wkfB0
- >>189
ありがとうございます
今後利用させていただきます
- 192 :名無しさん@お腹いっぱい。:2010/09/30(木) 15:48:01 ID:VH7s/lU20
- AutoHotkeyで文字列を置換したいのですが…わかりません。
RegExReplace() を使って正規表現による置換をすれば、できるようなのですが難しくてわかりません。
やりたいことは、文字列中のアットマーク以降の文字だけに置換したいのです。
例
"あいうえお@かきくけこ" → "かきくけこ"
"abcd@efgh" → "efgh"
"0123456@789" → "789"
文字数は決まっていません。
エクセルとかだと、ワイルドカードを使って「*@」を取ってしまえばできるのに。
教えてください。お願いします。
- 193 :名無しさん@お腹いっぱい。:2010/09/30(木) 16:01:14 ID:EZTOI8wM0
- これつかって、アクティブウインドウを中央に配置 できる?
- 194 :名無しさん@お腹いっぱい。:2010/09/30(木) 16:11:35 ID:4NVtvZdn0
- WinMoveでできるよ
- 195 :名無しさん@お腹いっぱい。:2010/09/30(木) 16:18:28 ID:TR4zMDWK0
- >>192
RegExReplaceでやりたいなら
unko =
(
あいうえお@かきくけこ
abcd@efgh
0123456@789
)
unko := RegExReplace(unko,"`n).*?@(.*?)",$1)
msgbox,% unko
- 196 :名無しさん@お腹いっぱい。:2010/09/30(木) 16:29:05 ID:VH7s/lU20
- >>195
出来ました。
.*? を使えばエクセルのワイルドカード*と同じように使えるのですね。
ありがとうございます。
正規表現って難しいですね。
その代わりいろんなことができるのでしょうけど。
- 197 :名無しさん@お腹いっぱい。:2010/09/30(木) 18:54:12 ID:5DqLBhFu0
- AutoHotkey_LのUnicode版で標準入出力ってどうすればいいですか?
>>11だと文字コードをどう変換してもうまく動作してくれないです。
- 198 :197:2010/10/01(金) 08:02:15 ID:/Nakdzh+0
- ここにあるUnicode版AutoHotkey_L用の関数で出来ました
http://www.autohotkey.com/forum/topic16823-90.html&sid=e351cf2ee922bfdc51737d40e44b2124
- 199 :名無しさん@お腹いっぱい。:2010/10/03(日) 18:23:46 ID:HDrPojWh0
- Revision 61 - October 3, 2010
Added: ObjClone(Object), forgotten when Object.Clone() was implemented.
Added: Support for RegEx Unicode properties in Unicode builds. Also upgraded PCRE to 8.10.
Added: Object.Remove(int, "") removes Object[int] without affecting other keys.
Changed: ComObj.xyz() is now always treated as a method-call.
Changed: Var := 123 is now left as an expression, for consistency.
This makes Var := 123 and Var := (123) equivalent, whereas previously the former assigned only a string
and the latter assigned both a string and a cached binary integer.
In particular, this avoids some confusing type mismatch errors with COM objects.
Fixed: Dynamic variadic calls to functions with mandatory parameters.
Fixed: The final parameter of an assume-global variadic function had to be explicitly declared local.
Fixed: Static initializers interfering with setting of breakpoints.
Fixed: More pointer size-related errors with PCRE callouts on x64 builds.
Fixed: Input with 'M' option treated Ctrl-M (`r) as Ctrl-J (`n).
Fixed: Object.Remove(n) returned 0 (not "") if Object[n] didn't exist.
- 200 :名無しさん@お腹いっぱい。:2010/10/04(月) 14:26:26 ID:9MmDvLON0
- >>199のうち分からないのが2つあります
>Changed: Var := 123 is now left as an expression, for consistency.
と
>Fixed: Input with 'M' option treated Ctrl-M (`r) as Ctrl-J (`n).
です。
前の方は、"left as an expression, for consistency"が意味不明です。
説明文は分かるのですが…
後の方は "'M' option" ということば自体が分かりません。
はやらせるページにこんな記述はなかったと思います。
- 201 :名無しさん@お腹いっぱい。:2010/10/04(月) 14:51:56 ID:kBE0cxgz0
- >>200
前者は続く文読めばわかるよね。
後者は公式のドキュメントに書いてあるよね↓
Input [, OutputVar, Options, EndKeys, MatchList]
Options
M: Modified keystrokes such as Control-A through Control-Z are
recognized and transcribed if they correspond to real ASCII characters.
Consider this example, which recognizes Control-C:
- 202 :名無しさん@お腹いっぱい。:2010/10/04(月) 15:21:38 ID:yKgJ7klQ0
- 履歴書の習得言語にAutoHotkeyと書きかけたw
- 203 :名無しさん@お腹いっぱい。:2010/10/04(月) 15:36:23 ID:UJOD4LlF0
- >>200
前者の件。
書いてあるとおりだけど、以前までのRevでは数値で書いてあっても文字として格納していて、
今Revからは式の結果が格納される。
例) 以下を実行した結果。
Rev.61 : 256
以前のもの : 0x100
; ---- test.ahk ----
; SetFormat, IntegerFast, d
MsgBox, % Func()
Func() {
static value := 0x100
Return value
}
- 204 :名無しさん@お腹いっぱい。:2010/10/04(月) 20:53:06 ID:UJOD4LlF0
- ふむ。おもろいな。
param1 := Object("x", 100, "y", 200, "z", "hoge")
param2 := Object(1, 100, 2, 200, 3, 300, 4, 400, 5, 500)
Func1(param1*)
Func2(param1*)
Func3(param2*)
Func4(param2*)
Func1(x, y) {
MsgBox, % "x + y = " (x + y)
}
Func2(z) {
MsgBox, % "Hello, " z "!"
}
Func3(p1, p2, p3) {
MsgBox, % "p1 = " p1 "`np2 = " p2
}
Func4(params*) {
num := 0
For k, v in params
num += v
MsgBox, % "total = " num
}
- 205 :名無しさん@お腹いっぱい。:2010/10/05(火) 09:40:14 ID:4UkphArqP
- AutoHotkeyjp新機能説明も追加してくれてるのか
最近の更新に全くついていけてないからありがてえ
- 206 :200:2010/10/05(火) 12:49:12 ID:UVi77zYS0
- みなさんありがとうございます。
具体的に分かりました。
- 207 :名無しさん@お腹いっぱい。:2010/10/05(火) 15:08:06 ID:oDxpYZL70
- ラベルの動的生成ってできるでしょうか?
Menuの動的生成しようとして機能にラベルしか割り当てられなくて詰まった・・・
- 208 :名無しさん@お腹いっぱい。:2010/10/05(火) 15:22:40 ID:LeJtXyaf0
- ラベルはハードコーディングするしかないよ。
メニューの動的生成なら、固定ラベルに飛ばして、
A_ThisMenu, A_ThisMenuItem, A_ThisMenuItemPos
で分岐すりゃいいだけかと。
Loop, %A_MyDocuments%\*.*
{
File%A_Index% := A_LoopFileFullPath
Menu, Menu1, Add, %A_LoopFileName%, Label1
}
Menu, Menu1, Show
Return
Label1:
MsgBox, % "Your select is : """ File%A_ThisMenuItemPos% """"
Return
- 209 :名無しさん@お腹いっぱい。:2010/10/05(火) 15:28:09 ID:oDxpYZL70
- >>208
特殊変数気付きませんでした
それで自分のやりたいことはできます。ありがとうございました
- 210 :名無しさん@お腹いっぱい。:2010/10/07(木) 01:52:49 ID:iPOq7eSA0
- autohotkeyjpにヒアドキュメントの説明を掲載して下さいませんか
流行らせるページにあった簡単な説明で構いませんので(http://ahk.xrea.jp/Scripts.htmlの「ヒアドキュメント」)
もしも既に説明があったら済みません
- 211 :名無しさん@お腹いっぱい。:2010/10/07(木) 03:13:12 ID:l69mXxdt0
- 乗ってなかったのか。かなりやっつけ気味に書いたw
http://sites.google.com/site/autohotkeyjp/reference/Scripts#heredocument
イントロダクション と スクリプト仕様 と 関数 あたりは内容がグチャグチャなんで
いったん整理したいとは思ってる。
というか、AHKLのヘルプ準拠でいいんだろうけど、ヘルプ自体が流行らせるページと違う部分が結構あって
リンク切れ(とくにページ内アンカー)のチェックが面倒そうで、手を付けずにいる。
- 212 :名無しさん@お腹いっぱい。:2010/10/07(木) 11:30:10 ID:k5uIxNSi0
- Autohotokeyで生成されたGuiでなく
通常のコンテキストメニューを対象にしたいのですがどのようにすればよいのでしょうか
- 213 :名無しさん@お腹いっぱい。:2010/10/07(木) 11:34:59 ID:jgByoxEp0
- >「通常のコンテキストメニューを対象にしたいのですが」
対象をどうしたいのかがよくわからない。
表示中の項目を抜き取って、別の項目に差し替えて処理をさせるとかは
AHKでは、かなり難しいレベルだと思う。
- 214 :名無しさん@お腹いっぱい。:2010/10/07(木) 11:48:21 ID:k5uIxNSi0
- >>213
透過処理をさせたいのですが
- 215 :名無しさん@お腹いっぱい。:2010/10/07(木) 11:51:38 ID:jgByoxEp0
- ますます意味がわからない。ゆとり世代なの?
- 216 :名無しさん@お腹いっぱい。:2010/10/07(木) 12:04:01 ID:k5uIxNSi0
- コンテキストメニューを半透明にしたい
WinSetでコンテキストメニューを透過させようとした
タイトルの指定方法がわからない
WinSetで可能なのかあるいは他の方法があるのか
どなたかわかる方いらっしゃいませんか?
- 217 :名無しさん@お腹いっぱい。:2010/10/07(木) 13:44:00 ID:eLnaLlly0
- >>216
ahk_class #32768
過去スレでマウスカーソル上の
ウインドウタイトルやクラスの取り方を見た気がする
- 218 :名無しさん@お腹いっぱい。:2010/10/07(木) 14:01:25 ID:k5uIxNSi0
- >>217
AU3_Spy.exeで取得できなかったので出来ないものだと思っておりました
ありがとうございます
- 219 :名無しさん@お腹いっぱい。:2010/10/07(木) 16:08:25 ID:g9/BQ1pa0
- 質問です、
AutoHotkey はキーボードkey押しで監視対象ソフトへのショートカット押しぐらいしか使ったことがないのですが、
質問内容は2種類です。
1.他の動作に悪影響を出しにくい高速な文字列の受け渡しとその手法。
自作ソフト(非表示常駐もする)から作成される文字列をAHKで高速で受け取れるようにって出来るものでしょうか?
300 バイト/秒(1000 ms) 〜 30 バイト/100 ms ぐらいの可変バイト数/速度
受け取れれば、AHK から他のソフトへ送信できるようにしたい。
やりたい事は特定ハードウェアから情報(18 ms )を受け取れる自作ソフトからデータを他で簡単に利用できるようにしておきたい。
悪影響の例 ) 他のソフトとの文字列受け渡し用にクリップボードを使うとその文字列に占有されて
他でコピー&ペースト作業に支障がでる。
2.他のソフトをコントロールする為に自作ソフトからイベント発行するのに効率的な方法。
仮想キーコードの出力は出来るので、AHK で囲い込み出来ると良いのですが、、、、、
悪影響の例? ) 自作ソフト↑仮想キー発行でさせたい処理以外に
一般キーボード入力と間違われて他の割り当てで重複処理されると困る。
上記の2点が可能なら、自作ソフトの特定動作やデータに対してAHK 経由で他のソフトを自由にコントロールできて便利なのです。
御教示お願いします。
AutoHotkeyを流行らせるページなどで入手したマニュアルや AHK の C++ ソースをざっと眺めてみたのですがよく解らない。
- 220 :名無しさん@お腹いっぱい。:2010/10/07(木) 16:37:56 ID:sSYr464w0
- 1. 透明GUIにEditBox作って自作ソフト側から文字列ドロップとかSendとか
文字コード制限出ちゃうかもだけど
2.簡単にやりたいなら[F13]〜[F20]あたりのキーボードにないキーコード使う
ロジのマウスみたいにドライバで発行可能なハードもあるので注意が必要かも
確かRegisterCallback()やOnMessage()でイベント通知できたような
外部とのやりとりに使えるかどうかはわかんないけど
Message飛ばせれば1,2 ともに解決しそうではあるね
- 221 :名無しさん@お腹いっぱい。:2010/10/07(木) 16:54:15 ID:l69mXxdt0
- イベント通知はSendMessageで行う。AHK側はOnMessageで待ち受けする。
自作アプリ側でAHKのプロセス内に VirtualAllocEx でメモリ確保して文字列書き込んで、
SendMessage でそのアドレスを通知する。
AHK側はメッセージを受けとったら、該当アドレスのデータをコピーしてを変数に格納(AHKLのStrGetだと楽)。
成功コードを返す。
SendMessageの戻りを受けて、メモリを解放。
- 222 :210:2010/10/07(木) 20:50:06 ID:iPOq7eSA0
- >>211
ありがとうございます!
- 223 :名無しさん@お腹いっぱい。:2010/10/07(木) 21:05:51 ID:g9/BQ1pa0
- >>220-221
お早い返答で恐れ入ります。
RegisterCallback() 関数はAHK の関数ですね、速度は出せなさそうなのでキー監視用途でしょうか?
Win32API の SendMessage 関数
LRESULT SendMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam );
ですか、
http://wisdom.sakura.ne.jp/system/winapi/win32/win52.html
戻り値待ちで停止する訳にはいかないので、送りっぱなしの非同期の
PostMessage() が都合が良いかなぁ
EditBox やテキストBox を自作ソフトに設置すると簡単な文字列は AHK で拾えるということでしょうか?
それだと楽で良い、、、
それとも透明GUIはAHK 側?
なにぶん AHK の解説文が難解でして
- 224 :名無しさん@お腹いっぱい。:2010/10/07(木) 21:23:59 ID:l69mXxdt0
- 返答待ちっていっても数10ms位だと思うけど。
- 225 :名無しさん@お腹いっぱい。:2010/10/07(木) 22:13:56 ID:sSYr464w0
- >EditBox やテキストBox を自作ソフトに設置すると
逆かな、AHK側にGUIでウィンドウ作って自作ソフト側から投げてやる
でも221の方法でMessage投げた方が負荷は軽いしスマートだと思う
- 226 :名無しさん@お腹いっぱい。:2010/10/07(木) 23:20:42 ID:nVbOIDnb0
- RegExReplaceで「"」を「あ」に置換する場合エラーが出るんですが
RegExReplaceで「"」のエスケープはどうすればよいのでしょうか?
- 227 :名無しさん@お腹いっぱい。:2010/10/07(木) 23:42:17 ID:k5uIxNSi0
- Hoge = "hogehoge"
MsgBox, % RegExReplace( Hoge, """", "あ")
MsgBox, % RegExReplace( Hoge, "\x22", "あ")
MsgBox, % RegExReplace( Hoge, Chr(34), "あ")
- 228 :名無しさん@お腹いっぱい。:2010/10/07(木) 23:51:30 ID:nVbOIDnb0
- おーサンクス!!!
助かりました。
- 229 :名無しさん@お腹いっぱい。:2010/10/08(金) 10:12:36 ID://1JnWBT0
- アッー!
- 230 :名無しさん@お腹いっぱい。:2010/10/08(金) 15:41:22 ID:5WHkkVUH0
- FileDelete, atwiki.html
word = おーとほっときー
url = http://www1.atwiki.jp/test/?cmd=search&keyword=%word%
Run, %url% ;←Firefoxで開くと正常
URLDownloadToFile, %url%, atwiki.html ;←「おーとほっときー」が文字化け・・
@wikiの検索結果ページを保存したいんだけど、URNDownloadToFile使うとすごい文字化けしてしまう
どうにかして文字化けさせずファイルに保存できませんか?
- 231 :名無しさん@お腹いっぱい。:2010/10/08(金) 16:38:34 ID:5v4rxvwM0
- http://orera.g.hatena.ne.jp/misttrap/20070214/p1
- 232 :名無しさん@お腹いっぱい。:2010/10/08(金) 17:30:24 ID:7oKYknjD0
- >>230
URLEncode関数で、エンコードしてから渡せば、うまくいくはず。
検索ワードの間のスペースとかも、適宜加工する必要がある。
Firefoxで開けるのは、それをFirefox側でやってくれてるからじゃない?
- 233 :名無しさん@お腹いっぱい。:2010/10/08(金) 17:35:58 ID:5WHkkVUH0
- >>231
ありがとう
AutoHotkey_Lではできなかったから普通の方でやったら動いたんだけど、
#$%&てstー、オートホットキー といれてみたら
?E?E??E??E??E???E?t?E、オート?EチE??キー になってしまっててちょっと使えそうにないかも・・
- 234 :名無しさん@お腹いっぱい。:2010/10/08(金) 17:37:08 ID:5WHkkVUH0
- >>232
URLEncode関数なんてあったんですか
ちょっと調べてみます、ありがとう
- 235 :名無しさん@お腹いっぱい。:2010/10/08(金) 17:38:53 ID:g179rdT00
- word := UrlEncode("おーとほっときー")
↑ 式での代入なので注意
; AHKL用超簡易版。enc には UTF-16, UTF-8, CP932(=Shift_JIS), CP50220(=JIS) が利用可。EUCは無理。
; URL全体には使わず、エンコードしたい部分だけに使うこと。
UrlEncode(str, enc="UTF-8") {
hex := "00", func := "msvcrt\" . (A_IsUnicode ? "swprintf" : "sprintf")
VarSetCapacity(buff, size:=StrPut(str, enc)), StrPut(str, &buff, enc)
While (code := NumGet(buff, A_Index - 1, "UChar")) && DllCall(func, "Str", hex, "Str", "%%%02X", "UChar", code, "Cdecl")
encoded .= hex
Return encoded
}
- 236 :名無しさん@お腹いっぱい。:2010/10/08(金) 17:43:10 ID:5WHkkVUH0
- >>235
おお、AHK_L最新でばっちり動きました!
自分じゃどうやってもできなかったので本当に助かりました
皆さんありがとうございました
- 237 :名無しさん@お腹いっぱい。:2010/10/08(金) 19:56:18 ID:i7+Z9MYnP
- 1年くらい前にここでいろいろ教えてもらったものですが
やっとここで教えてもらったことをまとめられましたので報告します。
お題はパソコン学習リモコン「PC-OP-RS1」をAutoHotkey_Lで操作するです。
スクリプト自体はかなり前から出来ていたんですけどね
このたびHPにしてみました。
ttp://xbmc.inpane.com/main/rc/autohotkey.php
AutoHotkey_Lと学習リモコンの組み合わせはいろいろできそうです。
いろんな赤外線の信号をデータベース化しちゃおうかな
- 238 :名無しさん@お腹いっぱい。:2010/10/08(金) 20:31:07 ID:1OfUT/JmP
- なんか面白そうなことやってんな
とりあえず乙
- 239 :名無しさん@お腹いっぱい。:2010/10/08(金) 20:47:20 ID:g179rdT00
- ほぅ、http://pc12.2ch.net/test/read.cgi/software/1253888736/321,323 の頃の人か。
色々と乙。
- 240 :237:2010/10/09(土) 20:19:44 ID:Wj3h9FRbP
- とりあえず実際に動かしてるところをビデオに撮ってようつべに上げました。
http://xbmc.inpane.com/
- 241 :名無しさん@お腹いっぱい。:2010/10/09(土) 22:56:56 ID:lnxF+yoC0
- こういう説明動画はいいね
AutoHotkey を使ってどう動かすか、という様を伝えるには
文字よりもわかりやすそう
- 242 :名無しさん@お腹いっぱい。:2010/10/10(日) 00:33:56 ID:q9exBTyQ0
- Ahk2Exe_Lについて質問です
autohotkey_lのサイトの下の方にAhk2Exe_Lと書いてますが
この実行ファイル版は無いのでしょうか?
インストール先のcompilerフォルダを見ても、Ahk2Exe_LではなくAhk2Exeしかありません
それか、Ahk2Exeが実際にはAhk2Exe_Lなのでしょうか
この点が分かりません
- 243 :名無しさん@お腹いっぱい。:2010/10/10(日) 11:36:01 ID:lz6M9l8S0
- >>235
これCP50220だけ出来なくない?
- 244 :名無しさん@お腹いっぱい。:2010/10/10(日) 12:14:00 ID:Oad5IvFI0
- 推薦エディタのSciTE4を使ってるんですが
新規作成する場合、デフォルトで文字コードをUTF-8にすることはできませんか?
- 245 :名無しさん@お腹いっぱい。:2010/10/10(日) 13:05:16 ID:LwCFr4mc0
- >>243
エスケープシーケンスが付いてんじゃないの?
http://euc.jp/i18n/charcode.ja.html#chap1
> ・JISコード
> ASCIIと半角カタカナを基本とし、漢字が追加されています。 ASCIIと漢字のコード範囲が重複するため、
> 以下のようなエスケープシーケンスによって切り替えます
> 漢字の開始
> ESC $ @ または ESC $ B
> ASCIIの開始
> ESC ( B または ESC ( J
- 246 :名無しさん@お腹いっぱい。:2010/10/10(日) 14:43:11 ID:ASYSCNp+0
- 中古で買ったWindowsMobileにAutohotkeyforPocketPC入れてみた。
調べたら更新されててユニコード版もあった。
ほんとに動くんだな。感動したわ。
それにしてもPocketPC版についての日本語の情報はないねw 誰もつかってねえのかな?
- 247 :名無しさん@お腹いっぱい。:2010/10/10(日) 17:02:10 ID:kjM2+W8l0
- If( !IsOjbect( objHoge := Object() ) )
MsgBox, えらー!
If( !objHoge.Insert( "HoGe" ) )
MsgBox, えらー!
If( !objHoge.Remove() )
MsgBox, えらー!
・・・ってエラーチェックってすべき?
視認性も悪くなるし何よりもめんどくさくなってきた
- 248 :名無しさん@お腹いっぱい。:2010/10/10(日) 19:55:06 ID:jwThGami0
- AHKってテキスト読み込みと追加書き込みはできるけど
消したり書き換えはできないよね?
行削除したいときとかってどうやって対処してますか?
>>242
たしかAhk_Lと一緒にあるAhk2ExeがL版だった気がするから置き換えればおk
プロパティのバージョン確認して、本体と2exeが同じバージョンなら大丈夫
あと蛇足かもだが、.ahkのエンコードをUTF-8(BOM付き)にしないといかん
- 249 :242:2010/10/10(日) 20:24:03 ID:q9exBTyQ0
- >>248
そうでしたか。ありがとうございます。
- 250 :名無しさん@お腹いっぱい。:2010/10/10(日) 21:50:50 ID:LwCFr4mc0
- >>247
エラーチェックするのって、自分以外にアクセスする場合でだけいいんでないの?
(ファイル、ネットワーク、別プロセスetc)
引数が足りなくて、オブジェクト作れないとかはスクリプトをきちんと書けばどうにかなるもんだし。
( obj := Object(params*) は厄介そうだが・・・ )
----
ところで、URLDownloadToFile がXPだと動かないバグがあって最ビルドしたやつを配布してるから、
思い当たる人はバイナリを更新した方がいいね。
※ x86 Unicode だとファイルサイズは同じだけどハッシュ値は違ってきちんと中身が変わってる
- 251 :名無しさん@お腹いっぱい。:2010/10/10(日) 21:56:48 ID:6FE7Ljpd0
- >>248
自分はファイルの内容を全部読み込んで、必要なところを編集させて、
ファイルを消去して、新規書き込みしてる
- 252 :名無しさん@お腹いっぱい。:2010/10/10(日) 22:03:04 ID:EA29JKlO0
- >>248
やったことないけど Loop,READ を使えばできるんじゃない
- 253 :名無しさん@お腹いっぱい。:2010/10/11(月) 20:36:40 ID:ObivaGrB0
- >>250
ちらほらフォーラムでも言われてたのに自分は動いてるからってさんざん無視してたが
やっとLexikos謝罪か。うーん
- 254 :名無しさん@お腹いっぱい。:2010/10/11(月) 21:08:49 ID:FuEjTDPk0
- まぁ、フォーラムも、愉快な仲間達からのツッコミと、
ユニコード版に関する混乱で「互換性のページ見ろ」で解決するやつ
で埋まってるからなぁ
- 255 :名無しさん@お腹いっぱい。:2010/10/12(火) 23:12:18 ID:DhLMtFuv0
- >>251
だよねやっぱそれしかないか
消すのに成功して書くのに失敗した場合は
対象ファイルが消えてしまうと思うとちょっと不安なんだよね
>>252
読み込みは色々できるけど、書き込みはFileAppendしかないんだ
iniの形式なら消したりできるから、普通のでもできないかなーというところ
- 256 :名無しさん@お腹いっぱい。:2010/10/12(火) 23:16:14 ID:B3cvA+9e0
- 心配なら元ファイルとは別に新ファイル作って
書き込み終了後に元ファイルを削除、新ファイルをリネームとか
- 257 :251:2010/10/12(火) 23:34:43 ID:SesNTd6o0
- 自分はテスト用スクリプトは Dropbox 対応フォルダの中で走らせていて、
バックアップの面ではかなり大丈夫
- 258 :名無しさん@お腹いっぱい。:2010/10/12(火) 23:44:33 ID:DhLMtFuv0
- >>256
そだねそうするサンクス
- 259 :名無しさん@お腹いっぱい。:2010/10/13(水) 02:38:22 ID:zJmxcNc50
- すごく初歩的な質問かもしれませんが、申し訳ありません。
右コントロールキーを使って、2ストロークキーを実現させたいのですが、どうすればいいでしょうか?
右Ctrlを押したあと、離してから、次のキー(たとえばJやKやL)をおすと、
特定の入出力をするというものです。
右Ctrlとの順押し2ストロークで動作を発生させたいのですが、
同時押し(本来のシフト操作)では本来のCtrlの動作をさせるのを残しておきたいのです。
(本来のCtrl動作の後に押したキーも、順押しの動作ではなく、本来の動作をさせる。)
つまりCtrlを押してから何もキーを押さずにそのままコントロールキーを離したときだけ、2ストロークキーの始まりにしたいのです。
これはどうすればいいでしょうか?
- 260 :名無しさん@お腹いっぱい。:2010/10/13(水) 06:23:10 ID:Dj6mLgWp0
- ~RCtrl Up::
Input, char, L1 T1
If char = j
Send, JJJJJJJJJJJ
Else if char = k
Send, KKKKKKKKKKKKKK
Else If char = l
Send, LLLLLLLLLLLL
Return
こんなんでいいんじゃないのかね。
> つまりCtrlを押してから何もキーを押さずにそのままコントロールキーを離したときだけ、
ってのは厳密じゃないけど。
どうしても厳密にやりたいなら、LLフック か RwwInput を DllCall で仕込んでチェックかなぁ
- 261 :名無しさん@お腹いっぱい。:2010/10/13(水) 06:49:41 ID:Al71sdssP
- 本家の開発が止まってたのは、就職したりして忙しくなったとかではなく、単に飽きただけみたいだね
ttp://www.autohotkey.com/forum/topic63474.html&sid=a25a0d0e7a8e4484b308f1aec8d6e895
- 262 :名無しさん@お腹いっぱい。:2010/10/13(水) 08:56:25 ID:ACL8Lyat0
- >>261
AutoHotkey Download
http://www.autohotkey.com/download/
ほんとだ
AutoHotkeyのインストーラーの配布ページでAutoHotkey_Lのインストーラーが配布されるようになってる
- 263 :名無しさん@お腹いっぱい。:2010/10/13(水) 09:53:50 ID:SmyqTYqd0
- _Lの人が精力的に頑張ってくれるようになって、
別に自分がやらんでもいいやみたいな気になっちゃったんだろうな
- 264 :名無しさん@お腹いっぱい。:2010/10/13(水) 13:12:43 ID:XUXsd83X0
- AutoHotKey_L Version v1.0.48.05.L61
を使用しています。
以下のスクリプトで、ResultSet変数にWQLのクエリの結果が
入っていると思うのですが、値の参照の仕方が分かりません。
http://sites.google.com/site/autohotkeyjp/reference/AutoHotkey_L/Objects
上記サイトのオブジェクトのページも読みました。
VBScriptだと
--code--
Set objWMIService = GetObject("winmgmts:")
Set ResultSet = objWMIService.ExecQuery("Select * From Win32_DiskPartition WHERE Bootable=True")
For Each I in ResultSet
MsgBox I.deviceID
Next
--code--
のような形で取得できるのですが、AutoHotKey_Lではどうすれば
取得できますでしょうか?
--code--
;WMIを利用
wmi := ComObjGet("winmgmts:")
;WQLでCドライブのディスク番号とパーティション番号を取得する
ResultSet := wmi.ExecQuery("Select * From Win32_DiskPartition WHERE Bootable=True")
--code--
よろしくお願い致します。
- 265 :名無しさん@お腹いっぱい。:2010/10/13(水) 19:17:28 ID:w5gzQaBY0
- AutoHotkey_Lでタスクの一覧を表示するスクリプトを組んでいるのですが、
その際にプロセスIDから実行ファイルのフルパスを調べて、
Menu,Icon で実行ファイルのアイコンもついでに表示させたいと考えています。
通常はこれで問題無いのですが、実行ファイルがアイコンを持っていなかった場合は
Menu,Icon でメニュー登録をしようとすると、エラーでスクリプトが停止してしまいます。
事前に場合分けしてアイコンが存在しないケースでは、処理をスキップさせるしか無いみたいなのですが
実行ファイルにがアイコンリソースを含むかどうかを判別する方法が思いつきません。
どなたか、いいアイデアはありませんでしょうか?
- 266 :名無しさん@お腹いっぱい。:2010/10/13(水) 20:36:24 ID:Dj6mLgWp0
- ちょっと面倒だけど
hIL := IL_Create()
Loop, {
FileSelectFile, filePath, 1, %A_WinDir%, Select File, executable(*.exe)
If (ErrorLevel)
Break
ret := IL_Add(hIL, filePath)
MsgBox, % """" filePath """ has " (ret = 0 ? "no icon" : "icon(s)")
}
IL_Destroy(hIL)
- 267 :名無しさん@お腹いっぱい。:2010/10/13(水) 21:07:16 ID:w5gzQaBY0
- >>266
おおっ、ありがとうございます
ret := IL_Add(hIL, filePath)を組み込む事で見事に場合分けすることができました。
この行が何を意味してるのかはさっぱり理解できませんが…orz
まあ、これから勉強していきたいと思います、本当に助かりました。
- 268 :名無しさん@お腹いっぱい。:2010/10/13(水) 21:40:43 ID:+33RXyl/P
- ListViewで使うイメージリスト関数か
こんな使い方あったのね、参考になります
- 269 :名無しさん@お腹いっぱい。:2010/10/14(木) 02:00:11 ID:quItkztc0
- AutoIt
↓
AutoIt 2 ┐@
| ↓
: AutoHotkey1.0┐
: | ↓
: | AHKL (1.0ベース) ┐
: ├←Aーー┤ ↓
: | .│ AutoHotkeyU (Unicode化)
: | .├←ーーーー┤
: | .↓ 開発終了
: | AHKL(ANSI , Uni)ーーーー┬ーーーーーーーーー┐
: | .│ ↓ B |
: | .│ AutoHotkey64(x64とCOM対応).|
↓. | .├←ーーーーーーー┤ ↓C
AutoIt3 | .↓ 開発終了 AutoHotkey_N(マルチスレッド、モジュール化etc)
E. ↓ AHKL(ANSI & Uni32 & Uni64) :
やる気なし. |
D (現在)
@ AutoIt のホットキー機能が貧弱で改善提案だしたが受け入れられず。AutoIt2を元に作成。
A 独自版を作る一方、各種機能改善・追加が本家に取り入れられている
B COM機能は COM.ahk の機能がほぼそのまま取り込まれた。
C かなりプログラマー向きな拡張。他のプログラム言語からAHKスクリプトを実行したりできる。
D 非プログラマー向きのツールが理想で、Ahk2を予定していたが協力者が集まらないため。
またプログラマー向きな方向性を持つ派生版が人気なのも萎えさせる一因に。
E 余談だが、文法をガラリと変えてかなりスマートな感じに。
まぁ、Crisお疲れってところかな。
Lexikosは最近は色々あってイッパイイッパイかもしれんね。
- 270 :名無しさん@お腹いっぱい。:2010/10/14(木) 02:09:26 ID:puF4FM590
- >非プログラマー向きのツールが理想で、Ahk2を予定していたが協力者が集まらないため
プログラマ向きの関数や機能は、必要ない人はつかわなければいい、
という考え方ではダメだったのかな。
あと後半は、ahk2で具体的にどう改善するつもりだったの?
- 271 :名無しさん@お腹いっぱい。:2010/10/14(木) 03:04:31 ID:quItkztc0
- 適当翻訳(1/2)
■ 僕の今の状況とウェブサイトの変更について by Cris(AHK作者)
AHKプロジェクトを始めたのは、非プログラマを含む利用者にホットキーや自動化の利便性を
提供したかったからなんだ。僕はスクリプト言語は簡易で柔軟であるべきだと思っている。
だから本格的なプログラム言語にすべきじゃないと思ってた。
何年か経つと、ユーザコミュニティは、少なくとも最もアクティブなメンバーは、AutoHotkeyに
対してプログラム的な機能--配列やオブジェクトなど--を求めているのがはっきりしてきた。
それは僕の望む方向じゃなかった。今思うとその頃から興味を失いかけていたのかも知れない。
コミュニティメンバはユニコードとx64対応に関心が向いていた。自分も多少はそれに関心はあったけど、
もっと簡単な文法で、かつ以前との互換性がなるべく保たれるようなAHK V2を作ろうと思ってた。
でも、自分自身としてはその方向性に自信もモチベも持てないんで、開発者用のプライベート
フォーラムに議題を挙げたんだ。1年半ほど頃かな、AHKの新機能について議論を始めて、
共通バージョンを策定しそれを作成しようとした。
でもしばらく立つ頃には、V2が果たして正しい方向性なのかと疑念を抱くようになったんだ。
その中で、時間が足りなかったり、V2あるいは共通バージョンに対する興味が失われているように感じたんだ。
でもそれはよくわかるよ、誰だって時間的制約や優先順位があるわけだしね。
- 272 :名無しさん@お腹いっぱい。:2010/10/14(木) 03:05:26 ID:quItkztc0
- 適当翻訳(2/2)
そんな感じで感心と活動が鈍ったけど、Lexikos, fincs, Sean, jackiku, Micha 達が
AutoHotkeyが有用であると思い、新たな機能を追加してくれたんだ。
こういうかんじで、なんとなく機は熟したと思ったから、WebサイトをAHKLに委譲したんだ。
(中でも、ダウンロードのページが一番大事になる)
時間が経てば、サイトの統計(つまり何がダウンロードされたか)が、
サイトの構成をAHKLに梶を切るかどうかの判断材料になるはず。
AHKがどのバージョンあっても、フォーラム全体の利用に当たって不自由が無いことを願うよ。
サイトの維持に関しては僕が続けるつもりだよ。
それが出来なくなりそうなら、他の信頼の置けそうな個人なり団体なりが管理するところへ
引っ越しができるであろう十分な期間をもってアナウンスをするつもりだよ。
何年にもわたって色々と支持してくれたみんなに、ありがとう!
- 273 :名無しさん@お腹いっぱい。:2010/10/14(木) 03:31:07 ID:onjPNxeD0
- 乙
細かいことを言うとCrisじゃなくてChrisだね
- 274 :名無しさん@お腹いっぱい。:2010/10/14(木) 03:31:24 ID:puF4FM590
- おお、翻訳ありがとう!そしてCrisさん、いままで乙でした。
中の人も、派生版の人も、いろいろと悩みを抱えてるんだね。
- 275 :名無しさん@お腹いっぱい。:2010/10/14(木) 03:37:19 ID:quItkztc0
- >>273
俺はずっと勘違いしてたっぽいな。
文中のjackiekuもミスってる。
文もおかしな所もあるが、まぁわかるっしょ。
>>274
釣られたなw
- 276 :名無しさん@お腹いっぱい。:2010/10/14(木) 09:56:59 ID:E+9KqY/i0
- >>264 お願いします・・・。
- 277 :名無しさん@お腹いっぱい。:2010/10/14(木) 10:08:37 ID:RiUip3vI0
- プログラマー向きの機能で非プログラマーでも使えるのを作ってくれよ
AHKLなんかもうわけわからん
- 278 :名無しさん@お腹いっぱい。:2010/10/14(木) 12:24:29 ID:H++N/xQW0
- たしかにAHKLはわけわからん
- 279 :名無しさん@お腹いっぱい。:2010/10/14(木) 14:19:48 ID:quItkztc0
- >>264
バグだと思う。Lexkos か Sean のどっちかはわからんけど。
http://www.autohotkey.com/forum/post-388357.html#388357
http://www.autohotkey.com/forum/post-388985.html#388985
作者は了解してるんで、バグが治るまでは、以下のように対処かな。
enum := ComObjGet("winmgmts:")
.ExecQuery("Select * From Win32_DiskPartition WHERE Bootable=True")
._NewEnum ; 本来は _NewEnum() なはずで、 For item in 〜 でいいんだが…
While enum[item]
MsgBox, % item.deviceID
- 280 :名無しさん@お腹いっぱい。:2010/10/14(木) 19:17:08 ID:Gjs8+rbi0
- こういうCOMオブジェクトってどこで調べるの?
検索してもExcellとかしか出てこない・・
- 281 :名無しさん@お腹いっぱい。:2010/10/14(木) 19:18:24 ID:gbYybpeS0
- >>277
>非プログラマー
なら内部わかる必要あるの?
- 282 :名無しさん@お腹いっぱい。:2010/10/14(木) 19:21:26 ID:dtQmkR2H0
- おれなんてDllCallすらわからないんだぜ
- 283 :名無しさん@お腹いっぱい。:2010/10/14(木) 19:24:28 ID:2AvKXCJt0
- おれもdllは、全く理解できない。
ここで教えてもらったものをブラックボックス関数として
コピペして、ツギハギして結果を受け取るだけ。
でも、なんとか希望通りに動いてくれてる。
- 284 :名無しさん@お腹いっぱい。:2010/10/14(木) 19:27:03 ID:K054jbq10
- オリジナルはプログラマーとかいう以前にunicode未対応なのが厳しい
- 285 :名無しさん@お腹いっぱい。:2010/10/14(木) 20:31:09 ID:Glm+BKcC0
- Lで分からんところってObjectだけだろ?
本家でもDllCall(), NumGet(), NumPut(), RegisterCallback()あたりは分からんだろ
おれも、各々の分野を学ぶ気にはならんから使えなくても仕方ないと割り切ってる
- 286 :名無しさん@お腹いっぱい。:2010/10/14(木) 20:47:18 ID:Gjs8+rbi0
- どれも公式とかで解説してくれるし分かりやすくない?
- 287 :名無しさん@お腹いっぱい。:2010/10/14(木) 20:52:13 ID:RiUip3vI0
- あと文法がJavaScriptとかVBScriptぽい?のがなあ・・・>Object
元のAHKのと違いすぎて混乱する
- 288 :名無しさん@お腹いっぱい。:2010/10/14(木) 20:58:38 ID:1MktXJ/A0
- オブジェクトってよくわからないけど
ahkってダウンロード機能が弱いから
vbsでつかってるwinhttpを使えたらなとよく思うんだけど
もしかしてそういうことも可能なの?
- 289 :名無しさん@お腹いっぱい。:2010/10/14(木) 21:10:55 ID:onjPNxeD0
- autohotkeyjpの人がdllcallについて丁寧な解説記事を書いていた気がする
ところで、AHKLで機能が強化されているcomについて誰か例題を沢山書いてくれないかなあ
- 290 :sage:2010/10/14(木) 21:21:37 ID:yPX1n0WZ0
- >>269
AutoHotkey_N じゃなくて AutoHotkey_Hかな?
>>272
>AHKLに委譲
細かいようだけど移譲はしてないね。ページを書き換えただけみたいよ。272は結構はしょってオブラートにしてるけど、Chrisの原文の文章から読める雰囲気は結構暗いかも。
fincsが負けた感が滲み出ててちょっと複雑って発言してるね。
多分 Chris は Lexikos にライバル意識みたいなのがあったんじゃないかな。一方LexikosはChrisに認めてもらおうと頑張っててそれが裏目に出た。
なんにせよChrisは人をまとめて動かす力がなかったみたいね。
- 291 :名無しさん@お腹いっぱい。:2010/10/14(木) 23:12:43 ID:onjPNxeD0
- ↓からAutoHotkey_Lのドキュメントにリンクが張られているね
AutoHotkey Documentation
ttp://www.autohotkey.com/docs/
気づいたのは、このページの日本語訳リンクが流行らせるページのままってこと
- 292 :264:2010/10/15(金) 00:35:19 ID:leOgQaRc0
- >>279
どうもありがとうございます!
確かに動作しました。
もう全く動かなかったので諦めて、VBScript(wmi.vbs)でWQLの結果を生成して、それを .txt ファイルに吐き出す
スクリプトを書いて、AHKから
RunWait, wmi.vbs
みたいな感じに呼び出して、吐き出した .txt ファイル(disk.txt)を
FileReadLine, val, disk.txt, 1
みたいに val 変数に読み込んで、その後
FileDelete, disk.txt
で消す、みたいな超面倒な手順で実装してしまいましたよ・・・。
こんなくだらないコード書いて感じたのは、AHKって標準入出力も扱えないのか?ということ・・・。
DllCallとかさっぱり分からないのでどうにも対応方法がありませんでした・・。
もう一回書き直そうかな、解決策教えて頂きましたし・・・。
本当にありがとうございます
- 293 :名無しさん@お腹いっぱい。:2010/10/15(金) 02:17:32 ID:srMctwi10
- ScriptControlが使えるからJscriptやVbscript使える人は、そっちで処理してもいいんじゃないかな?
ttp://www.autohotkey.com/forum/topic61509.html
oSC := ComObjCreate("ScriptControl")
oSC.Language := "JScript"
script =
(
oshl=new ActiveXObject('WScript.Shell');
oshl.popup('autohotkeyL でScriptControl WScriptオブジェクトは使えない。Unicodeで保存。');
;//WScript.Echo(2000);WScript.Echo(1); / * ←これは使えない * /;
)
oSC.ExecuteStatement(script)
oSC.Eval(script)
- 294 :名無しさん@お腹いっぱい。:2010/10/15(金) 06:28:36 ID:1vxiNqrO0
- >>293
紹介ありがとう。これは良いリファレンススレ
- 295 :名無しさん@お腹いっぱい。:2010/10/15(金) 14:18:46 ID:C9kOUIXjP
- 例えばこんなGUIを作ったとして、
TreeViewとEditBoxのあいだの点線をドラッグして双方の表示領域を変えることってできない?
Janeでいうボードビューとスレッドビューみたいな
┌──────────┐
│
│ TreeView
│
├--------------------┤
│
│ Edit
│
│
└──────────┘
- 296 :名無しさん@お腹いっぱい。:2010/10/15(金) 14:43:23 ID:srMctwi10
- ;// >>291 ややこしいことはJscriptでさっさと処理してAHKで値を受け取ってしまおう。
oSC := ComObjCreate("ScriptControl")
oSC.Language := "JScript"
script =
(
main=function(sAAA,sBBB,sCCC){ ;
if(typeof(sAAA) == 'undefined'){sAAA = '///' ;} ;
if(typeof(sBBB) == 'undefined'){sBBB = '###' ;} ;
if(typeof(sCCC) == 'undefined'){sCCC = '$$$' ;} ;
sAAA = sAAA + '---' + sAAA ;
sBBB = sBBB + '---' + sBBB ;
sCCC = sCCC + '---' + sCCC ;
oshl = new ActiveXObject('WScript.Shell') ;
oshl.popup('sAAA=' + sAAA + "\n\n" + 'sBBB=' + sBBB + ' sCCC=' + sCCC) ;
return(sAAA.length + ' '+sBBB.length +' '+ sCCC.length) ;
} ;
)
oSc.addCode(script) ;
stestA := "Ahogehoge_AutohotkeyLで実行_ユニコードで保存" ;
stestB := "Bhogehoge" ;
scommand = main("%stestA%", "%stestB%")
sret := oSC.eval( scommand )
msgbox, %sret%
- 297 :名無しさん@お腹いっぱい。:2010/10/15(金) 23:47:37 ID:jrTZWDfs0
- >>295
出来なくはないよ。かなりの力業になると思うけど。
OnMessage で WM_LBUTTONUP/DOWN と WM_MOUSEMOVE 拾うようにする。
境界領域でボタン押下拾ったら、マウス移動トラックするようにして、
移動差分を算出して、GUIコンポーネントを移動する。
ボタンが離されたらトラッキングを停止。
- 298 :名無しさん@お腹いっぱい。:2010/10/15(金) 23:58:02 ID:9sO5EohQ0
- GUIプログラムをそこまで低レイヤーのことまで自分で用意してやるより、
VisualStudio無料版で.NET使ってやった方が汎用的でかつ楽だよなぁ。
- 299 :名無しさん@お腹いっぱい。:2010/10/16(土) 00:07:41 ID:Gltw26EkP
- >>297
ありがとう
確かにここまでするのは大変そうだ・・
今のところサイズ変更しなくては使えないってレベルではないし、しばらくはこのままで使ってみる
- 300 :名無しさん@お腹いっぱい。:2010/10/16(土) 00:57:50 ID:wZOd2aJuP
- AutoHotKeyはウインドウやコントロール検出してキー送ったり、そういう自動化はすごく向いているし、
プログラマーでなくてもコピペで切り貼りで使えるのは素晴らしいけど、
GUIは弱いよね。
.NETやDelphi並に簡単にGUI作れればいいんだけどね
.NET Framework依存はともかく.NET使うと起動は遅くなるだろうし、
AutoHotKeyの利点なくなるだろうけど
AutoItはGUIビルダーのようなツールがあるみたいだな
実験記録 No.02:AutoItで簡単GUI作成
http://blog.livedoor.jp/blackcode/archives/1480018.html
- 301 :名無しさん@お腹いっぱい。:2010/10/16(土) 01:02:50 ID:wZOd2aJuP
- > .NET Framework依存はともかく.NET使うと起動は遅くなるだろうし、
> AutoHotKeyの利点なくなるだろうけど
.NET Frameworkを間接的に使うとか、そういう話が抜けてた
非.netアプリから.netのライブラリが使えるかしらんけど。
ついでだけど、DelphiはGUIライブラリだけDLL化して他の言語から使う方法あったと思うけど、
AutoHotKeyから使うなら一皮かぶせる必要あると思うし、
Unicode対応したDelphiがフリーで手に入らないからちょっとな
- 302 :名無しさん@お腹いっぱい。:2010/10/16(土) 01:16:14 ID:q0WnMUrJ0
- 本格的なGUIには向いてないのは確かだな。でも以下のような用途なら十分戦力になる
・コマンドライン用ツール(ffmpegとか)のフロントエンドにして、
雑多なオプションをGUIで手軽に選べるようにする。一度作ればマニュアル要らず。
(携帯電話変換君があるからこの例はあまり訳にたたんがw)
・コマンドライン引数に対応してなくて、いちいちGUIでファイル選ぶようなアプリで、
その代わりに引数貰って起動して、引数書き込んでボタン自動で押す
--
元々はこういうのを AutoIt や 本家AHKの目指していたところなんだろうけどさ。
- 303 :名無しさん@お腹いっぱい。:2010/10/16(土) 21:06:37 ID:WdTgeglV0
- aaa.ahkに
#Include test\bbb.ahk
bbb.ahkに
#Include %A_ScriptDir%\ccc.ahk
って書いてある場合
test\ccc.ahkじゃなくてaaa.ahkと同じフォルダのccc.ahkが読まれる?
- 304 :名無しさん@お腹いっぱい。:2010/10/16(土) 21:44:43 ID:uHvrFFE00
- 読まれる?
って書く前に、試した結果はどうだったの?
- 305 :名無しさん@お腹いっぱい。:2010/10/16(土) 22:04:00 ID:e3BI4te10
- aaa.ahkから起動した場合は
aaa.ahkと同じフォルダのccc.ahkが読まれる
aaa.ahkすっとばして直接bbb.ahkを起動した場合は
bbb.ahkと同じフォルダのccc.ahkが読まれる
自分(bbb.ahk)のパスはA_LineFileで取れるけど #includeでは使えないね
なにげにめんどくさいところだ
- 306 :名無しさん@お腹いっぱい。:2010/10/16(土) 22:19:28 ID:q0WnMUrJ0
- 関数ライブラリスクリプトの場合は挙動がちょっと違うので注意。
%A_Desktop%
+ main.ahk
+ xxx.ahk
%A_MyDocuments%\\AutoHotkey\Lib
+ sub.ahk
+ xxx.ahk
---- main.ahk ----
sub()
---- sub.ahk ----
#Include, xxx.ahk ; ★
sub() {
Gosub, XXX
}
---- xxx.ahk (両方とも) ---
XXX:
MsgBox, %A_LineFile%
Return
----------------
結果は
%A_MyDocuments%\AutoHotkey\Lib\xxx.ahk
★を「%A_ScriptDir%\xxx.ahk」にすると
%A_Desktop%\xxx.ahk
になる
- 307 :名無しさん@お腹いっぱい。:2010/10/16(土) 23:10:12 ID:WdTgeglV0
- >>304
聞き方が悪かった
試した結果が>>303だったんだけどこの理解で合ってるかと思って。
自分で一からスクリプト書くなら注意して書けばなんとかなりそうだけど
他人が作ったスクリプトが複数で構成されてる時に
autohotkey.ahkからincludeして使うとき不便だから何か解決方法はないものかと。
>>305-306
ありがとう。
ファイルごちゃごちゃになるのは諦めて1つのフォルダに全部置く事にした。
- 308 :名無しさん@お腹いっぱい。:2010/10/16(土) 23:38:45 ID:vMHLbBIc0
- ある画面、あるソフトが最前面のときのみ
あるキーを別のキーに入れ替える、っていうのはどう書けばいいかな?
プロセスが存在していたら、っていうのは出来るけど、
あくまで最前面の時のみキーリマップ変更っていうのをやりたい。
- 309 :名無しさん@お腹いっぱい。:2010/10/16(土) 23:47:10 ID:e3BI4te10
- #IfWinActive
- 310 :名無しさん@お腹いっぱい。:2010/10/17(日) 00:45:22 ID:Shh2ZxdQ0
- おお、これかサンクス
- 311 :名無しさん@お腹いっぱい。:2010/10/17(日) 00:46:13 ID:ed/MdHIJ0
- >>1のサイトもろくに見ないで質問とか氏ねよ
- 312 :名無しさん@お腹いっぱい。:2010/10/17(日) 00:56:11 ID:CO3MN1HK0
- >>311
ごめんなさい
- 313 :名無しさん@お腹いっぱい。:2010/10/17(日) 01:01:43 ID:+CcgaRcH0
- AutoHotkeyJpの左ペインを見てみたら
AutoHotkey_L 専用セクションが出来ているね
ありがとう>管理人さん
- 314 :名無しさん@お腹いっぱい。:2010/10/17(日) 13:40:22 ID:uoK1rgtV0
- 画面のある特定範囲内にあるウィンドウの中で、最前面のものを取得する…という処理は
どう作ればいいのでしょうか?
デュアルディスプレイでマウスポインタを各モニタ間で移動させた時に、その画面内の
最前面ウィンドウを自動的にアクティブにする、という用途で使いたいんですが…
- 315 :名無しさん@お腹いっぱい。:2010/10/17(日) 20:24:26 ID:34XClcZ70
- WinGet, list, List ; 条件無し
でリスト取ると、重なりで上から順に並んでるから、Loopして順に座標調べて、
該当画面内にあれば、WinActivate して Break でいいんじゃね?
- 316 :名無しさん@お腹いっぱい。:2010/10/17(日) 23:45:56 ID:YCDwRoRL0
- ここの
http://www.autohotkey.com/forum/viewtopic.php?t=22975&highlight=compiler+gui
No UPX オプションってつけてもつけなくても生成される実行ファイルの容量が同じなんだけど・・・
バグ?
- 317 :名無しさん@お腹いっぱい。:2010/10/17(日) 23:47:38 ID:YCDwRoRL0
- ああ、使用したのはこれ
http://www.autohotkey.net/~ladiko/Compile_AHK/Compile_AHK_Setup.exe
- 318 :314:2010/10/18(月) 03:48:53 ID:rYM4Bbm40
- >>315
うまくできました! ありがとうございます
- 319 :名無しさん@お腹いっぱい。:2010/10/18(月) 11:02:34 ID:hXI/IUBx0
- 192で質問して、教えていただいた者です。正規表現ビギナーです。
正規表現による置換を使って
@以前の文字列を削除したり
@以降の文字列を削除したり
したいのですが、@以降の文字列を削除するのがうまくできません。
Ans1 :=RegExReplace("あいうえお@かきくけこ",".*?@","")
Ans2 :=RegExReplace("あいうえお@かきくけこ","@.*?","")
msgbox,
(
".*?@"での答え→%Ans1%
"@.*?"での答え→%Ans2%
)
上のスクリプトでやってみたのですが、結果は
かきくけこ
あいうえおかきくけこ
となってしまいました。
Ans2は"@.*?"で置換すると、どうして「あいうえお」になってくれないのですか?
どのようにしたら、@以降の文字列を削除できますか?
- 320 :名無しさん@お腹いっぱい。:2010/10/18(月) 12:02:20 ID:X6FZx8eL0
- 正規表現に置ける*の意味と?の意味を再確認しる
- 321 :名無しさん@お腹いっぱい。:2010/10/18(月) 12:55:36 ID:+5VT7jw90
- ahkの質問じゃないなw
- 322 :名無しさん@お腹いっぱい。:2010/10/18(月) 13:25:15 ID:hXI/IUBx0
- >>319
自己解決しました。
"@.*"で置換をやったらうまくいきました。
なぜ「?」が要らないのかまだよくわかりませんので
「サルにもわかる正規表現入門」をよく読んで理解したいと思います。
>>320さんアリガトウ。
ついでに
>>321さん
悪うございました(謝)。
- 323 :名無しさん@お腹いっぱい。:2010/10/18(月) 17:15:59 ID:WRrlGkD90
- A_TickCountを○時間○分○秒って感じのフォーマットにしたいんですが
どう一般的にどう計算させればよいのでしょうか?
知恵を下さい。
- 324 :名無しさん@お腹いっぱい。:2010/10/18(月) 17:18:01 ID:+h0+g2gt0
- A_Tickcountを1000で割ると、稼働時間の 秒 になる。
それを60で割ると、分になる
それを60で(ry
って感じでやってるよ、俺は。
- 325 :314:2010/10/18(月) 19:43:56 ID:rYM4Bbm40
- すみません、>>314に追加で質問
>>315のやり方で大体うまくいってるんですが、
バルーンヒントを除外する方法って何かないでしょうか?
- 326 :名無しさん@お腹いっぱい。:2010/10/18(月) 20:32:46 ID:OPgIQC8u0
- ウィンドウの情報は、座標以外にも、タイトルやらクラスやらスタイルやら取れるんで、
それらで判断すりゃいいかと。
ウィンドウクラスかウィンドウスタイルで除外するのが楽だと思うけど。
- 327 :314=325:2010/10/19(火) 02:45:19 ID:ba8WQ+zq0
- >>326
ありがとうございますー
タイトルやクラスは他にも空白のものがあるかもしれないので、
とりあえずツールチップやバルーンのウィンドウスタイル頭4文字"0x94"を判別して
除外するようにしてみました。これでうまくいくかな?
- 328 :名無しさん@お腹いっぱい。:2010/10/19(火) 06:30:37 ID:01h8Ctb10
- タスクマネージャーとかで表示されているすべてのプロセスのリストを取得する関数とか
有りませんか?
- 329 :名無しさん@お腹いっぱい。:2010/10/19(火) 09:19:30 ID:YeXINLz50
- DetectHiddenWindows, On してから >315
全ユーザーのプロセスまで取れるかどうかはわからん
- 330 :名無しさん@お腹いっぱい。:2010/10/19(火) 11:52:27 ID:clvatLXW0
- 流行らせるページのDragDrop関数
http://www.autohotkey.com/forum/topic45041.html
これをAutohotkeyLのユニコード版で使うにはどうすればいいんでしょう。
DllCallの中のStrをAStrに変えただけではうまく動作しません。
上記のフォーラムの中で出てきたDragFileA関数も動作しませんでした。
Numputのあたりをいじるようなのですが、DllCallはさっぱりなので宜しければご教授下さい。
- 331 :330:2010/10/19(火) 12:56:58 ID:clvatLXW0
- 自己解決しました。
NumputではなくStrLenでした。全角も1文字と数えるので、全角文字=2文字となる補正すればOKでした。
Dropするファイルのパスを一文字ずつ分解して、正規表現で半角以外だったら補正値+1、
とすることで、かなり力業ですが解決しました。
まったくスマートではないのですが、取り敢えず動きました。
- 332 :名無しさん@お腹いっぱい。:2010/10/19(火) 13:24:17 ID:cCnrDLPW0
- 個人的に移植したやつ。
hwnd : 対象窓, files : 対象ファイル(`n区切り), ptX&ptY : 落とす座標, fNC: 真なら絶対座標/偽なら相対
DropFiles(hwnd, files, ptX=0, ptY=0, fNC=False) {
static char_type:= A_IsUnicode ? "UShort" : "UChar"
, char_size := A_IsUnicode ? 2 : 1
, isUnicode := A_IsUnicode ? 1 : 0
files := RTrim(files, "`r`n`t ") . "`n`n"
byte_length := StrLen(files) * char_size
Loop, Parse, files
If (A_LoopField = "`n")
NumPut(0x00, files, (A_Index-1) * char_size, char_type)
hDrop := DllCall("GlobalAlloc", "UInt", 0x42, "UInt",20 + byte_length, "Ptr")
p := DllCall("GlobalLock", "Ptr", hDrop)
NumPut(20 , p + 00, "Int") ; offset
NumPut(ptX , p + 04, "Int") ; pt.x
NumPut(ptY , p + 08, "Int") ; pt.y
NumPut(fNC , p + 12, "Int") ; fNC
NumPut(isUnicode, p + 16, "Int") ; fWide
DllCall("RtlMoveMemory", "Ptr", p + 20, "Str", files, "UInt", byte_length)
DllCall("GlobalUnlock", "Ptr", hDrop)
PostMessage, WM_DROPFILES := 0x233, hDrop , 0, , ahk_id %hwnd%
}
利用例)
IfWinNotExist, ahk_class Notepad
{
Run, Notepad
WinWait, ahk_class Notepad
}
DropFiles(WinExist(), A_ScriptFullPath)
- 333 :名無しさん@お腹いっぱい。:2010/10/19(火) 21:54:05 ID:eAGKNIWv0
- ttp://www.autohotkey.com/forum/topic18550.html
このトピックにある、GetModuleFileNameEx()って関数なんですが
これまでは返された値を StrGet(&戻り値, "CP932") して利用していたのですが
このままだと戻り値に"è"とか"é"の文字が入っていた場合、
勝手に"e"などの文字に変換されうまく動作していません。
適当にいろいろ弄っていたら
CallResult := DllCall("Psapi.dll\GetModuleFileNameExA", "UInt", hProcess, "UInt", 0, "Str", ModuleFileName, "UInt", FileNameSize)
の行の GetModuleFileNameExA を GetModuleFileNameEx にしたら偶然動いてしまいました。
DllCallをどう扱えばいいのかの根本が理解できてない段階なので、
これで本当に問題がないのか教えて頂けないでしょうか?
AutoHotkey_L Revision 61のUnicode x64版を利用してます。
- 334 :名無しさん@お腹いっぱい。:2010/10/19(火) 22:56:57 ID:GBRE3Jqp0
- Unicode版ならGetModuleFileNameExは、GetModuleFileNameExWを呼び出すから問題ないよ。
ただ、そのコード自体はUnicodeとx64を考慮してないから、ちょっと変更する必要がある。
FileNameSize := 260
...
CallResult := DllCall("Psapi.dll\GetModuleFileNameExA", "UInt", hProcess, "UInt", 0, "Str", ModuleFileName, "UInt", FileNameSize)
↓
static size_of_char := A_IsUnicode ? 2 : 1
FileNameSize := 260 * size_of_char
...
CallResult := DllCall("Psapi.dll\GetModuleFileNameEx", "Ptr", hProcess, "Ptr", 0, "Str", ModuleFileName, "UInt", FileNameSize)
- 335 :名無しさん@お腹いっぱい。:2010/10/19(火) 23:27:02 ID:eAGKNIWv0
- >>334
ありがとうございます
そうか、Unicodeは1文字でANSIの倍のバイト数を消費するから2倍する必要があるんですね。
UInt とかこの辺は、今のところ自分の場合とりあえず総当たりで動作するまで他のに変えてみる、
全種類試して動かない場合は素直に諦めるっていう、ひどい有様ですがw
- 336 :名無しさん@お腹いっぱい。:2010/10/19(火) 23:48:06 ID:cCnrDLPW0
- ハンドルやポインタはは全部 Ptr だとおもっていい。(UINT_PTRを除く)
- 337 :名無しさん@お腹いっぱい。:2010/10/20(水) 09:08:26 ID:NjUDFAPD0
- >>323
こんな感じでどう?
msgbox % formatseconds(A_Tickcount // 1000)
Return
FormatSeconds(NumberOfSeconds) ; Convert the specified number of seconds to hh:mm:ss format.
{
time = 19990101 ; *Midnight* of an arbitrary date.
time += %NumberOfSeconds%, seconds
FormatTime, mmss, %time%, mm:ss
return NumberOfSeconds//3600 ":" mmss ; This method is used to support more than 24 hours worth of sections.
}
- 338 :名無しさん@お腹いっぱい。:2010/10/20(水) 10:26:45 ID:zB/sYauR0
- Vimのようなモード切替の概念をAutoHotkeyで実現したいのですが、可能でしょうか?
例えば、Ctrl + Shift + mで、特殊モードになって、h j k lがそれぞれ←↓↑→のカーソル移動になり、
Escを押すと特殊モードを終了して本来の入力に戻る、みたいな。
- 339 :名無しさん@お腹いっぱい。:2010/10/20(水) 10:27:45 ID:x2HpyfEu0
- >>9
- 340 :名無しさん@お腹いっぱい。:2010/10/20(水) 11:14:36 ID:zB/sYauR0
- >>339
そんなところにあったとは(節穴)。ありがとうございます。助かりました。
ところで、AHKの変数って、:=代入が同時に宣言にあたるのですか?
誰かの書いたスクリプトを見ていると、急に見たこともない変数が普通に使われていたりして困惑することが多々あるのですが。
- 341 :名無しさん@お腹いっぱい。:2010/10/20(水) 11:57:47 ID:mHgGqDF50
- 変数宣言は必要ない。というかできない。まぁ、すぐ慣れるよ。typoはどうしようもないけどw
- 342 :名無しさん@お腹いっぱい。:2010/10/20(水) 12:30:19 ID:q9pQEdrn0
- >>2のAutohotkey_Lのリンク先にあるダウンロードからUnicode x86のzipを落としたのですが、
#Includeのパスに日本語が入っていると起動時にエラーではじかれます。
ANSI x86の方だと問題ないのですが、こういう物なんでしょうか。
Unicodeの方が2バイト文字も問題なく扱えると思っていたのですが。
- 343 :名無しさん@お腹いっぱい。:2010/10/20(水) 12:35:03 ID:hbTixXqR0
- Unicodeで書いてないだけだろ
- 344 :名無しさん@お腹いっぱい。:2010/10/20(水) 12:50:47 ID:q9pQEdrn0
- >>343
Shift-JISのスクリプトそのまま使ってました…。失礼しました。
ありがとうございます。
- 345 :名無しさん@お腹いっぱい。:2010/10/20(水) 17:40:59 ID:VvhskSdR0
- 実行中の指令を止める方法はありませんでしょうか?
例えば、1秒おきに、1 2 3 4...と、100まで入力していくスクリプトがあったとして、
これを実行途中に、指定したボタンを押すと、そのスクリプトを無効にしてインプットを止めたいのですが。
- 346 :名無しさん@お腹いっぱい。:2010/10/20(水) 17:55:23 ID:ct87hXx/0
- >>345
1から100までループしているスクリプトのループの中で、
if stopflag=1
break
みたいのを入れて、
a::
stopflag=1
return
って感じでグローバル変数でフラグつくればいいんじゃない?
- 347 :名無しさん@お腹いっぱい。:2010/10/20(水) 18:05:02 ID:s6eZehnaP
- それか1秒おきって決まってるなら
SetTimer, Label, 1000 して
SetTimer, Label, OFF するとか
Label:
count++
Tolltip, count
return
- 348 :名無しさん@お腹いっぱい。:2010/10/20(水) 19:04:42 ID:VvhskSdR0
- >>346
>>347
お返事いただき有難うございます。
とても参考になりました。
有難うございました。
- 349 :名無しさん@お腹いっぱい。:2010/10/21(木) 00:11:53 ID:aNV54UWl0
- AutoHotkey_L 64bitでなんかMouseGesture.ahkのMG_GetFocus()が失敗してるなと思ったら64bitに対応したコードじゃないのね
MG_GetFocus(){
VarSetCapacity(tmp, A_PtrSize == 8 ? 72 : 48)
NumPut(A_PtrSize == 8 ? 72 : 48,tmp,0)
return DllCall("user32.dll\GetGUIThreadInfo","UInt",0,"Str",tmp) ? NumGet(tmp,A_PtrSize == 8 ? 16 : 12) : 0
}
に書き換えたら問題なく動いた
- 350 :名無しさん@お腹いっぱい。:2010/10/21(木) 00:14:52 ID:cXEiBx8C0
- まぁ、多少なりともDllCallいじれるなら、互換性のページ読めばすぐ直せるしな
- 351 :名無しさん@お腹いっぱい。:2010/10/21(木) 18:22:06 ID:3tOe/dQz0
- ちょっとお尋ねしますが、右クリックすると
"1"キー入力
10ms待機
"1"キー入力
5ms待機
"右クリック"
という動作をさせられますか?
- 352 :名無しさん@お腹いっぱい。:2010/10/21(木) 18:31:22 ID:gUxLo4te0
- 可能
- 353 :名無しさん@お腹いっぱい。:2010/10/21(木) 18:40:41 ID:2PDVKZdYP
- させられますか?
って、そのまま作ればいいだけじゃん
- 354 :名無しさん@お腹いっぱい。:2010/10/21(木) 20:39:44 ID:cXEiBx8C0
- >>351
書いていることの各行に相応するコマンドがあるんで、
日本語→AHK語に変えるだけでおk
- 355 :名無しさん@お腹いっぱい。:2010/10/22(金) 17:46:41 ID:ao/w/zK70
- ahkファイルをダブルクリックして動かしてたら。
自分の書いたスクリプトに誤りがあって、暴走してしまった。
こんな時(暴走してしまっているような状態のとき)
ahkを止める方法はないですか?
- 356 :名無しさん@お腹いっぱい。:2010/10/22(金) 17:57:23 ID:0cuX34DW0
- タスクマネージャー(Ctrl+Alt+Del)を開き、
「プロセス」タブを選択し、(マウスが効かない場合はCtrl+Tabで「プロセス」タブにする)
AutoHotkey.exeを終了させる(ahkスクリプトが複数実行されていればその数だけ終了させる)
- 357 :名無しさん@お腹いっぱい。:2010/10/22(金) 18:06:55 ID:ao/w/zK70
- >>356
なるぼど、そうか
無理やり閉じるんだから
そういう方法しかないんですね。
昔、キーバットっていう記録再生ソフトを使ってたもので、
キーバットではctrl+pauseで止めれたそのイメージがあったものですから。
サンキュウ。
- 358 :名無しさん@お腹いっぱい。:2010/10/22(金) 18:28:16 ID:jGCCfdL30
- おぉ、キーバット。あれは地味に良いソフトだ。俺も昔使っていた。
AHKの処理を中止するコマンドか。ありそうだけど。知らないけど。
- 359 :名無しさん@お腹いっぱい。:2010/10/22(金) 18:36:20 ID:SKMh60FCP
- 単純に、タスクトレイで右クリックして「PAUSE」じゃダメなの?
俺もよく暴走させるけど、これでほとんど用が足りてる。
どうしても、いつでもホットキーでやめたいならば、
esc::
exitapp
とか書いておけばいい。
- 360 :名無しさん@お腹いっぱい。:2010/10/22(金) 21:28:05 ID:oGf2dSuK0
- このソフトってキーボード二つ用意して肩っぽのaキーだけ
ホットキー割り当てて処理できたりします?
- 361 :名無しさん@お腹いっぱい。:2010/10/22(金) 22:39:31 ID:Cbrbclyv0
- そういう機能はない。
無理矢理出来なくもないかもしれない。
ウチのマシンでは動くけどよその環境じゃ分からん。
- 362 :名無しさん@お腹いっぱい。:2010/10/22(金) 23:08:54 ID:oGf2dSuK0
- 専用のキーボードみたいなの買おうと思ってたんですが出来ないんですか・・・
ありがとうございます。
- 363 :名無しさん@お腹いっぱい。:2010/10/23(土) 00:24:06 ID:PT5Z6/Zz0
- >>362
場合によってはできるよ。
USBテンキーを独自のキーに置き換えられるドライバもあったはず。
ジョイパッドのキー出力できるのもあったような
補助デバイスを使う人の専用スレ(CG用だが)があるから、そちらも参考にしたほうがいいと思う。
CG用補助入力総合part5 【G13 n52te スマスク】
http://hibari.2ch.net/test/read.cgi/cg/1269804442/
- 364 :名無しさん@お腹いっぱい。:2010/10/23(土) 00:33:41 ID:/sdQrnk60
- >専用キーコード
「お気に入りキーボード」みたいなのなら独自のキーコード吐いてるだろうから可能じゃね?
つか360の時点の話しだと汎用キーボード二つ並べて使う前提にしか読めんのだが
専用キーコード前提なら最初からそう書け
- 365 :名無しさん@お腹いっぱい。:2010/10/23(土) 01:57:57 ID:eBQypco/0
- 専用キーコードを吐けるキーボードを使うという話ではなく汎用キーボードを
何か特定の用途専用のキーボードとして扱いたいという話だと思う。
キーの吐き出し元が特定のキーボードかどうかを判別して
挙動を変えるということを力技でやっていた人が昔いたようだけど、
俺には難しくてよく分からなかった。>>35あたり参考。
- 366 :名無しさん@お腹いっぱい。:2010/10/23(土) 04:24:39 ID:6vOfCCU70
- 毎度の如く情報の少ない書き込みから余計な妄想を働かせて文句を垂れつつ
自分話をしたがる奴の多いこと多いこと
わからねえなら口をはさむな
- 367 :名無しさん@お腹いっぱい。:2010/10/23(土) 05:11:35 ID:PT5Z6/Zz0
- >>365
http://pc12.2ch.net/test/read.cgi/software/1265518996/795
これか、おもしろいな。WindowsのAPIでできるのか。
実際の入力機器のユーティリティソフトはどうやってるんだろうね
IDが接続ごとに変わる問題は、別に情報を取得して自動的に識別して解消しているんだろうか
- 368 :名無しさん@お腹いっぱい。:2010/10/23(土) 12:01:10 ID:8txqJSlX0
-
AHKで記述されたタイリング型ウィンドウマネージャーで
bug.n見つけたんだが、これって既出?
joten @ AutoHotkey
http://www.autohotkey.net/~joten/
- 369 :名無しさん@お腹いっぱい。:2010/10/24(日) 00:19:37 ID:4ShEmsCf0
- 昔Xでionとか使ってたな。懐かしい。
- 370 :名無しさん@お腹いっぱい。:2010/10/24(日) 01:22:55 ID:xCaS4YDR0
- >>314で質問した者なんですが改めて
画面のある特定範囲内にあるウィンドウの中で、最前面のものを判定するには
どう組んだらいいんでしょうか?
デュアルディスプレイの片方の画面に少しでもかかってるウィンドウを判定したいんです。
WinGet, List_id, list, , ,
Loop, %List_id%
{
WinGetPos, Xpos, Ypos, Width, Height, ahk_id %this_id%
〜
こんなかんじで上から順にウィンドウの座標を取得し、
四隅の座標をひとつひとつ画面範囲内入っているかどうかを判定していたのですが、
ウィンドウのサイズを最大化すると四隅の座標が全て画面より4ピクセル大きくなってしまい
全て判定から外れてしまって…
- 371 :名無しさん@お腹いっぱい。:2010/10/24(日) 01:32:25 ID:Mkh5TRub0
- いくらでもやりようがあると思うけど
WinGet, MinMax, Minmax やって最大化してたら、ウィンドウの中央が
どの画面に入っているか、でみりゃいいんじゃね?
SysGet とかでウィンドウ枠の幅を得て計算したり、とかでもいいとは思うけど
- 372 :名無しさん@お腹いっぱい。:2010/10/24(日) 02:43:52 ID:iVl4hFq3P
- >>368
予想どおりだが、終了してもマルチモニタ気にしてなくてウインドウ配置ぐちゃぐちゃになってワロタww
ウインドウ配置もどすツールくらいあるから実害はなかったけどw
でも、これおもしろね。
仮想デスクトップ込みのシンプルなウインドウマネージャか。
Windowsからフルスクリーンにした1つのターミナルソフトでunixにつなげて、
コマンドライン中の画面を何分割にもして使っている人を思い出した。
- 373 :名無しさん@お腹いっぱい。:2010/10/24(日) 03:30:27 ID:xCaS4YDR0
- >>371
ありがとうございます! ウィンドウの中心座標で判定するようにしました
- 374 :名無しさん@お腹いっぱい。:2010/10/24(日) 17:21:31 ID:rUerIEXj0
- ちょいと質問。AHK_L(公式から取れる最新のX64のやつ)を使って
a::
Hotkey,d,Empty,On
return
b::
Hotkey,d,Empty,Off
return
d::
Msgbox,s
return
Empty:
return
見たいにして簡単なテストをしてるんだがaを押してもbを押しても
dを押したときに何も変わらないんだ…。はやらせるページとか見て
なんか変なミスしてんのかなーと思って見直してみても
わからない…。だ、だれかHotkeyの使い方教えてくれまいか。
- 375 :名無しさん@お腹いっぱい。:2010/10/24(日) 17:59:29 ID:Mkh5TRub0
- >>374 の挙動は、
・ 起動直後は[D]押下で[s]出力
・ [A] 押下で [D] 押下時のに「何もしない」ようにする。
もともとのホットキー定義は上書きされる。
・ [B] 押下で [D] 押下時の挙動をオフにする
元々のものはEmptyに上書きした上でオフ、[A] で定義したものはオフに
となると思うけど、それが意図したものだろうか?
個人的意見を言うと、Hotkeyコマンドで切り替えるのは凄く分かりづらいので、
#If で条件を明示した方がいいと思ってる。
- 376 :名無しさん@お腹いっぱい。:2010/10/24(日) 19:12:38 ID:9F09eDFy0
- >>374
こういう動作が希望?
a::flag=1
b::flag=0
$d::
if flag=1
Msgbox,s
else
send, d
return
- 377 :名無しさん@お腹いっぱい。:2010/10/24(日) 19:20:44 ID:rUerIEXj0
- 最終的に、
>>376
みたいのが希望だったんっだけど、なんかですね、
俺がやったとおりにすると
>>375のいうようになるのかと思ったらならないんだよ。
だからHotkeyのコマンドって調べたところにのってたのと
違うのかなーと思って聞いたのでした。
ただ、聞いてみると確かにHotkeyでやるより#Ifでやったほうがよさそうだ。
答えてくれた人、ありがとう。
- 378 :名無しさん@お腹いっぱい。:2010/10/24(日) 19:28:13 ID:9F09eDFy0
- >>377
んじゃ、こういうのが希望?
面倒くさそうだけど。
a::Hotkey,d,Empty,On
b::Hotkey,d,d,On
d::
Msgbox,s
return
Empty:
return
- 379 :名無しさん@お腹いっぱい。:2010/10/24(日) 19:35:45 ID:5wnKBkRmP
- こういう場合、>>376の例みたいに、フラグで機能割り当ての管理をしたほうがラクだよね。
うちでは、フラグの変数を、押すたびにインクリメントして、
機能の割り当てをローテーションで変えたりして使ってる。
- 380 :名無しさん@お腹いっぱい。:2010/10/25(月) 13:45:11 ID:TOpAYAMo0
- 質問です。宜しくお願いします。
Win+Prtscnが押されたら
1.画面コピー
2.ペイントの起動
3.プリントスクリーンの貼付
の動作を一気にしたいのです。
-----
MsgBox,今後、Win+PrtScnでペイントを起動し画面を貼付ますヨ。
#PrintScreen::
Run,mspaint.exe
Sleep 100
!hvp
return
-----
を作りましたが、ペイント起動後何も起こりません。貼付迄動作しません。
質問1
この場合、>Run,mspaint.exe の前にPrintScreenキーを押す(ハードコピー)記述は必要なのでしょうか?
Prtscnキーを押す動作なので PrintScreen と記述したらエラーになっちゃいましたけど・・・
質問2
>!hvp の部分はプルダウンメニューから貼付を選択してるつもりです。こういう記述で良いんでしょうか?
Alt+H、V、P のつもりです。 http://iup.2ch-library.com/i/i0175925-1287981773.jpg
因みに、昨日からAHK弄ってるレベルです。
- 381 :名無しさん@お腹いっぱい。:2010/10/25(月) 13:52:32 ID:A0xR5fqgP
- 検証してないけど
>Sleep 100
いくらなんでも短すぎる気がする
2000くらいで始めて、徐々に縮めていったほうがいい
>!hvp
これ何?
sendコマンド付いてないじゃん
あと、いっきにコマンド流しても反応しないことがあるので、
altHを送った後にメニューが出てるか確認して、
出ていたら次のコマンド送るようにするとか、
いろいろ細かい細工をする必要がある。
- 382 :名無しさん@お腹いっぱい。:2010/10/25(月) 13:59:30 ID:4wvx/zaY0
- >>380
ホットキーの修飾シンボルとSendlコマンドのキーを参照されたし
http://sites.google.com/site/autohotkeyjp/reference/Hotkeys
http://sites.google.com/site/autohotkeyjp/reference/commands/Send
- 383 :名無しさん@お腹いっぱい。:2010/10/25(月) 14:18:42 ID:Xu8cPlUE0
- autohotkeyでまずマスターしたいのは
sendの使い方だよね
- 384 :380:2010/10/25(月) 14:25:39 ID:TOpAYAMo0
- MsgBox,今後、Win+PrtScnでペイントを起動し画面を貼付ますヨ。
#PrintScreen::
Run,mspaint.exe
Sleep 2000
;ALT+Hキーを押してプルダウンメニューの表示
{
Send {ALT down}
Sleep 60
Send {H down}
Sleep 30
}
Send {ALT up}
Send {H up}
;貼付けを選択
Sleep 1000
{
Send {V down}
Sleep 30
}
Send {V up}
;クリップボードからの貼付けを選ぶ
Sleep 1000
{
Send {P down}
Sleep 30
}
Send {P up}
return
- 385 :380:2010/10/25(月) 14:33:41 ID:TOpAYAMo0
- >>384
に修正して今動きました!
仰るとおりsendの使い方が理解出来てなかったです。
別のキーに入れ替える時のみ使うのかと思ってました。
http://sites.google.com/site/autohotkeyjp/reference/commands/Send の
>Loop 20
>{
> Send {Tab down} ; キーリピートをキー押下としてキーを送る
> Sleep 30 ; キーリピート間隔を30msとする(またはSetKeyDelayを使う)
>}
>Send {Tab up} ; キー押下を解除する
で使い方が分かりました。
あと >Sleep 100 も全体的に桁を上げてスローにしたら動きが見れました。
今後微調整してみます。
>>381 様 >>382 様 >>383 様 ありがとうございました。
- 386 :名無しさん@お腹いっぱい。:2010/10/25(月) 14:51:48 ID:N0z/tjG0i
- ペイントを起動して張り付けれられるのを待つのは、
Sleepでもいいけど、WinWaitActive を使う方がいい。
ウィンドウの指定の「お作法」を知る必要があるけど、
せっかくAHK使い始めたんだし覚えて損はないぞ。
- 387 :名無しさん@お腹いっぱい。:2010/10/25(月) 14:58:00 ID:4XJMmLcR0
- ; pushを作ってみたよ
rrrpush(byref o,sss){
if(o.length == ""){
o.length := 0 ;
} ;
o.Insert(o.length,sss) ;
o.length:= o.length + 1 ;
return o ;
} ;
ooo := object() ;
rrrpush(ooo,"プッシュ0") ;
rrrpush(ooo,"プッシュ1") ;
sss := " ooo[0] = " ooo[0] "`n ooo[1] = " ooo[1] "`n ooo.length = " ooo.length
msgbox,%sss%
sss := " ooo.0 = " ooo.0 "`n ooo.1 = " ooo.1 "`n ooo.length = " ooo.length
msgbox,%sss%
- 388 :名無しさん@お腹いっぱい。:2010/10/25(月) 15:25:58 ID:dQSDWczY0
- なにそれ?
- 389 :380:2010/10/25(月) 15:33:50 ID:TOpAYAMo0
- >>386
あーこういうものあったんですね。
>指定したウィンドウがアクティブになるまでスクリプトの実行を一時停止します。
あとで改造してみます。
- 390 :名無しさん@お腹いっぱい。:2010/10/25(月) 16:01:19 ID:7Y23PrHpi
- >>387
push/pop みたいな LIFO(Last in, first out)は、
arr.Insert(itemToPush)
popedItem := arr.Remove(arr.MaxIndex())
でいけるっしょ。
index = 1 を使えば、shift/unshift も可能。
FIFO なら、
arr.Insert(itemToAdd)
item := arr.Remove(1)
でいいし。
- 391 :名無しさん@お腹いっぱい。:2010/10/26(火) 20:36:44 ID:q65iTCV2i
-
>>246
亀だが、昔随分前に使って、こりゃダメだ、と思ってた。
#If も使えるし、AHKLw相当だな。
画面の向きを何とか検知できれば、
融通の利かない SortInchkey を捨てられそうだ。
- 392 :名無しさん@お腹いっぱい。:2010/10/26(火) 21:47:29 ID:bvWup9giP
- Run, foobar2000.exe /comand:Next
でAHKからfoobarをコントロールしているのですが、
曲が切り替わったあとに最速で曲名を取得するにはどうすればいいでしょうか?
切り替わる直前にタイトルバーが一瞬foobar2000になるので、
Loop
WinGetTitle, sTitle, foobar2000 ahk_class {E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}
Until sTitle != foobar2000
で取得しようとしたのですが、切り替わる前の現在のタイトルが取得されてしまいました
今は長めにSleepしてからWinGetTitleで切り替わったあとのタイトルバーの文字列を取得していますが、
このSleep部分を自動化することはできないでしょうか
- 393 :名無しさん@お腹いっぱい。:2010/10/26(火) 22:19:00 ID:0xoVxpsw0
- >>391
PocketPC版のAutohotokeyはWin32用とは違ってキーカスタマイズに使うわけじゃないけど、
ちょっとしたことさせるには結構いいと思うわ。
AHKだけでフルスクリーンにする方法がよくわからんので、
手前のアプリをフルスクリーンにするExeをRunして誤魔化してるがw
GUIで大きなボタンが使えて、ファイル操作が出来て、Win32版とほぼ同じコードが動かせるインタープリタはほかにあるのかな?
- 394 :392:2010/10/26(火) 22:30:51 ID:bvWup9giP
- 自己解決しました
Run, foobar2000.exe /comand:Next
WinWait, foobar2000 ahk_class {E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}
WinWaitClose, foobar2000 ahk_class {E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}
WinGetTitle, sWinTitle, ahk_class {E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}
で取得できました
- 395 :名無しさん@お腹いっぱい。:2010/10/26(火) 23:41:50 ID:R8VjGMqH0
- >>394
3rd Party製のCOMを使うと色々便利だよ
COM Automation Server for 0.9, Public technology preview
http://www.hydrogenaudio.org/forums/index.php?showtopic=39946
// auto execute
fb2k := ComObjCreate("Foobar2000.Application.0.7")
fb2k_playback := fb2k.Playback
ComObjConnect(fb2k_playback, "Fb2kPlayback_")
return
#n::fb2k_playback.Next() ; 次の曲
#p::fb2k_playback.Previous() ; 前の曲
Fb2kPlayback_TrackChanged(bLocationChanged)
{
global fb2k_playback
MsgBox, % fb2k_playback.FormatTitle("%artist% - %title% - %album%"); foobarのタイトルフォーマティング
return
}
インターフェイスや関数は、インスコされたフォルダにあるfoobar2000.idlを参考に
- 396 :392:2010/10/26(火) 23:57:17 ID:bvWup9giP
- >>395
うおお、これはすごい・・!
ありがとうございます、こちら使ってみます
- 397 :392:2010/10/27(水) 00:28:26 ID:dzE2OZRCP
- すみません、ComObjCreate("Foobar2000.Application.0.7")でfoobarが起動してしまうのは仕様でしょうか?
MouseGesture.ahkに組み込んでいるので、Windows起動時に毎回foobarが起動してしまうと少し面倒です
またスクリプト終了時にfoobarが存在しないとRPC サーバーを利用できません。というエラーが表示されるのですが、どういう意味でしょうか?
- 398 :名無しさん@お腹いっぱい。:2010/10/27(水) 00:41:03 ID:8b70FoXC0
- AutoHotKeyを初めて使ってみようと思って公式サイトからダウンロードしたんですが、
カスペルスキー先生にTrojan-GameThief.Win32.OnLineGames.xfzpだって怒られてしまいました。
これは誤検知ってことで良いんでしょうか?
- 399 :名無しさん@お腹いっぱい。:2010/10/27(水) 01:41:29 ID:dzE2OZRCP
- foobar見つけたらComObj生成、存在しなくなったらComObj破棄というタイマーを500msで回すことで解決しました
ありがとうございました
- 400 :名無しさん@お腹いっぱい。:2010/10/27(水) 01:45:32 ID:21uFL+Ds0
- >>398
たぶんね。
AHKはキー入力の監視・乗っ取りなどスパイ的な事ができるんで、
その辺がトロイなどと認識されているかもしれない。
あるいは、実行ファイルが圧縮されているんだけど、それが誤検出の元だったりもする。
- 401 :名無しさん@お腹いっぱい。:2010/10/27(水) 08:49:34 ID:8b70FoXC0
- >>400
やっぱりそうですか。それに少し安心しつつ、ちょっと使ってみようと思います。
ありがとうございます!
- 402 :名無しさん@お腹いっぱい。:2010/10/27(水) 11:23:11 ID:C3BMn1dN0
- >>399ごめんあれからすぐ寝てた。タイマーでもおkだけとヘルパを使う手もあるみたい
fb2k_helper := ComObjCreate("Foobar2000.ApplicationHelper.0.7") ;Foobarの起動状態を監視するヘルパ(COMServer2Helper.exe)
ComObjConnect(fb2k_helper, "Fb2kHelper_") ;Foobar起動時/終了時に呼び出されるイベント
return
Fb2kHelper_ServerStateChanged(bRunning) { ;bRunning: false(終了時), true(起動時)
global
if bRunning
fb2k := ComObjCreate("Foobar2000.Application.0.7"), fb2k_playback := fb2k.Playback, ComObjConnect(fb2k_playback, "Fb2kPlayback_")
else ; この時点で恐らくFoobar(サーバ)が死んでるので、RPCなんちゃらエラーが出る。ComObjErrorで回避…
ComObjError(false), fb2k_playback := "", fb2k := "", ComObjError(true) ;特別な開放処理は必要ない…と思う
return
}
;Fb2kPlayback_TrackChanged上記と同じなので省略
長くなりそうだったので詰めた。読みづらくてスマソ
- 403 :名無しさん@お腹いっぱい。:2010/10/27(水) 11:47:00 ID:uy+2ap1C0
- autohotkeyの派生はautohotkey_lだけかと思っていたら
autohotket_hやautohotkey_nもあるのね
こんがらがってきた
- 404 :402:2010/10/27(水) 12:48:46 ID:C3BMn1dN0
- あ、もしWindows終了時とかCOMServer2Helperが先に終了してエラー出るなら、
Auto-executeでComObjError(false)やっちゃうのがいいかも。必要なときは(true)/(false)で囲む形で
- 405 :名無しさん@お腹いっぱい。:2010/10/27(水) 23:35:56 ID:dzE2OZRCP
- >>402
教えていただいた方法で書き直しました
こちらのほうが無駄がなくていいですね
本当に助かりました、ありがとうございます
- 406 :名無しさん@お腹いっぱい。:2010/10/28(木) 02:56:50 ID:5gI82XJE0
- 皆さんのところでは、Win 7 x64 + AHK_L x86 rev 61 で SoundPlay は動いてますか?
- 407 :名無しさん@お腹いっぱい。:2010/10/28(木) 12:01:42 ID:iIplMjyG0
- なんで64で32使ってるの?
Win7 32bitでAhk_L 32bit Unicodeだとちゃんと音鳴るぞ
- 408 :名無しさん@お腹いっぱい。:2010/10/28(木) 15:27:45 ID:up4g96kpP
- そろそろ_L版に乗り換えなきゃなぁと思ってるのだけど、うちも64機で、
以前から使い続けている32bitのAHK本家がそのまま動いたから
それをそのままつかってる。soundplayも、問題なく動いてる。
64bitマシンで64bit対応AHKをつかうと、どんな恩恵があるの?
- 409 :406:2010/10/28(木) 21:07:19 ID:jJZO3LXf0
- >>407
DllCall でドライバー直接たたいてる部分が AHK_L x64 で動んのですよ。
ポインターサイズやバッファーサイズの変更だけではどうにもならなかったので
諦めて x86 ビルドを使ってます。それ以外のスクリプトは x64 ビルドでいいんだけどね。
>>408
そうですか、じゃあ自分ちだけの問題みたいですね。なんだろ?
- 410 :名無しさん@お腹いっぱい。:2010/10/28(木) 22:11:08 ID:85I2/olr0
- エスパーしてみると、裏で排他モードで何か鳴らしてるとか。
- 411 :名無しさん@お腹いっぱい。:2010/10/31(日) 00:07:32 ID:H5Svzd9O0
- 質問
Ctrl + Shift + C を操作してクリップボードにコピー →クリップボード内の=以降を正規表現で抽出(ファイル名)
→Googleディスクトップ検索 迄を一気にしてるつもりなんですが・・・
キー操作の Ctrl+C を Ctrl + Shift + C に置換えてるつもりですが、
Ctrl + Shift + C を押してもクリップボードへのコピーが出来てないようです。
従って、前にCtrl+C でコピーした内容がクリップボードに残ってて、検索される様なのですが?何が悪いのでしょうか?
-----
MsgBox,Ctrl + Shift + C で文字列の最後の=以降(ファイル名)をgoogleデスクトップで検索。
^+C::
;Ctrl+Cキーを送信して、クリップボードにコピー
Send,^c
;クリップボードにテキストが格納されるまで待機
ClipWait
;1行文字列の置換。
ClipBoard := RegExReplace( ClipBoard, "^.*=(.+?)$", "$1" )
;複数行文字列の置換。
;ClipBoard := RegExReplace( ClipBoard, "\A.*=(.+?)$", "$1" )
;置換えられたクリップボード(抽出されたファイル名)をGoogleディスクトップで検索します。
Run,http://127.0.0.1:4664/search&s=P6EiCVVf5KnXpjFRh9HLxn61WY8?q=%ClipBoard%
Return
-----
宜しくお願いします。
- 412 :411:2010/10/31(日) 00:11:24 ID:dGqZc2fG0
- 自己解決しました。
- 413 :411:2010/10/31(日) 00:23:45 ID:H5Svzd9O0
- ガセです。継続してレス希望してます!
- 414 :名無しさん@お腹いっぱい。:2010/10/31(日) 00:40:39 ID:jpbTvmw/P
- ディスクトップって・・・いままで生きてて、おかしいと思ったことはないの?
- 415 :411:2010/10/31(日) 00:48:52 ID:H5Svzd9O0
- ああ分かってたのにデスクトップの間違いでやんす。
- 416 :名無しさん@お腹いっぱい。:2010/10/31(日) 00:54:48 ID:jpbTvmw/P
- とりあえず、最初の Send,^c の前に、
sleep,1000
を入れてみて、様子を見てみたら?
物理キー入力と、キー送りが近すぎると、
動かないことが多い。
- 417 :名無しさん@お腹いっぱい。:2010/10/31(日) 01:04:36 ID:G3btguv00
- >>411
少なくともウチでは動くなぁ。
でも、その処理だとClipWaitで無限に待ったりしてないのかね?
いったんクリップボードを空にして、
タイムアウトを0.2秒くらいに設定してErrorLevel で変更されたかどうか見た方がいい。
^+C::
Clipboard =
Send, ^c
ClipWait, 0.2
If (ErrorLevel = 0)
{
q := RegExReplace( ClipBoard, 〜〜, 〜〜)
Run, http://127.0.0.1:4664/search?s=〜〜&q=%q%
}
ところで、
・正規表現置換後の文字列は普通の変数使った方がいいと思う
・それとURLのパラメタの並びおかしくね?
・コマンドの説明そのままのコメントは見にくくなるだけで要らない感じ
- 418 :411:2010/10/31(日) 01:24:20 ID:H5Svzd9O0
- >>416 >>417
あ〜ホントだ。待機時間入れたら思ってた通りに動きましたわ。
ErrorLevel/変数/パラメタ/コメントの修正は、寝て起きてシャキットした頭で再度してみます。
>>416 様 >>417 様
夜分遅くお手数お掛けしました。ありがとうございます。
- 419 :名無しさん@お腹いっぱい。:2010/10/31(日) 01:34:05 ID:G3btguv00
- あ、コメントの件だけど、スレに貼る時のことね。
> ;Ctrl+Cキーを送信して、クリップボードにコピー
> ;クリップボードにテキストが格納されるまで待機
こういうのはコマンド見りゃわかるし、分からなきゃマニュアル読めばいいだけだしな。
- 420 :名無しさん@お腹いっぱい。:2010/11/01(月) 15:44:28 ID:+4nWtFOd0
- RegExReplace()で置換後文字列にTABを設定したいのですが
どうしたらよいでしょうか?
"\t"とするとそのままの文字が表示されてしまいます
- 421 :名無しさん@お腹いっぱい。:2010/11/01(月) 15:57:00 ID:adGfZotN0
- MsgBox, % RegExReplace("hageTABhageTABhogeTABhoge","TAB",A_Tab)
- 422 :名無しさん@お腹いっぱい。:2010/11/01(月) 16:15:09 ID:x+9fRJzj0
- MsgBox, % RegExReplace("abcdeABCDE", "i)b", "`t")
分かりづらいんだけど、
・ 正規表現パターンの部分は正規表現のルールでエスケープする
・ 置換文字列の部分はAHKのルールでエスケープする
正規表現エンジン自体には置換機能は無く、マッチング機能のマッチ情報を元に
AHK側で実装しているためにこうなっている。
※ ちなみに、正規表現エンジンはUTF-8で動かしているので
UTF16←→UTF-16 の置換を数度繰り返すため、
置換が遅いという報告がフォーラムに上がってる
- 423 :名無しさん@お腹いっぱい。:2010/11/01(月) 16:16:12 ID:x+9fRJzj0
- 間違っとるw
UTF-8 ←→ UTF-16
ね
- 424 :名無しさん@お腹いっぱい。:2010/11/01(月) 16:35:27 ID:+4nWtFOd0
- >>421,422
どうもありがとうございました
- 425 :名無しさん@お腹いっぱい。:2010/11/01(月) 23:16:41 ID:Te9KDCJV0
- ; このスレ参考にして、DLLの呼び出しのところを弄ったらAutohotkeyLでもFmod.dllが動きました。感謝!fmodce.dllはまだうまくいってないけどw
; http://www.autohotkey.com/forum/topic53012.html
AudioFile =%A_WinDir%\Media\tada.wav
; AudioFile =%A_ScriptDir%\test.wma
; AudioFile =%A_ScriptDir%\てすと.wma
msgbox,%AudioFile%
fMod := DllCall("LoadLibrary", "Str","FMOD.DLL")
DllCall( "FMOD.DLL\_FSOUND_Init@12", "UInt" ,44100, "UInt" ,32, "UInt" ,0x2)
fStream := DllCall("FMOD.DLL\_FSOUND_Stream_Open@16", "AStr",AudioFile, "UInt" , 0x20000, "UInt" ,0, "UInt" ,0 )
Channel := DllCall("FMOD.DLL\_FSOUND_Stream_Play@8", "UInt" ,-1, "Uint" , fStream )
Sleep 5000
DllCall( "FMOD.DLL\_FSOUND_Stream_Stop@4", "Uint" ,fStream )
DllCall( "FMOD.DLL\_FSOUND_Stream_Close@4", "Uint" ,fStream )
ExitApp
- 426 :名無しさん@お腹いっぱい。:2010/11/02(火) 16:44:10 ID:AEcR182R0
- テンキーレスキーボードを購入したはいいもののやはりテンキーが欲しくなり、
scrolllockONでmjkluio789キーをnumpad0〜9に置き換える機能を作りたく
m::
getkeystate, state, scrolllock, T
if state = D
send {numpad0}
return
(scrolllockON時にmをnumpad0にリマップ)
というものを書いてみたのですが、
これではscrolllockオフ時にmの反応がなくなってしまいます
何かうまい方法はないものでしょうか
- 427 :名無しさん@お腹いっぱい。:2010/11/02(火) 17:01:17 ID:CxeSsQv20
- いやいやいや
- 428 :名無しさん@お腹いっぱい。:2010/11/02(火) 17:03:15 ID:unkGM94V0
- >>426
$m::
getkeystate, state, scrolllock, T
if(state = "D") {
send,{numpad0}
return
}
else {
send,m
return
}
return
うちではこれでうまくいった
ただ素直にNumLock使えばいいと思うけど
- 429 :名無しさん@お腹いっぱい。:2010/11/02(火) 17:50:27 ID:smp1qdhQ0
- AHKL使おうぜ
#If GetKeyState("ScrollLock", "T")
M::Send, {Blind}{Numpad0}
J::Send, {Blind}{Numpad1}
K::Send, {Blind}{Numpad2}
L::Send, {Blind}{Numpad3}
U::Send, {Blind}{Numpad4}
I::Send, {Blind}{Numpad5}
O::Send, {Blind}{Numpad6}
7::Send, {Blind}{Numpad7}
8::Send, {Blind}{Numpad8}
9::Send, {Blind}{Numpad9}
#If
- 430 :名無しさん@お腹いっぱい。:2010/11/02(火) 23:55:24 ID:Ydh/XJv00
- 以前からahkで作ってexe化したラッパーに画像を関連付けしていまして、
実行時のX1ボタンやX2ボタンの押下状態で実際に実行するアプリを変えられる様にしていたのですが、
最近になってMouseGesture2を導入してからこの動作に問題が出てきました。
実行ファイルをダブルクリックの際に同時にX1やX2ボタンを押していても実行自体がされません。
「動作割り当て」にX1+左クリックやX2+左クリックを一部のアプリで登録しており、
その設定が干渉しているんだなとは分かるのですが、回避することが出来ません。
上記動作で「Default」条件にMG_Abort()とかを定義してみてダメでした。
MG_Abort()を設定した後で、試しに下の様なスクリプトでテストすると
X1やX2を押しながらダブルクリックしても、どちらも0にしかなりません。
a := GetKeyState("XButton1", "P")
b := GetKeyState("XButton2", "P")
Msgbox, X1=%a% X2=%b%
Return
なにか上手い方法はありませんでしょうか?
- 431 :名無しさん@お腹いっぱい。:2010/11/03(水) 00:18:21 ID:c2w1QMMF0
- 「なにか上手い方法」ってフレーズはやってんの?
- 432 :名無しさん@お腹いっぱい。:2010/11/03(水) 00:33:06 ID:Dhc2CwaSP
- 解決するために、自分では考えられない方法や手順に関して、
いろんな方法があるから、そう書くんじゃね?べつに嫌な気分にはならないけど。
>>430
さきに実行されたスクリプトが、キー入力を吸い取ってしまう。
だから、あとから起動されたスクリプトの入力に降りてこなくなる。
キー入力を吸い取らないように、キー定義の前に ~ をつけるとか、
同時に稼動しても問題ないように、双方を改造するしかない
これをやると、キーの2度押しコードの1回目とかで、無効にすべきキーが平常時のように
流れてしまうなどの弊害も出るので個別に面倒を見る必要がある。
- 433 :名無しさん@お腹いっぱい。:2010/11/03(水) 00:37:37 ID:NuRYJlWP0
- >>430
そのジェスチャツールがボタン押下メッセージ奪って捨てちまうんで、
他のアプリとってはボタンが押されているのは気付きようがない。
でも、まぁ出来なくは無いかも知れない。
ボタン押下を検知できるのは常駐側だけなんで、そいつにお伺いたてればいいんじゃないのかね。
ラッパーExeから常駐スクリプトにSendMessageして、常駐側がGetKeyStateの結果を返す、とか。
- 434 :名無しさん@お腹いっぱい。:2010/11/03(水) 02:37:13 ID:aLD3JVtQ0
- >>428-429
出来ました!
私のキーボードにはnumlockがついてなかったので重宝しそうです
- 435 :名無しさん@お腹いっぱい。:2010/11/03(水) 09:12:12 ID:dU79cjgJ0
- クリップボード文字列の英数を全角→半角に置き換えたい場合に
1文字ごとに1行のスクリプトを書いているのですが
これをまとめて記述する方法はないでしょうか
- 436 :名無しさん@お腹いっぱい。:2010/11/03(水) 10:48:43 ID:NuRYJlWP0
- 文字コードでやりゃいいんじゃないのかね。
ToHankakuNumAlpha(str, target="A 1") {
alpha := RegExMatch(target, "[A-Za-z]")
num := RegExMatch(target, "\d")
Loop, Parse, str
{
code := Asc(A_LoopField)
If (alpha) && (code >= 0xFF21 && code <= 0xFF5A) || (code >= 0xFF41 && code <= 0xFF5A)
out .= Chr( 0x41 + (code - 0xFF21) )
Else If (num) && (code >= 0xFF10 && code <= 0xFF19)
out .= Chr( 0x30 + (code - 0xFF10) )
Else
out .= A_LoopField
}
Return out
}
- 437 :名無しさん@お腹いっぱい。:2010/11/03(水) 10:52:42 ID:NuRYJlWP0
- カッコ間違ってるw
> If (alpha) && ((code >= 0xFF21 && code <= 0xFF5A) || (code >= 0xFF41 && code <= 0xFF5A))
ちなみにAHKLユニコード版でないと動かない。
あと、記号類とかも一気にやりたいならNKF使うといいよ。
- 438 :名無しさん@お腹いっぱい。:2010/11/03(水) 13:40:20 ID:oeFsMo3E0
- ((code >= 0xFF21 && code <= 0xFF5A) || (code >= 0xFF41 && code <= 0xFF5A))
このORの右側って左側に含まれてるように見えるんだけどなんで?
- 439 :名無しさん@お腹いっぱい。:2010/11/03(水) 13:53:29 ID:NuRYJlWP0
- うひゃー。左側は (code >= 0xFF21 && code <= 0xFF3A) だな
Chr("A") Chr("Z")
0xFF3B〜0xFF40( [\]^_` )の誤爆があるんで、
A〜Z(0xFF21〜0xFF3A) と a〜z(0xFF41〜0xFF5A)を分けたつもりだったんだが…orz
- 440 :名無しさん@お腹いっぱい。:2010/11/03(水) 15:13:27 ID:oeFsMo3E0
- 6文字だけ記号が入ってるのか…意味わかんねw
>>435 まとめて記述、強引に書いてみた
;tarの並び順の通りに、対応して置き換える文字をrepに並べる
tar=ABCabc/¥()123
rep=ABCabc/\()123
Loop, Parse, rep
{
rep%A_Index% := A_LoopField
}
str = ABCDEF/¥(aaazzz)
Loop, Parse, str
{
order := RegExMatch( tar, A_LoopField )
If( order )
out .= rep%order%
Else
out .= A_LoopField
}
MsgBox, %out%
- 441 :名無しさん@お腹いっぱい。:2010/11/03(水) 21:12:35 ID:n2DwmTc50
- >>432,433
アドバイスありがとうございます
SendMessageでスクリプト間の通信は、ちょっと自分には難しそうなので断念しましたw
MouseGesture2で実行中も、X1・X2を押下したままジェスチャのタイムアウトまで
時間を待ってダブルクリックを実施すれば、X1・X2押下の状態がラッパーまで
通知されていたので、試しにスクリプト中の「移動中にタイムアウト」と
コメントが入っている部分をまるっと拝借してX1+左クリックやX2+左クリックの
押下時にMouseGesture.ahk側で実行するようにしたところ、期待通りの動作になりました。
Critical
SetMouseDelay,-1
MG_TimedOut=1
BlockInput,On
Loop,Parse,MG_CurTriggers,_
If A_LoopField<>
GoSub,MG_%A_LoopField%_Down
BlockInput,Off
Critical,Off
MouseClick, left
上記がそうなんですが、流行らせるページの管理人さんのスクリプトが高度すぎて
いまいちどうして上手く動作出来ているのかは理解できてません。
ほぼMouseGesture.ahkの956行あたりからそのまんまですが、
MouseMoveの行を削って、最後にMouseClick, leftを追加しました。
(MouseClick, leftを追加しないとトリプルクリックが必要だったので)
お恥ずかしい話ですが、これ何で上手く動いてるのでしょうか?
なんとなくですが、タイムアウトしたらトリガー押下を後からエミュレートしてる?とか考えてますが…
- 442 :435:2010/11/04(木) 05:00:57 ID:KIq6zHjp0
- すみませんがもう1件質問させていただきます
複数行のクリップボード文字列を上下逆順に並べ替えたいのですが
どのようにしたらよいでしょうか
例)
A………
B………
C………
↓
C………
B………
A………
行数は可変です
(行数固定なら単純にマッチさせて逆順で置き換えればいいと思うのですが)
>>436 .>>440
ありがとうございました。申し訳ないのですが自分の現在の理解度では
うまくクリップボード文字列に応用させられなかったので
全角半角置換についてはとりあえず今まで通りで行く事にします
- 443 :442:2010/11/04(木) 05:02:32 ID:KIq6zHjp0
- >C………
のあと1行開いてるのはただの打ちミスです。スミマセン
- 444 :名無しさん@お腹いっぱい。:2010/11/04(木) 05:53:25 ID:0LVLrsnY0
- >>442
ttp://sites.google.com/site/autohotkeyjp/reference/commands/Sort
- 445 :名無しさん@お腹いっぱい。:2010/11/04(木) 14:19:59 ID:xHKLIkA10
- command = run,c:\windows\system32\
%command%
こんな感じで、変数の中に命令を代入したいのですが無理なんでしょうか。
別の設定ファイルの条件にしたがって分岐したいのですが、If 〜Elseが何十個も並ぶのが見にくいので変数でまとめてしまいたいんです。
- 446 :名無しさん@お腹いっぱい。:2010/11/04(木) 14:46:35 ID:H3jxOr4k0
- 文字列として変数に格納されているコマンドを実行するのは無理。
コマンドに渡すパラメタを変数で指定するならOK(1)
もしくは、サブルーチンラベルを格納してそこにジャンプするようにする(2)
あとはDynamic Function Call とかオブジェクトのメソッドにするとか…
ランチャなら殆どは(1)で済む。
分岐で複数命令を実行したいなら(2)。
(1)
command1 = spider.exe
command2 = C:\Progaram Files\Hoge\hoge.exe
Run, %command1%
(2)
Label = ExecCommand1
If IsLabel(Label)
Gosub, %Label%
(略)
ExecCommand1:
Run, foo.exe
Return
ExecCommand2:
Run, bar.exe
Return
- 447 :名無しさん@お腹いっぱい。:2010/11/05(金) 01:46:51 ID:8BMdsHgy0
- >>393
WM機でGUI全画面に出来た。DllCall使うとは思わなかったw
#NoTrayIcon
isFull := False
Gui, +LastFound -Caption
Gui, Add, Button,, Close
Gui, Add, Button,, FullScreen
SetFullScreen(isFull)
Gui, Show, , Sample
WinMaximize
Return
ButtonClose:
ExitApp
ButtonFullScreen:
SetFullScreen( isFull := !isFull )
Return
SetFullScreen(isFull, SIP=True) {
flags := isFull ? 0x02 | 0x20 : 0x01 | 0x10
flags |= SIP ? 0x04 : 0x08
yOffset := isFull ? 0 : 26
DllCall("SHFullScreen", "UInt", WinExist(), "UInt", flags)
WinMove,,, 0, yOffset, A_ScreenWidth, A_ScreenHeight - yOffset
}
- 448 :名無しさん@お腹いっぱい。:2010/11/05(金) 08:20:01 ID:BZJhOZrA0
- >>444
ありがとうございます
うまくいきました
- 449 :名無しさん@お腹いっぱい。:2010/11/05(金) 16:20:08 ID:Mk4Ee8z10
- 右shiftキーの左隣(かなの「ろ」)ってどう記述すればいいんだろ?
キーヒストリーだと半角のバックスラッシュ(\)って表示されるんだけど
メモ帳で書くと「\」になっちゃう
キーコード指定すれば問題なく使えるから困りはしないんだけど
- 450 :名無しさん@お腹いっぱい。:2010/11/05(金) 18:04:35 ID:5vdoxt/y0
- AHKでGUIアプリを作ったのだけど
そのウィンドウがアクティブなときだけ有効なホットキーを設定したいのだけど
どうしたらいいのだろう?
Gui, +LastFound
WinGet, id, ID
#IfWinActive ahk_id %id%
a::b
#IfWinActive
↑こんな感じでやれたらいいのだけど
ウィンドウの指定で変数が使えないみたいなので
今はウィンドウタイトルの一致で設定してるけど
もっと確実な方法はないものかなぁと
なるべくLの機能は使わずにやれたらうれしいです
- 451 :名無しさん@お腹いっぱい。:2010/11/05(金) 19:16:17 ID:8BMdsHgy0
- GroupAdd, MyGui, ahk_id %GuiId%
#IfWinActive, ahk_group MyGui
or
#If WinActive("ahk_id " GuiId)
- 452 :名無しさん@お腹いっぱい。:2010/11/06(土) 01:00:45 ID:pkR42kMV0
- >>449
文字コードは一緒、フォントの違い
- 453 :450:2010/11/06(土) 14:59:34 ID:anhitfLM0
- >>451
上の方のやつでうまく動かすことが出来ました
下の方はLの機能?うちのでは動きませんでした
どうもありがとうございました
- 454 :名無しさん@お腹いっぱい。:2010/11/06(土) 16:16:44 ID:iaZAJCAC0
- すっごい今更なんですけど
1.0.48.04 - September 25, 2009
の
Added full support for "if % expression". [thanks kenomby]
っていうのは、具体的にどういうものなんでしょうか?
if (expression)とは別物?
- 455 :名無しさん@お腹いっぱい。:2010/11/06(土) 17:04:41 ID:5TmD6Zsu0
- 同じだと思う。
これは文法エラー(コマンドタイプ)
If a > 1 {
MsgBox, Greater
}
これはOK (式タイプは "{" を行末に付けてもOK)
If (a > 1) {
MsgBox, Greater!
}
これは通るので式タイプと見さされているっぽい
If % a > 1 {
MsgBox, Greater!
}
- 456 :名無しさん@お腹いっぱい。:2010/11/06(土) 17:17:38 ID:iaZAJCAC0
- >>455
なるほど、%で式だと明示的に書けるようになった、て事だったんですね
ありがとうございました
- 457 :名無しさん@お腹いっぱい。:2010/11/07(日) 06:41:25 ID:Lz50T94C0
- RegExReplace()でマッチさせる文字列に変数を使う方法はあるでしょうか
iniファイルでマッチする文字列を管理したいのですが
RegExReplace()内では変数がきかないみたいです
- 458 :名無しさん@お腹いっぱい。:2010/11/07(日) 07:18:51 ID:HkajTAj30
- きくように書け
- 459 :名無しさん@お腹いっぱい。:2010/11/07(日) 08:45:18 ID:o2YjkDD60
- >>457
変数使いたければ引用符外で
- 460 :名無しさん@お腹いっぱい。:2010/11/07(日) 08:59:12 ID:Z89TtGAD0
- 動きません
できません
やれないみたいです
できないみたいです
って書くよりも、その動かないコードを直接貼り付けたほうが、
ここの住人は働くし、働きやすい
- 461 :名無しさん@お腹いっぱい。:2010/11/07(日) 17:07:33 ID:AnpKSw1I0
- RegExMatchで最後の数字列をマッチさせたいんですが、
RegExMatch(URL, "P)(?<=\D)(\d*)(?=[./\b])", Decimals)
これではfoo/bar1.htmとかfoo/bar1/とかはマッチしてもfoo/bar1を逃してしまいます。
どう書き換えたらfoo/bar1までマッチするんでしょうか
- 462 :名無しさん@お腹いっぱい。:2010/11/07(日) 17:16:39 ID:mMR28S/J0
- それだと数字の後に何か文字が無いとマッチしないだろ。
(\d+)(?=\D*)$
でいいんでないのかね。
関連スレ:
正規表現 Part7
http://hibari.2ch.net/test/read.cgi/tech/1268979408/
- 463 :名無しさん@お腹いっぱい。:2010/11/07(日) 17:18:45 ID:jvoxFRZ70
- SQLite3の.dbを読み込んで値を取得したいんだけどそういうライブラリってもうない?
ttp://www.autohotkey.com/forum/topic12752.html&highlight=sql
がそれっぽいんだけどなぜか消されてる
- 464 :名無しさん@お腹いっぱい。:2010/11/07(日) 18:14:56 ID:AnpKSw1I0
- >>462
ありがとうございます。
(\d+)(?=\D*)$とSplitPathを組み合わせたら何とかできそうです。
- 465 :名無しさん@お腹いっぱい。:2010/11/07(日) 18:35:54 ID:Qcyi9zfm0
- >>463
_L限定でよければ、ADOとか。SQLite ODBC Driverが必要だけど
; Janeの画像キャッシュ名からサイズを得てみる
db := ComObjCreate("ADODB.Connection")
com := ComObjCreate("ADODB.Command")
sDriver := "DRIVER=SQLite3 ODBC Driver;Database=Cache.icx" ; Cache.icxのパス
db.Open(sDriver)
com.ActiveConnection := db
com.CommandType := 1
com.CommandText := "SELECT size FROM headerTable WHERE cacheName=?"
sCache := "foo.vch" ; 調べたいキャッシュの名前
VarSetCapacity(n, 8)
rs := com.Execute(n, sCache)
if (!rs.EOF)
MsgBox,% rs.Fields(0).value
rs.Close(), rs := "", com := "", db.Close(), db := ""
- 466 :名無しさん@お腹いっぱい。:2010/11/07(日) 18:53:08 ID:dsRx6GHh0
- まったくプログラムの知識がないのですが
AutoHotkeyを勉強できる方法・サイトなどを
教えてください
- 467 :名無しさん@お腹いっぱい。:2010/11/07(日) 19:03:44 ID:+GQYTQEA0
- >>1見りゃ大体わかる
- 468 :名無しさん@お腹いっぱい。:2010/11/07(日) 19:37:57 ID:mMR28S/J0
- hoppfrosch wrote:
What about updating the examples within the AHK_L-Manual to be
unicode compatible (- or AHK-L compatible at all)?
Lexikos:
Already done, but the downloads and online documentation hadn't been updated.
There weren't very many ANSI-specific examples, afaict.
ってな具合なんだけど、AutoHotkeyJp の doc は AHKL 用に最適化してもいいかな?
両方の互換性を考慮して旧docと真docの両方を読み直して、
双方の互換性のことを色々記述するのは結構なな手間なんで。
幸いにも旧docのミラーはあるわけだし
- 469 :名無しさん@お腹いっぱい。:2010/11/07(日) 20:42:43 ID:jvoxFRZ70
- >>465
_L愛用してるので全く問題ないです
ありがとうございました!
- 470 :名無しさん@お腹いっぱい。:2010/11/08(月) 15:16:48 ID:xOom4MwI0
- >>441
>SendMessageでスクリプト間の通信は、ちょっと自分には難しそうなので断念しましたw
SendMessageでスクリプト間の通信をするようになれば、
保守管理がかなりやりやすくなるんじゃないかな。
SendMessageの例は一見するとわからないかもしれないけど、
じっくり眺めてみればわかるはず。
>>468
賛成です。
できれば、AHKLのq and a がautohotkeyのforamに立っていたので、
その内容も紹介してほしいです。
- 471 :名無しさん@お腹いっぱい。:2010/11/08(月) 20:43:35 ID:0FH6VXhx0
- すみません質問です。AHK_L使っていて、GetKeyStateを使って#Ifで
条件分岐させようとしてます。aだけならGetKeyState("a","P") = 1
でいいんですが、すべてのキーが押されてないときもしくは押されてるときって
どう書けばいいですかね?"a" "b" "c"とか列挙してけば何とかなると思ったら
長すぎるよってエラーが出てしまいまして。どうすればいいですかね?
- 472 :名無しさん@お腹いっぱい。:2010/11/08(月) 21:36:07 ID:7mOlVxlJ0
- 「全てのキー」って何を意味するの?キーボード上の全部のキーを全部押す状況ってあるの?
それとも「任意のキーが押されている/どのキーも押されていない」ってこと?
具体的な条件を書いた方が早いと思う。
- 473 :名無しさん@お腹いっぱい。:2010/11/08(月) 21:40:23 ID:0FH6VXhx0
- すいません補足ありがとうございます、
「任意のキーが押されている/どのキーも押されていない」
ってことです。
ちなみに今は
xを押してるとき、iを押してるとき、xもiも押されてないときって感じでやってます。
- 474 :名無しさん@お腹いっぱい。:2010/11/08(月) 21:41:24 ID:t1Vut+p+0
- キーボード上の全部のキーを全部押してもそれを検出することは不可能だけどな
- 475 :名無しさん@お腹いっぱい。:2010/11/08(月) 23:23:54 ID:fTbG/ZI50
- Inputをタイマーで回せばいんじゃね
- 476 :名無しさん@お腹いっぱい。:2010/11/09(火) 00:02:34 ID:EafMnpX40
- パフォーマンス的にはどうかと思うけど一応。
通常のタイプには向かない。これ使うといかに自分のキータイプがオーバーラップしているかが分かる。
#If CheckOtherKey()
a::
b::
MsgBox,, [%A_ThisHotkey%], Some key is already pressed
return
#If
; どのキーも押されていない時のホットキー定義
CheckOtherKey() {
static keys1:="abcdefghijklmnopqrstuvwxyz012345678-^@[;:],./"
, keys2:="vkDC|vk1C|vk1D|vkF3|vkF4|Space|Enter|Backspace|Pause|F1|F2|F3|F4|F5|F6|F7|F8|F9|F10|F11|F12" ;足りないなら追加を
ListLines, Off
Critical
SetBatchLines, -1
thisKey := RegExReplace(A_ThisHotkey, "^\W+|\s.+")
Loop, Parse, keys1
If (A_LoopField != thisKey) && GetKeyState(A_LoopField, "P")
Return True
Loop, Parse, keys2, |
If (A_LoopField != thisKey) && GetKeyState(A_LoopField, "P")
Return True
}
- 477 :名無しさん@お腹いっぱい。:2010/11/09(火) 06:07:06 ID:BKm/Xh6z0
- >>476
うおお、わざわざありがとうございます。
これから試してみます。
それとキーボード上の全部のキーを全部押す状況ってあるの? ってことですが
それをいわれるとそんな状況ってないOTL
あとは自分で考えて試行錯誤してみます。
どうもありがとうございました!
- 478 :名無しさん@お腹いっぱい。:2010/11/11(木) 08:19:43 ID:r64aaIcu0
- PC上で今(どのくらい)音が鳴っているか調べる事ってできる?
- 479 :名無しさん@お腹いっぱい。:2010/11/11(木) 10:53:32 ID:OEbUF5hy0
- Windows上のボリュームを習得・変更はできるけど、鳴ってる音の音量は無理とはいわないけどきびしいんじゃないか。
無茶をするなら、再生リダイレクトで鳴ってる音を拾ってwave編集ツールなりdllなりで何デシベルかを返してもらうとか。
- 480 :名無しさん@お腹いっぱい。:2010/11/11(木) 14:44:06 ID:XPhmSHbm0
- If()、if()、if、If、IF
Loop、While(1)、While(True)
最近他人のコード見るたびにどれで書くか迷うようになった・・・
- 481 :名無しさん@お腹いっぱい。:2010/11/11(木) 15:56:33 ID:iPVnRxO4P
- そろそろSwitch文が欲しい
- 482 :名無しさん@お腹いっぱい。:2010/11/11(木) 18:53:48 ID:Ju0UA39+0
- なあちょっと聞きたいんだが・・・。
皆さ、GetKeyState("LAlt","P")とかで
LAltが押されてることを調べることってできてるか・・・?
俺のマシンはできないというかなんというか。
これで判定文を書いてもうまく動いてないんだ…。
んでちょっと皆に聞いてみたくなったわけだが。
使ってるのは最新のAHK_Lです。
- 483 :名無しさん@お腹いっぱい。:2010/11/11(木) 19:46:55 ID:XTe92QsE0
- うちは動くなぁ
Loop
Sleep, 1
Until GetKeyState("LAlt", "P")
MsgBox, LAlt detected
- 484 :名無しさん@お腹いっぱい。:2010/11/11(木) 22:23:24 ID:r64aaIcu0
- >>479
別ツールから取得してるんだけどdllか・・・
正直全く分からんけどいじってみるよ。ありがとう
- 485 :名無しさん@お腹いっぱい。:2010/11/12(金) 19:42:03 ID:6RBVGTCe0
- 空白しか含まれない文字列の場合〜っていう条件分岐どうやればいいかな?
こんなの考えたけどなんか無駄な気がする
CheckSpaceOnly(str){
static Space_Zenkaku := " "
StringReplace, str, str, %A_Tab%,
StringReplace, str, str, %A_Space%,
StringReplace, str, str, %Space_Zenkaku%,
return str == ""
}
str1 := " "
str2 := "あ いう え お"
MsgBox, % "「" . str1 . "」は" . ( CheckSpaceOnly(str1) ? "空白だけ" : "空白だけじゃない" )
MsgBox, % "「" . str2 . "」は" . ( CheckSpaceOnly(str2) ? "空白だけ" : "空白だけじゃない" )
- 486 :名無しさん@お腹いっぱい。:2010/11/12(金) 20:21:00 ID:9mzE66cii
- 非スペースがあるかないかを見た方が処理が早く終わるよ
InputBox, str, Test, Enter some string,,200,110
If RegExMatch(str, "[^\s ]+")
MsgBox,, RegEx, The string has non-space character!!
nonspace:=False
Loop,Parse, str
If A_LoopField Not in %A_Space%,%A_Tab%,
nonspace:=True
Until (nonspace)
If (nonspace)
MsgBox,, Loop, The string has non-space character!!
- 487 :名無しさん@お腹いっぱい。:2010/11/12(金) 20:26:42 ID:9mzE66cii
- おっと、ターンに + は要らないな。
"[^\s ]"
で。
携帯でスクリプト打つのはムズいのぉ@AhkCE
- 488 :名無しさん@お腹いっぱい。:2010/11/12(金) 22:04:19 ID:6RBVGTCe0
- >>486
見やすいしどう考えても置換するより速いね
どうもありがとう助かりました
- 489 :名無しさん@お腹いっぱい。:2010/11/13(土) 02:27:57 ID:AZ03NlDy0
- AutoHotkey.exeを管理者権限で起動しないとAutoHotkeyが管理者権限で起動されたアプリケーションを操作できない
でも管理者権限で起動してしまうと今度はAutoHotkeyから起動したアプリケーションを管理者権限を持たないアプリケーションが操作できない
ぬおーMouseGesture.ahkで詰んだ
管理者権限AutoHotkeyからウェブブラウザ開くと他アプリがウェブブラウザへURL送れない
- 490 :名無しさん@お腹いっぱい。:2010/11/13(土) 02:46:03 ID:LcPhG0DX0
- >>489 自分も似たような問題で悩んだ
基本的な解としては、通常権限で常駐するラッパーアプリケーションが必要になる
そしてそいつに AHK から命令を送って起動させる
自分とこでは、AHK から "ファイル名を指定して実行" に起動パスを送るって方法で
対処してかれこれ 1 年になります
- 491 :名無しさん@お腹いっぱい。:2010/11/13(土) 02:47:08 ID:LcPhG0DX0
- 書き忘れ
AHK は管理者権限で起動しておきます
- 492 :名無しさん@お腹いっぱい。:2010/11/13(土) 03:22:59 ID:cLRsHERq0
- RunAsじゃだめなの?
- 493 :名無しさん@お腹いっぱい。:2010/11/13(土) 03:32:42 ID:FgHy8IvW0
- もう覚えてないんだけど、RunAs で上手くいかない事例があったんだよね
- 494 :名無しさん@お腹いっぱい。:2010/11/13(土) 04:18:36 ID:AZ03NlDy0
- ごめん色々調べてみたんだけれどファイル名を指定して実行に送るがわからなかった
shell32.dllにDllCallみたいなことするの?
AHKからrun, wscript myrun.js %cmd%でJScript呼び出して中でobjShell.Runしてもだめだった
RunAsはいまいち使い方を理解してない・・
管理者権限で実行するためのコマンドだった気がするけど違ったっけ
- 495 :名無しさん@お腹いっぱい。:2010/11/13(土) 04:39:49 ID:4LfwRh0P0
- 自分は英語版 OS + ファイル名に日本語は使わないので
日本語環境では適宜調整が必要かも
ファイル名を指定して実行、基本的な仕組みは以下のとおり
----
Run, shell:::{2559a1f3-21d7-11d4-bdaf-00c04f60b9f0}
WinActivate, Run ahk_class #32770 ; 日本語 OS なら "Run" を変えなきゃかも
Send, ここの文字列が送られる
----
RunAs はユーザーを変更して起動するコマンドです
詳しくはヘルプをどうぞ
http://www.autohotkey.com/docs/commands/RunAs.htm
- 496 :名無しさん@お腹いっぱい。:2010/11/13(土) 06:13:25 ID:4LfwRh0P0
- >>492 理由を思いだした
RunAs はログオン用パスワードが必須なので、
複数のコンピューター/アカウントで使いまわす汎用スクリプト用には使いづらかった
- 497 :名無しさん@お腹いっぱい。:2010/11/13(土) 08:27:14 ID:20s0PxK60
- 起動時に username/password を InutBox とかで入力させて変数に入れておけばいいんでないのかね
- 498 :名無しさん@お腹いっぱい。:2010/11/13(土) 09:04:18 ID:FgHy8IvW0
- >>497 うーん、自分はいいけど他人にやらせるのが面倒くさい
- 499 :名無しさん@お腹いっぱい。:2010/11/13(土) 14:30:10 ID:JY/EQTs6P
- manifestで uiAccess="true" を付けて
デジタル署名を付ければOKです。
- 500 :名無しさん@お腹いっぱい。:2010/11/13(土) 18:38:21 ID:2gUxJxsb0
- 64bit版と32bit版の二つを動かせば。。
- 501 :名無しさん@お腹いっぱい。:2010/11/13(土) 19:46:06 ID:+JgI8frP0
- 質問です。以下のスクリプトは正常に動くのですが、
WinGetActiveTitle, Title
If Title =Add Bookmark
{
処理A
}else{
処理B
}
2行目を
If Title =ブックマークに追加
とすると、ウィンドウタイトルが「ブックマークに追加」でも処理Bに分岐してしまいます。
日本語の扱いの問題と思うんですが、どう回避したらいいんでしょうか。
- 502 :名無しさん@お腹いっぱい。:2010/11/13(土) 19:57:55 ID:QzR0MBJC0
- >>7
- 503 :489:2010/11/13(土) 21:24:46 ID:AZ03NlDy0
- みんなどうもありがとう
結局いろいろ試してみた結果、外部スクリプトでサーバー書いて元スクリプトからメッセージ送って操作する方法で落ち着いた
鯖スクリプトAhkCmdSvr.ahk
#Persistent
WM_USER_GOOGLESEARCH := DllCall( "RegisterWindowMessage", "Str", "WM_USER_GOOGLESEARCH", "UInt" )
Gui, Add, Text, , AhkCmdSvr
OnMessage( WM_USER_GOOGLESEARCH, "AhkCmdSvr" )
return
AhkCmdSvr( wp, lp, msg, hWnd ){
global WM_USER_GOOGLESEARCH, WM_USER_OPENPATH
If( msg == WM_USER_GOOGLESEARCH )
/* ほにゃらら〜 */
}
〜〜〜〜〜〜〜〜〜〜〜〜
元スクリプトMG_User.ahk
GoogleSearch:
Msg := DllCall( "RegisterWindowMessage", "Str", "WM_USER_GOOGLESEARCH", "UInt" )
DetectHiddenWindows, On
PostMessage, %Msg%, , , , % "ahk_id" WinExist( "AhkCmdSvr.ahk ahk_class AutoHotkeyGUI" )
DetectHiddenWindows, Off
return
みたいな
常駐スクリプト増えちゃうしメンテが大変だけど
- 504 :名無しさん@お腹いっぱい。:2010/11/13(土) 21:36:16 ID:20s0PxK60
- どっちにしろプロセス分けなきゃいけないし、メッセージ毎に関数分かれてるから
メンテもそれほどじゃないっしょ。
あと、メッセージ番号はユニーク(なはず)なんで、ブロードキャストしちゃってもいいんじゃないのかね
PostMessage, DllCall("RegisterWindowMessage", "Str", "RemoteFunction", "UInt")
, wParam, lParam
,, ahk_id 0xFFFF
- 505 :501:2010/11/13(土) 22:10:17 ID:+JgI8frP0
- >>502
どうもありがとうございます。
AutoHotkey_Lに乗り換えることで解決しました。
MouseGesture.ahkの書き換えがちょっと手間でしたけど、これで快適になりました。
- 506 :489:2010/11/13(土) 22:26:25 ID:AZ03NlDy0
- >>504
たしかに一斉にPostした方が簡素でいいですね
ありがとう
- 507 :名無しさん@お腹いっぱい。:2010/11/14(日) 11:56:16 ID:Lm9CuBw40
- うちの環境で(AHKとAHK_L両方でやってみたんだが)
a::
While GetKeyState("a","P") = 1
{
If GetKeyState("NumpadLeft","P") = 1 ;
{
ToolTip,4
}
}
return
ってやってaを押しっぱなしにしてNumpadLeftを押すと4が表示されるのはいいんだが
Leftを押したときにも表示されちゃうんだよね。これって皆のところでもそうなのかな。
というか実は仕様だったりするのか?
(英語のフォーラムのバグレポートに下手な文章で書いては見たんだけど、
まずここで聞けばよかった・・・)
- 508 :名無しさん@お腹いっぱい。:2010/11/14(日) 14:13:19 ID:dGM1bnQ20
- Shift+DeleteをDeleteだけにするスクリプトと、
その逆のDeleteをShift+Deleteにするスクリプトを教えて・・・
- 509 :名無しさん@お腹いっぱい。:2010/11/14(日) 14:17:45 ID:V1AI1Nqz0
- >>1
- 510 :名無しさん@お腹いっぱい。:2010/11/14(日) 14:26:09 ID:RDc+Ku8b0
- <わからない9大理由>
1.読まない …参考書などを読まない。読む気などさらさらない。
2.調べない …過去スレ、ググるなど最低限の内容も自分で調べようとしない。
3.試さない …めんどくさいなどの理由で実行しない。する気もない。
4.覚えない …人から聞いて、楽して得た答えは身に付かないから、すぐに忘れる。
5.説明できない …何に困っているのか、第三者に正確に伝わる文章が書けない。
6.理解力が足りない …理解力以前の問題で理解しようとしない。
7.人を利用することしか頭にない …甘え根性でその場を乗り切ろうとする。
8.感謝しない …教えてもらって当たり前。事がすんだらさようなら。
9.逆切れする …自分の思うようにならないと逆切れする。
★教えて君五大要素★
1 読まない (文盲)
2 調べない (能なし)
3 試さない (発想力欠如のアホ)
4 理解力が足りない (馬鹿)
5 人を利用することしか頭にない (死ね)
- 511 :名無しさん@お腹いっぱい。:2010/11/14(日) 16:47:29 ID:rFeDZJnW0
- 読まないって読んでもないから文盲とは言わないよね
- 512 :名無しさん@お腹いっぱい。:2010/11/14(日) 18:03:18 ID:w6u4qqYX0
- マニュアル類は全体的な整合性で記述してある。
そんなんもの積み上げれば積み上げるだけ、どこから取り付いて良いかさえ分からないのが初心者。
全部読めてしまったら聞く必要もないし。 表現されていないことは聞く必要があるけど。
マニュアルでことが済むようになるのはある程度少し知るようになってからだね。
有り難いのは魅力的な表現力で適切な知識のあるところに誘ってくれる人。
- 513 :名無しさん@お腹いっぱい。:2010/11/14(日) 21:50:59 ID:JeEPmY310
- 普通なら、>>1の日本語解説のイントロダクションと使用例を読んでるはずで
キーの指定法の確認として、マニュアルのホットキーの項目を見て目的達成
3〜4ページ読むだけなんだから、通常の人間ならここで質問するまでもないな
- 514 :名無しさん@お腹いっぱい。:2010/11/14(日) 22:03:39 ID:I0qf8Li00
- どっから手をつけたらいいのかわからないからとっかかりを教えて
つーならまあいいんだけど
イントロダクションにすら辿り着けない初心者の人も多そうだし
だが理解する気ゼロのスクリプトクレクレはスルーでいいだろ
この手合いは誘導したって読みゃしないよ
- 515 :名無しさん@お腹いっぱい。:2010/11/14(日) 23:22:27 ID:YdfLj1Lf0
- イントロのページなんだけど、ほぼ流行らせるページのままなんでかなり不親切なんだよな。
本家の現在のチュートリアル( ttp://www.autohotkey.com/docs/Tutorial.htm ) のほうが全然マシなんで、
いつか訳して差し替えてやろうと思ってるけど、「暇な時でいいや」って感じで怠ってる。
そのまま訳すのもどうかとは思ってるんだけど、日本のサイトでのこういう解説って
インストーラのどのボタンを押すとかを手取り足取りスクリーンショット付きで解説してるけど、
あそこまでやるのもどうかと。
多分ほとんど直訳で済ましちゃうんだろうけど。
- 516 :名無しさん@お腹いっぱい。:2010/11/15(月) 00:11:49 ID:Ncq3tjiq0
- 解説サイトをはじめから読む気がない人とか
今の解説サイトは不親切だとか、難しくて理解できないとか言う人は
いくら最初に背中を押してやっても、その後まともに使いこなせるようになるとは思えない
- 517 :名無しさん@お腹いっぱい。:2010/11/16(火) 07:14:27 ID:OycmIebG0
- イントロダクションのページより英語のままでも本家のチュートリアル読んだほうが
まずは何をやったらいいのかがわかると思う。
- 518 :名無しさん@お腹いっぱい。:2010/11/16(火) 17:07:07 ID:MqY3zrOv0
- 初めてスクリプト書く人には取っ掛かりにくいとは思うから…
1)インストール
2).ahkを新規作成して下3行記入して保存
Space::
MsgBox, Hello
Return
3)実行してスペース押す
この次にイントロダクション、使用例、使用方法を読むって流れがいいと思う
- 519 :名無しさん@お腹いっぱい。:2010/11/16(火) 17:25:47 ID:MlhI4BWN0
- 流行らせるページが消えたのは残念なことだ
管理人氏も消すこたあないのになあ
- 520 :名無しさん@お腹いっぱい。:2010/11/16(火) 17:36:23 ID:IoAFb8q00
- nilのほうに人が来ないからね。しょうがないでしょ。
- 521 :名無しさん@お腹いっぱい。:2010/11/16(火) 18:03:54 ID:GzcWjA+B0
- 消したところで、はたしてnilを盛り上げるだけの効果はあったのかな?
なんか、全然話題になってないけど。
- 522 :名無しさん@お腹いっぱい。:2010/11/16(火) 18:22:06 ID:+Bdiu3hH0
- nilはあのライセンスじゃ使う気もおこらない
- 523 :名無しさん@お腹いっぱい。:2010/11/16(火) 18:32:49 ID:X5qMVW8I0
- 別に盛り上がる必要はなく、バグ報告してくれる報告者だけ確保できればいいってスタンスらしい
AHKページあるとそういう人すら呼び込めなくなる可能性があるので消すってな趣旨のことを書いてた
- 524 :名無しさん@お腹いっぱい。:2010/11/16(火) 20:47:17 ID:9oiSGtsYP
- ウザい要望厨が湧くくらいには周知されたみたいだよ。
跡地のHTMLを書いてFTPで更新しただけにしては上出来だね。
- 525 :名無しさん@お腹いっぱい。:2010/11/16(火) 21:24:09 ID:xc789aCZ0
- >>522
今見てきたけど、何あのギャグみたいなの
マジであのライセンスなのか
- 526 :名無しさん@お腹いっぱい。:2010/11/16(火) 22:12:22 ID:WUCY9iMX0
- Nilのライセンスってどういう文面なん?
- 527 :名無しさん@お腹いっぱい。:2010/11/16(火) 23:05:27 ID:9oiSGtsYP
- AHKを流行らせる協会のようなジョークじゃないの
- 528 :名無しさん@お腹いっぱい。:2010/11/16(火) 23:08:28 ID:ZG6Jqg0+0
- スレ・板違いも程々にな
- 529 :名無しさん@お腹いっぱい。:2010/11/17(水) 19:12:35 ID:gEJMTsRQ0
- PCスタンバイからの復帰後に自動でスクリプト再起動(reload)するにはどうすればいいでしょうか
- 530 :名無しさん@お腹いっぱい。:2010/11/17(水) 19:20:58 ID:fC7J6xdH0
- はやらせるスクリプトで、電源環境の変化を検出するやつがあるから、
それで復帰を検出して、reloadすればいいんじゃね?
余談だが、俺はこれをつかってノーパソでスタンバイ復帰後、
俺しか知らない特定の操作をしてるかどうかのフラグを設けている。
その条件が満たされない場合、第三者が勝手に触ってるとみなして、
強制シャットダウンさせるようにしている。(再起動後はドライブがロックされる)
- 531 :名無しさん@お腹いっぱい。:2010/11/17(水) 20:11:41 ID:CIQIIh4tP
- WM_POWERBROADCAST
- 532 :名無しさん@お腹いっぱい。:2010/11/17(水) 20:18:11 ID:D4sxjFsA0
- http://pc11.2ch.net/test/read.cgi/software/1219130051/971
過去ログはAutoHotkeyJpで手に入る
- 533 :529:2010/11/17(水) 20:37:55 ID:gEJMTsRQ0
- 過去ログの電源メッセージ掴む方法で再起動できました
みなさんありがとうございました
- 534 :名無しさん@お腹いっぱい。:2010/11/18(木) 22:25:53 ID:cqLZPQMy0
- 解像度を変更するにはどうすればいいのでしょうか
- 535 :名無しさん@お腹いっぱい。:2010/11/18(木) 22:33:27 ID:0GDKj7/k0
- その質問を書く前に、何を試したの?
- 536 :名無しさん@お腹いっぱい。:2010/11/18(木) 22:53:36 ID:cqLZPQMy0
- AutoHotkeyJp で検索かけたところ
取得する方法は書いてありましたが
どの関数で変更すればいいかは見つけることができませんでしたが・・・
- 537 :名無しさん@お腹いっぱい。:2010/11/18(木) 22:57:06 ID:cqLZPQMy0
- Remarkの欄にありましたー
お騒がせしました^^
- 538 :名無しさん@お腹いっぱい。:2010/11/20(土) 19:25:20 ID:j8B7xYBE0
- 何か挙動が変なときがある。
FireFoxの XUL/migemo みたいな検索がしたくて、アルファベット押したら検索ボックスにキー入力させるやつ。
(KeyWait しているのは意図的にキーちょっと長めに押した時のみ反応させるため)
#If (Janeのスレビューにフォーカスがある) && (キャレットが表示されていない)
a::
b::
(中略)
z::
KeyWait, %A_ThisHotkey%, T0.2
If (ErrorLevel) {
IME_Set(0)
BlockInput, On
Send, ^f
Send, %A_ThisHotkey%
KeyWait, %A_ThisHotkey%
BlockInput, Off
}
Return
で、普通なら押したアルファベットが入力されるだけなんだけど、
たまに %A_ThisHotkey% の中身がおかしいのか、
「?hk_id XXXXXXX」
と出力される時がある。? は押下中のキー、XXXXXは数値。
検索文字を消して再入力すればいいだけなんで、あまり実害はないんだけど気持ちが悪い。
環境は XP Pro SP3, Lw61 32bit
- 539 :名無しさん@お腹いっぱい。:2010/11/20(土) 19:45:01 ID:ETr0zHeM0
- 漏れ本家AHK使っててAHKLの機能は何も必要ないけど
もう更新されないしセキュリティ的にそろそろAHKLに移行する頃?
- 540 :名無しさん@お腹いっぱい。:2010/11/20(土) 19:47:50 ID:WaDCz3vl0
- 逆に本家使い続けるメリットって何かなって思ってみたり
- 541 :名無しさん@お腹いっぱい。:2010/11/20(土) 20:57:59 ID:PS6yr00q0
- メリットってのとは違うけど
歌詞サイトから取得した歌詞をDAPで見栄え良く表示させるために
文字列を整形するスクリプト書いたときのことだけど、
L版だとStrLen()でバイト数じゃなく文字数返されるので困ったことがあった。
んで、オレの知識じゃわからんので結局本家で作ったってのがあったな
- 542 :名無しさん@お腹いっぱい。:2010/11/20(土) 22:53:42 ID:j8B7xYBE0
- ANSI(シフトJIS)でのバイト長を得るだけなら、以下のようにすれば出来るよ。
str = あいうえお
MsgBox, % length := StrPut(str, "CP932") - 1
最後の -1 は終端のヌル文字(0x00)の分
- 543 :541:2010/11/20(土) 23:30:11 ID:xeNOkRtD0
- >>542
ありがとう。
今度似たようなスクリプト書くときそれでやってみます。
- 544 :名無しさん@お腹いっぱい。:2010/11/23(火) 22:00:49 ID:IXfByVvb0
- 英語版キーボードでShiftなど + CapsLock をCapsLock押下に割り当てたいのですが
漢字ひらがななどの変換になってしまいうまくいきません。
うまくいった人はいますか?
(CapsLockはESCにしました)
日本語入力での直接入力とひらがなの切り替えは
F1::Send !{sc029}
でやっています
- 545 :544:2010/11/23(火) 22:54:37 ID:IXfByVvb0
- 入力言語が日本語の時も英語のときも挙動がおかしいんです
- 546 :名無しさん@お腹いっぱい。:2010/11/23(火) 22:59:06 ID:PzNDc9ba0
- >>544
>4
- 547 :544:2010/11/23(火) 23:02:15 ID:IXfByVvb0
- #CapsLock::CapsLock
で出来ました。日本語英語とも動きます。ありがとうございました。
Winキーは便利ですね。ロック系の組み合わせは
Winキーとだと安定するんでしょうか。
- 548 :544:2010/11/23(火) 23:10:44 ID:IXfByVvb0
- そういえば
+Capslock::Capslock
は英語入力だとちゃんと動きました誤解があるといけないので
- 549 :名無しさん@お腹いっぱい。:2010/11/24(水) 05:44:17 ID:EXKrqrVJ0
- _人人人人人人人人人人人人人人人_
> すごくどうでもいい <
 ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^^Y^ ̄
ヘ(^o^)ヘ
|∧
/
- 550 :名無しさん@お腹いっぱい。:2010/11/24(水) 10:15:12 ID:clQYYJ2Y0
- Lock系キーの動作は環境(キーボードやBIOS等)で変動するので他の人の参考にはならない
報告したいならPCやマザボの機種とか細かく環境書かないとほぼ無意味
- 551 :名無しさん@お腹いっぱい。:2010/11/24(水) 12:09:05 ID:3GvsOHmq0
- NumLock状態をデバイス側で管理(?)するトリッキーなのもあったりするしな
あと、OSのロケールとドライバの種類も大事だな
- 552 :名無しさん@お腹いっぱい。:2010/11/24(水) 12:23:04 ID:qFybzQSQ0
- imeの処理を質問します。 変換中の文字列を取得しようと思い、
過去ログで出ていたahk.imeを改変して関数を作りましたが、 うまく動きません。
dllcallを使うために↓のページを利用しました。
http://msdn.microsoft.com/ja-jp/library/cc447983.aspx
http://msdn.microsoft.com/en-us/library/ms905973.aspx
どこを修正すればよいのでしょうか。
IME_ConposStr_GET(WinTitle="A") {
VarSetCapacity(stGTI, 48, 0)
NumPut(48, stGTI, 0, "UInt") ; DWORD cbSize;
hwndFocus := DllCall("GetGUIThreadInfo", Uint,0, Uint,&stGTI)
? NumGet(stGTI,12,"UInt") : WinExist(WinTitle)
VarSetCapacity(st2GTI, 4000, 0)
NumPut(4000, st2GTI, 0, "UInt") ; DWORD cbSize;
DllCall("SendMessage"
, UInt, DllCall("imm32\ImmGetCompositionString"
, Uint,hwndFocus
, Uint,"GCS_COMPSTR"
, Uint,&st2GTI
, Uint, 4000)
, UInt, 0x0283 ;Message : WM_IME_CONTROL
, Int, 0x0005 ;wParam : IMC_GETOPENSTATUS
, Int, 0) ;lParam : 0
return stGTI
}
- 553 :名無しさん@お腹いっぱい。:2010/11/24(水) 12:50:01 ID:3GvsOHmq0
- 結論から言うと無理。
IMEを使ってるプロセス以外からは入力コンテキストのハンドル(hIIMC)が取れていない。
というか色々間違ってる。動くわけがない。
・SendMessage の投げ先の HWND がおかしい、
というかImmGetCompositionString の戻り値はバッファ長で HWND ではない。
・ImmGetCompositionString の第1引数は hIMC
・UINT型なのに文字列渡して意味ない ( GCS_COMPSTR := 0x8 )
- 554 :名無しさん@お腹いっぱい。:2010/11/24(水) 15:46:41 ID:qFybzQSQ0
- そうですか、そもそも無理でしたか。。。
スレ汚し失礼しました。
- 555 :名無しさん@お腹いっぱい。:2010/11/25(木) 02:26:07 ID:rn8lHsHU0
- 時間ごとにクリックさせていく自動化をしたいんですが、
初心者にはAHKかUWSCどっちがオススメですか?
AHKのほうが、軽い気がするし、拡張性あるのでよさそうに見えるのですが
英語できない人間にはコードを知ったりするのが難しそう。
おしえてください。
- 556 :名無しさん@お腹いっぱい。:2010/11/25(木) 03:37:46 ID:B3EUHNYZ0
- 時間ごとにフリスク食べさせていく自動化をしたいんですが、
初心者にはWindowsかMacどっちがオススメですか?
Linuxのほうが、軽い気がするし、拡張性あるのでよさそうに見えるのですが
程度低い人間には教えたところで使ったりするのが難しそう。
おしえてください。
- 557 :名無しさん@お腹いっぱい。:2010/11/25(木) 07:36:13 ID:y2EVuGP90
- その程度なら、重い/軽いってのを気にする程のもんじゃないな。
習うより慣れろで、拡張性云々よりも自分の手に馴染むかどうかだよ。
どっちもネットで落としたらすぐ使えるんだし、とにかく試して決めればいいだけかと。
- 558 :名無しさん@お腹いっぱい。:2010/11/25(木) 13:45:03 ID:b/Fe70Ol0
- UWSCだと、動作記録→スクリプト保存→改変がすごくスムーズ
一からスクリプトを書くより、この流れのが初心者には楽
ヘルプが完全日本語
Loop処理の命令がいろいろあるが、初心者には1つだけの方がいいかもしれない
AHKはコマンドの引数に要求されるのが変数と文字列の両方あるので、混乱するかも
メッセージボックスはUWSCに比べてすごく書きやすい
ホットキーでの再生/一時停止/再開が格段に使いやすい
AHKのほうが軽い気がする
繰り返し何かさせるにはTimerがものすごく便利
- 559 :名無しさん@お腹いっぱい。:2010/11/25(木) 16:18:07 ID:upNaKri80
- 一行にに命令は無理ですか?
- 560 :名無しさん@お腹いっぱい。:2010/11/25(木) 16:25:16 ID:upNaKri80
- 二個の命令ということです
- 561 :名無しさん@お腹いっぱい。:2010/11/25(木) 16:27:34 ID:GS7QIIVh0
- それは、なんのために?
- 562 :名無しさん@お腹いっぱい。:2010/11/25(木) 16:35:03 ID:upNaKri80
- dvorak を全部autohotkey で実現することにしたので
大文字小文字の命令なでは一行にまとめたいのです
見やすそうなので
- 563 :名無しさん@お腹いっぱい。:2010/11/25(木) 16:37:35 ID:upNaKri80
- すいません
dvorakでひら仮名入力するのは久しぶりなので
誤字がひどいです
- 564 :名無しさん@お腹いっぱい。:2010/11/25(木) 16:39:11 ID:y2EVuGP90
- このスレの住人が作ってるAHK製の DvorakJ ってのがあるよ
- 565 :名無しさん@お腹いっぱい。:2010/11/25(木) 16:40:38 ID:upNaKri80
- Jじゃないdvorak を使う予定なのと
キーアサインを個人的にもう少しいじるので
- 566 :名無しさん@お腹いっぱい。:2010/11/25(木) 16:42:45 ID:upNaKri80
- dvorakJ を参考にして書けそうですありがとうございました
- 567 :名無しさん@お腹いっぱい。:2010/11/25(木) 21:51:43 ID:/ePGl0Rw0
- 超初心者の俺にはAutoMouseが最強
誰かwin7でも使えるようにしてくれw
- 568 :名無しさん@お腹いっぱい。:2010/11/26(金) 00:38:07 ID:QMspvyb80
- >>558
レスどもです。こうやってみると
UWSCのほうが初心者にはいいみたいですね。
AHKは一時停止とかもできるのか、いいなぁ
- 569 :名無しさん@お腹いっぱい。:2010/11/26(金) 10:33:39 ID:9n4Aw3tm0
- (ネタ) 個人的に気になった公式フォーラムのトピック
http://www.autohotkey.com/forum/topic61379.html
スクリプト生成ツール(主にホットキー)。SS:http://img25.imageshack.us/img25/9767/scwinc4yz0htdrt.png
http://www.autohotkey.com/forum/topic58183.html
簡易WinSockライブラリ(L用あり)
http://www.autohotkey.com/forum/topic63813.html
Aeroライブラリ(GUIのαブレンド表示etc)
http://www.autohotkey.com/forum/topic63844.html
正規表現テスター。SS: http://www.autohotkey.net/~DerRaphael/screenshots/simple_regex_tester-0-2-0.png
http://www.autohotkey.com/forum/topic32238.html
GDI+ライブラリ。GUIで図形描画画像加工。図形の画像ファイル化も可。
http://www.autohotkey.com/forum/topic63817.html
[AHKL] AHKLのFAQ集
http://www.autohotkey.com/forum/topic59581.html
[AHKL] 構造体を簡単に使えるように
http://www.autohotkey.com/forum/topic64303.html
[AHKL] クラス定義ファイルからコード自動生成。メソッド内はAHKの文法が使える。↓は例。
class Person
Name := "unknown"
construcor(uname){
this.Name := uname
}
endclass
http://www.autohotkey.com/forum/topic59336.html
MIDI制御しようぜ!
http://www.autohotkey.com/forum/topic61120.html
[AHKH] 3キー以上のコンビネーションキー
- 570 :名無しさん@お腹いっぱい。:2010/11/26(金) 22:55:52 ID:QMspvyb80
- http://www.autohotkey.com/forum/topic61120.html
[AHKH] 3キー以上のコンビネーションキー
これ、非常にやりたいです。だれかおしえてください。
英語読めない。ファイル落としてもAHK_Hみたいなファイルないし。
実行ファイルを入れ替えるだけでできるかとおもったんですが。
- 571 :名無しさん@お腹いっぱい。:2010/11/27(土) 00:29:26 ID:ob+MxG6x0
- >>510
- 572 :名無しさん@お腹いっぱい。:2010/11/27(土) 01:16:20 ID:W7SkcZM30
- 3キー以上ってストロークのが使いやすくね?
1&2&3&4より1&2-3-4のが。
それよりも1&2でMenu出して選ぶのが好みだけど
- 573 :名無しさん@お腹いっぱい。:2010/11/27(土) 01:17:32 ID:2w5sBfUa0
- 正規表現テスター使ってみようかな?どうしようかな?どきどき
- 574 :名無しさん@お腹いっぱい。:2010/11/27(土) 07:55:18 ID:3/D/v94v0
- >>567
AutoMouseは最強だが最弱でもある
- 575 :名無しさん@お腹いっぱい。:2010/11/27(土) 10:04:11 ID:pD5RvHK90
- かなり初心者の質問です
常時有効にしたいキー群Aと、SuspendコマンドでOn/Off切り替えしたいホットキー群Bを
2つのファイルに分けて常駐させているのですが
ひとつのファイルにホットキーをまとめるにはどう書くとスマートですか?
- 576 :名無しさん@お腹いっぱい。:2010/11/27(土) 10:09:45 ID:Uf+ZWNJH0
- Lの#if
- 577 :名無しさん@お腹いっぱい。:2010/11/27(土) 10:39:16 ID:pD5RvHK90
- >>576
まとめられました!
すばやい御回答に感謝です
- 578 :名無しさん@お腹いっぱい。:2010/11/27(土) 13:45:26 ID:W7SkcZM30
- main.ahkスクリプトで、
sub.ahkのサスペンドやポーズなどを制御するには、どうするのが確実ですか?
1つだけならsubにサスペンドのホットーキー書いておいてmainでSendすればいいのですが
複数同時にしようとすると上手く切り変わらなかったりshift押しっぱなどの症状がでます
あとexe化したスクリプトaaa.exeが常駐している状態で
aaa.exe -sをコマンドラインで実行した場合、
引数「-s」を取り扱う方法はありますか?
- 579 :名無しさん@お腹いっぱい。:2010/11/27(土) 14:09:15 ID:WBxcGV1Q0
- >>578
ホットキーの待ちうけがあるスクリプトを複数連携させると、いろいろ面倒なことになるから、
メインスクリプトでキーの待ちを全部書いておき、必要に応じてホットキー無しのサブを
起動させるほうが安定すると思う。
連携のコツは、ファイルのINIやレジストリなどで管理情報を書いておき、
どのプロセスがいつ読んでも今の状況を外部から把握できるようにする。
引数は %1% %2% とかで読める。
引数の数は %0%
- 580 :名無しさん@お腹いっぱい。:2010/11/27(土) 15:12:32 ID:zpDfRvWa0
- >>578
前者:
SendMessage と OnMessage 使うのが確実。>>503-504 あたりも参照
DetectHideenWindows,On と WinMenuSelectItem 使ってもいいがトグルしかできない。
(頑張れば出来なくもないけど、SendMessageのほうが遙かに楽)
後者:
#SingleInstance, Ignore を指定してやらんといけないんで結構面倒。
自分と同じパスのAHKのプロセス探して、無い場合は自分が常駐して、
ある場合はそいつに引数を通知するって処理を自分で実装する必要がある。
引数(文字列)の受け渡しは面倒かも。>>220-221 あたりを参照。
スイッチ・フラグみたいなのを通知するだけなら Send/PostMessageだけでいい。
- 581 :名無しさん@お腹いっぱい。:2010/11/27(土) 16:43:46 ID:W7SkcZM30
- >>579, 580 ありがとうございます
WinMenuSelectItemは盲点でした
トグルだけでいいので目的は達成できそうです
SendMessage…いい加減手を出そうかな
あと>>185 今さら自己解決。常識かもしれないけど。
IfGreater, 1, 0, MsgBox, True
とか
If 1 < 1
{
MsgBox, False
}
のコマンド型だとそのまま使えた
- 582 :名無しさん@お腹いっぱい。:2010/11/28(日) 00:39:06 ID:Qeh4ib5M0
- どの命令が実行されても
一緒に実行される命令ってかけますか?
他の命令に手を加えずに
- 583 :名無しさん@お腹いっぱい。:2010/11/28(日) 00:42:31 ID:Yagn/8sw0
- 言葉が足りなすぎ、やり直し
- 584 :名無しさん@お腹いっぱい。:2010/11/28(日) 00:50:21 ID:Qeh4ib5M0
- a::x
b::y
c::z
.
.
.
とあるときに
どっかに書きくわえる形で
a,b,c, が押されるたびにMsgBox 2
が実行されるようにすることは可能ですか?
- 585 :名無しさん@お腹いっぱい。:2010/11/28(日) 00:57:44 ID:dagFP8IG0
- できるけど、リマップのままじゃ無理。
- 586 :名無しさん@お腹いっぱい。:2010/11/28(日) 01:05:15 ID:Qeh4ib5M0
- a::Send x
ならどうでしょうか
- 587 :名無しさん@お腹いっぱい。:2010/11/28(日) 01:10:34 ID:dagFP8IG0
- 色々やり方はあるけど、共通関数噛ますとかすりゃいいだけ。
a::MySend("x")
b::MySend("y")
c::MySend("z")
MySend(key) {
; ここに共通前処理
Send, %key%
; ここに共通後処理
}
- 588 :名無しさん@お腹いっぱい。:2010/11/28(日) 01:17:24 ID:Qeh4ib5M0
- a::Send xはいじりたくないんですけど…
- 589 :名無しさん@お腹いっぱい。:2010/11/28(日) 01:27:59 ID:dagFP8IG0
- じゃあこれ。説明はめんどいからしない。
OnMessage(0x8000, "MsgListener")
#If Aspect()
a::x
b::y
c::z
#If
Aspect() {
DllCall("PostMessage", "Ptr", 0, "UInt", 0x8000, "UPtr", 0, "UPtr", Object(Object("key", A_ThisHotkey)))
Return True
}
MsgListener(wParam, lParam) {
obj := Object(lParam),keyName:=obj.key,ObjRelease(obj),obj:=""
Tooltip, % keyName
}
- 590 :名無しさん@お腹いっぱい。:2010/11/28(日) 12:45:04 ID:zhsZ/e2N0
- 説明は欲しいんですけど…
- 591 :582:2010/11/28(日) 13:19:30 ID:Qeh4ib5M0
- 僕は説明要りません。DllCallは昔だいぶ使ったので大体わかります。
- 592 :名無しさん@お腹いっぱい。:2010/11/28(日) 13:36:07 ID:TB9SoGj60
- 大体なのかよ
- 593 :582:2010/11/28(日) 13:45:53 ID:Qeh4ib5M0
- それは各命令を調べれば完全にわかるだろう、ということです
>>589様、ともかくありがとうございました
- 594 :名無しさん@お腹いっぱい。:2010/11/28(日) 14:17:36 ID:dagFP8IG0
- ま、一応。
Postしてるのは #If の処理時間を短くかつ非同期にするため。
hwnd=0x0 の窓に投げると自スレッドのキューにメッセージ溜められるんだけど、
コマンドのPostMessageだと窓が見つからなくて動作しないから DllCall にしてる。
lParamでキー名を格納したオブジェクトのポインタを渡して、後で復元。参照回数は適宜操作。
- 595 :名無しさん@お腹いっぱい。:2010/11/28(日) 16:21:50 ID:TB9SoGj60
- 1.0.90.00 - November 27, 2010
Fixed: UrlDownloadToFile in Unicode builds on Windows < 7.
Fixed: Upper-ANSI characters were sent as Alt+0 in ANSI build.
Fixed: File.Pos was incorrect after attempting to read past EOF.
Fixed: Escape sequences in #If expressions and static initializers.
Fixed: ClipboardAll sometimes crashed the script with certain formats.
Fixed: Transform HTML calculated length incorrectly for NNN; entities.
Fixed: VarSetCapacity now correctly ignores #MaxMem for ByRef variables.
Fixed: FileAppend,,file.txt set ErrorLevel=1 even on success.
Fixed: Match length was miscalculated for RegEx callouts with the P) option.
Integrated Sean's improvements to number handling in COM interop.
Optimized RegExReplace and RegExMatch in Unicode builds.
- 596 :名無しさん@お腹いっぱい。:2010/11/28(日) 17:29:38 ID:cklndLbS0
- 本家が久々の更新か、と思ったらL
- 597 :名無しさん@お腹いっぱい。:2010/11/28(日) 19:48:54 ID:dagFP8IG0
- ロードマップがでてるな。
>>264,279 は v1.0 まで据え置きのようだ。
その他 v1.0 では
JSON をサポートするように
obj[key] .= "hoge" が利用できるように
etc.
v1.1では
SplitStr() : 割結果を配列オブジェクトで返す
RegExMatch() : 拡張してサブマッチをオブジェクトの配列で返すように
etc.
http://www.autohotkey.com/misc/AutoHotkey-v2.htm
v2.0 では
互換性を捨てて多くの改善を行う方針。
If の評価式は*必ず*括弧でくくるように
= 演算子は常に評価のみで、代入は := のみに
→ IfEqual, IfGreater, EnvSet, EnvAdd などは廃止、汎用の「式」を使え
その他少なくない数ののコマンドが廃止・非推奨となるので、関数版を使え
#ifWinActive, などは存続
なんだか AutoIt v3 に近くなる印象。
でも何だか中途半端な気もする。
- 598 :名無しさん@お腹いっぱい。:2010/11/29(月) 00:05:23 ID:w6mdWw0S0
- どなたかpythonからCOM経由でautohotkey.dllを操作なさっていませんか。
フォーラムを見るとCOMを経由せずに使っている人はいるみたいなのですが
COMの方を勉強として操作してみたいです
AutoHotKey.dll with python
http://www.autohotkey.com/forum/post-397787.html
COM経由で使っている方がいらっしゃったら、できれば簡単なguiを作成するソースを見せて下さいませんか。
お願いします。
- 599 :名無しさん@お腹いっぱい。:2010/11/29(月) 00:21:17 ID:qIqsfbVy0
- python 使いじゃないので JScriptで。
Dllのパスをカレントにしてから(もしくはフルパス指定で)COM登録しておく
> regsvr32.exe AutoHotkey.dll
[test.js]
var ahk = new ActiveXObject("AutoHotkey.Script");
ahk.AHKtextDll("Gui,Add,Text,,This is test script\nGui,Show,,Test\nExit\nGuiClose:\nExitApp");
while (ahk.ahkReady()) {WScript.Sleep(100);continue;}
- 600 :名無しさん@お腹いっぱい。:2010/11/29(月) 00:50:55 ID:iduOQBml0
- >>599
ありがとうございます。
ですが、うまく動きません
regsvr32.exe AutoHotkey.dllを実行し
(http://www.autohotkey.net/~tinku99/ahkdll/ のHotkeyIt提供Win32wのバイナリを使いました)
test.jsにvar ahk以下の3行を保存して
test.jsを実行したら、
エラー「文字が正しくありません。」
コード「800A03F6」
ソース「Microsoft JScript コンパイル エラー」と表示されました
test.jsからautohotkey.dllを呼び出すときの設定が違うということなのでしょうか
- 601 :名無しさん@お腹いっぱい。:2010/11/29(月) 00:58:59 ID:iduOQBml0
- 書き忘れてました。
test.jsをutf-8 BOM で保存してます。
utf-8 non BOM だと「オートメーションサーバーはオブジェクトを……」というエラーメッセージが表示されます
- 602 :名無しさん@お腹いっぱい。:2010/11/29(月) 01:26:20 ID:yDa054Vi0
- >If の評価式は*必ず*括弧でくくるように
この間全部括弧なしに書き直すか迷ってた
マジで書きなおさなくてよかった・・・
>= 演算子は常に評価のみで、代入は := のみに
これは良いね
使ってていつもすごい違和感があった
- 603 :名無しさん@お腹いっぱい。:2010/11/29(月) 01:37:32 ID:qIqsfbVy0
- wscript/cscript エンコードの自動判別は無い。デフォルトはANSIで、"/u"付けると UTF-16LEでもいける。
wsf形式にすればxml文書なんでBOM付きUTF-8でも平気。
というかもうスレ違いだな。
http://msdn.microsoft.com/ja-jp/library/cc364501.aspx
お前ら、wsh使ってますか? Part7
http://hibari.2ch.net/test/read.cgi/win/1190548945/
- 604 :名無しさん@お腹いっぱい。:2010/11/29(月) 01:51:51 ID:iduOQBml0
- >>603
やはりautohotkey.dllを呼び出す前の問題ですね
調べてみます
ありがとうございました
- 605 :名無しさん@お腹いっぱい。:2010/11/30(火) 02:26:28 ID:KflSdiS50
- v2では定数定義が欲しいなぁ。
プリプロセッサみたいな機構はあるんだし、出来なく無いだろうけど。
ロード時に文字列置換するだけでもいいんでどうにかならんかなぁ。
#Const WM_MOUSEMOVE 0x200
とか
#Alias Convert vk1Csc079
#Alias NonConvert vk1Dsc07B
- 606 :名無しさん@お腹いっぱい。:2010/11/30(火) 02:57:35 ID:3CxBAMPr0
- はやく v2 でないかなぁ。変態言語仕様が少なくなるのは多少残念ではあるけど。
- 607 :名無しさん@お腹いっぱい。:2010/11/30(火) 16:32:57 ID:iK+6tuOn0
- 今のペースだと3年ぐらい先じゃね?
- 608 :名無しさん@お腹いっぱい。:2010/12/01(水) 18:34:55 ID:NDFf6KsK0
- 現状でもやはり
^!F4::send,
みたいなモディファイアキーを二つ含んだ
ショートカットキーは無理なのでしょうか?
- 609 :名無しさん@お腹いっぱい。:2010/12/01(水) 18:58:42 ID:0fD5HQmh0
- 煽る気は全くないが、
その程度ならすまんが解説よむなり自分で試すなりしてくれ。
- 610 :名無しさん@お腹いっぱい。:2010/12/01(水) 19:21:32 ID:NDFf6KsK0
- すいません
- 611 :名無しさん@お腹いっぱい。:2010/12/01(水) 20:44:21 ID:SmAml2Jb0
- コマンドラインから検索ワードとして文字列を渡して検索結果をGUIのEditに文字列で表示するスクリプトつくっているのですが
既にスクリプトSearch.ahkが起動している場合、どうやって引数を渡せばいいんでしょうか?
- 612 :名無しさん@お腹いっぱい。:2010/12/01(水) 20:49:04 ID:0fD5HQmh0
- >>578,580と似てるけど、GUI持ってるなら #SingleInstance, Off にして
起動済みのGUI窓にControlSetText して自分は終了でいいんでないの。
場合によっては検索ボタンとかも押してやる。
- 613 :名無しさん@お腹いっぱい。:2010/12/01(水) 20:50:42 ID:wAyzbnAk0
- >>611
search.ahkの重複起動をOKにする
↓
search.ahk起動時、search.ahkがタスクリストにいるか、process,existなどで確認する
いたら、前から起動してるほうへ情報を転送し、自分は何も処理しないで終了する
いなければ、普通に処理実行
- 614 :名無しさん@お腹いっぱい。:2010/12/01(水) 20:54:45 ID:SmAml2Jb0
- >>611,613
なるほど!
起動時にIfWinExistでそのスクリプトのGUIが存在したらControlSetTextして終了させる方法でやってみます
ありがとうございました
- 615 :名無しさん@お腹いっぱい。:2010/12/02(木) 00:35:04 ID:Rh2fuBic0
- マウスカーソル(矢印ポインタ)を上下左右に動かすのって出来ますか?
文字カーソルはできるみたいなのですが、
矢印のポインタを簡単でも(飛び飛びでも)いいので
動かせられればと思っているのですができません。
ESC & I::MouseGetPos, imamousexpos, imamouseypos
MouseMove, %imamousexpos%, %imamouseypos% +30, 50
return
こんなんじゃやっぱだめですね
- 616 :名無しさん@お腹いっぱい。:2010/12/02(木) 00:53:14 ID:i/61lWiF0
- そのコマンドは引数に 式 が使えるから % は要らない
というか、式では %〜% は使わない
- 617 :名無しさん@お腹いっぱい。:2010/12/02(木) 01:09:14 ID:UAjdpY5y0
- ESC & I::
MouseGetPos, imamousexpos, imamouseypos
MouseMove, %imamousexpos%, % imamouseypos +30, 50
return
こうしたら動く
複数行の場合は「::」の後すぐ改行する
MouseMoveの引数には文字型が要求されてるので、「% 」で変数型にする
ちなみに第4引数にRを指定すれば色々いらなくなって1行で書ける
Esc & i::MouseMove, 0, 30, 50, R
- 618 :名無しさん@お腹いっぱい。:2010/12/02(木) 01:15:00 ID:UAjdpY5y0
- と思ったら式でもいけるのか
さすがahkって感じの仕様だなw
>>612
これは良ヒントになりました
見えないGUIコントロール作ってそれで引数を扱えば楽そうだ
- 619 :名無しさん@お腹いっぱい。:2010/12/02(木) 03:14:23 ID:Rh2fuBic0
- >>616
レスありがとうです。いまだに%の意味わからなかったりしますが
>>617
レスありがとうです。
ちゃんと動きました。そしてちゃんとマニュアルのmousemoveのところに
第4引数ちゃんと書いてありますね。。。見落としてました。
結局まだ"% imamouseypos +30"の意味わからないけど、どうして片方サイドは%いらないのか
- 620 :名無しさん@お腹いっぱい。:2010/12/02(木) 03:21:37 ID:i/61lWiF0
- https://sites.google.com/site/autohotkeyjp/reference/Expression
- 621 :名無しさん@お腹いっぱい。:2010/12/03(金) 02:30:14 ID:lMBihXac0
- a=5
b=20
c=a*b
の3つの変数があったとして(cは文字列)
cの見た目通りの数式を変数zに代入することはできますか?
z:=a*b の代入を何らかの方法で実現して、
MsgBox, %z%
で100とさせたい
四則演算、括弧、乗数の数式に対応したいです
- 622 :名無しさん@お腹いっぱい。:2010/12/03(金) 02:36:01 ID:lMBihXac0
- やりたいこと書いた方がいいかな。
簡易のテキスト形式の電卓を作ろうと思ってます
メモ帳とかで下の用に書いてあったとき
cの値をMsgBoxに表示するようなもの
a=5
b=20
c=a*b
- 623 :名無しさん@お腹いっぱい。:2010/12/03(金) 02:44:22 ID:HuepG7kf0
- Eval のある言語使っちまえばいい
a=5
b=20
c=a*b
sc := ComObjCreate("ScriptControl")
sc.Language := "JScript"
script = var a = %a%;var b = %b%;
sc.ExecuteStatement("var a=" . a . ",b=" . b)
MsgBox, % sc.Eval(c)
- 624 :名無しさん@お腹いっぱい。:2010/12/03(金) 02:55:37 ID:lMBihXac0
- >>623
なんぞwww
全く分からんけど、どう見ても危険ではないのでとりあえず実行した
これがオブジェクトの力か…ありがとう
- 625 :名無しさん@お腹いっぱい。:2010/12/03(金) 08:59:54 ID:5Gc2iTLq0
- AHK書いてる人はエディターって何使ってる?
最近入力ミス多いから強調表示や自動補完使いたくなってきた
あとラベル/関数の折りたたみとか・・
- 626 :名無しさん@お腹いっぱい。:2010/12/03(金) 10:36:02 ID:XpcRAbsy0
- SciTE4AutoHotkeyを使いなさい
- 627 :名無しさん@お腹いっぱい。:2010/12/03(金) 15:03:38 ID:5OU/dmDK0
- Vimでautohotkeyのsyntax使うとか
- 628 :名無しさん@お腹いっぱい。:2010/12/03(金) 16:34:27 ID:dp0e8QIV0
- Extrasフォルダの中身を
秀丸とかemeditorとかの強調表示や入力補完に
自動で変換してくれるスクリプトが過去スレにあったはず
- 629 :名無しさん@お腹いっぱい。:2010/12/05(日) 05:57:42 ID:apuWTJGbP
- 現在カーソルが合っているファイル名を取得して
Everythingという検索ソフトに渡すスクリプトを書きたいのですが
いきなり詰まってしまったので質問させて下さい
カーソル位置のファイル名を取得するにはどのようにしたらよいでしょうか?
- 630 :名無しさん@お腹いっぱい。:2010/12/05(日) 07:51:29 ID:xmV0cvJD0
- カーソルって何?
何にせよ、とりあえずコピーしてクリップボードを使うのをまず考える。
具体的でないので話はここまでしかできん。
- 631 :名無しさん@お腹いっぱい。:2010/12/05(日) 11:59:04 ID:vNjl5PbN0
- >>625
xyzzyに↓のAutohotkey-modeを入れて
http://www1.bbiq.jp/rohinomiya/products/index2.html#xyzzy
自分の使いやすいように改造(LispよくわからんのでWiki等を参考になんちゃって改造)と
キーワード追加して使ってる。
それと↓を参考にカーソルがある単語のヘルプページ(autohotkey.chm)を開くようにしたりとか。
http://www7a.biglobe.ne.jp/~hat/xyzzy/reference.html
ちなみにF1で>>1の Autohotkey日本語ヘルプ(chmファイル)、
Ctrl+F1 で Autohotkey付属のヘルプ(英語) が開くようにしてる。
- 632 :629:2010/12/06(月) 06:44:42 ID:hnUEFu2IP
- >>630
わかりにくくてすみません
マウスカーソルがあっている
あるいはエクスプローラ上でフォーカスが当たってるファイルという意味で書きました
上記と関係なくもうひとつ別な質問なのですが
zip版とインストーラ版のAutoHotkey_Lって動作が違うのでしょうか?
クリップボード文字列をRegExReplaceで置き換えるスクリプトを書いたのですが
zip版では思ったとおりの挙動になるのですが
インストーラ版だとクリップボードが複数行の場合におかしな挙動になります
- 633 :名無しさん@お腹いっぱい。:2010/12/06(月) 12:12:49 ID:fZb/YarP0
- マイナーバグのアップデートならアナウンスすらしないでZIP版を差し替えることはよくある。
ってかね。アンタ毎回情報少なすぎ。
必要な情報を書かなきゃ意味ないよ
・不具合があると思われる双方のバージョンやファイルサイズ、
・不具合のあるスクリプト(の一部)
とかが何も書いてないじゃん。再現出来なきゃ何の意味もないわけ。
- 634 :名無しさん@お腹いっぱい。:2010/12/06(月) 19:31:56 ID:EymQ4/t20
- >>625にちょっと関連してるのですが
エディタの入力補完などの動作を
ahkのスクリプトを書く用に、ahkで実現してる人っていますか?
できたら晒して欲しいのですが。
- 635 :名無しさん@お腹いっぱい。:2010/12/06(月) 19:43:20 ID:EymQ4/t20
- あ、あともう1件お願いします
ahkの変数名に使えない文字は
!"#$%&'()=^~|\/.,<>?[]{}`:;+-*
だけだと思うのですが、これで合ってますか?
でこれを除外しようと下の様に正規表現を記述した場合にエラーになるのですが
どのように記述すれば除外できるでしょうか
MsgBox,% RegExMatch( "dummy", "^[^!""#\$%&'\(\)=^~|\\/\.,<>?[\]\{\}`:;\+-*]*$" )
- 636 :名無しさん@お腹いっぱい。:2010/12/06(月) 19:55:25 ID:4Oq7NvUg0
- Intelisense (Auto-Complete)
http://www.autohotkey.com/forum/topic65804.html
変数に @ と $ は使える。制御記号(0x01〜0x1f, 0x7f)やANSI以外の文字は使えない。
正規表現はもっと勉強しろ。デバッグを人任せにするなよ。
てか、使える文字の補集合でやった方がいいよ。
- 637 :名無しさん@お腹いっぱい。:2010/12/06(月) 19:58:48 ID:4Oq7NvUg0
- ちなみに俺はEmEditorで、登録したキーワードと単語( [a-z_]+ )が候補に挙がるようにしてる。
パラメタを忘れがちな SplitPath などはスニペットを利用。
- 638 :名無しさん@お腹いっぱい。:2010/12/07(火) 10:39:12 ID:zvvcqx8v0
- Windowsキーと組み合わせて動く動作(Win + Tabや、Win + f、Win + bなど)を発行したいのですが、うまくいきません。
これは不可能なことなのでしょうか?
;;右Winキーに#{tab}や#b
>#h::
>#l::
Send,#{tab}
Return
RWin & vkE2::Send,#b
- 639 :名無しさん@お腹いっぱい。:2010/12/08(水) 01:38:47 ID:SmSQysPC0
- ウチでは無問題
- 640 :名無しさん@お腹いっぱい。:2010/12/08(水) 12:09:22 ID:VcOlgpGs0
- capslockのオン・オフを一つのキーで切り替えることはできるのでしょうか?
send,+{capslock}と書くと、capslockが有効なままになってしまい、オフにできません。
日本語配列のキーボードを使っています。
方法があればご教示ください。
- 641 :名無しさん@お腹いっぱい。:2010/12/08(水) 12:56:07 ID:SmSQysPC0
- GetKeyState("CapsLock", "T")
SetCapsLockState
- 642 :名無しさん@お腹いっぱい。:2010/12/08(水) 18:35:25 ID:Rl2PxqqE0
- >>641
ありがとうございます!
- 643 :名無しさん@お腹いっぱい。:2010/12/10(金) 07:06:35 ID:wMKLk7qO0
- >>10って、#InstallKeybdHook 入れりゃすむんじゃね?
少なくともうちの環境だと今のところ問題ないみたい
(WindowsXP、SetPointあり、その他の>>10のツールは入っていない)
- 644 :名無しさん@お腹いっぱい。:2010/12/10(金) 13:24:36 ID:xUq+0fTHP
- >>643
もう2年以上この問題で戦ってるが、それ入れても出てるよ。
最近気づいたことは、XPだと頻繁に出るが、
Win7-64bitで32bit版AHKだと、ほとんど出ない気がする
- 645 :名無しさん@お腹いっぱい。:2010/12/10(金) 18:09:40 ID:0KP6m/KB0
- キー発行するツールをAHKに一本化したら全く発生しなくなった。
- 646 :名無しさん@お腹いっぱい。:2010/12/11(土) 04:39:28 ID:PnojymHCP
- 過去ログになんかあった気がしたけど見つけた
AutoHotkey スレッド part9
http://pc12.2ch.net/test/read.cgi/software/1253888736/477
477 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2009/11/29(日) 04:49:46 ID:JxrO7rna0
使い始めたばかりでテンプレにある症状と同じかはわかりませんが
Ctrlキーが押しっぱなしになる原因が自分の場合ですがわかりました
~RCtrl:: a ;文字は特に何でも良い
~Ctrl:: a
上のどちらかををキーマップをしてるときに
外部のアプリケーションからCtrlキーが送られるとCtrlキーが押しっぱなしになるみたいです
自分の場合では、マウ筋からウィドウを閉じるCtrl+Wキーを送ったり
CLCLからCtrl+Vでの貼り付けを行うと必ず再現します
RCtrlキーを押すと直ります
- 647 :643:2010/12/11(土) 06:18:39 ID:jpHQD/GQ0
- >>644
そうなんだ…それは残念。XPと比べると、Vistaや7は負荷処理とかシステムまわりがしっかりしてるってわかるよね。
>>645
できればそれが理想なんだけど…。
>>646
それが>>10に反映されているのではないかと。
実は>>10より先にAHKの本家のフォーラムで下のスレを見つけて、
ttp://www.autohotkey.com/forum/topic202.html
#HotkeyModifierTimeout の説明を見てきたのだけど(見てきたのは英語版)、
http://sites.google.com/site/autohotkeyjp/reference/commands/-HotkeyModifierTimeout
実はキーボードフック使えばいいってことがわかって、
http://sites.google.com/site/autohotkeyjp/reference/commands/-InstallKeybdHook
#InstallKeybdHook を試したらすっぱり収まったので、>>10にも書いてないから報告しに来た次第。>>643
上の本家AHKのフォーラムには他の解決策も書いてあるので、参考にしてみてくだちい。
- 648 :名無しさん@お腹いっぱい。:2010/12/13(月) 01:56:49 ID:Es4TJgvU0
- つまり、AHKが原因の場合はフック使えばOKってことか。
ただ、全部が全部AHKのせいって訳でもないでしょ。
こんなもんかなぁ。なんだか解説ページ丸写しのような感じになってしまった。
誰か修正してくれ。
Q:[Ctrl][Shift][Alt]が押されっぱなしになる時がある。これってAHKのせい?
A: AHKが原因の場合とそうでないときがある
○AHKが原因の場合
AHKには、以下のような修飾キー付きのホットキーで修飾キー無しでキーを発効する場合、
一時的に修飾キー押下を解除して、発効後に押下状態を再度設定する機構がある。
しかしこのように発効するキーストロークが多い場合は、Sendコマンドが完了する前に
物理キーが押下解除されてしまっている場合がある。この齟齬が押しっぱなしの原因となる。
例) ^W::Send, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
これを回避するためには、以下の方法をとればよい:
・キー押下状態を常に監視するキーボードフックを導入する(#InstallKeybdHook)
・キー発効のコマンドを SendInput, SendPlay にする(SendModeで一括指定でもよい)
・上記二つが出来ない場合は、SetKeyDelay, 0 等としてキー発効をなるべく早く行うか、
#HotkeyModifierTimeout で修飾キー押下のタイムアウト値を長めに設定をする。
なお、他のキー発効を行うツール(クリップボードユーティリティやマウスジェスチャツールなど)が、
発効する修飾キーが原因となる場合もあるが、フックの導入でほぼ解決出来ると思われる。
○AHK以外が原因の場合:
環境により異なるので何とも言えないが、以下のような環境の場合発生する事が報告されている。
・ Logicool(Logitec)のマウスユーティリティSetPoint(verによっては問題ない事もあるとか)
・VirtualPC, WMWare, 窓使いの憂鬱 等のキーボードフィルタドライバを用いるアプリケーションを使っている
- 649 :名無しさん@お腹いっぱい。:2010/12/13(月) 02:52:51 ID:ZbF5xdwX0
- 例) ^W::Send, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
これしばらく試してみたけど、全然押しっぱにならない
- 650 :名無しさん@お腹いっぱい。:2010/12/13(月) 03:01:21 ID:/fTKrGtDP
- ttp://sites.google.com/site/autohotkeyjp/reference/commands/Send
なんのためのリファレンスか
- 651 :名無しさん@お腹いっぱい。:2010/12/13(月) 11:38:58 ID:7SYbC0/l0
- いつのまに流行らせるページに代わるリファレンスがっ!
- 652 :名無しさん@お腹いっぱい。:2010/12/13(月) 20:29:46 ID:8AC0xyIUP
- >>651
>>1
- 653 :名無しさん@お腹いっぱい。:2010/12/14(火) 00:41:01 ID:LF4MqoFR0
- 誘導してもらってきました。
ふつうお絵かきソフトって↓こういうのがあるんだけど
http://up3.viploader.net/ippan/src/vlippan174622.jpg
今使ってるソフトはそういうのがなくて
ショートカットキーで操作するようになっているんです。
こういうのはAUTOHOTKEYで作りたいので誘導してもらったんですが
何をどうすればいいですか?
とりあえずSmartGUI Creatorをインストールして
好きなボタンやテキストを張り付けれる所までは分かったのですが
この先はなにをすればいいですか???
- 654 :名無しさん@お腹いっぱい。:2010/12/14(火) 00:48:32 ID:mE3nMEcW0
- ツールが吐きだしたスクリプトを編集して、ボタン工藤時のイベントを記述する。
具体的には Gui,Add の G オプションで呼ばれるサブルーチンを変更して、
キーを送るようにする。
GUIツールで処理内容を自動で作ってくれるようなツールは無く、
テキストエディタでスクリプトを編集することになる。
- 655 :名無しさん@お腹いっぱい。:2010/12/14(火) 01:20:57 ID:LF4MqoFR0
- ありがとうございます。
たとえばノートパッドをお絵かきソフトだと仮定して
ノートパッドが起動中、作ったウィンドウが
ノートパッドの上にあって
消しゴムのボタンをクリックするとeキーを押したのと同じに
したいんですが
「ノートパッドが起動中、作ったウィンドウが
ノートパッドの上にあって」っていうのはどういうスクリプトになりますか?
以下を作ってみたんですがノートパッドにeキーが入力されませんでしたOTL
Run,C:\Windows\System32\notepad.exe
#IfWinActive ahk_class Notepad
Gui, Add, Button,gEkey x2 y1 w30 h30 +Center, 消しゴム
Gui, Add, Button,gZkey x32 y1 w30 h30 , 元に戻す
Gui, Add, Button,gSkey x2 y31 w30 h30 , 筆大
Gui, Add, Button,gDkey x32 y31 w30 h30 , 筆小
; Generated using SmartGUI Creator 4.0
Gui, Show, x127 y87 h65 w113, New GUI Window
return
Ekey:
send, e
return
#IfWinActive
- 656 :名無しさん@お腹いっぱい。:2010/12/14(火) 01:43:55 ID:mE3nMEcW0
- 意図がよく分からんな。
> 具体的には Gui,Add の G オプションで呼ばれるサブルーチンを変更して、
をきちんと理解汁。
適当なサンプル作ったんで、リファレンスと格闘してくれ。寝る。
※ 全角空白はタブに置換すること
Run, NotePad.exe,,,pid
GroupAdd, NotePad, ahk_pid %pid%
Gui, +ToolWindow +AlwaysOnTop
Gui, Add, Button, gButton1, 消しゴム
Gui, Add, Picture, gButton2, %A_WinDir%\System32\main.cpl
Gui, Show,, ツールバー
WinWait, ahk_group NotePad
WinWaitClose
ExitApp
Button1:
WinActivate, ahk_group NotePad
Send, Button1 Action
Return
Button2:
WinActivate, ahk_group NotePad
Send, Button2 Action
Return
GuiClose:
ExitApp
- 657 :名無しさん@お腹いっぱい。:2010/12/14(火) 02:02:28 ID:LF4MqoFR0
- >>656
ふぉおおおおおありがとうございます!!!
- 658 :名無しさん@お腹いっぱい。:2010/12/14(火) 02:33:33 ID:CoT/vCy00
- すみません
指定したフォルダ内のファイルやフォルダをすべて別フォルダにコピーさせたいです
autohotkeyjpのFileCopyDirとFileCopyのサンプルがやりたいことに近いのですが、
できれば、コピーできなかったフォルダ名だけじゃなくて、ファイル名も表示させるようにしたいです
どうすればいいでしょうか
- 659 :名無しさん@お腹いっぱい。:2010/12/14(火) 20:11:20 ID:hXUKQlMc0
- ワイルドカードでコピーするんじゃなくてLoop回して1個ずつコピーして失敗したら変数に追記格納って感じだな
- 660 :名無しさん@お腹いっぱい。:2010/12/14(火) 21:15:43 ID:LF4MqoFR0
- あるソフトをautohotkeyで操作して
そのソフトのsave画面を表示させて
その後手入力で任意のファイル名で保存後
その保存したファイル名と場所を
AutoHotkeyで使いたい場合どうすればいいでしょうか?
- 661 :名無しさん@お腹いっぱい。:2010/12/14(火) 23:28:14 ID:GTQHc5deP
- あるソフトをautohotkeyで操作して
そのソフトのsave画面を表示させて
その後手入力で任意のファイル名で保存後
その保存したファイル名と場所を
AutoHotkeyで使えるようにコーディングすればよい。
自分で手を動かさない丸投げ思考なやつに教えるものはない。
- 662 :名無しさん@お腹いっぱい。:2010/12/14(火) 23:29:37 ID:A3pwe1vg0
- なら黙ってればいいのに
- 663 :名無しさん@お腹いっぱい。:2010/12/14(火) 23:35:41 ID:CoT/vCy00
- >>660
>>661が言っているように、>>660の発言を逐一autohotkeyの処理に置き換えればいい
>>1のautohotkeyjpのすぺてのページに目を通せば、どれもクリアできることが分かるはず
- 664 :名無しさん@お腹いっぱい。:2010/12/14(火) 23:36:34 ID:CoT/vCy00
- >>659
地道にそうするのがよさそうですね。そうします。
- 665 :660:2010/12/14(火) 23:56:50 ID:LF4MqoFR0
- 最初考えたのは一旦あるソフト上で保存したファイルを
一番新しいファイルとして検索して見つけて
場所と名前を取得するというのだったけど
それじゃあ検索範囲が広すぎかなっと思ったんです。
すいませんでした。
- 666 :名無しさん@お腹いっぱい。:2010/12/15(水) 01:44:13 ID:Kt8/zhW60
- 保存用のダイアログを作ってみたんですが
保存用ダイアログに任意の名前を入力後(実際にはまだ存在しないファイル)
その名前が取得できたかMsgBoxでfilenameを表示してみると
ファイルの名前じゃなくて「filename」と表示されてしまいました・・・
どうすれば任意の名前が取得できるのでしょうか?
FileSelectFile, filename , s 18, %A_Desktop%, 保存, *.psd
MsgBox, filename
- 667 :名無しさん@お腹いっぱい。:2010/12/15(水) 01:47:07 ID:2PALRNNI0
- ワロタ
- 668 :名無しさん@お腹いっぱい。:2010/12/15(水) 01:53:55 ID:Kt8/zhW60
- うわあああああ
ごめんなさい、じこかiketusimasita
変数を%で括るんですねOTL
お騒がせしてすいませんでしたOTLOTL
- 669 :名無しさん@お腹いっぱい。:2010/12/15(水) 01:54:13 ID:yMWXaAcw0
- MsgBox, %filename% でどうよ
- 670 :名無しさん@お腹いっぱい。:2010/12/15(水) 01:57:42 ID:Kt8/zhW60
- >>669
ありがとうございますOTL
ほんとうにすいませんすいませんOTL
- 671 :名無しさん@お腹いっぱい。:2010/12/15(水) 01:58:20 ID:QiBc/8qO0
- >>668
落ち着けw
- 672 :名無しさん@お腹いっぱい。:2010/12/15(水) 04:50:48 ID:uDZWl52i0
- 俺が読解力がないのかなぁ。
>>660 は 手取り足取り教えてくれって意味じゃなくて
SaveAs のダイアログで表示されているフォルダパスと、
自分が入力したファイル名をどうやって取得すればよいのか?
って事なのかと思った。
ファイル名は Edit の値をループでとり続ければ何とかなりそうだけど、
フォルダパスは COM の Shell.Application でも列挙されないし、
お手上げだなぁと思ってレスしなかったけど、
- 673 :名無しさん@お腹いっぱい。:2010/12/15(水) 10:12:24 ID:K7ifDNQ20
- >>672
save画面に直接入力せずに、
一旦autohotkeyのguiを経由して入力するよう
ワンクッションをかませればいいんじゃないかな
- 674 :名無しさん@お腹いっぱい。:2010/12/15(水) 12:53:20 ID:UTAZpm2d0
- >>672
本人が何を考えてるかまでは、外部の人間はわからんからな。
やりたいことだけ列記して、途中経過をまるで提示しなかったのが、敗因だろう。
このスレって、コードを途中まで書いておけば添削してくれる人は多いじゃん。
添削するほうも、相手のやりたいことがコードを見ればある程度わかるから
添削もやりやすいし。
一番だめなのが「あるソフトを使って・・・」「あるダイアログが出るのを判別して・・・」
みたいな、具体的に書かないやつ。
ソフトによって、判別方法や抜き取る方法もいろいろあるから、
その書き方だと、一般論でしかアドバイスできない。
で、一般論なら>>1に全部書いてあるから、それを読めって話になる。
- 675 :名無しさん@お腹いっぱい。:2010/12/15(水) 13:39:26 ID:9dk3tbX90
- ぼかすのは多分、汎用性のない質問は「そんなソフト知らねーよ」で
よけられてしまうかもって認識があるからだろうね
実際はこのスレの場合は具体的に書いた方が回答得られやすいんだけど
- 676 :名無しさん@お腹いっぱい。:2010/12/15(水) 13:49:40 ID:hSLBzqwE0
- たぶんID:LF4MqoFR0 = ID:Kt8/zhW60だから、
ahkの保存ダイアログで保存名を入力させて名前とフォルダを取得してから
あるソフト上のsave画面で取得した名前で保存する方針にしたんだろう
さすがにMsgBoxはもう間違えないけど
文字列要求のとこに変数直書きはよくやるな
- 677 :名無しさん@お腹いっぱい。:2010/12/16(木) 01:24:07 ID:QxRhxRqQ0
- >>676
そうですそうです。
ID:LF4MqoFR0 = ID:Kt8/zhW60です。
どうもすいませんでした。
お陰様で653っぽい物が出来て
凄く嬉しいです。
ありがとうございました。
- 678 :名無しさん@お腹いっぱい。:2010/12/16(木) 01:40:50 ID:G6HskWsx0
- まぁ思い通りにいって何よりだ。
言っちゃあ何だが、レスの書き方の割には、こういうツールが「あう」人なんかな。
- 679 :名無しさん@お腹いっぱい。:2010/12/17(金) 02:30:37 ID:mZ6sTKIl0
- 配列変更(月配列みたいな)にAHKを使っているのですが、
プレフィクスシフト(前置きシフト)にInputコマンドを利用していると、
素早く入力したときにInputコマンドが無視されてしまいます
(Inputを発生させるキーを押した後間髪入れずに次のキーを押すと、本来シフトがかかるべき字が無シフトで出力される)。
こんな感じ
Input,cha,L1 T1
If cha = q
Send,ぁ
Else If cha =w
Send,ひ
Return
高速入力に耐えうるプレフィクスシフトを実現させるには、どうすればいいと思いますか?
- 680 :名無しさん@お腹いっぱい。:2010/12/17(金) 03:02:53 ID:wC0+uF2B0
- 簡略化するにしても最低限動くコードをのせるべき
- 681 :名無しさん@お腹いっぱい。:2010/12/17(金) 10:26:58 ID:5cCJOUOx0
- 配列ってバッファのことじゃなくて親指シフトみたいなキーボード配列のことか
シフトッつってんのに何で << とか >> とか使ってないのかひとしきり悩んでしまったわ
- 682 :名無しさん@お腹いっぱい。:2010/12/17(金) 11:04:50 ID:hx3s6Lm70
- >>679
SetBatchLines, -1
これはすでに試した?
- 683 :名無しさん@お腹いっぱい。:2010/12/17(金) 17:39:29 ID:P5lecqAA0
- キーボードのLを左クリックと全く同じ動作にしたいんですが
押しっぱなしにすると連射してしまいます。
本家のマニュアルにあった prevent auto repeat feature 云々のも
うまくいきません。
どうすればよいでしょうか
- 684 :名無しさん@お腹いっぱい。:2010/12/17(金) 21:22:15 ID:KwFTZzW10
- >>683
>>674
- 685 :名無しさん@お腹いっぱい。:2010/12/17(金) 21:30:22 ID:cgOLXu8V0
- プレフィクスシフトって要は2ストロークキーだよな。それならホットストリングでどうにかならんもんなの?
自前で実装するにしても、Inputはあまり使わない方がいいんじゃないかなl・・・
興味本位で作ってみた。実用に値するかは分からんけど。
コードはかなり圧縮したんで明日になったらもう分からないと思うw
KeyMap := Object()
KeyMap["A", "B", "C"] := "あ"
KeyMap["B"] := "い"
KeyMap["C", "B"] := "う"
#If MultiStroke(A_ThisHotkey, KeyMap)
a::
b::
c::
d::
; 0〜9, A〜Z, 記号類とかも列挙するのがいいけど割愛
MultiStroke()
Return
MultiStroke(p*) {
static @, $ := Object()
If ( p.MaxIndex()==2 ) {
$.Insert(p[1]) ,@:=p[2][$*]
Return IsObject(@) ? True : (@!="" || $.MaxIndex()>1) ? $.Remove(1,999) :
}
Send, %@%
}
- 686 :名無しさん@お腹いっぱい。:2010/12/17(金) 21:53:30 ID:b5jwzq1x0
- l::
send, {lbutton down}
keywait, l
send, {lbutton up}
return
- 687 :名無しさん@お腹いっぱい。:2010/12/17(金) 22:16:33 ID:P5lecqAA0
- >>686
ありがとうございます
- 688 :名無しさん@お腹いっぱい。:2010/12/17(金) 22:29:28 ID:P5lecqAA0
- >>686
それがうまくいかなくて今やり直したら出来ました
別の部分が干渉してしまって意図通り動かなかったようです
ご迷惑をおかけしました
キーボードでトラックポイントの代用にするのが目標です
- 689 :名無しさん@お腹いっぱい。:2010/12/18(土) 00:12:34 ID:H5XJeDzh0
- 過去ログに同じようなネタがなかったか?
てか1スレ中に1回くらい同じようなのが出てきてる気がする
- 690 :名無しさん@お腹いっぱい。:2010/12/18(土) 00:17:16 ID:0ch6r2JY0
- スレ住人ってね、代謝するんだよ。
一所に澱んでる人にはわからないのかもしれないけど。
- 691 :名無しさん@お腹いっぱい。:2010/12/18(土) 00:22:23 ID:02zrIcbq0
- キーボードのキーをマウス代わりにするっつーことは、
キー押下でマウス移動やクリック・ホイール等を発行するんだろうけど、
複数のホットキーで KeyWait 等のスレッド止まる系を使ってて
それらのキーを同時押ししちまうと「擬似マルチスレッド」の問題が出るわな(>>8)
稀な状況でなく、ドラッグ&ドロップとかの通常操作で起きうる。
キー状態見て発行すりゃスレッドは止まらない
L::Send, % !GetKeyState("LButton") ? "{LButton Down}" :
L Up::Send, % GetKeyState("LButton") ? "{LButton Up}" :
- 692 :名無しさん@お腹いっぱい。:2010/12/18(土) 01:10:51 ID:H5XJeDzh0
- >>690
車輪の再発明をしたいのならそれでいいけど
そうじゃないのなら、過去ログとかフォーラムを見れば、て事なんだが
なんでそうひねれくれるんだかねぇw
- 693 :名無しさん@お腹いっぱい。:2010/12/18(土) 03:08:41 ID:I9lLbkYX0
- スクリプト系スレだと車輪の再発明という言葉が頻発するけど、
練習の手段としてなら他人がすでに別のプログラムで実現させていることを自分でコードを書いて動かしてみるのありだと思うんだよ
言語の習得のためなら、車輪の再発明大いに結構。
他人のコードを最小限に改良して最短距離で目的を達するというのも、上級者の姿勢としては正しいとは思うのだが。
- 694 :名無しさん@お腹いっぱい。:2010/12/18(土) 03:40:36 ID:YRq3DcX80
- 質問者に言ったんでしょ
- 695 :名無しさん@お腹いっぱい。:2010/12/18(土) 11:17:35 ID:fDb9jWB20
- 自分は見覚えある質問だと思ったら過去ログコピペするなり誘導するなりしてる
同じ質問に繰り返し答えるのはたしかに無駄だが
ご新規さんに質問前に過去ログ全部当たってこいってのは難しいっしょ、dat落してるし
- 696 :名無しさん@お腹いっぱい。:2010/12/18(土) 12:02:18 ID:DOiq4BEN0
- あるキーを単独で押したときと、他のキーと組み合わせたときで
挙動を変えることはできますか?
たとえばコントロールキーを単独で押したときにはIME切り替え、
他のキーと組み合わせたときは通常のコントロールキーとして
使う場合です。
- 697 :名無しさん@お腹いっぱい。:2010/12/18(土) 12:07:59 ID:02zrIcbq0
- できる。>>1 の解説サイトの「ホットキー」のページを熟読汁
- 698 :名無しさん@お腹いっぱい。:2010/12/18(土) 12:54:39 ID:H5XJeDzh0
- 過去ログ > AutoHotkeyJp の ファイル置き場
- 699 :名無しさん@お腹いっぱい。:2010/12/19(日) 23:34:11 ID:YdlzniqV0
- AutoHotkey_LでMouseGesture2動かないのね。。。
- 700 :名無しさん@お腹いっぱい。:2010/12/19(日) 23:47:19 ID:YdlzniqV0
- ごめん、文字コードの問題だった。
- 701 :名無しさん@お腹いっぱい。:2010/12/22(水) 12:28:51 ID:PASuoIfi0
- >>648
亀だけどテンプレ作成してくれてありがとう
- 702 :名無しさん@お腹いっぱい。:2010/12/22(水) 12:52:37 ID:mSgH4AEH0
- NGワード 「wたくさん」 で見落としてた・・・
- 703 :名無しさん@お腹いっぱい。:2010/12/22(水) 13:26:00 ID:AyqCA+yg0
- Send, {w 20} とかに変えようぜ
- 704 :名無しさん@お腹いっぱい。:2010/12/23(木) 11:22:01 ID:rc9kDE7x0
- vk1Dsc07B & `;::
は出来るんだけど
vk1Dsc07B & `:::
は失敗する…
セミコロンってただエスケープするだけじゃだめなの?
- 705 :名無しさん@お腹いっぱい。:2010/12/23(木) 12:03:47 ID:FyuAHgHk0
- >>704
正攻法かしらないけどコロン(:)もvkBAsc028って書き換えてみては。
効かなかったらKeyHistoryで確認。
- 706 :名無しさん@お腹いっぱい。:2010/12/23(木) 12:27:14 ID:pS+FmOIa0
- AutoHotkeyLでWindowsキーを無効化したいのですが, どうも安定しません
以前は
LWin::return
で単独押下のみ無効になり, Win+Rのような修飾キーとしては機能していたと思うのですが,
試してみたところWinキー自体が無効になり, Rが素通りして押されてしまいます
LWin::return
LWin & r::Send,#r
とすると, Win+Rだけでなくその他(Win+Eなど)のショートカットも有効になってしまいます
2つめのやり方で最初の予定通りの動作をするとはいえ, 記述通りの動作でないのはどうも気持ちが悪いです
なんとか記述通りに動作するようにできないでしょうか
スクリプトは上記のみで試しに動かしました
またWinきーだけでなく, ctrl, alt, shiftでも同じ挙動になりました
- 707 :名無しさん@お腹いっぱい。:2010/12/23(木) 16:34:56 ID:YEZz5tUt0
- URLDownloadToFileでタイムアウトの時間指定できませんか?
- 708 :名無しさん@お腹いっぱい。:2010/12/23(木) 18:04:38 ID:8U7e0FmW0
- >>706
手元のLのv1.0,90.00と本家のv1.0.48.05 では同じ挙動だけど。
Lなんで以下のようにすればいいんでないのかね。
LWin::Return
#If GetKeyState("LWin", "P")
c::
d::
e::
f::
l::
r::
Send, #%A_ThisHotkey%
Return
>>707
できない。
L使ってるなら、COMオブジェクトのWinHttpRequest使えばいい。
http://www.autohotkey.com/forum/viewtopic.php?p=377651#377651
WinHttpRequestオブジェクトに SetTimeout メソッドがある。
http://msdn.microsoft.com/en-us/library/aa384106.aspx
- 709 :名無しさん@お腹いっぱい。:2010/12/23(木) 19:18:02 ID:SAQo2ylQ0
- LWin::
IfWinExist, ahk_class CabinetWClass
WinMove, 0,0
return
これでエクスプローラー一つだけ動かせるのですが、他のも二つ…三つと動かせないでしょうか?
class一緒だと無理ですかね
ご教授お願いします
- 710 :名無しさん@お腹いっぱい。:2010/12/23(木) 20:00:36 ID:8U7e0FmW0
- WinGet, 〜, List でマッチするクラスのウィンドウリストを取得して、
Loopでリストの全部に対して操作する
- 711 :名無しさん@お腹いっぱい。:2010/12/23(木) 20:22:46 ID:SAQo2ylQ0
- >>710
エクスプローラーのみなのですが、一個一個別々の指定することも可能でしょうか?
- 712 :名無しさん@お腹いっぱい。:2010/12/23(木) 21:32:16 ID:8U7e0FmW0
- 「別々」なのをきちんと識別出来るならなんでも出来る
- 713 :706:2010/12/23(木) 23:29:29 ID:pS+FmOIa0
- >>708
無事期待通りに動かすことができるようになりました
ありがとうございます
- 714 :名無しさん@お腹いっぱい。:2010/12/24(金) 07:23:57 ID:wTht2qDt0
- おいーっす
1.0.91.01 - December 24, 2010
Fixed: Unexpected results with File.Write(Str) after text-reading.
Fixed: UTF BOM check caused unexpected results in files without a BOM.
Fixed (ANSI): Parsing loops and File.ReadLine() treated Chr(255) as EOF.
Fixed (Unicode): RegExReplace errors where the UTF-8 and UTF-16 lengths differed.
Fixed: Disabling the last hook hotkey breaks Input.
Added: Simple optimization for RegExMatch/Replace.
- 715 :名無しさん@お腹いっぱい。:2010/12/24(金) 07:41:45 ID:wTht2qDt0
- 1.0.91.00 - December 21, 2010 >>2
All changes in this release are COM-related.
Added: ComObjError now returns the previous setting.
Added: ComObjType(co) and ComObjValue(co).
Added: ComObjMissing().
Added: ComObjArray() and basic SAFEARRAY support.
Added: "Take ownership" parameter for ComObjParameter().
Changed: Values passed to COM functions via ComObjParameter are no longer freed in the process of calling the function.
Changed: ComObj.x() now falls back to PROPERTYGET if member 'x' is not found. This fixes for-loops for some objects.
Changed: Wrap unhandled variant types in an object rather than returning integer value.
Changed: Manage VT_UNKNOWN/VT_ARRAY lifetime automatically, by default.
- 716 :名無しさん@お腹いっぱい。:2010/12/24(金) 17:51:24 ID:54jsSI2o0
- >>Added: Simple optimization for RegExMatch/Replace.
これはどういう事なんだぜ?
パフォーマンス上がったよ!ってこと?
- 717 :名無しさん@お腹いっぱい。:2010/12/24(金) 20:36:09 ID:oxnd8wbr0
- うん
- 718 :名無しさん@お腹いっぱい。:2010/12/26(日) 13:22:20 ID:EkDm87BS0
- おいーっす >>2
1.0.91.02 - December 26, 2010
COM: Added protection against NULL IDispatch/IUnknown pointers.
COM: Skip QueryInterface for IDispatch if VT_DISPATCH is passed explicitly.
Minor fix for maintainability: obj.field := var now correctly yields SYM_STRING, not SYM_OPERAND.
- 719 :名無しさん@お腹いっぱい。:2010/12/26(日) 15:12:23 ID:6hOGDCCX0
- なんかいっぱい来てる。訳してるけど意味分かんないやw
- 720 :名無しさん@お腹いっぱい。:2010/12/26(日) 17:21:43 ID:F0U6I1I70
- もう一から作り直してほしいわ
ロードマップができてるんだから、さっさとやってほしい・・・
- 721 :名無しさん@お腹いっぱい。:2010/12/26(日) 17:49:23 ID:qXdh5l150
- 何様w
- 722 :名無しさん@お腹いっぱい。:2010/12/26(日) 17:54:24 ID:WOMl3rAf0
- しばらくうp様子見だなこりゃ
- 723 :名無しさん@お腹いっぱい。:2010/12/28(火) 08:48:12 ID:KFswdrIui
- そういえば >>264,279 が治ってるな
._NewEnum() が通るようになったんで For ループで回せる。
- 724 :名無しさん@お腹いっぱい。:2010/12/28(火) 12:12:46 ID:+dIE31QE0
- 質問させてください。WinXP(SP4)を使ってます。
WinGet, t , Transparent, A
Msgbox, t = %t%
で不透明度を表示しようと思ったんですが、どのウィンドウも初期値はカラッポなんですが
そういうものなんでしょうか?、
Winsetで一度不透明度を変更すると、その後は数値が入ったままになってくれるんですが…
- 725 :名無しさん@お腹いっぱい。:2010/12/28(火) 12:40:57 ID:Az9PJ5Wa0
- >>1のドキュメントくらい読もうな
>Transparent
> ウィンドウの不透明度。
> 0が完全に不可視、255が完全に不透明。
> 半透明でないときは空になる。
- 726 :名無しさん@お腹いっぱい。:2010/12/28(火) 13:49:15 ID:+dIE31QE0
- >>725
すみません、なんとなく理解できてきました
上の例だとtの値が空の時はOFF(完全に不透明)って認識でいいんでしょうか
- 727 :名無しさん@お腹いっぱい。:2010/12/28(火) 17:07:00 ID:QOm1KSMYi
- そう
ってか、説明文の繰り返し以上のことはないよ
- 728 :名無しさん@お腹いっぱい。:2010/12/28(火) 21:51:04 ID:BjqNOkmn0
- >WinXP(SP4)
いつでたんだよ
- 729 :名無しさん@お腹いっぱい。:2010/12/28(火) 22:11:27 ID:Ncy9EMdP0
- AutoHotkey_L
http://www.autohotkey.net/~Lexikos/AutoHotkey_L/
warningっていうのが来てる
- 730 :名無しさん@お腹いっぱい。:2010/12/28(火) 23:40:32 ID:uuWro9y80
- 流行らせるページの管理人さんがつくってくれた
ファイルランチャーFileLaunch.ahk
みたいなので新しいのありませんか?
2006年の6月で開発おわっちゃったみたいだし。
こういうコマンド入力型のランチャーほしい。
今はCraftlaunchつかってるけど。
だれかおしえて
- 731 :名無しさん@お腹いっぱい。:2010/12/28(火) 23:43:35 ID:gn+zc+S70
- 散々既出だけど、質問が後を絶たないからでしょ。
きちんと読まないのが悪い。
- 732 :名無しさん@お腹いっぱい。:2010/12/28(火) 23:44:07 ID:S6rq6GAKP
- あるならそのまま使えばいい話では?
追加の機能が欲しいなら、自分で実装するか、
やり方をこのスレで聞くかすればいい。ただし丸投げは禁止。
- 733 :名無しさん@お腹いっぱい。:2010/12/29(水) 00:07:12 ID:ySt2TvF70
- AHK_Lで実行ファイル化するとき、マニフェストファイルを埋め込むように
管理者権限つきの状態で実行ファイル化することはできないでしょうか?
- 734 :名無しさん@お腹いっぱい。:2010/12/29(水) 04:03:32 ID:2Ry+MeKa0
- 1.0.91.03 - December 27, 2010
Fixed: RegEx callout subpattern vars - broken by v1.0.90.00.
- 735 :名無しさん@お腹いっぱい。:2010/12/29(水) 04:35:22 ID:2Ry+MeKa0
- COM便利すぎワロス
コマンドラインも引数付きで取得できる。
Gui, Add, ListView, x2 y0 w400 h500 grid, Process PID|Name|Command Line
For process in ComObjGet("winmgmts:").ExecQuery("Select * from Win32_Process")
LV_Add("", process.ProcessId, process.Name, process.CommandLine)
Gui, Show,, Process List
- 736 :名無しさん@お腹いっぱい。:2010/12/29(水) 07:44:32 ID:QCC1ySsS0
- FileLaunch.ahkが難しくて使えない。
/scanall でエンター押してもうんともすんとも言わない。
scan.txtにF:\^ ってしてるんだけど。
最初つまづいて打開できないぐらいなら、止めたほうが
いいんだろうけど、フォルダ検索とかかなり便利そうで使いたい。
- 737 :名無しさん@お腹いっぱい。:2010/12/29(水) 12:38:26 ID:ohwA7N190
- 指定のファイルをazpaintで開いて上書き保存して閉じるという
ものを作ってみたのですが
Send,,^sの実行が間に合わないままウィンドウが閉じられてしまいます
どうしたらよいのでしょうか?
(ウィンドウが閉じている間にSend,,^sが実行されたと思われるピンっという音がする)
#WinActivateForce
Process, Exist,AzPainter2.exe
azpid = %ErrorLevel%
if azpid = 0
{
;azpaintの場所を書く
Run,C:\Users\ユーザー名\Desktop\azpt209\AzPainter2.exe %A_ScriptDir%\ttt.psd,,,azpid
}
WinWaitActive,ahk_pid %azpid%
;azpaintでの上書き保存のショートカットキー
Send,,^s
;ショートカットキーを押したら保存中のウィンドウが出るので
;そのウィンドウが閉じて元のウィンドウが出るまで待つ
WinWaitActive, ahk_pid %azpid%
Process, Close,%azpid%
WinWaitClose, ahk_pid %azpid%
ExitApp
- 738 :名無しさん@お腹いっぱい。:2010/12/29(水) 12:56:53 ID:/ITbnX2a0
- >>737
sleepを使ったらどう?
- 739 :名無しさん@お腹いっぱい。:2010/12/29(水) 13:00:55 ID:2Ry+MeKa0
- Process, Close は強制終了だから、 WinClose でいいならそれを使う。
- 740 :名無しさん@お腹いっぱい。:2010/12/29(水) 15:00:59 ID:QCC1ySsS0
- FileLaunch.ahkのウインドウ上では、AHKのホットキー機能利かないんですね。
下カーソルキー(↓)を無変換とkに割り当てたいのですが、出来ないです。
自分のGUIだから無理なのかな。
#IfWinActive,ahk_class AutoHotkeyGUI
vk1Dsc07B & k:: Send,{Blind}{Down}
- 741 :737:2010/12/29(水) 15:30:02 ID:ohwA7N190
- こんな感じで出来ました
ありがとうございます!
#WinActivateForce
Process, Exist,AzPainter2.exe
azpid = %ErrorLevel%
if azpid = 0
{
;azpaintの場所を書く
Run,C:\Users\ユーザー名\Desktop\azpt209\AzPainter2.exe %A_ScriptDir%\ttt.psd,,,azpid
}
WinWaitActive,ahk_pid %azpid%
sleep 1000
;azpaintでの上書き保存のショートカットキー
Send,^s
WinWaitActive, 処理中
WinWaitClose, 処理中
WinWaitActive, ahk_pid %azpid%
WinClose, ahk_pid %azpid%
WinWaitClose, ahk_pid %azpid%
Exit
- 742 :名無しさん@お腹いっぱい。:2010/12/29(水) 15:50:48 ID:RVNOjEHr0
- 礼はいいとしてその程度の例はいらないというわがまま意見
- 743 :名無しさん@お腹いっぱい。:2010/12/29(水) 16:03:58 ID:6IFl/zQ40
- 使い始めて一週間経ってない俺には必要というわがまま意見
- 744 :名無しさん@お腹いっぱい。:2010/12/29(水) 22:30:15 ID:mOvzup2b0
- 本体めちゃでかくなっちょる
>>735
ここら辺ってJavaScriptのクラスとかオブジェクトの文法とほぼ同じ?
_Lの拡張っぷりがすごすぎてAHKに無限の可能性を感じてきた
まあ実行速度がry
つかほんと、プログラミング経験ゼロのahk初心者から
ScriptControlでVBもJScriptも使いこなせる玄人までの
幅広い人たちの集うスレだな
- 745 :名無しさん@お腹いっぱい。:2010/12/29(水) 23:25:39 ID:2Ry+MeKa0
- >ここら辺ってJavaScriptのクラスとかオブジェクトの文法とほぼ同じ?
COMオブジェクトをAHKのオブジェクトで包んだラッパーだから使い方は一緒。
ただ、引数や戻り値として使える型に制限がある。
今回の更新はそれを解消するために、COMで使える配列型など(のラッパー)を用意したって感じ。
- 746 :名無しさん@お腹いっぱい。:2010/12/30(木) 01:04:31 ID:enFEWUZM0
- >>733
Compile_AHK使って、Vista UACを変更すればいいんじゃないの
つか「管理者として実行」またはプロパティで「管理者としてこのプログラムを実行」にチェックとか
そういった解決方法はだめなのか
- 747 :名無しさん@お腹いっぱい。:2010/12/30(木) 01:22:20 ID:87znPY+y0
- なんとかしてcomを使って普通の標準出力を使えないものでしょうか
コマンドプロンプトからコンパイル済のプログラムを呼び出して、その結果を取得したいです
- 748 :名無しさん@お腹いっぱい。:2010/12/30(木) 01:48:33 ID:z8jYOUam0
- COMは万能じゃないよ。
ってかファイルオブジェクトで出来るだろ。
- 749 :名無しさん@お腹いっぱい。:2010/12/30(木) 10:00:45 ID:xlzBzIA90
- 他ランチャーから、Autohotkey.iniに書かれている複数行に渡るスクリプトを呼び出して
動かしたいのですがどうやればできますか?
exe代わりに、ahk拡張子のファイルを作って実行しようと思ったのですが、
そのままコピペしても動かないし、余分にひとつAHKが常駐してしまうので、
目的を達せられないのです。教えてください。
- 750 :名無しさん@お腹いっぱい。:2010/12/30(木) 10:24:06 ID:xlzBzIA90
- 使用方法
http://ahk.xrea.jp/Usage.html
かぁ〜・・・
- 751 :名無しさん@お腹いっぱい。:2010/12/30(木) 10:48:08 ID:haWpaHiK0
- これを参考にランチャーからスクリプトA(下記例のsender.ahk)を実行して、
常駐スクリプトB(下記例のreceiver.ahk)に値を渡し
スクリプトAを終了させればいいんじゃないかな
AutoHotkey スレッド part8
290 名前:名無しさん@お腹いっぱい。 [sage] 投稿日:2009/06/21(日) 18:58:11 ID:16cGC6mhP (p2)
まあ、人それぞれだから好きにすればいい
一応OnMessageだってahkのコマンドだし、覚えるのが大変なのはGUI絡みだって同じだと思うけどね
文字列の受け渡しになるとちょいと面倒になるけど、数値の受け渡しならこの程度で済む
--- receiver.ahk ---
OnMessage(0x5555,"MsgHandler")
MsgHandler(wParam, lParam, msg)
{
TrayTip,Receiver,Message %msg% arrived:`nWPARAM: %wParam%`nLPARAM: %lParam%
}
--- sender.ahk ---
F12::
SetTitleMatchMode 2
DetectHiddenWindows On
PostMessage, 0x5555, 11, 22, , receiver.ahk ahk_class AutoHotkey
return
- 752 :名無しさん@お腹いっぱい。:2010/12/30(木) 10:55:16 ID:pw49wB/30
- 1.0.91.04 - December 29, 2010 >>2
Fixed (Unicode): RegExReplace omitted all text up to StartingPosition (broken by v1.0.90.00).
- 753 :名無しさん@お腹いっぱい。:2010/12/30(木) 12:57:46 ID:vEIz1Xxc0
- SciTE_beta4って日本語がぁだめだねぇ...
- 754 :名無しさん@お腹いっぱい。:2010/12/30(木) 15:06:15 ID:ignuWjNv0
- 文字列受け渡し
;--- sender.ahk --- 受け手のEditを書き換えて、メッセージで通知する。改行はLF(`n)になるので注意
DetectHiddenWindows, On
ControlSetText, Edit1, %Clipboard%, getmojiretsuGUI ahk_class AutoHotkeyGUI
SendMessage, 5555, 0, 0, , getmojiretsuGUI ahk_class AutoHotkeyGUI
;--- receiver.ahk --- メッセージを受け取ったらサブルーチンを実行する
OnMessage( 5555, "getmojiretsuFnc" )
getmojiretsuFnc(){
GoSub, getmojiretsuSub
}
;Editを作成、コントロールハンドルを取得しておく
Gui, Add, Edit, Multi
Gui, Show, Hide, getmojiretsuGUI
If A_DetectHiddenWindows = Off
{
DetectHiddenWindows, On
WinGet, getmojiretsuCtrlHWND, ControlListHWND, getmojiretsuGUI
DetectHiddenWindows, Off
}
Else WinGet, getmojiretsuCtrlHWND, ControlListHWND, getmojiretsuGUI
Return
;受け取ったときのサブルーチン
getmojiretsuSub:
ControlGetText, mojiretsu, , ahk_ID %getmojiretsuCtrlHWND%
MsgBox, %mojiretsu%
Return
- 755 :名無しさん@お腹いっぱい。:2010/12/30(木) 16:44:12 ID:z8jYOUam0
- GUI使って文字列やりとりするなら、メインウィンドウのEditに書いちまえばいいじゃん。
送り手:
DetectHiddenWindows, On
SetTitleMatchMode, 2
IfWinExist \serv.ahk ahk_class AutoHotkey
{
ControlSetText, Edit1, ほげほげ
PostMessage, 0x8001
}
受け手:
OnMessage(0x8001, "MsgListener")
MsgListener() {
DetectHiddenWindows, On
ControlGetText, value, Edit1, %A_ScriptFullPath% ahk_class AutoHotkey
MsgBox, % value
}
- 756 :名無しさん@お腹いっぱい。:2010/12/30(木) 21:05:04 ID:xlzBzIA90
- 749です。
ご回答ありがとうございます。
ただ提示された文字式が高度すぎてまったく分かりませんが。
当初自分がやろうと思っていたことは出来るようになりました。
ただ単にやりたい複数行のスクリプトを空のahk拡張子ファイルに
コピペして、それを実行することで、思うことが実行できました。
なぜ前にテストしたときはまったく動かなかった&AHKアイコンが
余分にひとつタスクトレイに残ることになったのか分かりませんが。
ただやはりちょっと実行時重く感じますし、すぐ壁に当たるでしょうから
ご掲示されたsenderとreceiverのやつ試してみます。片方は本体の
autohotkey.iniに書いちゃっていいのかな。
とにもかくにもありがとうございました。
- 757 :名無しさん@お腹いっぱい。:2010/12/30(木) 21:28:30 ID:z8jYOUam0
- 常駐スクリプトで保持している情報(変数)がが必須な処理をする必要がある場合、
常駐スクリプトに何らかのメッセージを送って機能を呼び出してやらないといけない。
そうでないなら、単体スクリプトをランチャーから呼び出すだけでいいはず。
常駐スクリプトと単体スクリプトで同じ機能を持たいだけならば、
関数やサブルーチンに分割した別ファイルをインクルードすればいいだけのこと。
前者のケースってあまりなさそうだけど。
- 758 :名無しさん@お腹いっぱい。:2010/12/30(木) 23:23:40 ID:ignuWjNv0
- メインのexeを実行。並行して複数のサブexeも実行
サブが先に終わり、結果をメインに投げる
受けとったものをメインが利用、とか
複数の結果を同時に利用する場合はサブだけじゃ難しい
まあ文字列はiniとかtxtのが楽そうだけど
>>755
このEdit1てのはどこに存在してるの?
普段は何も書いてないみたいだし、exe化してもあるし
- 759 :名無しさん@お腹いっぱい。:2010/12/31(金) 01:22:13 ID:r/Rfa40Z0
- AutoHotkeyの本体。トレイアイコンから呼べるやつ。
ListVars や ListLines で各種情報を表示するところ。
- 760 :名無しさん@お腹いっぱい。:2010/12/31(金) 10:22:22 ID:VRpOUwFL0
- exeを実行したらAutoHotKeyのインストールフォルダにあるiniを自動で読み込んでくれない
どうするの?これ。
マイドキュメントに設定ファイル置くのが嫌なので悶絶するけど
一生変わらんのだが
久々にアップデートしようと思って、AutoHotkey_Lのインストーラーを落として
実行してインストールしたのに。
>AutoHotKey.ahkの拡張子を.iniに変更し、インストールフォルダ(AutoHotkey.exeが存在するフォルダ)に置いておくと、
>マイドキュメントフォルダにAutoHotKey.ahkがなくても、インストールフォルダにあるiniを読み込む
ってのググルとでてくるけど、何度やっても無理だ。なにもうこれ
- 761 :名無しさん@お腹いっぱい。:2010/12/31(金) 10:53:39 ID:VRpOUwFL0
- AutoHotkey.ahkを拡張子変えずにインストールフォルダに置いたら、
いままでと同じように起動してくれた。
ドキュメントにahkファイル置かなくても。
.iniに変えてインストールフォルダに置いたら
マイドキュメントにかならずつくろうとする。
ほかのページやAutoHotkeyJpにもiniに変えると
前のように出来るみたいに書いてるけど、
オレの場合違うんだが。
あーしんど、英語読めないのはやっぱり致命的だわ
- 762 :名無しさん@お腹いっぱい。:2010/12/31(金) 11:20:55 ID:lES3dB0a0
- ここの連中はただでさえ初心者大嫌いだから
そんな態度じゃ罵倒されるだけだぞ
Revision 51 - April 11, 2010
* Changed: Use <EXENAME>.ahk instead of AutoHotkey.ini or AutoHotkey.ahk.
- 763 :名無しさん@お腹いっぱい。:2010/12/31(金) 17:15:02 ID:VRpOUwFL0
- >>762
ありがとうございます。ほんとだ。デフォの名前に限らずEXEファイルの名前と
ahkファイルの名前を同じにすれば、きちんと動くw
すごい改善。こうなればいいなーって書いてた掲示板あったけど
そのとおりになったのか。
分かりやすいところにどっか書いてて欲しかった。
おれが英語読めないだけだけど。
このスレに来たのは今年のはじめでした。
お世話になりました。
みなさま良いお年を。
- 764 :名無しさん@お腹いっぱい。:2010/12/31(金) 17:36:29 ID:mEa1Uvb70
- https://sites.google.com/site/autohotkeyjp/reference/AutoHotkey_L/Compatibility#TOC-5
これな
- 765 :名無しさん@お腹いっぱい。:2010/12/31(金) 20:34:13 ID:eDM92Iot0
- フルスクリーンで動作するソフト(ゲーム等)でAutoHotkeyでさらに前面にテキスト表示する方法を考えてます。
見当も付かないのでヒントだけでもお願いします。
ゲームのFPSを計るソフトのように表示したいのです。
- 766 :名無しさん@お腹いっぱい。:2010/12/31(金) 23:13:09 ID:+6h9CfsS0
- ここの連中はただでさえ初心者大嫌いだから
そんな態度じゃ罵倒されるだけだぞ
- 767 :名無しさん@お腹いっぱい。:2010/12/31(金) 23:25:30 ID:Obui5VOp0
- >>765
まず、GUIを作って文字を表示する((これが基本)
WinSet, で最前面化が可能。
同じく、WinSet で特定色を透過させられるので背景色を透過させる。
アンチエイリアスが掛かって汚いなら、Gui, Font でアンチエイリアスを抑制する。
GUIにはタイトルバーを無しで、ツールウィンドウにすると良い。
表示する時は非アクティブで表示させるようにする。
以上でできる。
だ が し か し 、ゲームのように DirectX で描画している場合、
ちらついたり一瞬で消えたりと、うまいこと表示されないこともある。
これはどうしようもない。
>>766
どう質問すれば答えが出やすいとか、もうちょっと建設的にアドバイスしてやれよ。
- 768 :名無しさん@お腹いっぱい。:2010/12/31(金) 23:40:39 ID:TDqMZpOx0
- >>765
ツールチップ使うとか
http://sites.google.com/site/autohotkeyjp/reference/commands/ToolTip
表示させる場所はウィンドウから頑張って取ってくる
http://sites.google.com/site/autohotkeyjp/reference/commands/index_window
- 769 :名無しさん@お腹いっぱい。:2011/01/01(土) 01:54:10 ID:dvo0YW1l0
- >>767
ヒント(?)だっけ。ツールチップ(?)だっけで
文字表示するのはむりか
- 770 :名無しさん@お腹いっぱい。:2011/01/01(土) 23:47:01 ID:AhzmuHuU0
- 1.0.91.05 - January 1, 2011
Fixed: Cleanup code in COM method calls was freeing the wrong parameters.
Fixed (ANSI): DllCall set incorrect length for wstr parameters on output.
Fixed: Variadic function calls were unstable when param object was empty.
そろそろバグも出尽くす頃かなぁ。
バージョンは表記は以前のリビジョンよりは分かりやすいな。
- 771 :名無しさん@お腹いっぱい。:2011/01/02(日) 01:41:57 ID:m4Lo8jjX0
- autohotkey_l unicodeの質問です。
autohotkeyで無名関数を実現したいです。
フォーラムに情報はないものかと探し回っていたら、autohotkey_l製作者lexikosのそれらしき書き込みを見つけました。
LowLevel & dynamic code
http://www.autohotkey.com/forum/post-241575.html#241575
ですが、autohotkey_l最新版だとサンプルコードが動きません。それと、これは一昨年の情報でした。
最終的にはjavascriptのlambdaみたいなものを使いたいのですが、
無理なのでしょうか。
- 772 :名無しさん@お腹いっぱい。:2011/01/02(日) 12:20:48 ID:oZFXXDv40
- 本日から14日前の日にちを出したいです。
どうするのが一番簡単ですか?
- 773 :名無しさん@お腹いっぱい。:2011/01/02(日) 13:43:19 ID:QmETgrie0
- >>771
処理をその場にインライン化したいだけって意味の無名関数なら言語仕様的に無理でしょ。
というか、無名関数がなきゃ実現できないことなんかい?
>>772
タイムスタンプ形式のデータを格納した変数に対して、必要な日数(過去ならマイナス値)を単位指定して「加算」する。
- 774 :名無しさん@お腹いっぱい。:2011/01/02(日) 15:05:36 ID:w8CmlM6s0
- MouseGenture.ahkで、Aeroのタイトルバーの条件式ってどうやんの?
hittestじゃ反応しないぞ。なんかsendmassageとか使えば出来るとか?
- 775 :名無しさん@お腹いっぱい。:2011/01/02(日) 15:20:02 ID:mzOLMhkM0
- #SingleInstance FORCE
で使ってるスクリプトで、何らかの原因(ネットワーク越しのfilereadで読み込み中に失敗など)
でスクリプトが半死のとき、定期間隔でsettimerを回して半死を判別しています。
それで、死んでると判断したときに、自分自身をreloadするようにしています。
reloadの際に、今動作中のスクリプトが応答しないと、新スクリプトの開始時に
「前回のスクリプトが居残っていますが、少し待ちますか?YES/NO」
のダイアログが出ますよね。
このダイアログに返答しないと、次のスクリプトが動いてくれず、
無人PCでの自動運転だと、ここで稼動しなくなってしまいます。
このダイアログを出さなくする、あるいは、自動でYESにするような
方法ってありますか?
- 776 :名無しさん@お腹いっぱい。:2011/01/02(日) 17:05:07 ID:DH+uOCnxP
- MouseGenture.ahkを使ってみているのですが、
特定のウインドウをアクティブにしたい時に処理内容にWinActivateを書いています。
これをタイトルで正規表現でマッチングしたいと思い
SetTitleMatchMode, RegExをどこか初期化時に書けばいいというのはわかりましたが、
MG_User.ahkの ;;;;;;;;↓↓初期化処理↓↓;;;;;;;;;; の下に書けばよいのでしょうか?
グローバルな設定なため他に致命的な影響がでないものかな、と思いまして。
単独で使っています
MouseGenture2 ver 2008/10/07です。
http://lukewarm.s101.xrea.com/myscripts/mousegesture/index.html
- 777 :名無しさん@お腹いっぱい。:2011/01/02(日) 17:20:46 ID:QmETgrie0
- >>775
死んでる場合や応答が極端に遅い場合、OnExitで終了しない場合は
該当ダイアログで Yes を選んでも、再度同じダイアログが出るだけ。
別プロセス(別スクリプト)で該当スクリプトのプロセスを殺して、再度起動って感じになるかも。
コマンドの Reload の部分を 「Run, Reloader.ahk %A_ScriptFullPath%」みたく変えるとかで対応かな。
-- Reloader.ahk --
DetectHiddenWindows, On
IfWinExist, %1% ahk_class AutoHotkey
{
WinGet, pid, PID
Process, Close, %pid%
Run, %1%
}
ただ、プロセスの強制終了なんでタスクトレイアイコンは残って、エラい事になる。
WinMenuSelectItem で殺せなかったらなどの処理をした方がいいかもしれない。
- 778 :名無しさん@お腹いっぱい。:2011/01/02(日) 18:32:46 ID:w8CmlM6s0
- なんだこれeuc-jpにurlエンコードできないんか。Perlスクリプト書くか。。
- 779 :名無しさん@お腹いっぱい。:2011/01/02(日) 19:01:52 ID:oZFXXDv40
- >>773
ありがとうございました。
- 780 :名無しさん@お腹いっぱい。:2011/01/02(日) 22:11:48 ID:w8CmlM6s0
- StdIO.ahkでPerlとかRubyのコマンド使えるヤツ、AutoHotKey_Lじゃ使えないの?
使えている人いる?
- 781 :名無しさん@お腹いっぱい。:2011/01/02(日) 23:47:14 ID:w8CmlM6s0
- WheelRedirect.ahk導入したらFirefoxでスクロールできないぞ
- 782 :名無しさん@お腹いっぱい。:2011/01/03(月) 00:07:39 ID:VZbNyFbm0
- 馬鹿自慢大会
- 783 :名無しさん@お腹いっぱい。:2011/01/03(月) 00:33:55 ID:8M5/6GqL0
- なんで日記スレになってんのw
- 784 :名無しさん@お腹いっぱい。:2011/01/03(月) 02:08:49 ID:HoibdZ3M0
- WheelAccel.ahk入れると秀丸で↑スクロールしても↓スクロールになるし、Firefoxでスクロールできない。
- 785 :名無しさん@お腹いっぱい。:2011/01/03(月) 04:08:36 ID:krobop8i0
- 二つのファイルが同一ファイルか調べたいんですが専用の関数とかありますか?
- 786 :名無しさん@お腹いっぱい。:2011/01/03(月) 04:46:45 ID:V4MIS6jw0
- >>777
ありがとうございます。外から仕留めるのが確実っぽいですね。
その方法で対策してみます。
- 787 :名無しさん@お腹いっぱい。:2011/01/03(月) 05:21:55 ID:HQWXyqVC0
- ここの連中はただでさえ初心者大嫌いだから
そんな態度じゃ罵倒されるだけだぞ
- 788 :名無しさん@お腹いっぱい。:2011/01/03(月) 12:17:52 ID:VZbNyFbm0
- 初心者じゃないだろ、教えてちゃんだろ>>510
762 :名無しさん@お腹いっぱい。[sage] :2010/12/31(金) 11:20:55 ID:lES3dB0a0 (PC)
ここの連中はただでさえ初心者大嫌いだから
そんな態度じゃ罵倒されるだけだぞ
Revision 51 - April 11, 2010
* Changed: Use <EXENAME>.ahk instead of AutoHotkey.ini or AutoHotkey.ahk.
766 :名無しさん@お腹いっぱい。[sage] :2010/12/31(金) 23:13:09 ID:+6h9CfsS0 (PC)
ここの連中はただでさえ初心者大嫌いだから
そんな態度じゃ罵倒されるだけだぞ
787 :名無しさん@お腹いっぱい。[sage] :2011/01/03(月) 05:21:55 ID:HQWXyqVC0 (PC)
ここの連中はただでさえ初心者大嫌いだから
そんな態度じゃ罵倒されるだけだぞ
- 789 :名無しさん@お腹いっぱい。:2011/01/04(火) 01:19:32 ID:SueU/Ypi0
- わざわざ抽出する馬鹿自慢大会でした。
- 790 :名無しさん@お腹いっぱい。:2011/01/04(火) 02:50:27 ID:tL9DF7ZZ0
- JaneとかJTrimみたいなDelphi製アプリケーションで最小化させるにはどうすればいいの?
Alt+Space+Nで大体大丈夫だけど、反応しないヤツもあるし。
- 791 :名無しさん@お腹いっぱい。:2011/01/04(火) 07:05:37 ID:7ZUH0CfQ0
- WinMinimize の解説をもう一度読むんだ
- 792 :名無しさん@お腹いっぱい。:2011/01/05(水) 15:29:02 ID:JNyNcWfG0
- aキーを押しっぱなしにするためのスクリプトは作成可能でしょうか?
Send {a down}
のみだと一回しか押されませんでした。
よろしくお願いします。
- 793 :名無しさん@お腹いっぱい。:2011/01/05(水) 16:16:56 ID:wabdbi9W0
- キーリピートを発生させるにはループかタイマーで定期的にキー発行する
その際は {a DownTemp} のほうがいい。
- 794 :名無しさん@お腹いっぱい。:2011/01/05(水) 18:32:02 ID:JNyNcWfG0
- ありがとう。やってみます。(・v・)
- 795 :名無しさん@お腹いっぱい。:2011/01/06(木) 14:46:31 ID:HNXsnreo0
- 初心者な質問で済みません。
AutoHotkey_L(64bit)を使って、
IfWinActive, ○○○ - Mozilla Firefox
のようにFirefoxのページタイトルを指定したいのですが、全角文字が含まれるとうまく働きません。
どのようにすれば解決できるでしょうか?どうか、ご教示ください。
- 796 :名無しさん@お腹いっぱい。:2011/01/06(木) 14:55:08 ID:wwCcAAvB0
- スクリプトをutf8で保存
- 797 :名無しさん@お腹いっぱい。:2011/01/06(木) 14:56:58 ID:8K4JXP430
- スクリプトをUTF-8で保存
- 798 :名無しさん@お腹いっぱい。:2011/01/06(木) 15:26:01 ID:HNXsnreo0
- >>796,797
おお、即レスありがとうございます!
やってみたら無事できました。保存形式だとは全然気付かなかったので、
分からないままになるところでした。教えて頂いてありがとうございます!
- 799 :名無しさん@お腹いっぱい。:2011/01/08(土) 02:49:38 ID://XNXGBg0
- Saiというお絵かきソフト上で、aキーを押した時に特定の座標をクリックしたくて
(座標にはレイヤーパレットがあって、特定のレイヤーを選択させる予定)
以下のようなスクリプトを組んだんですが
a::
BlockInput, on
MouseClick, L,xpos,ypos,1,0
BlockInput, off
return
このソフトはペンタブレットを使用していると独自にその座標を取得しちゃうみたいで、
BlockInputを入れてもマウス(ペンタブ)の入力が無効化されず、ペンの位置にカーソルが
留まってしまいxpos,yposの座標をクリックできないんです
何かいい方法はないものでしょうか?
- 800 :名無しさん@お腹いっぱい。:2011/01/08(土) 02:58:57 ID:9/2+uYJH0
- MouseMove と Send, {LButton} で解決できたら・・・いいね
- 801 :名無しさん@お腹いっぱい。:2011/01/08(土) 03:50:02 ID://XNXGBg0
- >>800
残念、タブペンが指すキャンパス部分に点が打たれてしまいました・・・
- 802 :名無しさん@お腹いっぱい。:2011/01/08(土) 05:01:33 ID:ddJYqX7B0
- マウスポインタの数を増やすソフトってのがいくつかあるんだけど
中にはSAIの統制が及ばないものがあるかもしれない
- 803 :名無しさん@お腹いっぱい。:2011/01/08(土) 05:09:06 ID:cLvYcFk00
- >>801
WindowsXP SP3 + 旧Bamboo(CTEシリーズ) + Bamboo最新Driver
という環境だけど、ペンタブでBlockinputが効く。
旧Driverだと効かない。
環境が書かれてないのでなんとも言えないけど、ペンタブのドライバーを更新してみては?
- 804 :名無しさん@お腹いっぱい。:2011/01/08(土) 09:16:08 ID:9/2+uYJH0
- 該当環境ならドライバの更新だな
そうでないなら、WM_LBUTTONDOWN(0x201) と WM_LBUTTONUP(0x202) を
PostMessage するとか。効かないかもしれないけど。
- 805 :名無しさん@お腹いっぱい。:2011/01/08(土) 12:31:33 ID:t0Dne9pX0
- >>799
これ流用すれ
ttp://www3.atwiki.jp/sai/pages/255.html
- 806 :名無しさん@お腹いっぱい。:2011/01/08(土) 12:57:26 ID:Ou/2Ef/N0
- わたしもUWSCでSaiを操作しようとしてSaiのMouse情報取得が独自なせいでUWSCでの操作がいろいろできず困ったわさ
- 807 :799:2011/01/08(土) 14:38:06 ID://XNXGBg0
- >>802-806
ありがとうございました!
>>805の中身を流用して、これを入れることでレイヤーの選択を実現できました
ControlGet, layCtrlHwnd,Hwnd,, sfl_window_class29, レイヤー
saiLayerClickX := xpos
saiLayerClickY := ypos
clickLParam := saiLayerClickX | (saiLayerClickY << 16)
SendMessage, 0x201, 0x0001, clickLParam ,, ahk_id %layCtrlHwnd%
SendMessage, 0x202, 0x0001, clickLParam ,, ahk_id %layCtrlHwnd%
プログラミング素人なんで、いまいちSendMessageコマンドが何をしているのか
理解できてないままなんですが…「0x201」とか「<< 16」とかどういう意味なのかさっぱり
- 808 :名無しさん@お腹いっぱい。:2011/01/08(土) 15:02:26 ID:9/2+uYJH0
- ウィンドウメッセージで、知っとくと奥の手として使える。
MouseClickDrag や MouseClick などのコマンドはマウスを動かしたりクリックしたりすることを
実際にマウスが動いたようにエミュレートする。
いっぽう、ウィンドウメッセージは対象のウィンドウ(ウィンドウ内の部品も子ウィンドウな)に
色々と通知してやる方法。まぁ偽のメッセージで騙しているようなもん。
今回だと「座標○○でボタン押下があったぞ」ってメッセージを直接送るもので、
実際にマウスカーソルが動く事はない。
メッセージにはそれぞれ約束事があって、今回のやつだと渡すパラメタに座標を含ませる必要があって
それを << の演算子とかで計算してから渡してやってる。
http://www.winapi-database.com/Message/WM/WM_LBUTTONDOWN.html
http://www.winapi-database.com/Message/WM/WM_LBUTTONUP.html
- 809 :名無しさん@お腹いっぱい。:2011/01/08(土) 15:03:00 ID:t0Dne9pX0
- ア、アンタの為に私が作った訳じゃないんだからね!
>>766
- 810 :名無しさん@お腹いっぱい。:2011/01/08(土) 15:23:55 ID://XNXGBg0
- >>808
勉強になります! 今までカーソルを直接動かす方法しか知らなかったのですごく便利そう
- 811 :名無しさん@お腹いっぱい。:2011/01/08(土) 19:57:40 ID:OsKZ1uDY0
- autohotokey_lで複数のahkファイルを起動させるのってどうやるの?
今、ショートカットに引数でスクリプトネーム記述してるんだけど2番目、3番目のファイル読み込んでくれない
- 812 :名無しさん@お腹いっぱい。:2011/01/08(土) 20:06:36 ID:OsKZ1uDY0
- すみません、
引数にAutoHotkey.iniを指定したらできました
- 813 :名無しさん@お腹いっぱい。:2011/01/08(土) 20:19:00 ID:9/2+uYJH0
- ショートカットのコマンド欄に以下のように記述しているなら間違い。
"〜\AutoHotkey.exe" script1.ahk script2.ahk script3.ahk ...
というか、ファイルリストをパラメタで指定したらそれらを全部開くってのは、
メディアプレイヤーとかの挙動ではありがちだけど、一般的かというと微妙。
面倒かもしれないけど起動させたいだけの exe を呼んでやらなきゃならない。
"〜\AutoHotkey.exe" script1.ahk
"〜\AutoHotkey.exe" script2.ahk
"〜\AutoHotkey.exe" script3.ahk
:
つまりショートカットじゃ実現できないんで、まとめて起動させる手法が必要
バッチでもいいし、AHKで
Ru, 〜\Script1.ahk
Ru, 〜\Script2.ahk
Ru, 〜\Script3.ahk
などとスクリプト書いてやってそいつを呼べばいい。
- 814 :名無しさん@お腹いっぱい。:2011/01/08(土) 20:19:59 ID:9/2+uYJH0
- うはw エスパー間違ってるw
というか exe リネームしなくてもいいんだぜ。
- 815 :名無しさん@お腹いっぱい。:2011/01/09(日) 01:26:17 ID:807ueA1k0
- ファイルの場所を変数に入力して
一番最後の実行ファイルの名前だけ取り出す
コマンドはありますか?
c:\AAA\BBB\ccc\ddd.exe
右から\マークの位置を調べてその文字数で取りだすしかないですか??
- 816 :名無しさん@お腹いっぱい。:2011/01/09(日) 01:41:26 ID:2vCkV7Kv0
- http://sites.google.com/site/autohotkeyjp/reference/commands/index_file
- 817 :名無しさん@お腹いっぱい。:2011/01/09(日) 01:57:57 ID:qdltjA6SP
- 話題を進めたいなら、リンクだけじゃなくて最低限の内容も貼ってくれよ。
http://blog-imgs-29.fc2.com/s/e/p/sepicaelab/20100117181156581.jpg
これの1N4007が保護になるってことか。
入出力の電位差が増えすぎると壊れるってことなのだろうか。
たしかに、たまに製品を分解すると、このダイオードが入ってるものを見るけど、
なぜ入れてるのか気にしたことなかった。
- 818 :名無しさん@お腹いっぱい。:2011/01/09(日) 02:00:18 ID:qdltjA6SP
- おっとすまん誤爆
- 819 :名無しさん@お腹いっぱい。:2011/01/09(日) 02:31:51 ID:807ueA1k0
- >816
SplitPathですね、ありがとうございます!!
- 820 :799:2011/01/09(日) 15:28:31 ID:VqTecAm80
- すみません、再度質問させてください
a::Lay_Select(0);一つ下のレイヤーを選択
s::Lay_Select(1);一つ上のレイヤーを選択
Lay_Select(x){
CoordMode, Pixel, Screen
WinGetPos, layX, layY, layW, layH, レイヤー ahk_class sfl_window_class;レイヤーウィンドウ位置取得
ControlGet, layCtrlHwnd,Hwnd,, sfl_window_class29, レイヤー
ControlGetPos, layCtrlX, layCtrlY, layCtrlW, layCtrlH, sfl_window_class29, レイヤー
PixelSearch, SellayX, SellayY, layX + layW - 28, layY + layCtrlY, layX + layW - 28, layY + layH -28, 0xdb5e6f , Variation, Fast ;レイヤーパレット右端ピクセルの色から選択中レイヤーを検索
if ErrorLevel = 1 ;PixelSearchのエラーレベル:0…完了 1…失敗
return
if ( x = 0 )
if SellayY - layY - layCtrlY + 44 < layCtrlH ;レイヤー下限位置判定
saiLayerClickY := SellayY - layY - layCtrlY + 44
else
return
else
if SellayY - layY - layCtrlY - 6 > 0 ;レイヤー上限位置判定
saiLayerClickY := SellayY - layY - layCtrlY - 6
else
return
saiLayerClickX := SellayX - layX - layCtrlX
clickLParam := saiLayerClickX | (saiLayerClickY << 16)
SendMessage, 0x201, 0x0001, clickLParam ,, ahk_id %layCtrlHwnd%
SendMessage, 0x202, 0x0001, clickLParam ,, ahk_id %layCtrlHwnd%
return
}
Saiで、aキーで一つ下、sキーで一つ上のレイヤーを選択するスクリプトを組んだのですが、
aとsを素早く交互に押すと、片方の選択処理が終わる前にもう片方の処理がカブってしまい
結果、同じレイヤーダブルクリックしてしまう現象が起きてしまいました
(レイヤーをダブルクリックするとレイヤー名変更ダイアログが出てしまう)
それを回避する方法をご教示いただけませんでしょうか…
- 821 :名無しさん@お腹いっぱい。:2011/01/09(日) 16:09:35 ID:y5oyy7BS0
- 甘えてんじゃねえぞ
- 822 :名無しさん@お腹いっぱい。:2011/01/09(日) 16:35:19 ID:Jr+5a3au0
- 処理が終わる前に、次の操作が始まってしまう。
それなら、処理が終わるまで待つといいよ。
- 823 :名無しさん@お腹いっぱい。:2011/01/09(日) 18:16:42 ID:tU6F1gI/0
- 流行らせるページのスクリプトで、コピーかカットの状態でクリップボードに格納するやつを
AHK_Lに移植しようとしてるんだけどできない
文字の長さは倍にしたし、型はStr以外全部UIntだし、何がダメなのか分からんちん
これどうしたら上手くいくんでしょうか?
ps=C:\test.txt
ClipboardSetFiles(ps)
- 824 :名無しさん@お腹いっぱい。:2011/01/09(日) 18:17:51 ID:tU6F1gI/0
- ;続き。filesをクリップボードにセットする関数。fMoveが0でコピー、1で移動
ClipboardSetFiles(files,fMove=0){
DllCall("OpenClipboard",UInt,0)
size:=20+StrLen(files)*2+4
hData:=DllCall("GlobalAlloc","UInt",0x2042,"UInt",size)
p:=DllCall("GlobalLock","UInt",hData,"UInt")
NumPut(20 ,p+0) ;offset
NumPut(0 ,p+4) ;pt.x
NumPut(0 ,p+8) ;pt.y
NumPut(0 ,p+12) ;fNC
NumPut(0 ,p+16) ;fWide
DllCall("RtlMoveMemory", "UInt",p+20,"Str",files,"UInt",StrLen(files)*2)
DllCall("EmptyClipboard")
DllCall("SetClipboardData","UInt",15,"UInt",hData)
DllCall("GlobalUnlock","UInt",hData)
hData:=DllCall("GlobalAlloc","UInt",0x2042,"UInt",4)
p:=DllCall("GlobalLock","UInt",hData,"UInt")
NumPut(fMove ? 2 : 1 , p+0)
pde := DllCall("RegisterClipboardFormat","Str","Preferred DropEffect")
DllCall("SetClipboardData","UInt",pde,"UInt",hData)
DllCall("GlobalUnlock","UInt",hData)
DllCall("CloseClipboard")
}
- 825 :名無しさん@お腹いっぱい。:2011/01/09(日) 18:51:02 ID:2vCkV7Kv0
- >>820
上で出てるとおり、イベント割り込みの関係だな。>>8 も参照のこと。
凡例(☆:開始、★:終了、→:処理、…:中断、×:破棄、・:バッファ中)
十分に期間が長い、あるいは単独押下のときは、普通に終了する。
A ☆→→→→★
Aの処理が終わる前にBが押されると、Bの処理が割り込み優先して実行される。
A ☆→→……………→→★
B ☆→→→→★
Aを素早く2連打したときは、同一ホットキーに割当て可能なスレッドはデフォルトで1個なので
処理完了以前に連打した場合は破棄される。
A1 ☆→→→→★
A2 ×
Critical を使うと割り込みが抑制され、処理はバッファされ後回しにできる。
A ☆→→→→★
B ・・・・・・☆→→→→★
>>823
アドレス・ハンドルにはPtr型を使う。とくに x64 なら必須
- 826 :名無しさん@お腹いっぱい。:2011/01/09(日) 20:50:24 ID:tU6F1gI/0
- >>825 さんくす!
ほぼ全パターン変えて試してみたけどできなかったから
潔く諦めて外部ツールに処理してもらうことにしたぜ! ..orz
- 827 :名無しさん@お腹いっぱい。:2011/01/09(日) 21:03:26 ID:OusmzoXr0
- >>826
関数の開始時に、グローバル変数で、適当なフラグをたてて、
関数の終わりで、フラグを寝かす。
関数開始時に、そのフラグがたってるかチェック。
立ってたら、フラグが変化するまで処理を中断すればいいんじゃない?
俺は普段そうやってるけど。
- 828 :名無しさん@お腹いっぱい。:2011/01/09(日) 21:15:29 ID:DAkQQGwM0
- >>826はその人と違う人だよw
- 829 :名無しさん@お腹いっぱい。:2011/01/09(日) 21:20:45 ID:OusmzoXr0
- あ、ほんとだw
- 830 :名無しさん@お腹いっぱい。:2011/01/09(日) 21:36:51 ID:2vCkV7Kv0
- >>826=823
そういえば、クリップボードにセットするデータはヌル文字で区切って、
最後にヌル文字を二つ並べるって約束らしいけどそれやってるかい?
★はヌル文字で、Unicodeだと 0x00 0x00 の2バイトになる。
ファイル文字列★ファイル文字列★・・・ファイル文字列★★
この件だと >>332 が参考になると思う。
- 831 :820:2011/01/09(日) 22:09:26 ID:VqTecAm80
- >>825
ありがとうございます! ただ、Criticalを入れても改善できませんでした
>>820のスクリプトのSendMessage直前に
tooltip, %clickLParam%
を入れて監視してみたんですが、clickLParamの数値は正しく変更されてるのに
クリックするポイントは一つ前の処理と同じになってしまうみたいです
これはどうなってるんでしょうか…?
処理がかぶっての現象、って認識から間違ってるのかも
すみません、プログラミング素人が手探りでやってるので
トンチンカンな事言ってるかもしれません ご容赦願います…
- 832 :名無しさん@お腹いっぱい。:2011/01/09(日) 23:56:46 ID:807ueA1k0
- すいません、改行ってどうすればいいか教えて下さい。
/nか::か\nか'nかと思ったんですがうまくいきません。
Gui, Add, Text, x20 y125 w350 h20 , 設定1(ここで改行したい)*注意・・・・
- 833 :名無しさん@お腹いっぱい。:2011/01/10(月) 00:02:39 ID:jSs3cUq10
- http://sites.google.com/site/autohotkeyjp/reference/Scripts#escape
- 834 :名無しさん@お腹いっぱい。:2011/01/10(月) 00:04:25 ID:OusmzoXr0
- >>832
Gui, Add, Text, x20 y125 w350 h20 , 設定1`n*注意・・・・
>>833
気持ちはわかるが、正解をとっとと書いたほうが早い場合もある
- 835 :832:2011/01/10(月) 00:14:15 ID:nVHB/T9/0
- 有難うございます ' じゃなくて ` だったんですね・・・。
- 836 :名無しさん@お腹いっぱい。:2011/01/10(月) 01:17:48 ID:nVHB/T9/0
- こんなの作ったんですが
3行目のvOutの所でエラーが出ます。何が違っているのでしょうか???
Gosub,Gui
Gui:
Gui, Add, Edit, x20 y80 w340 h20 vOut,%Edit1%
Gui, Add, Button, x370 y80 w90 h20 gSansyou,参照...
Gui, Add, Button, x260 y230 w100 h30 gSettei,設定
Gui, Add, Button, x370 y230 w100 h30 gKyanseru, キャンセル
Gui, Show, x130 y90 h280 w480, Show
Return
Sansyou:
FileSelectFile, OutputVar1 , 3, %A_ProgramFiles%, 参照, *.exe
Edit1 = %OutputVar1%
GUI, Destroy
Gosub, Gui
Return
Settei:
Gui,Submit,NoHide
IfNotExist, %Out%
MsgBox, %Out%は存在しないディレクトリか存在しないファイルです。
Return
MsgBox,%Out%は存在します
ExitApp
Kyanseru:
ExitApp
GuiClose:
ExitApp
- 837 :820:2011/01/10(月) 01:29:39 ID:a+x/+a0P0
- すみません、自己解決しました…
単純なミスです
下のレイヤーを選択する際にクリックするポイントと、上のレイヤーを選択する際のポイントが
接近しすぎていたせいで、ダブルクリックとして判断されていただけでした
片方のレイヤー選択の際、クリックするポイントのX座標を13ドットすらす事で解決できました
お騒がせしました アドバイスださった方々、ありがとうございました
- 838 :名無しさん@お腹いっぱい。:2011/01/10(月) 01:45:17 ID:8eLAymIs0
- >>836
変数内の値を照会するばあいは %〜% とする。
コマンド等で変数を指定する場合は、そのまま書く
- 839 :名無しさん@お腹いっぱい。:2011/01/10(月) 02:07:25 ID:nVHB/T9/0
- 3行目をv%Out%にしてみましたが
MsgBox, %Out%は存在しないディレクトリか存在しないファイルです。
の部分で「は存在しないディレクトリか存在しないファイルです。」と表示されたので
Outにはなんの値も入ってないようでしたOTL
http://sites.google.com/site/autohotkeyjp/reference/commands/Gui_Add_Edit
をみると
「Vで変数名を指定し、 GUI, Submitを実行することで、入力内容を取得できる。」
とあるので
3行目はvOutですよね・・・?
うーん・・・
- 840 :名無しさん@お腹いっぱい。:2011/01/10(月) 02:49:15 ID:nVHB/T9/0
- エラーメッセージと翻訳は以下ですOTL
The same variable cannot be used for more than one control.
The current thread will exit. Specifically: vOut
同じ変数が、複数の支配のために使われることができない。
現在のスレッドを表示する。具体的には:vOut
- 841 :名無しさん@お腹いっぱい。:2011/01/10(月) 04:10:27 ID:L6XvalM+0
- >>840
Gosubの後も実行されるから
3行目(以降)が都合2回実行されるんだよ。
一番簡単に修正するには2行目にReturnを入れる。
- 842 :名無しさん@お腹いっぱい。:2011/01/10(月) 04:45:37 ID:nVHB/T9/0
- 有難うございます!!!
できましたぁぁぁぁぁぁx!!!
- 843 :名無しさん@お腹いっぱい。:2011/01/10(月) 05:56:27 ID:nVHB/T9/0
- たびたびすいません
basyo=C:\Program Files\Adobe\Photoshop Elements 2\PhotoshopElements.exe
IfInString, %basyo%,Photoshop,
{
msgbox %basyo%
}
ってやるとエラー出ます。
The following variable name contains an illegal character:
"C:\Program Files\Adobe\Photoshop Elements 2\PhotoshopElements.exe"
文字が不正ですっていうんです・・・。
文字の問題なら
もしかしてInstaller for AutoHotkey_Lを使った方がいいのかと
思って公式からDownload→Installer for AutoHotkey_Lをクリックすると
「これは報告されている安全でない Web サイトです。
www.autohotkey.net 」ってなります。
もうどうしたらいいんですかOTL
- 844 :名無しさん@お腹いっぱい。:2011/01/10(月) 06:50:19 ID:QCFDy3Io0
- あきらめたらいいんじゃないかな
- 845 :名無しさん@お腹いっぱい。:2011/01/10(月) 06:58:06 ID:nVHB/T9/0
- >>844
そうですね・・・別のう回路をかんがえますかな
- 846 :名無しさん@お腹いっぱい。:2011/01/10(月) 09:30:45 ID:8eLAymIs0
- >>845
>>838
- 847 :名無しさん@お腹いっぱい。:2011/01/10(月) 15:42:15 ID:b3oEGb/I0
- wheelredirect系で一番まともなのどれだよ。
大体Firefoxとかでスクロールできなくなるじゃねーか
- 848 :843:2011/01/10(月) 15:53:32 ID:nVHB/T9/0
- >>836を試していたんですがうまくいかなかったんですが
basyo=C:\Program Files\Adobe\Photoshop Elements 2\PhotoshopElements.exe
IfInString, basyo,Photoshop,
{
msgbox %basyo%
}
だと駄目で
basyo=C:\Program Files\Adobe\Photoshop Elements 2\PhotoshopElements.exe
IfInString, basyo,Photoshop,msgbox %basyo%
ってやるとうまくいく事が分かりました。
どうもお騒がせしました。
msgbox部分に沢山命令を入れたい場合はgosubいれといた方がいいんですか?
- 849 :843:2011/01/10(月) 15:56:17 ID:nVHB/T9/0
- ごめんなさい自己解決です
basyo=C:\Program Files\Adobe\Photoshop Elements 2\PhotoshopElements.exe
IfInString, basyo,Photoshop
{
msgbox %basyo%
}
だとうまくいきました。
(Photoshopの後に「,」がつくかつかないか)
本当にお騒がせしました
- 850 :名無しさん@お腹いっぱい。:2011/01/10(月) 15:58:16 ID:8eLAymIs0
- 最後のカンマが余計
ex) MsgBox, Hoge,
- 851 :名無しさん@お腹いっぱい。:2011/01/10(月) 18:31:57 ID:0Vce8mMl0
- デスクトップ上の特定の部分を30分おきに
自動でマウスの右か左でクリックしてくれるソフトを探してるんですが
このソフトはそれが出来るソフトですか?
vista32bit
- 852 :名無しさん@お腹いっぱい。:2011/01/10(月) 18:41:44 ID:krbIAaCZ0
- 出来ます
- 853 :名無しさん@お腹いっぱい。:2011/01/10(月) 18:51:47 ID:i4cTF7Dr0
- できますよ
- 854 :名無しさん@お腹いっぱい。:2011/01/10(月) 19:07:53 ID:0Vce8mMl0
- 出来ますか?
どういうふうにやれば良いんでしょうか?
全くの初心者です
- 855 :名無しさん@お腹いっぱい。:2011/01/10(月) 19:18:14 ID:MEr2Yo/90
- a
- 856 :名無しさん@お腹いっぱい。:2011/01/10(月) 19:18:28 ID:nVHB/T9/0
- 初心者ならHiMacroExとかの方がいいと思うよ。
- 857 :名無しさん@お腹いっぱい。:2011/01/10(月) 21:03:19 ID:b3oEGb/I0
- ウィンドウシェードやりたくてwinmoveでリサイズしても、最低ウィンドウサイズがあるやつは小さくならないんだけど、
なんとかならねー?
- 858 :名無しさん@お腹いっぱい。:2011/01/10(月) 21:52:14 ID:0Vce8mMl0
- >>856
それでも出来る上にそっちの方が簡単ならそっちを使います
- 859 :名無しさん@お腹いっぱい。:2011/01/10(月) 21:54:18 ID:qABfFRFk0
- なんでこんなスレになっちゃったんだろ
- 860 :名無しさん@お腹いっぱい。:2011/01/10(月) 22:06:16 ID:oDe3YBz00
- ttp://www.easystep.jp/getImage?planid=31&vc=1&type=0&format=png
これみりゃわかるんじゃねーのー
- 861 :名無しさん@お腹いっぱい。:2011/01/10(月) 22:12:44 ID:8eLAymIs0
- シェード中は元窓は隠してGUIに置き換えちまうって手があるぞ。
- 862 :名無しさん@お腹いっぱい。:2011/01/10(月) 22:44:46 ID:CciHolGH0
- ID:w8CmlM6s0
ID:b3oEGb/I0
こういうのは本当レスする気なくなるわ
- 863 :名無しさん@お腹いっぱい。:2011/01/10(月) 23:29:56 ID:b3oEGb/I0
- >>861
なるほど。やってみる。
あと、Windows 7のメモ帳のタイトルバーがMouseGesture.ahkのMG_HitTest()でnowhereになるのはなんで?
WheelRedirectはマウ筋使えばなんとかなった。それだけのために使うのもあれだが。
- 864 :名無しさん@お腹いっぱい。:2011/01/10(月) 23:47:01 ID:b3oEGb/I0
- あ、単にマルチディスプレイで対象ウィンドウのx座標がマイナスだと取れないのか。>MG_HitTest
駄目じゃん。。。
- 865 :名無しさん@お腹いっぱい。:2011/01/11(火) 06:19:02 ID:krDj6XF00
- ツイッターでやれ
- 866 :名無しさん@お腹いっぱい。:2011/01/11(火) 13:30:46 ID:RYT4wLHe0
- ironAHKのスクリプトはwindows用バイナリとしてコンパイルできるのでしょうか?
http://www.ironahk.net/の
Scripts can be compiled into standalone executables
というところのリンクをクリックしたら404でした。
windowsでもlinuxでも同じスクリプトでキーフックできそうなので興味を持ったのですが
バイナリ化して実際に使っている方はいますか?
- 867 :名無しさん@お腹いっぱい。:2011/01/11(火) 13:45:25 ID:r1fS31dR0
- IronAHK.exe /out Example.exe Example.ahk
- 868 :名無しさん@お腹いっぱい。:2011/01/11(火) 17:34:11 ID:I+5MuC+W0
- 普段AutoHotKeyを使っていて、MouseGesture2というのを使ってみましたが、
起動してしばらくは上手く動作するのですが、気づくとMouseGesture2での動作がきかなくなっています。
何か疑う所はないでしょうか?
やりたいことは、マウスを画面端に持って行くと特定のウインドウをアクティブにするといったことです。
今のところ初期設定の他にこれだけを設定しています。
・「ジェスチャ定義」で
定義名「画面下中」 EB2_(画面下端に接触(中央)) を設定
同様に「画面下右」「画面下左」「画面上中」なども
画面下端に接触(右)、画面下端に接触(左)などように設定
・「動作割り当て」で
「画面下中」に対して、条件Default、
動作は、
WinActivate, ahk_class Chrome_WidgetWin_0
にしてGoogle Chromeのウインドウをアクティブに
同様に、 「画面下右」「画面下左」「画面上中」などもそれぞれ他のアプリを設定
MouseGesture2を再起動したら、同様に設定を保存するとまた動作するようになります
- 869 :名無しさん@お腹いっぱい。:2011/01/11(火) 19:04:35 ID:9jUeDIFU0
- どっかで動作が詰まってるんだと思う。
fileappendでログを吐き出させて、
settimerで60秒ごとに生死判別してみて、
死んでる場所を特定するしかないだろう。
- 870 :名無しさん@お腹いっぱい。:2011/01/11(火) 19:30:51 ID:kbvoOLHDi
- >settimer
スレッドが停滞するような処理記述してたら追い打ちだけどな
- 871 :名無しさん@お腹いっぱい。:2011/01/11(火) 20:31:09 ID:VdCKLNdK0
- 相性の問題か、特定のアプリと一緒に使うと
なぜかマウス関連の動作が効かなくなるってのはある
- 872 :名無しさん@お腹いっぱい。:2011/01/11(火) 20:49:01 ID:vTyZXZLE0
- WinActivateを特定のウィンドウやハング寸前のウィンドウに対して行うと
AHKのスレッドが止まっちゃうことがある
- 873 :名無しさん@お腹いっぱい。:2011/01/11(火) 21:32:16 ID:kbvoOLHDi
- そうなると、MaxThredsPerHotkey の関係で
スクリプトを再起動するまで動かないままになるわな
WinActivate って色々な方法でアクティブ化するってあうけど、
お行儀が悪い方法(AttachThreadInput + SetFocus とか)やってんのかね。
- 874 :868:2011/01/11(火) 23:23:21 ID:I+5MuC+W0
- ありがとうございます
いろいろ原因は考えられそうですね
>>871-873
なるほど、それはありそうです
いくつかアクティブにするウインドウの中で、MouseGesture2を使う前からハングしやすいものがあったはずなので
ちょっとWinActivateにするアプリを絞ってみてみます
>>869
こういうときのために他のスクリプト言語にもあるようなlog4なんたらみたいなloggingライブラリがあれば楽そうですね
- 875 :名無しさん@お腹いっぱい。:2011/01/11(火) 23:52:35 ID:r1fS31dR0
- ロガーはこんな感じでやってる。全部使い方は同じ。
ログ自体出したくない時はロガーインスタンス自体作らない。
Logger := Logger_ConsoleImpl()
; Logger := Logger_Default()
; Logger := Logger_FileImpl("hoge.log")
Loop, 10
Logger.WriteLine("ほげほげ - " A_Index)
MsgBox, Click To Close
; ---- Logger.ahk ----
Logger_ConsoleImpl() {
Return DllCall("AllocConsole") ? FileOpen(DllCall("GetStdHandle", "int", -11, "ptr"), "h `n") :
}
Logger_FileImpl(logFile, append=true) {
Return FileOpen(logFile, append ? "W" : "A")
}
Logger_Default() {
Return Object("WriteLine", "Logger_RedirectToOutputDebug")
}
Logger_RedirectToOutputDebug(text) {
OutputDebug, %text%`n
}
- 876 :868:2011/01/12(水) 01:14:01 ID:ZtXTpZDM0
- >>875
あれっそんな記法できたっけ、とエラー出て思ったんだけど
テンプレにあるAutoHotKey_Lのobjectsの記法かな?
AutoHotKeyは浦島太郎なんだけど、今はもしかしてAutoHotKey_Lが主流?
- 877 :868:2011/01/12(水) 01:15:07 ID:ZtXTpZDM0
- テンプレ>>9に書いてあった。スマソ
よく読むわ。
- 878 :名無しさん@お腹いっぱい。:2011/01/14(金) 23:20:41 ID:y9buHMlD0
- 1.0.92.00 - January 13, 2011
Added support for compound assignments with objects, such as x.y += z.
Improved IniWrite in Unicode builds to prevent an empty line from appearing at the top of each new file.
Improved the parser to be more permissive about what can follow {/}/Else, especially when combined.
---
ふむ。やっぱ楽なのはいいな。
obj := Object("int", 100, "str", "abc")
obj.int += 5
obj.str .= "あいう"
MsgBox, % obj.int "`n" obj.str
- 879 :名無しさん@お腹いっぱい。:2011/01/14(金) 23:38:12 ID:N3VWm+qrP
- あれ、この記述今まではできなかったんだ
気付かなかった
- 880 :名無しさん@お腹いっぱい。:2011/01/16(日) 10:11:23 ID:QD3bdErO0
- ロードマップによると次のv1.0.93.xxで1.0系の機能追加は打ち止めってことになるんかな。
このペースだと2月か3月くらいには出そうな感じだ。
1.1系はまだ仕様が煮詰まって無いみたいだし夏以降かなぁ。
今まで通り、出来そうな所から実装で段階リリースになるかもしれんけど。
個人的にはこの方向性は歓迎なんだけど、
関数型になると途端に訳分からなくなる人って居るからなぁ
でもブラックボックスでも使えるライブラリが作りやすい環境にはなると思う。
- 881 :名無しさん@お腹いっぱい。:2011/01/16(日) 11:19:20 ID:OW3MNSpvP
- てか関数型になったらNilScriptどうすんの
そのためだけに作ったそうじゃん
- 882 :名無しさん@お腹いっぱい。:2011/01/16(日) 17:13:16 ID:oRQ2+GBW0
- >>3を参考にしてジョイスティックのボタン13を短く二回押しした時にCtrl+Cを送るコマンドを作ってみました。
~Joy13::
SetTimer,Joy13_CheckCnt, 200
Joy13_cnt += 1
if(Joy13_cnt == 2)
{
Send,^c
}
return
Joy13_CheckCnt:
Hotkey,~Joy13, Off
SetTimer,Joy13_CheckCnt, Off
Joy13_cnt = 0
Hotkey,~Joy13, On
return
ここまではうまくいったのですが、Ctrl+Cを送る条件の「ボタン13を2回押し」の条件を
「ボタン1を押している最中にボタン13を2回押し」にしたいのですが、条件の追加がどうも上手くいきません
かなり初歩的な質問なのですが、アドバイスいただければ幸いで
- 883 :名無しさん@お腹いっぱい。:2011/01/16(日) 17:28:26 ID:BzDrWQLP0
- 関数型で分からなくなる人がって言うから
いきなり関数型言語になるのか!と思ったら
全然違ってた
まぎらわしいよー
- 884 :名無しさん@お腹いっぱい。:2011/01/16(日) 17:37:18 ID:4hZDJYRx0
- オブジェクト指向を関数型って呼び始めたアホは誰だよw
- 885 :名無しさん@お腹いっぱい。:2011/01/16(日) 17:49:23 ID:MqbBn6UVP
- AutoHotkey_L=AutoHotkey LISP
- 886 :名無しさん@お腹いっぱい。:2011/01/16(日) 18:11:15 ID:QD3bdErO0
- >>882
GetKeyStateで判断すりゃいいんじゃないか。
ちなみに JoyNN はどうせボタンイベント捨てられないんで ~ つけても付けなくても同じ気がするが。
AHKL使い始めてからというもの、こういう書き方はもうしなくなったなぁ。
今はこんな感じでやってる。DoubleClick() の名前はアレだが一応汎用。
#If DoubleClick() && GetKeyState("Joy1")
Joy13::Send, ^c
DoubleClick() {
static LastTime:=Object(), doubleClickTime := DllCall("GetDoubleClickTime", "UInt"), lastX:=-9999, lastY:=-9999
CoordMode, Mouse, Screen
If InStr(A_ThisHotkey, "Button")
MouseGetPos, x, y
Else
x := y := 0
flag := ( A_TickCount - (LastTime.HasKey(A_ThisHotkey) ? LastTime[A_ThisHotkey] : 0) ) < doubleClickTime
&& Abs(x-lastX) < 10 && Abs(y-lastY) < 10
LastTime[A_ThisHotkey]:=A_TickCount, lastX:=x, lastY:=y
Return flag
}
>>883
紛らわしくてすまんね。
コマンドはなるべく廃止の方向で、関数に置き換えられるって意味で書いた。
- 887 :名無しさん@お腹いっぱい。:2011/01/16(日) 18:15:08 ID:fD7YkuxZ0
- その言い訳はちょっと無理がある
- 888 :名無しさん@お腹いっぱい。:2011/01/16(日) 19:00:35 ID:oRQ2+GBW0
- >>886
アドバイスありがとうございます
お陰でなんとか解決できました
- 889 :名無しさん@お腹いっぱい。:2011/01/17(月) 02:35:31 ID:K7DTttRU0
- ノートPCにPgUp, Homeとかが欲しくなる
↓
コンビネーションも使えるAHKでリマップすることに
↓
最前面表示のトグルとか便利だから組み込みコマンドを使い始める
↓
InputBoxじゃ不満になってGUIに手を出しAHKに翻弄される
↓
一通りAHKを理解し、小物のexeを作りまくる
↓
常駐ソフトをすべてAHKで代替するべくSendMessageやDllCallを使い始める
↓
オブジェクトを使いこなすためにJavaScriptを学び始める ←今ここ
- 890 :名無しさん@お腹いっぱい。:2011/01/17(月) 16:59:42 ID:hEfcEtyV0
- ↓
情報を求めて2chのこのスレに常駐
↓
知ったばかりの知識をひけらかしたくなり書き込み
↓
くだらない質問に説教
↓
無職 ←今ここ
- 891 :名無しさん@お腹いっぱい。:2011/01/17(月) 17:22:01 ID:NnfYvIk20
- AHKを使えるようになると、周辺機器のユーティリティのUIがクソで不便だとか、
ソフトの設定の煩雑さやダイアログが余計だとか、自動運転とか、
このあたりは自分で工夫さえすれば、どうにでも料理できるね。
最初はマウ筋の代替で使い始めたが、AHKのおかげで、
PCの活用の幅がものすごい広がった。
- 892 :名無しさん@お腹いっぱい。:2011/01/17(月) 17:24:35 ID:/v5iJjJJ0
- TeamViewerっていうリモートデスクトップソフトの切断後に表示される「よければライセンスかってね!」ってダイアログをイベントフックして自動で消してる
ほんとAHKは便利
Avira AntiVirの広告ダイアログも追加しようかな
- 893 :名無しさん@お腹いっぱい。:2011/01/17(月) 17:36:58 ID:dn0hwoeC0
- まぁ"auto"は automation から来てるからな。
ホットキー(キーアサイン)機能だけみるとやや貧弱だが、
キー発行と自動化を組み合わせると他のツール(の単独利用)じゃ出来ないようなことも楽々。
- 894 :名無しさん@お腹いっぱい。:2011/01/17(月) 18:02:54 ID:NnfYvIk20
- >>892
avira_close:
Process, Exist,avnotify.exe
pid=%errorlevel%
if pid!=0
{
WinClose,ahk_pid %pid%
WinWaitClose,ahk_pid %pid%,,1
closeflag=%errorlevel%
if closeflag=1
msg=%A_Now%,PID=%pid%,closeflag=%closeflag%(広告プロセスを検出したがウインドウ出現前。)
if closeflag=0
msg=%A_Now%,PID=%pid%,closeflag=%closeflag%(広告表示ウインドウのクローズに成功)
file=%A_Scriptdir%\avira_close_log.txt
fileappend,%msg%`n,%file%
}
1年ほど前に使ってたやつで、これを1秒のsettimerでまわして、とりあえず快適に動いてた。
広告が出ても1秒以内に消える。
細かい例外処理は未検証、aviraをやめてしまったので、今もこれで動くかはわからないけど。
- 895 :名無しさん@お腹いっぱい。:2011/01/18(火) 16:32:08 ID:dqw59mjL0
- >>885の書き込みを見て思いついたのですが、
gaucheとautohotkey_lを連携できるでしょうか。
キーフックと出力はautohotkey_lで行って、
その間の処理はgaucheに行わせたいです。
言い換えますと、押されたキー名とその時間をgaucheに送って、
gaucheの側で処理し、
最終的にはそれをもとにautohotkey_lの側でキーストロークを発行したり
guiを作成したいのです。
↓のような形になると思いますが、
gaucheで処理をしている間、
これではスクリプトが待ってくれない気もします。。
;gaucheと連携させる
with_gauche = 1
#if (with_gauche)
a::
b::
c::
rslt := to_gauche(a_thishotkey,a_tickcount)
ahkl_output(rslt)
return
- 896 :名無しさん@お腹いっぱい。:2011/01/18(火) 21:38:12 ID:hgwLVvE10
- 1.0.92.01 - January 18, 2011
Changed: FileCreateDir now sets A_LastError.
Fixed: GuiControl() or similar was sometimes misinterpreted as a command.
>>895
毎回プロセス立ち上げるとか、CGIとして常駐させてAHKとはhttpで話すとか色々あるとおもうけど。
- 897 :名無しさん@お腹いっぱい。:2011/01/18(火) 21:53:21 ID:F7EHfqzXP
- AHKとは離れるかもしれないけど、soundbeepコマンドで
ブザーを鳴らすデバイスが、XPとVista以降で違うんだね。
XPまでは、soundbeepを使うとマザーボードに実装されているブザーが鳴るんだけど、
Vista/Win7は、オーディオ出力からビープ音が出力されて、本体は黙ったまま。
AHKで自動運転させて、異常があったらブザーで通知する使い方をしてたのだけど、
OS変えてから、内蔵ブザーデバイスが使えなくなってしまった。
国内海外でいろいろ検索したけど、
「Vista以降でAUDIO出力からブザーを鳴らさなくする方法」は
沢山出てくるが、本体実装のブザーを鳴らす方法については見つからず。
ブザーを鳴らす回避策、ないでしょうか。
外部ツールを叩く方法でも構いません。
- 898 :名無しさん@お腹いっぱい。:2011/01/18(火) 23:02:21 ID:BwrUpPWb0
- >>895
gaucheってdll呼べないの?
AutoHotKeyを外部アプリから組み込めるdllがあったように思う
- 899 :名無しさん@お腹いっぱい。:2011/01/19(水) 00:32:40 ID:wauIlVZb0
- 指定したファイルのアクセスを監視できないでしょうか?
別アプリからのファイルアクセスがあった瞬間で分岐したいのですが
ヒントだけでもお願いします。
- 900 :名無しさん@お腹いっぱい。:2011/01/19(水) 00:40:24 ID:Zu6yX0cNP
- >>899
書き込みが伴うのかとか、最初にファイルが存在しなくてもよいのかとか、
もっと具体的に書かないとアドバイスのしようがない。
- 901 :名無しさん@お腹いっぱい。:2011/01/19(水) 00:43:28 ID:mIPQvZlp0
- 1.0.92.02 - January 19, 2011
Fixed a memory leak which occurred when the return value of an object invocation or built-in function was not used, such as file.ReadLine() or SubStr(x,y,z) alone on a line.
Replaced the fix from v1.0.92.01 with a better fix, which also fixes k::MsgBox(),x:=y and doesn't break if().
- 902 :899:2011/01/19(水) 04:47:51 ID:uBpCdQYM0
- >>900
説明不足でした。
既に存在しているファイルへの読み込みのみのアクセスで書き込みは伴いません。
- 903 :名無しさん@お腹いっぱい。:2011/01/19(水) 08:39:46 ID:5Sh7vnpCi
- さて、そろそろ次スレのことでも考える時期か。
本家は事実上の開発停止。Lexkosが一派が本流になる。
ってところか。
賛否両論あると思うが、
個人的にはAHKLのユニコード版をこのスレのオススメに
したほうがいいんじゃないかと思う。
インストーラも整備されたし、ダメ文字とかの制約も無いし。
テンプレ読むような初めて触る人にとって余計なことをしないで済む。
- 904 :名無しさん@お腹いっぱい。:2011/01/19(水) 09:30:34 ID:Ur+1btCB0
- 本家用のスクリプトが使えません><
てのがさらに増える
- 905 :名無しさん@お腹いっぱい。:2011/01/19(水) 09:56:59 ID:5Sh7vnpCi
- そうなるのは目に見えてるけど、
中身を見たりいじったりしない人は本家を使い続ければいいだけかと。
「オフィス2000使ってます、新しいオフィスの文書が開けません」
ってのと同じで、その環境でクローズしてて問題ないなら
そこにとどまればいいだけのことかと。
別に排除しようってわけじゃない。
- 906 :名無しさん@お腹いっぱい。:2011/01/19(水) 10:11:31 ID:Ur+1btCB0
- >本家使え
このスレに書かれてるスクリプトが動きません><
てのが返って来る
テンプレに注意点を書いてても
こういう連中は見ないだろうしね
- 907 :名無しさん@お腹いっぱい。:2011/01/19(水) 10:28:27 ID:mIPQvZlp0
- そのためのテンプレで、アンカーで解答、でいいでしょ。
- 908 :名無しさん@お腹いっぱい。:2011/01/19(水) 12:09:01 ID:3mT5lwCQ0
- >>903の意見に賛成するよ。
本家対策をいろいろとテンプレに書くよりも
unicode版だけを薦めて、
必要に応じてunicodeへの書き換えの要点を示せばいいだろうから。
- 909 :名無しさん@お腹いっぱい。:2011/01/19(水) 12:44:19 ID:GyThNXjM0
- >>2を変えてみた。>>1に "L" 使えって書いておくのもいいかもしれない。
オリジナルである、本家 "AutoHotKey" の開発は終了しています。
現在は、そこからフォークした "AutoHotkey_L" が主流になりつつあります。
スクリプトについては、それが本家AHKで動くものであるか、Lであるのか、注意してください。
AutoHotkey_L (内部Unicode、64bitバイナリ、オブジェクト指向、COM対応など)
http://www.autohotkey.net/~Lexikos/AutoHotkey_L/
オリジナルのAHKとの変更点多数。新しい仕様や互換性についてはドキュメントを良く読むこと。
→http://www.autohotkey.net/~Lexikos/AutoHotkey_L/docs/
→http://sites.google.com/site/autohotkeyjp/reference/AutoHotkey_L/index
■派生版
ironahk (.NET製、クロスプラットフォーム)
……
- 910 :名無しさん@お腹いっぱい。:2011/01/19(水) 16:37:54 ID:YEFK6r6v0
- >>903
本家やこのスレの流れ知らずにネットでちょっと検索して便利なものがあるな、と思って使い始めると
AHKLじゃなくて本家の方を使い始めて苦労してた俺のような人もいるので、
テンプレに >>909みたいに"L"使えって書いてくださると
助かる人がいるとおもう・・・
- 911 :名無しさん@お腹いっぱい。:2011/01/19(水) 17:23:59 ID:3xgceX6u0
- >>903,910 に同意。
どっかで AHK 本家作者の開発終了宣言があったよね。
本家の ChangeLog にも、AHKL を参照せよとあるし。
http://www.autohotkey.com/changelog/
- 912 :名無しさん@お腹いっぱい。:2011/01/22(土) 16:23:47 ID:20A6dLpk0
- 過疎り気味なのでネタでも
AHKLならではの利用サンプル1
■ 標準入出力
; ---- stdout.ahk ----
stdout := FileOpen(DllCall("GetStdHandle", "int", -11, "ptr"), "h `n")
Loop, 10
stdout.WriteLine(A_Index . "行目")
; ---- stdin.ahk ----
stdin := FileOpen(DllCall("GetStdHandle", "int", -10, "ptr"), "h `n")
While !stdin.AtEOF()
q .= stdin.ReadLine() ; ここを改変すれば行毎の処理が可能
MsgBox, % q
---------------------
実行例) スクリプトを配置したディレクトリでコマンドプロンプト以下のように実行。
> set ahk="C:\Program Files\AutoHotkey\AutoHotkey.exe"
> %ahk% stdout.ahk | %ahk% stdin.ahk
■ メニューにアイコン表示
Loop, 3 {
Menu, M1, Add, 項目%A_Index%, Dummy
Menu, M1, Icon, 項目%A_Index%, %A_WinDir%\Explorer.exe, %A_Index% ; , 32|64
}
Menu, M1, Show
Dummy:
※ コメントを外して 32 や 64 を指定すれば大きいアイコンも可
- 913 :名無しさん@お腹いっぱい。:2011/01/22(土) 16:24:45 ID:20A6dLpk0
- AHKLならではの利用サンプル2
■ エクスプローラで選択中のファイルのフルパスをコピー
COMをりようしているので、特殊フォルダがあってもOK
SetTitleMatchMode, RegEx
#IfWinActive, ahk_class CabinetWClass|ExploreWClass
#c::
FileList:=
For window in ComObjCreate("Shell.Application").Windows
If ( window.hwnd == WinExist() ){
For item in window.document.SelectedItems
FileList .= item.path "`n"
Break
}
Clipboard:=FileList, window:=item:=
Return
■ アクティブアプリのあるフォルダを開く
OpenProcessでやる方法よりベターかも。
#vkDCsc07D:: ; Win + \
WinGet, pid, PID, A
For process in ComObjGet("winmgmts:").ExecQuery("SELECT * FROM Win32_Process WHERE ProcessId='" pid "'")
Run, % "explorer.exe /select`,""" . (process.ExecutablePath) . """"
process =
Return
- 914 :名無しさん@お腹いっぱい。:2011/01/22(土) 16:26:15 ID:20A6dLpk0
- AHKLならではの利用サンプル3
■ IEの自動運転
ie := ComObjCreate("InternetExplorer.Application")
ie.Visible := True
ie.Navigate("http://www.google.co.jp/")
While ie.Busy()
Sleep, 50
MsgBox, 読み込み完了`n`nフォームに文字を入力します
form := ie.document.GetElementsByTagName("FORM")[0]
form.q.value := "AutoHotkey"
MsgBox, フォームを送信します
form.submit()
While ie.Busy()
Sleep, 50
MsgBox, 検索結果が表示されました`n`n終わります
form:=""
ie.Quit() ; 終了させないと iexplore のプロセスが残るので注意
■ AutoHotkey.dllを利用してマルチスレッド
COMを介して利用するので AHKL でも利用可。
事前に AutoHotkey.dll をDLして、モジュール登録をやっておく必要がある。
(DLLのあるディレクトリで「regsvr32.exe AutoHotkey.dll」を実行)
code := "#NoTrayIcon`nMsgBox, Thread #"
Loop, 10 {
ComObjCreate("AutoHotkey.Script").AhkTextDll(code . A_Index)
Sleep, 100
}
以上
- 915 :名無しさん@お腹いっぱい。:2011/01/22(土) 17:02:56 ID:7stRKw2+0
- SendMessageとかみんなどうやって調べてるの?
- 916 :名無しさん@お腹いっぱい。:2011/01/22(土) 18:55:28 ID:hyw7mxp30
- >>915
リソースハッカー根気がないと発見できない作業もある
firefox やoperaの検索ウインドウの位置をcontrolGetPos で汎用的に
取得したいんですがこれもリソースハッカーで出来ますか?
- 917 :名無しさん@お腹いっぱい。:2011/01/23(日) 00:36:49 ID:WXwFVRZD0
- オブジェクト使えない身にはサンプルはありがたい
どっかにまとめておける場所が欲しいね
>>915
WinAPI Database for VB Programmerのアルファベット順表示「W」の項あたり
ふつうにウィンドウメッセージで検索すればたくさん出る
>>916
リソースハッカーを勘違いしてね?
~^f::WinGetActiveStats
が汎用的だと思うけど
- 918 :名無しさん@お腹いっぱい。:2011/01/23(日) 10:36:53 ID:+Jcg/1ky0
- リソースハッカー云々は、対象アプリ内のコマンドを直に呼び出したい場合にやるから無関係ではないだろう。
メッセージ番号を調べたいなら先に上がったサイトでもいいが、メッセージが既に分かっているなら
以下のツールを使ってもいいだろう。
Crazy Scripting : List of Win32 CONSTANTS
http://www.autohotkey.com/forum/topic19766.html&highlight=constants
目的達成のためにウィンドウメッセージを使いたいがどんなものが割るか分からないなら、
まずは対象とするコンポーネントを知らなければ話にならない。
そういう場合は、斜め読みでもいいんでMSDN等のマニュアルに目を通した方がいい。
汎用コンポーネントならココを見ればおk
http://msdn.microsoft.com/en-us/library/bb773169%28v=VS.85%29.aspx
- 919 :名無しさん@お腹いっぱい。:2011/01/23(日) 17:29:58 ID:9kFDZpTa0
- メッセージの番号はわかってる前提なのかな
そのへん不明なときは Winspector みたいな Spyツールで調べると楽だよ
- 920 :名無しさん@お腹いっぱい。:2011/01/23(日) 18:16:14 ID:XAjl03De0
- 一方Delphi製アプリは毎回番号が変わった
- 921 :名無しさん@お腹いっぱい。:2011/01/24(月) 17:05:09 ID:7gKriKlQ0
- 無変換 & F に検索でよくつかうコントロール+Fを割り当てたいのですが
ちゃんと設定しているのに、エラー音がなって失敗します。
どうすれば無変換とFに検索を割り当てられますか?
- 922 :名無しさん@お腹いっぱい。:2011/01/24(月) 21:22:13 ID:z644oJ9o0
- 書いたの見せて
- 923 :名無しさん@お腹いっぱい。:2011/01/24(月) 23:51:51 ID:7gKriKlQ0
- vk1Dsc07B & F::send, ^{F}
です。スペースは半角にしてるしどこが悪いんだろう。
いろいろできたらいいなぁと思うことがあるんです。
・クリップボードに新しくコピーが成功したらなんか音を出す
・クリップボードのなかにある不完全なアドレス(例*ttp)をhttpにする。(*httpになってもよい)
- 924 :名無しさん@お腹いっぱい。:2011/01/25(火) 00:19:46 ID:uXrK4Kpk0
- :: Send, ^f
エラー音て何だろう?
- 925 :名無しさん@お腹いっぱい。:2011/01/25(火) 00:32:07 ID:IfjFp+6d0
- >>923
Sendは大文字=Shift押しながらFキー押したって意味になるはず。
エラー音がなってるのは、多分Ctrl+Shift+Fに割り当てられた機能が
発動できない状況だったからじゃないかな。
- 926 :名無しさん@お腹いっぱい。:2011/01/25(火) 00:40:42 ID:Ag8yU00Q0
- >>923
OnClipboardChangeサブルーチンラベル
- 927 :名無しさん@お腹いっぱい。:2011/01/25(火) 02:06:17 ID:qD/gBVo/0
- レス有難うございました。
:: Send, ^f
でうまくいきました。
sendの項目改めて、見てみ来ました。今度からそうしてみたいです。
OnClipboardChangeサブルーチンラベルの項目もみてきて
一応設定できました。BEEP音鳴らしてます。
httpの補完次やってみます。ありがとうございました。
- 928 :名無しさん@お腹いっぱい。:2011/01/25(火) 02:14:12 ID:CKKQDY7j0
- OnClipboardChangeって、まともに使える?
PCの日常操作で、画像のスクショを取るなどテキスト以外の情報が
クリップボードに入ると、通知無しにいきなりAHKが終了する症状が頻発して、
使うのをやめてしまった。
結局、クリップボードの情報でなにかやりたいときに、
OnClipboardChangeを使わず
「いまクリップボードに入ってる情報を加工する関数」
を作成して、手動でそれを呼び出して、あれこれ加工するようにしてる。
- 929 :名無しさん@お腹いっぱい。:2011/01/25(火) 02:34:53 ID:Ag8yU00Q0
- A_EventInfo 見てテキストかどうかの分岐をしてそうならしょうがないな
- 930 :名無しさん@お腹いっぱい。:2011/01/25(火) 02:45:55 ID:CKKQDY7j0
- >>929
いま、死蔵させたコードを見直してみたのだけど
OnClipboardChange:
if A_EventInfo=0
event=空
if A_EventInfo=1
event=テキスト
if A_EventInfo=2
event=データ
if event!=テキスト
return
〜加工処理〜
return
これで、1のときだけ加工処理をやって、ほかはreturnするようにしてたけど、
やっぱりたまに落ちる。どうも、最初のif文にたどり着く前に死んでる気がする。
- 931 :名無しさん@お腹いっぱい。:2011/01/25(火) 18:08:20 ID:aMrptlve0
- WinSet, Trans , 100, A
↑のように半透明にしたいんですが、これが効かないウィンドウがあります
ベクターにある透明化のソフトでは問題なく透明化できました(WindowAlpha・なんでもすけなど)
どうしてもAHKで透明化したいのですがどのようにしたらいいですか?
- 932 :名無しさん@お腹いっぱい。:2011/01/25(火) 18:22:41 ID:CKKQDY7j0
- >これが効かないウィンドウ
これを書かないと誰も判断できない
- 933 :名無しさん@お腹いっぱい。:2011/01/25(火) 18:38:51 ID:aMrptlve0
- 失礼しました
株取引のソフトでmanextraderというソフト
これで開くウィンドウすべて透明にできないです
ベクターのフリーソフトではすべてうまくいきましたが・・・
何が原因なんでしょうか・・・
- 934 :名無しさん@お腹いっぱい。:2011/01/25(火) 21:07:24 ID:aMrptlve0
- # They have no effect on a window that lacks a caption (title bar) and lacks the always-on-top property.
For GUI windows, this can be solved by removing the caption only after making the window transparent.
Alternatively, the following properties allow transparency to take effect: Gui -Caption +ToolWindow.
ヘルプにこう書いてあったんですがこれが原因でしょうか
解決方法ありましたら教えてください
- 935 :名無しさん@お腹いっぱい。:2011/01/25(火) 21:21:19 ID:R279zQ/j0
- Aキーを押している間、Sキーの機能が停止するように設定ってできますか?
- 936 :名無しさん@お腹いっぱい。:2011/01/25(火) 21:49:30 ID:Ag8yU00Q0
- >>935
余裕で
- 937 :名無しさん@お腹いっぱい。:2011/01/25(火) 23:58:03 ID:R279zQ/j0
- >>936
#f::
Process,Exist,firefox.exe
if ErrorLevel<>0
A
S
WinActivate,ahk_pid %ErrorLevel%
スクリプトはわかるんですが・・・
これでできないのですが原因わかりませんか?
- 938 :名無しさん@お腹いっぱい。:2011/01/26(水) 00:32:03 ID:QXoIFxt40
- >A
>S
これの意味がわからない。
ってかここでエラーにならないの?
- 939 :名無しさん@お腹いっぱい。:2011/01/26(水) 01:10:51 ID:SjubXkKP0
- >>937
> Aキーを押している間
と書いてあるのに [Win]+[F]のホットキー定義になってる。
Firefoxも唐突だし、その上>>938。
やりたい操作や条件をもっと具体的かつ厳密に書いた方が解決が早いと思う。
- 940 :名無しさん@お腹いっぱい。:2011/01/26(水) 01:23:51 ID:LMG4s4KI0
- >>938
スクリプトが違ったのか
ありがとうございます。にわかの友人に聞いたのが間違っていました。
Aキーを押している間、Sキーの機能が停止するスクリプトは難しいですね。
スレの方々でもわからないスクリプトがあるとは・・・
- 941 :名無しさん@お腹いっぱい。:2011/01/26(水) 01:28:56 ID:LMG4s4KI0
- ゲームで使いたいと思いました。
ゲームでは
Qキーで左に移動
Wキーで右に移動
Sキーでジャンプ
Aキーで下に移動
となっています。ジャンプしているときにSキーを離すと同時に下に移動すると高速で降りられます。
このコマンド入力のタイミングが非常にシビアなのでAutoHotkeyを使いたいと思いました。
オフラインゲームなのでAutoHotkeyは使用可です。
すごいしょうもないことですがよろしくお願いします。
- 942 :名無しさん@お腹いっぱい。:2011/01/26(水) 01:32:01 ID:QXoIFxt40
- >>940
>Aキーを押している間、Sキーの機能が停止するスクリプトは難しいですね。
そもそも、なにをやりたいのかわかんないのが問題なんだよ。
process,existで判別するだけじゃ、firefoxが起動されていれば
どこでもコードが発動することになって、まずまともに動かないだろう。
windows+fを押した後、どんなシーンでなにをどう変えたいのか、
具体的に書け。
>スレの方々でもわからないスクリプトがあるとは・・・
お前のレスに情報が足りなすぎるから、わかんないんだよ。
物事を正確に人に伝える技術も身に付けろ。
- 943 :名無しさん@お腹いっぱい。:2011/01/26(水) 01:36:06 ID:y4OdYZSy0
- こいつには正解を教えるべきじゃない
と、俺の経験が言っている
- 944 :名無しさん@お腹いっぱい。:2011/01/26(水) 01:40:23 ID:QXoIFxt40
- 緊急性はなさそうなので俺は降りるわ。
ちょっと上でもあったが、質問者は、なんでゲーム名とかアプリ名とかを
具体的に書かないんだろうか。隠す必要はどこにあるんだろうか。
名前さえ書けば、暇な人や、AHKの経験を積むため腕試ししたい人が
勝手に試してコードを書いてくれる可能性があるのに。
書かなきゃその可能性ゼロ。大損だね。
- 945 :名無しさん@お腹いっぱい。:2011/01/26(水) 01:56:08 ID:IHG9AHdU0
- >>931
MButton::
MouseGetPos,,, hWnd
WinSet, Transparent ,200, ahk_id %hWnd%
return
マウスカーソル下のウィンドウを半透明化するスクリプトだけど、
これはどう?
- 946 :名無しさん@お腹いっぱい。:2011/01/26(水) 01:59:35 ID:SjubXkKP0
- >>941
全然難しくないし、数行で実現できる。
何度も書くけど、意図した動作を言葉できちんと記述できないようじゃ、スクリプトも記述できないんだよ。
言葉できちんと条件や動作を説明できるなら、一対一対応でコマンド等に置き換えられるケースが多い。
まぁ、ある程度の慣れは必要なのはしょうがないけどさ。
で、多分だが、
S と A は同時押下があって、その順序は S → A の順で、
S 押下中に A を押しても A は発行されずに、
S 押下解除の直後で、まだ A が押されているなら A の発行を開始する
というようなことなんじゃないかな。
そうなると、特定キーの押下解除を待つってコマンドがあるんで、
そいつを使えば万事解決かと。
- 947 :名無しさん@お腹いっぱい。:2011/01/26(水) 07:27:40 ID:wuCL86z10
- 難しそうだが手出してみようと思って過去ログ漁り始めたんだが……
74 :名無しさん@お腹いっぱい。:04/11/03 18:19:35 ID:qnClhCL9
できました!有り難うございました〜
SetTimer, PopUpClose, 250
return
PopUpClose:
IfWinActive, 100% Free Hentai Pics!!
Send, ^W
return
---------------------
いきなり吹いた
- 948 :名無しさん@お腹いっぱい。:2011/01/26(水) 11:40:36 ID:z7TMcCykP
- しばらくAHKを書いていなかったのですが最近やってみたら昔書いたスクリプトが動かないことに気付きました。
下記のようにした場合、2重登録はできませんと言われるのですがifが効いていないかんじなのですが
ifで振り分けたい場合はどうしたらいいのでしょうか?
Var = 0
#a::Var = 1
if Var = 0
#b::MsgBox, 0
if Var = 1
#b::MsgBox, 1
- 949 :名無しさん@お腹いっぱい。:2011/01/26(水) 11:47:27 ID:z7TMcCykP
- あ、なんか思い出してきた・・・
if
#Ifちがうんだっけ
- 950 :名無しさん@お腹いっぱい。:2011/01/26(水) 11:48:53 ID:z7TMcCykP
- すみませんできました
- 951 :名無しさん@お腹いっぱい。:2011/01/26(水) 12:38:55 ID:IY80MOvP0
- >>914のマルチスレッド機能は
dllの普通の読み込みではできないのでしょうか。
comの方が使いやすそうだというのはわかりますが、usbメモリに入れて持ち歩いているので、
スタンドアローンで動く方がいいです。
- 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歳 でググれ
- 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
- 960 :957: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というソフトのモード切り替えの時にもそんなかんじにできたと思うのですが
- 968 :961: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
- 983 :980: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/
ツッコミ処は多々あると思うが、独断と偏見でやってみた。
もたもたしてたら変なのを貼られちまった。スマソ。
- 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
}
}
- 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
- 1001 :1001:Over 1000 Thread
- このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
364 KB
★スマホ版★
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)