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
250 KB
[ 2ちゃんねる 3億PV/日をささえる レンタルサーバー \877/2TB/100Mbps]
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 05.0.7.9 2010/05/24 アクチョン仮面 ★
FOX ★ DSO(Dynamic Shared Object)