12/12/15 19:16:04.95 pwugi7hQ0
>>309
マウスでもキーボードでも大して変化ない
キーボードでのその種のサンプルはいくらでもあるからそれを参考にすればいいのでは
>>314
RunAs, Administrator, pass
ただahkファイルにもろにパスを書くことになって気持ち悪さが残る
他にはAHK自体を管理者権限で実行しておくとか
316:名無しさん@お腹いっぱい。
12/12/15 19:31:10.86 EF02U5+F0
長押し判別のサンプルが欲しいだけってことなら、このスレを「長押し」で検索すればおk
317:名無しさん@お腹いっぱい。
12/12/15 22:07:34.19 oqkPfUtP0
1.1.09.01 - December 15, 2012
Fixed AND/OR following a multi-statement comma, like ((x, y) and z).
Fixed RegExReplace to support duplicate subpattern names correctly.
Fixed Object.Remove() not freeing string keys.
Fixed base.Invoke() to not depend on dynamic variable resolution.
318:名無しさん@お腹いっぱい。
12/12/16 20:52:14.73 vn9LTdLR0
>>315
>>314の件、アドバイス有難うございます
色々と試してみます
319:名無しさん@お腹いっぱい。
12/12/17 00:12:11.95 b24XDeZ00
突っ込まれた後、アンカーつけずに1行~2行で小出しにする奴は全員クズ
320:名無しさん@お腹いっぱい。
12/12/18 04:16:32.77 qjaGm6vJ0
sprintf ("%02d", $hoge);
これと同じ事をAutoHotkeyでやるにはどう書けばいいんでしょうか?
321:名無しさん@お腹いっぱい。
12/12/18 07:49:06.38 qjaGm6vJ0
自己解決したので取り下げます
322:名無しさん@お腹いっぱい。
12/12/19 09:50:37.90 zhFsWhhx0
同じプロセス名のPIDを全て取得したいです。
URLリンク(sites.google.com)
例4: DllCallを利用して実行中のプロセス一覧を取得し、メッセージボックスに表示する
で、プロセス名と同時にPIDを取得できればと思ったのですがやりかたがわかりません。
申し訳ありませんが教えてください。
323:名無しさん@お腹いっぱい。
12/12/19 10:10:41.32 RVkTFNTP0
PIDを全て取得したあと、なにをしたいのかを書いたほうがよいかと。
324:名無しさん@お腹いっぱい。
12/12/19 11:47:48.52 YYiQqEEv0
>>322
WinGet same_apps, list, ahk_exe notepad.exe
MsgBox % "Count: " same_apps
Loop % same_apps
{
id := same_apps%A_Index%
WinGet pid, pid, ahk_id %id%
MsgBox % "PID: " pid
}
Return
325:名無しさん@お腹いっぱい。
12/12/20 12:34:51.67 r5lNrZ5v0
GUIによってクラス取得できなかったり、テキスト取得できなかったりします。
これては何が原因ですか?
解決策や大体方法ってありますか?
326:名無しさん@お腹いっぱい。
12/12/20 23:07:43.19 6qmVdPLy0
URLリンク(i.imgur.com)
StringReplaceとかRegExReplace()とか使おうとするとこのエラーが出るんですがどの文字がイリーガルなんでしょう?
Everything等でコピーしたファイル(群)をだいなファイラーのカレントディレクトリに貼り付けしようとしてるのですがこれが邪魔して先に進めません
一応1ファイルを貼り付けることは出来るようになったのですが複数ファイルとなると改行を半角スペースに置換しなければならないので……
当方AHK_L U32です
327:名無しさん@お腹いっぱい。
12/12/20 23:33:43.20 KnjRzDDQ0
>>326
%Files%のとこ変数を指定するとこだから%で囲んだら「C:\Appsなんたらかんたら」っていう変数だと解釈されるよ
Test = xxxaiueoxxx
xxxaiueoxxx = xxxあいうえおxxx
StringReplace, OutputVar1, Test, xxx,, All
StringReplace, OutputVar2, %Test%, xxx,, All
MsgBox, %OutputVar1%`n%OutputVar2%
328:名無しさん@お腹いっぱい。
12/12/21 00:09:09.27 eYe18/Hi0
>>327
ありがとうございました、お陰様でうまくいきました
329:名無しさん@お腹いっぱい。
12/12/21 10:09:33.57 GUJMRzaC0
>>323
ごめんなさい。
目的を書いたほうがよかったですね。
同じProcessを複数実行したときに監視して1つだけ処理させたかったです。
>>324
できました。
ありがとうございます。
330:名無しさん@お腹いっぱい。
12/12/22 11:08:55.93 /Phr9nK00
開いているフォルダの複製を新しいウィンドウで開く。つまり、同じフォルダを並べて表示させたい。
URLリンク(www.autohotkey.com)
ここにあるExplorerのフルパスを取得する関数で、複製したいフォルダのパスを拾い、
それを Run コマンドで実行させれば行けると思ったのですが、どうも上手くいきません。
F1::path := Explorer_GetPath()
F2::run,%path%
F1 → F2 :フォルダが開かれない
F1 → フォルダを閉じる → F2 :フォルダは開くが、次にF2を押してもフォルダは開かれない
多分、指定したパスのフォルダが既に存在している場合には、キャンセルされるのだと思います。
どうにかキャンセルを回避する方法はないでしょうか?
331:名無しさん@お腹いっぱい。
12/12/22 11:35:26.37 NwrirQf00
F2::Run, Explorer.exe %path%
とかは?
332:330
12/12/22 11:44:58.66 /Phr9nK00
>>331
出来ました。ありがとうございます。
333:名無しさん@お腹いっぱい。
12/12/23 00:22:09.74 hn0uXkKq0
URLリンク(muumoo.jp)
ここ見て
sc029::LWin
としてもWinキーを離してくれないんですがどうしたらいいのでしょう
sc029::send,{LWin}
とするとWin+Rとか効かなくなりますよね
334:名無しさん@お腹いっぱい。
12/12/23 01:31:19.43 GfjEdpc/0
Windowsキーの割り当てが変更されるわけではないのでWin+Rとか関係なくね?
sc029::send,{LWin}
これで問題ないと思うんだが?
反応しないならこれでもいいし
sc029::
Send,{LWin Down}
Send,{LWin Up}
Return
335:名無しさん@お腹いっぱい。
12/12/23 01:57:27.76 GfjEdpc/0
sc029+R って意味か失礼
336:名無しさん@お腹いっぱい。
12/12/23 03:22:21.85 GfjEdpc/0
>>333
>>4 他のキーならこれでいけるんだけど駄目かな?
;vk1Dsc07B = 無変換
#UseHook
vk1Dsc07B::
SendInput,{LWin Down}
KeyWait,vk1Dsc07B
SendInput,{LWin Up}
Return
337:名無しさん@お腹いっぱい。
12/12/23 11:22:28.85 hn0uXkKq0
>>334
後者で出来ました
ただDownとUpの間にsend,rとかはさむとまたWinキーを離してくれません
よく分からないので保留しときます
どうもでしたm(_ _)m
338:名無しさん@お腹いっぱい。
12/12/28 03:46:39.98 ESOvoOi40
すみません、前スレでオナニー用片手フルコントロールキーマップについて質問しました777です
なんか>>333さんと同様なんですが、↓のようなのをやるとカタカナひらがなキー(vkF2sc070)を離してくれません
send,{vkF2sc070 Up}を最後に挟んだり>>336さん方式にしたりもしたんですが……
どうにかして離させることは出来ませんか? このままでは捗りません……
vkF2sc070 & k::
if(keymap=0){
send,: & k
} else if(keymap=1){
send,: & k
} else if(keymap=2){
send,: & k
} else if(keymap=3){
send,k
}
return
vkF2sc070 & l::
if(keymap=0){
send,: & l
} else if(keymap=1){
send,: & l
} else if(keymap=2){
send,: & l
} else if(keymap=3){
send,l
}
return
339:名無しさん@お腹いっぱい。
12/12/28 04:19:44.61 ESOvoOi40
あ、すみません>>4読んでなかった
出直してきます
340:名無しさん@お腹いっぱい。
12/12/28 22:00:47.60 +2wcYtZJ0
AとBのフォルダに同名ファイルが存在するときにAのものを削除するってどう書くんでしょ
341:名無しさん@お腹いっぱい。
12/12/28 22:14:24.06 CU6d2p5A0
>>14
342:名無しさん@お腹いっぱい。
12/12/30 02:24:52.71 Zc8z910L0
FileAppendでクリップボード内の日本語を含むパスを扱うと日本語が・・になってしまうのですが、回避するにはどうすればいいのでしょう?
32bitのUnicode版なので2バイト文字云々は大丈夫だろうと思ってたんですが……
343:名無しさん@お腹いっぱい。
12/12/30 02:43:03.48 l6Rrm5Z20
>>342
>>14
344:名無しさん@お腹いっぱい。
12/12/30 03:08:08.76 Zc8z910L0
最後に, UTF-8ってつければいいとAutoHotkeyJPに書いてありました
流行らせるページしか見てなかった……
345:名無しさん@お腹いっぱい。
12/12/30 23:16:09.24 sq1B8EyW0
特定のウィンドウがアクティブな時にどれか(不特定)のキーを入力したら指定したウィンドウをアクティブにする
という動作をさせる方法ってありますか?
346:名無しさん@お腹いっぱい。
12/12/31 00:11:34.39 /x88YbXJ0
#IfWInActiveつかって
面倒くさがらずに、全部のキー列挙するだけ
347:名無しさん@お腹いっぱい。
13/01/01 01:23:54.68 pBjx41bK0
どのキーに何を割り当てるか悩みまくった一年だった……
348:名無しさん@お腹いっぱい。
13/01/01 03:42:06.90 bq282g/M0
あまりにスクリプトが増えて一つのキーじゃなしにストロークに割り当ててる
ランチャーソフトfenrirを「AutoHotkeyスクリプトランチャー」にしてそこからコマンド入力して機能にアクセスしてる
349:名無しさん@お腹いっぱい。
13/01/01 15:10:47.50 jV4UHTQA0
Error1,2,3のタイトルのダイアログがアクティブになったら"キャンセル"を押させたいのですがうまく動きません。
一応、下のように作ってみたのですが起動させようとしても一向にAHKが反応してくれません。
反応しないとはタスクバーにHマークが出てこないと言う意味です。
間違っている点があれば教えて下さい。
#IfWinActive Error1 ahk_class #32770
ControlClick キャンセル, Error1 ahk_class #32770
return
#IfWinActive
#IfWinActive Error2 ahk_class #32770
ControlClick キャンセル, Error2 ahk_class #32770
return
#IfWinActive
#IfWinActive Error3 ahk_class #32770
ControlClick キャンセル, Error3 ahk_class #32770
return
#IfWinActive
350:名無しさん@お腹いっぱい。
13/01/01 17:50:15.33 cXUJFGA80
#If系はホットキーを定義する際に用います
通常の実行制御の場合はIfWinActiveを使用します
いつ出るか分からないようなものを対象とするなら
自分でタイマーなりループを回して常に監視しておく必要があります
351:名無しさん@お腹いっぱい。
13/01/01 18:01:03.38 70JJzZ9L0
間違えだらけ、修正というか書き直しになるなw
とりあえずリファレンス全部読んでから書いた方がいいぞ・・・。
URLリンク(sites.google.com)
352:名無しさん@お腹いっぱい。
13/01/01 18:13:30.51 kYJIQPUQ0
そこアルファベット順がないのが不便すぎて使えないんだよな
いつも流行らせるページ使ってるわ
353:名無しさん@お腹いっぱい。
13/01/01 18:20:47.50 70JJzZ9L0
>>352
これで十分だと思うぞ?
URLリンク(sites.google.com)
354:名無しさん@お腹いっぱい。
13/01/01 18:28:18.82 kYJIQPUQ0
どこクリックすればそんなページ出るんだ?
いずれにしても初心者にはコマンドの種別なんてできないし
ググったあとに詳細調べるから全部あわせてアルファベット順になってくれてないと不便なんだよ
355:名無しさん@お腹いっぱい。
13/01/01 18:31:19.92 zefJ5iik0
>>353
一覧表示って出来たのか…
さっそくブックマークに登録したw
356:名無しさん@お腹いっぱい。
13/01/01 18:34:30.31 70JJzZ9L0
どこのページも更新止まっちまったからなー
いっそのことWIKI作ったほうがいいんだろうけど
下地用にコマンド解説内容、丸々コピーすると怒られるよね?w
357:名無しさん@お腹いっぱい。
13/01/01 19:43:04.70 TjuImFJt0
流行らせるページ作者に確認すりゃええんでない。
358:名無しさん@お腹いっぱい。
13/01/01 19:45:40.37 jV4UHTQA0
>350-351
ありがと
SetTimerで思った事ができそう
359:名無しさん@お腹いっぱい。
13/01/01 20:01:23.58 FpvIk0CP0
公式のDocumentationだけで十分だろ
360:名無しさん@お腹いっぱい。
13/01/01 20:03:05.83 zefJ5iik0
英語が読めたらなぁ…
361:名無しさん@お腹いっぱい。
13/01/02 13:09:28.25 rzgozGmn0
苦手意識から読めないと思ってるだけで
技術文書だと簡単な表現しか使われてないから
高校さえ出てれば専門用語を辞書検索してだいたい読めるはず
362:名無しさん@お腹いっぱい。
13/01/02 14:27:29.04 N0xSBjEb0
いちいち専門用語を辞書検索に反感して言うわけじゃないが
Wiki作るのは賛成。
だが協力はしない
363:名無しさん@お腹いっぱい。
13/01/02 14:55:02.43 fl2FwUZF0
だって役に立たないもんな>>362は
364:名無しさん@お腹いっぱい。
13/01/02 21:33:29.46 mpzqLcH10
英語は読み込めば理解できるものでもパっと見で概略つかめないんだよね
辞書引いた直後には意味が分かっても次に見たときにまた読解が必要てのは自分はしんどいな
コマンド解説やヘルプってそれそのものが辞典みたいなもんで
ちょっと確認したいときでも何度も読み返すから未だに古い日本語ヘルプ使ってるわ
ヘルプましんのchm編集すっげめんどくさかったけど
365:名無しさん@お腹いっぱい。
13/01/03 00:00:15.18 BSPLfxPq0
ClipWaitが効かないんですがなにか関係するコマンドありますか?
おかげで古いクリップボードの中身が使われてしまいます……
366:名無しさん@お腹いっぱい。
13/01/03 00:02:12.86 hInERZ8J0
>>365
>>14
367:名無しさん@お腹いっぱい。
13/01/03 00:29:23.96 EJqdcX/f0
めんどくさいときは>>14
便利だなぁ
368:名無しさん@お腹いっぱい。
13/01/03 00:40:55.22 xjG1EXYz0
そりゃ既にテキストとして読み取れる内容がクリップボードに入ってりゃclipwait意味ないでしょ
クリップボードをクリアしておくとかなんかしないと
まあとりあえず>>14
369:名無しさん@お腹いっぱい。
13/01/03 02:07:30.49 YSRUBcxW0
お前ら意地悪だなw コード出させる間でもなく原因わかってんじゃんか
>>365
clipwaitは「クリップボードの中身が変わるまで」ではなく、
「クリップボードが空じゃなくなるまで」の判定
なので>368のいうように実行前にクリップボードをクリアしておくなどの処理が必要
370:名無しさん@お腹いっぱい。
13/01/03 02:50:33.30 tjlDRf0G0
Clipboardの使い方なんてほとんど定型なのに
わざわざ動かないコード書かせてどんなエレガントな添削をするつもりなんだろ
371:名無しさん@お腹いっぱい。
13/01/03 04:44:35.77 HCJOs8v60
14へ行け
372:名無しさん@お腹いっぱい。
13/01/03 05:33:24.81 V9vm+ogp0
流行らせるページのタスクトレイアイコン操作のスクリプトを使ってみたのですが、
Tray_GetInfoは格納される変数が全て0になってしまい、Tray_GetTextは文字化けしてしまうと言うか
何かバグが起こっているようで使う事が出来ません
Win32API等を呼び出せば出来るようデスガ1時間程格闘した結果ぼくにはちんぷんかんぷんです
環境はWindows764Bit、AutoHotkeyU64です
以下コードと画像です、もうほんとどうかお助けくだしい・・・
URLリンク(gazo.shitao.info)
DetectHiddenWindows,On
var:=Tray_GetCount()
msgbox %var%
loop %var%
{
idx=%A_index%
Tray_GetInfo(%idx%,hwnd,uid,msg,hicon)
msgbox %idx%`nhwnd %hwnd%`nuid %uid%`nmsg %msg%`nhicon %hicon%
}
loop %var%
{
idx=%A_index%
text:=Tray_GetText(%idx%)
msgbox %idx%`n%text%
}
以下関数
373:名無しさん@お腹いっぱい。
13/01/03 07:27:25.04 L9uEbYea0
あそこのは、ANSI32bit専用なので、 U64だと動かない
374:名無しさん@お腹いっぱい。
13/01/03 17:45:16.91 kTbspySq0
CopyList.txtがある場合Copyを、MoveList.txtがある場合Moveを実行
その後使用したtxtを削除
ってのを↓以上に確実かつシンプルにやる方法ってありますか?
ちなみに両txtがどちらも存在しないことはあっても同時に存在することはありません
あと*CopyList.txtの*はTeraCopyの仕様です
RunWait, C:\Soft\TeraCopy\TeraCopy.exe Copy *CopyList.txt "%DestDir%"
If ErrorLevel <> 0
RunWait, C:\Soft\TeraCopy\TeraCopy.exe Move *MoveList.txt "%DestDir%"
FileDelete, *List.txt
375:名無しさん@お腹いっぱい。
13/01/03 18:21:34.92 0uvjJEtd0
Loop, *List.txt
MsgBox, %A_LoopFileName%
FileDelete, *List.txt
下手に省略するより、普通にIfExist・Elseを使って書いた方が分かりやすくていいと思うけど
376:名無しさん@お腹いっぱい。
13/01/03 21:03:23.69 kTbspySq0
となるとこうなりますかね
IfExist, CopyList.txt {
RunWait, C:\Soft\TeraCopy\TeraCopy.exe Copy *CopyList.txt "%DestDir%"
} else IfExist, MoveList.txt {
RunWait, C:\Soft\TeraCopy\TeraCopy.exe Move *MoveList.txt "%DestDir%"
}
FileDelete, *List.txt
return
377:名無しさん@お腹いっぱい。
13/01/03 23:32:39.09 kTbspySq0
あー、なんかもうよくわかんね
動いたけど結局長ったらしくなっちまった
IfExist, CopyList.txt
{
RunWait, C:\~\TeraCopy.exe Copy *CopyList.txt "%DestDir%" /Close
FileDelete, *List.txt
}
elseIfExist, MoveList.txt
{
RunWait, C:\~\TeraCopy.exe Move *MoveList.txt "%DestDir%" /Close
FileDelete, *List.txt
}
return
>>375
すいませんが全く意味わかりません
378:名無しさん@お腹いっぱい。
13/01/04 02:48:54.63 0YGLKXSy0
動くコードの最適化依頼した挙句、ほんの3行のコードも調べず音を上げるのかよ
MsgBoxのとこを RunWaitに変えりゃいいだけだろ
379:名無しさん@お腹いっぱい。
13/01/04 03:25:30.30 A5kTD1It0
Copy *CopyList.txtとMove *MoveList.txtだからLoopだけじゃ無理じゃね?
380:名無しさん@お腹いっぱい。
13/01/04 07:11:22.35 33nOpJs60
XPsp3→Win7sp1x64に移行中なんだけど、スクリプトコントロール使おうとするとエラー起きた。
oSC := ComObjCreate("ScriptControl")
------------------------------------------
Error: 0x80040154 - クラスが登録されていません
WSHからCreateObject出来たし、ScriptControlが使えるのは確認済み。
他のオブジェクト、ComObjCreate("Scripting.FileSystemObject") は動いたりする。
検索しても同類の問題は見当たらないんだけど、何が問題か分かります?
381:名無しさん@お腹いっぱい。
13/01/04 07:54:50.98 33nOpJs60
失礼、32bit版入れたら通った
382:375
13/01/04 09:06:57.50 ksDudQWz0
>>379
あ、見落としてたわw
StringLeft入れんといかんね
>>377、すまん
383:名無しさん@お腹いっぱい。
13/01/05 23:33:00.72 0Ive1sK/0
ロジクールのM500かG500でAutohotkey使ってる人いますか?
このマウスのボタンがすべてAHKで使えるか知りたいんですが。
バッファローのダメマウスでAHKが使えなくてこりたんでロジクールのマウス購入を検討しているんですが。
384:名無しさん@お腹いっぱい。
13/01/06 00:00:40.91 3IX22dlM0
すべては無理。AHK で扱えるのは、
LButton - 左クリック
RButton - 右クリック
MButton - ミドルクリック
XButton1 - G500 なら、おそらくサイドボタン
XButton2 - G500 なら、おそらくサイドボタン
こんだけ。その他のボタンは、付属のソフトウェア(SetPoint とか)で、 たとえば F13 とかに割り当てれば、AHK でも扱えるようになる
385:名無しさん@お腹いっぱい。
13/01/06 00:05:32.73 DNT4s2++0
>>383
MMOとかするならあと2個ほどボタンが多いG700選ぶと快適かも?
386:名無しさん@お腹いっぱい。
13/01/06 00:10:49.50 E2zJ0k7i0
>>384
なるほど。設定次第でなんとかいけるんですね。
あとチルトはそのままで割り当て無理ですか?
今使ってるエレコムのチルトホイールつきはWheel left rightでいけてますが。
>>385
ワイヤレスが嫌なんですよね。
387:名無しさん@お腹いっぱい。
13/01/06 00:17:09.00 acxHTDJU0
チルトは大丈夫でしょ。
388:名無しさん@お腹いっぱい。
13/01/06 00:17:54.45 DNT4s2++0
G700無線糞燃費だからオプションのケーブル使って有線で使うのが普通になってる。
389:名無しさん@お腹いっぱい。
13/01/06 00:30:23.07 E2zJ0k7i0
>>387
そうですか。なら問題無いです。
>>388
オプションケーブルなんてあるんですね。昔のワイヤレスマウスはそういうのなかったんですよね。
やっぱりG500買います。After Effectsの編集作業にボタンがたくさんあると便利なんですおね。
どうもでした。
390:名無しさん@お腹いっぱい。
13/01/06 00:53:23.35 4x+ZQI1P0
M950なんかは付属のケーブル繋げば充電もしてくれる
他はよう知らんが
391:名無しさん@お腹いっぱい。
13/01/06 01:13:45.54 o5bzjvvw0
G700も付属のケーブルを接続すれば
電池を抜いても有線マウスとして使える
でも、付属ケーブルが糞固い
392:名無しさん@お腹いっぱい。
13/01/06 01:52:42.06 gtsU4eIo0
G700はUSBケーブル別途買い足しがデフォ
電池はだいたい一日ももたない
393:名無しさん@お腹いっぱい。
13/01/06 13:43:58.93 yGJH9Ppz0
MX620の、ホイール押し下げのMButtonと、左上にある検索キーに「F15」を割り当てて、
F15をフックにしてahkでアプリごとの小技サブメニューを出す環境を作った。
URLリンク(ec2.images-amazon.com)
左指をちょっと外側に出すだけで押せて、かなり快適だった。
マウスがぼろくなって代わりを探したら、こういう単独のボタンが付いた後継が
ほぼ無く、MButtonまでも廃止されたモデルが多くて泣いた・・・
MButtonが無くなった原因は、ホイールのカチカチとヌルヌルを
ホイールを押し下げるごとにトグルで切り替える物理スイッチに変わったため。
こんなの、めったに変えるもんじゃないから底面でいいんじゃないだろうか。
結局、ぼろいのを修理しながら使い続けてるけど、そろそろ限界、困ってる。
394:名無しさん@お腹いっぱい。
13/01/06 15:13:05.88 gtsU4eIo0
>>393
> こんなの、めったに変えるもんじゃないから
えー、専ブラとか画像ビューワとかで結構しょっちゅう切り替えてるわ
395:名無しさん@お腹いっぱい。
13/01/06 15:16:30.70 DNT4s2++0
>>393
MButton = 中ボタン (ホイールクリック) が無いマウスなんてほとんど無いだろ?
左クリック横にボタンがあるマウスも大量にあるのに何言ってんだ?
マウス探しはこっち行け↓
[マウス]入力装置ForPCActionGamer[キーボード]80
スレリンク(gamef板)
396:名無しさん@お腹いっぱい。
13/01/06 16:02:04.59 yGJH9Ppz0
MButtonが廃止されてるのがあるから困ってるわけで。
>左クリック横にボタンがあるマウスも大量にあるのに何言ってんだ?
ボタンが小さかったり、複数あって+と-などで結局どっちも使いにくかったり、
ストロークの少なく硬いタクトスイッチだったりと散々、
少なくともあんたがスレみてホイっと探せるような代替は1つも無いよ。
397:名無しさん@お腹いっぱい。
13/01/06 16:23:37.10 bA7gOZ9Y0
なんでマウススレになってんの?
398:名無しさん@お腹いっぱい。
13/01/06 18:57:41.72 dZFpz0Hj0
>>396
条件後出しでドヤ顔されても・・・
399:名無しさん@お腹いっぱい。
13/01/07 03:51:18.32 6DMuFXPq0
ハード板にありがちな流れになってるな
400:名無しさん@お腹いっぱい。
13/01/07 10:31:06.45 TebtyZoA0
ブラウザのパスワードボックスに入力したパスワードをAutoHotKeyで取得できたりするものでしょうか?
401:名無しさん@お腹いっぱい。
13/01/07 11:17:16.93 eYTAVTDo0
どういう用途?
402:名無しさん@お腹いっぱい。
13/01/07 17:03:30.12 aOc8GPvh0
聞いてやるなよw
403:名無しさん@お腹いっぱい。
13/01/08 06:00:49.87 6A/2qc/s0
Send, !d^a{Delete}
SendRaw, javascript:alert(document.getElementById('hoge').value)
Send, {Enter}
とかやって、WinGetTextするとか
COM使うほうがずっと楽だけど
404:名無しさん@お腹いっぱい。
13/01/08 09:04:41.55 kR6F7W7e0
Devasの検索結果画面についてお知恵をお貸しください
URLリンク(i.imgur.com)
点線で囲まれた(キーのフォーカスがある)部分をキーボードでダブルクリックしたいのですが、そこを指定するにはどうしたらいいのでしょう
マウスカーソルが乗ってる訳じゃないからMouseGetPosは無理ですし、ControlGetPos、ControlGetFocusも開きたい行と他の行の区別がつきませんし……
何か手は無いものでしょうか?
指定さえ出来ればClick系でClick, L, X, Y, 2とかでいいと思うのですが
当方の環境はVista32bit AHK_L U32です
なるべく条件後出しになりたくないので、お伝えすべきことがありましたらお教えください
405:名無しさん@お腹いっぱい。
13/01/08 09:38:33.89 GFUrcN8h0
横だけどComObjCreate("ScriptControl")便利だな
COM使えるの知らなくてahk人生の9割損してたぜ
406:名無しさん@お腹いっぱい。
13/01/08 22:21:17.91 jnlj4ooE0
一つ前にアクティブだったウィンドウってどう取得すれば良いですか?
407:名無しさん@お腹いっぱい。
13/01/09 00:28:14.82 2G0WvnjB0
OnClipboardChange中でClipboard書き換えると
その書き換えで再度OnClipboardChangeが呼ばれるみたいなんだけど、どうしたらいいですか?
Jpにはそんなことならないって書いてあるけど、なってる
408:名無しさん@お腹いっぱい。
13/01/09 00:57:06.23 R+kZRtZH0
>>407 マニュアルにはすぐには呼ばれないからディレイいててね?って書いてた
If the script itself changes the clipboard, its OnClipboardChange label is typically not executed immediately;
that is, commands immediately below the command that changed the clipboard are likely to execute beforehand.
To force the label to execute immediately, use a short delay such as Sleep 20 after changing the clipboard.
;#Persistent
;return
; OnClipboardChange:
; ToolTip Clipboard data type: %A_EventInfo% %Clipboard%
; Clipboard := Clipboard . "-test"
; Sleep 50 ;0~20msecとかだとうまくいきませんでした。
; ToolTip ; Turn off the tip.
; return
409:名無しさん@お腹いっぱい。
13/01/09 01:25:08.06 R+kZRtZH0
>>406 0.1秒周期でアクティブだったウィンドウを2代監視※ するというのは?
テストでAlt+F1を押したら前のに切り替る。
※重くてよろしくないので 多分ウィンドウの切り替えを監視するもっといい方法がmsdnとかにあるはず・・イベントとかフックとか
#Persistent
SetTimer, timer_get_prev_win, 100
return
timer_get_prev_win:
WinGet, hWnd, ID , A
if (hWnd_current != hWnd) {
ToolTip, %hWnd%, 100, 100, 1
hWnd_old := hWnd_current
hWnd_current := hWnd
} else {
ToolTip, , , , 1
}
return
; テスト
!F1::
WinActivate, ahk_id %hWnd_old%
return
410:名無しさん@お腹いっぱい。
13/01/09 01:38:56.58 2G0WvnjB0
>>408
ありがとう。Sleep30ぐらいから平気な感じでした。
411:名無しさん@お腹いっぱい。
13/01/09 02:54:00.11 R+kZRtZH0
>>404 試してないし外してるかもしれませんが
GetScrollInfo を呼んで現在の位置nPosを取ってる例がありました。
[AHK_L] ScrollInfo - Scripts - AutoHotkey Community
URLリンク(www.autohotkey.com)
412:名無しさん@お腹いっぱい。
13/01/09 16:45:02.79 BHx0M9O20
>>409
おぉ!ありがとうございます
他にも色々と調べてみます
413:名無しさん@お腹いっぱい。
13/01/09 18:23:25.91 ++qgaWBh0
>>411はナシで 試したらスクロール位置の情報しか取れなかった。
選択しているIndexを取得するにはControlGetのChoiceで試すか、
ControlGetのマニュアルにある、コントロールにKB_GETCURSELなんかを送ってみるといいのかな・・現在Devasじゃなくても どれも動かず・・・。
F1::
; (1) × 過去ログPart7によると文字列が取れるらしいけど何も取れず
ControlGet, _nChoice, Choice, , TScrollBox1, ahk_class TfrmResult
; (2) ×
SendMessage, KB_GETCURSEL := 0x0188, 0, 0, TScrollBox1, ahk_class TfrmResult
_nPos1 := ErrorLevel + 1 ; 0
; (3) × コントロール指定しても駄目
ControlGet, hWndTBox, HWND, , TScrollBox1, ahk_class TfrmResult
if (ErrorLevel = 0) {
SendMessage, KB_GETCURSEL := 0x0188, 0, 0, , ahk_id %hWndTBox%
_nPos2 := ErrorLevel + 1 ; 0
}
ListVars
return
414:名無しさん@お腹いっぱい。
13/01/09 18:43:28.47 xZS7MSfU0
ものすごく原始的だけどImageSearchで
↓の画像検索させるとかw
┌──┐
│………│
│………│
└──┘
415:名無しさん@お腹いっぱい。
13/01/09 19:18:33.43 ++qgaWBh0
>>414 サクッとうまく行ったw
CoordMode, Pixel, Window
CoordMode, Mouse, Window
Loop, 500
{
winY := 65 + ((A_Index-1) * 16)
; MouseMove, 20, winY
PixelGetColor, pgres, 20, winY
if (pgres != 0xffffff) {
break
}
}
if (pgres = 0) {
cY := winY - 10
pos = x20 y%cY%
Loop, 2
{
;ControlClick, %pos%, A ; うまくいかず
}
MouseGetPos, pX, pY
MouseClick,, 20, cY, 2, 0
MouseMove, pX, pY
}
ControlClickは使い方がよくわからんです・・
416:名無しさん@お腹いっぱい。
13/01/09 20:33:32.02 pAf+NHQ10
>>411
ありがとうございます
GetScrollInfoを調べたところ、私が指定したいところはリストボックスかリストビューと言うらしいと分かりました
それで調べたところ、↓が参考になるのではと感じましたが実際の使い方がよくわかりません……
URLリンク(www.officepro.jp)
もしかしたらControlGetでも出来るのかも……?
もちょっとしらぼてみます
417:名無しさん@お腹いっぱい。
13/01/09 23:13:43.03 ++qgaWBh0
>>416 ここいらでギブアップですが、Spy++というVC6や2010付属のツールで
コントロールの種類や、クリックなどした時のメッセージが調べられるはずです。
(Spy++でDevasを監視しながら>>413を動かしたところ、全て空振りだった。
またダブルクリック時には実際、"LB_LBUTTONDBLCLK"というメッセージが相対X,Y座標で出されていて、
たとえば>>415のクリック部分は以下で再現可能)
pos := (winY << 16 ) | 20
SendMessage, LB_LBUTTONDBLCLK := 0x0203, 1, pos, TScrollBox1, ahk_class TfrmResult
418:名無しさん@お腹いっぱい。
13/01/09 23:53:15.64 pAf+NHQ10
色々考えていただきありがとうございます
こちらの理解が追い付かず>>413-415を別件と勘違いしてました……
>>415は成功例ということではないのでしょうか?
^oにあてたのですが反応ありません
あとControlGet一つで済むような簡単なことではないんですね……これ
419:名無しさん@お腹いっぱい。
13/01/09 23:56:33.27 truDb6qe0
あれこれ考えるのがめんどいなら>>414の方法でいいんじゃない?
420:名無しさん@お腹いっぱい。
13/01/10 00:00:59.46 sm0Nht9Z0
こんな感じとか
WinGetPos,,, Width, Height, A
ImageSearch, X, Y, 0, 0, Width, Height, %A_ScriptDir%\devas.png
MouseClick, L , X+10, Y+10, 2, 0
devas.pngの見本
URLリンク(www.dotup.org)
421:名無しさん@お腹いっぱい。
13/01/10 00:19:38.58 aMhgOgzL0
>>419
面倒というより理解するのにすごく時間がかかります……
今までキーリマップくらいしかしたことなかったので
流行らせるページの力を借りて>>415が何をしているのかはなんとなくわかるのですが、なぜ動かないのかはまったく……
>>420
希望通りに動きました、ありがとうございます!
これは見本を用意して画面の中でそれと一致する部分を探し座標を返す、というものですよね?
こんなスマートな方法があるなんて……
422:名無しさん@お腹いっぱい。
13/01/10 03:38:15.03 XrjVsLb/0
テキストエディタ gpad でautohotkeyのahkファイルを開いたときに
コードで色分けするためのファイルって出回ってないでしょうか?
423:名無しさん@お腹いっぱい。
13/01/10 05:44:32.09 RdtTZQLa0
>>422
別のエディタだけど自力で作った、お前さんもそうしな
424:名無しさん@お腹いっぱい。
13/01/10 16:37:24.00 06feD9Ex0
スレ違いだけど、AutoItスレ落ちたんだな
425:名無しさん@お腹いっぱい。
13/01/10 18:10:32.51 EF3fR0oK0
>>422-423
Extras\Editors\ って今インストーラーに含まれてないんだっけ?
昔はあんなかのSyntax加工すれば強調表示作るの楽だったんだが
426:名無しさん@お腹いっぱい。
13/01/10 18:50:45.27 li1JhGrL0
Lのインストーラーには含まれてないぽいね
URLリンク(www.autohotkey.com)
こっちのには入ってる
427:名無しさん@お腹いっぱい。
13/01/10 19:49:15.72 06feD9Ex0
URLリンク(www.autohotkey.com)
俺はNotepad++でこれ使わせてもらってる
428:名無しさん@お腹いっぱい。
13/01/10 22:47:31.67 EF3fR0oK0
うーむ、Lは微妙に初心者導入しにくくなってるんだな
>>426-427
この辺はテンプレに入れといてもいいかもしれない
これから始めてみようと言う時に、馴染みのエディタで色分けできるかどうかはモチベ維持に大きく関わるし
429:名無しさん@お腹いっぱい。
13/01/11 09:40:58.48 E/W2ZCxw0
何スレか前で紹介されてた分
otbedit用
URLリンク(gist.github.com)
秀丸用
SciTE4AutoHotkey用
URLリンク(lukewarm.s101.xrea.com)
NotePad2
URLリンク(xhmikosr.github.com)
>>422
gpad用を作ったらぜひアップしてくれ
430:名無しさん@お腹いっぱい。
13/01/11 17:10:46.20 IKwWZC040
こだわり過ぎる必要もないがインデントはどうしてるだろう?
AHKだとラベルと#if系のインデントの扱いに悩む
1)
x::
send, {somekey}
return
2)
x::
send, {somekey}
return
3)
x::
send, {somekey}
return
#ifのインデントをするかどうか)
#if xxx
y::z
#if
431:名無しさん@お腹いっぱい。
13/01/11 19:17:47.26 zqpSRmhc0
>>430 秀丸のアウトライン表示で^returnも出したいから2)かなぁ #ifの中はホットキーやラベル(^[0-9a-z]*:)も行頭でアウトライン判断したいのでインデント無しにしてる
432:名無しさん@お腹いっぱい。
13/01/11 22:45:41.04 CeUyOu2U0
自分も入口と出口を明確に視覚化したいので 2
functionの中のreturnはインデントするけど
433:名無しさん@お腹いっぱい。
13/01/11 22:50:05.00 E/W2ZCxw0
俺は1だな
その代りreturnの後に改行を沢山入れてる
434:名無しさん@お腹いっぱい。
13/01/11 23:35:23.49 ZwEbAdA70
2だね
始まりと終わりは明示したい
アウトラインで^.+?::はやるが^returnまではやらんくていい
returnの下には空行を一つ
#Ifは参考になんないと思う
435:名無しさん@お腹いっぱい。
13/01/11 23:44:13.87 sWQ5tIpb0
同じような事で悩んでる人はいるんだな…
基本2で#ifには前後に空行入れて挟んでるけど、モヤモヤする
436:名無しさん@お腹いっぱい。
13/01/12 01:37:16.19 11lSYMFL0
#If も ホットキーもBSDスタイルで中括弧入れてるわ
437:名無しさん@お腹いっぱい。
13/01/12 10:04:01.34 X9vnbjEz0
最初は2)だったけど
functionのreturnをどうするか悩んで結局1)に
#ifはあんまり気にしてないな
438:名無しさん@お腹いっぱい。
13/01/12 10:57:52.31 2CHlD5Aw0
意外と2の人多いんだな
公式だと1ぽいし、変則的な書き方だから自分だけかと思ってたわ
439:名無しさん@お腹いっぱい。
13/01/12 11:38:44.06 gfAbGYvz0
>>430
Emacs の ahk-mode.el 使ってるとデフォルトで 1 になる
Python ぽいインデントで特に悩んだことはないな
440:名無しさん@お腹いっぱい。
13/01/12 13:32:06.38 VQ0HP9Zw0
Vim向けに用意されているahk.vimを使うと
インデックスが崩れまくるのは俺だけなんだろうか
シンタックスは割りと綺麗に効くんだけどな
441:名無しさん@お腹いっぱい。
13/01/15 05:09:22.12 IJ9Q/rseP
AHK_lに移行したらTraytip(タスクバーのバルーン)使えなくなった。
検索してもヒットしないが、同様の報告ありますか?どうしようもないのかな。
442:名無しさん@お腹いっぱい。
13/01/15 07:49:51.31 boH5fIIX0
L64 / win7 x64 で普通に使えてるよ
たぶん通知アイコンのカスタマイズで通知非表示になってんじゃない?
443:名無しさん@お腹いっぱい。
13/01/15 20:58:55.67 lwsTc1Gv0
マウスのセンターボタンを押している間だけマウスの動きを上下左右逆にしたいのですが、
どのように書けばいいでしょうか?
444:名無しさん@お腹いっぱい。
13/01/15 21:10:15.03 USJf6JsR0
>>443
MButton
getmousepos
mousemove
以上を組み合わせる
445:名無しさん@お腹いっぱい。
13/01/15 22:39:38.89 IJ9Q/rseP
>>442
レスありがとう。よくわからないが最終的に再起動で解決。
OS側の何かの問題だったっぽい。
446:名無しさん@お腹いっぱい。
13/01/16 00:26:53.03 JYl8P/4g0
同じ種類のウインドウを新しく立ち上げる度に、前にあった同じ種類のウインドウよりも
”若干”右にずらして立ち上げる(立ち上げた後新しいウインドウを右にずらす)みたいなことってできますか?
そのまま新しいウインドウをたちあげると、まったく同じ位置に重なってしまいます。
ためしにこう書いてみたのですが
run C:\afxw\AFXW.EXE
#^Right::WinMoveStep(8,0)
新しいウインドウが立ち上がる前に既存のウインドウを右にずらしてしまいます。
ウインドウのタイトルバーは、
「管理者: [パス]あふw 1.5」「管理者: 2)[パス]あふw 1.5」「管理者: 3)[パス]あふw 1.5」....
これって簡単にできますか?ぐぐればみつかりますか?
447:名無しさん@お腹いっぱい。
13/01/16 03:38:25.67 MTqJG1PV0
>>446
#F1::
WinGetPos, WinX, WinY,,, ahk_class TAfxWForm
Run, "D:\afxw\AFXW.EXE",,, PID
WinWait, ahk_class TAfxWForm ahk_pid %PID%
WinMove, ahk_class TAfxWForm ahk_pid %PID%,, (WinX+20), (WinY+0)
Return
WinWaitのウインドウ指定でRunで取得したPIDを使うのがポイント
448:名無しさん@お腹いっぱい。
13/01/16 03:45:55.06 MTqJG1PV0
なんか気が付いたら関数書いてたんで、折角のなので貼っておきますね
#F1::RunWindowShift("D:\afxw\AFXW.EXE", 20, 0, "ahk_class TAfxWForm")
RunWindowShift(Target, MoveX:=16, MoveY:=16, WinTitle:="", WinText:="", Timeout:=10)
{
SplitPath, Target, FileName, WorkDir
IfWinExist, %WinTitle% ahk_exe %FileName%, %WinText%
{
WinGet, MinMax, MinMax, %WinTitle% ahk_exe %FileName%, %WinText%
If (MinMax == 0)
{
WinGetPos, WinX, WinY,,, %WinTitle% ahk_exe %FileName%, %WinText%
Run, %Target%, %WorkDir%,, PID
WinWait, %WinTitle% ahk_pid %PID%, %WinText%, %Timeout%
If (ErrorLevel)
Return 0
WinGet, MinMax, MinMax, %WinTitle% ahk_pid %PID%, %WinText%
If (MinMax == 0)
WinMove, %WinTitle% ahk_pid %PID%, %WinText%, (WinX+MoveX), (WinY+MoveY)
Return PID
}
}
Run, %Target%, %WorkDir%,, PID
Return PID
}
449:名無しさん@お腹いっぱい。
13/01/16 04:11:04.52 JYl8P/4g0
>>447
ありがとうございました(^o^)
OutputVarPID 起動したプログラムのプロセスIDを格納する変数名。
すげー、こんな引数の使い方あるんだ。
助かりました。感謝します
450:名無しさん@お腹いっぱい。
13/01/19 20:33:31.25 05Y6TxWS0
Pythonとかでいうインポートはどうするのでしょうか
451:名無しさん@お腹いっぱい。
13/01/19 20:49:05.49 TkjNI7AY0
>>450
#Include
URLリンク(sites.google.com)
関数ライブラリスクリプト
URLリンク(sites.google.com)
452:名無しさん@お腹いっぱい。
13/01/19 21:00:56.00 05Y6TxWS0
>>451
どうもです。一通り目を通してきます
453:名無しさん@お腹いっぱい。
13/01/20 18:30:35.15 YKBiVB3v0
FileappendのTextをインデントさせたいのですが実際書き出す時はタブは入れたくありません
どうすればいいでしょう?
例)
^c::
\tFileappend,
\t(
\tほにゃらら
\tほにゃらら
\tふにゃー
\t), text.txt, UTF-8
return
とすると↓
ほにゃらら
ほにゃらら
ふにゃー
と書き出されるようにしたいです
\tはタブだと思ってください
ちなみに\nを使って一行にまとめることはできるのですが、ものすんごく長くなって可読性が著しく低いです
あれ嫌です
454:名無しさん@お腹いっぱい。
13/01/20 18:39:42.11 w74zkbbt0
LTrim
455:名無しさん@お腹いっぱい。
13/01/20 18:57:50.90 UJdlpgUX0
^c::
Fileappend, % ""
. "ほにゃらら`n"
. "ほにゃらら`n"
. "ふにゃ~"
, text.txt, UTF-8
return
456:名無しさん@お腹いっぱい。
13/01/20 21:02:26.33 DBAha5rg0
>>453
>>454で出てるけど、もう少し甘やかしてやろう
URLリンク(sites.google.com)
457:名無しさん@お腹いっぱい。
13/01/21 01:30:39.88 FY3X9uXO0
LTrimで出来ました、ありがとうございます
最初StringTrimLeftのことかと思っちゃいました
>>455さんもありがとうございます
>>456
もっと甘やかしてください
さしあたっては一人の夜が寂しいので子守唄などを……
458:名無しさん@お腹いっぱい。
13/01/21 19:08:49.39 RG5gngyq0
昔の時計のように
毎時00分になったら同じサウンドファイルを実行するようなタイマーを作りたい時はどうしたらいいですか?
SetTimerは指定間隔でタイマーを実行するだけなので
今回のように指定時刻で発動したい場合にはどう書いたらいいか分かりませんでした
459:名無しさん@お腹いっぱい。
13/01/21 19:14:41.50 ZAERgtrP0
タスクスケジューラに登録するほうがよさげ
460:名無しさん@お腹いっぱい。
13/01/21 19:26:51.75 OiW2GJwP0
>>458
AHKでやりたいなら、SetTimerで1秒ごとに時間確認するしかないと思う
SetTimer, hoge, 1000
hoge:
If(A_Min = 0)
{
SoundPlay, test.wav
}
Return
461:名無しさん@お腹いっぱい。
13/01/21 19:29:03.25 OiW2GJwP0
>>460
間違えた、これじゃ0分台に毎秒鳴っちゃうなw
If(A_Min = 0 && A_Sec = 0)
に修正
462:名無しさん@お腹いっぱい。
13/01/21 22:16:53.41 QfYhT3U80
予め設定した任意のウインドウが前面アクティブになったら、自動で特定のキーを押したいんだけど、
やっぱりloopとかでずっと毎度確認させておくしかありませんよね?
ずっとそういうの走らせておくと負荷が増えるでしょうし、そういうの嫌いなので敬遠したいのです。
Autohotkeyじゃないフリーソフトで、特定のウインドウが前面になったら
作業をはじめるソフトありますけど、あれもどうせずっと監視負荷かかってるんでしょうけど
463:名無しさん@お腹いっぱい。
13/01/21 22:31:58.02 u4q5SIbN0
そんな負荷なんてあってないようなもんだと思うけど
464:名無しさん@お腹いっぱい。
13/01/21 22:49:31.30 RG5gngyq0
>>459-461
ありがとうございます!
タスクスケジューラにWAVファイルを登録してみたら再生するたびに
いちいちWMPウィンドウが起動してしまうのでAHKのほうが良さそうに思いました
細かい話ですが
hoge:
If(A_Min = 0 && A_Sec = 0)
SoundPlay, test.wav
Return
スレッドを実行するのってどのくらい負荷がかかるんでしょうか?
極端ですが 1秒じゃなく100ミリ秒
SetTimer, hoge, 100 とかにスレッド実行間隔を狭めると、それなりに負荷が増えるのか
それともこんなのは無視できるぐらいの負荷なのでしょうか?
465:名無しさん@お腹いっぱい。
13/01/21 23:01:58.50 1BzKfLUJ0
タスクマネージャー見ればいいじゃん
466:名無しさん@お腹いっぱい。
13/01/21 23:21:22.51 b0IVjByp0
>>464
wavを直接登録しないで
wavを再生するだけのAHKスクリプトをタスクスケジューラーに登録すればいい
467:名無しさん@お腹いっぱい。
13/01/21 23:30:23.05 OiW2GJwP0
>>462
URLリンク(sites.google.com)
Windowsに相乗りする形だから多分負荷も軽い
>>464
タイマー実行する内容とマシンパワーによるんじゃないの
500ミリ秒程度なら大抵の場合無視できるレベルだろうし、
時刻確認するくらいなら100ミリ秒でも気にならないと思う
468:名無しさん@お腹いっぱい。
13/01/21 23:56:35.82 RG5gngyq0
>>465-467
ありがとうございます。タスクマネージャでは何の負荷も掛かってないように見えます・・
時刻をチェック( If(A_Min = 0 && A_Sec = 0) )するぐらいだったら
超短期100ミリ毎でも気にならない負荷なんですね
469:名無しさん@お腹いっぱい。
13/01/22 00:13:58.11 WwHX9KHE0
10でも使用率全く変化しないと思うぞ
470:名無しさん@お腹いっぱい。
13/01/22 01:00:37.88 MZKW7qU80
>>467
レスありがとうございました。まったく知りませんでした。
URL先の例文をちょこっと改変して、使ってやろうかしらと思ったら、
むずーw
471:名無しさん@お腹いっぱい。
13/01/22 10:42:06.06 KAdlKMrT0
>>470
Windows APIの仕様を調べたり理解するのは確かに労力がいるけど
アクティブウィンドウ切り替えを検知するだけならそのページのサンプルまんまでいけるよ
472:名無しさん@お腹いっぱい。
13/01/22 21:10:14.75 MZKW7qU80
>>471
そうですか...自分ほんとになにも知らないので。
いけるとのことですので、もうちょっと見てみます。
でも、サンプルを見た限り、すべてのアクティブウインドウの切り替え
になにかさせるように見えます。特定の一つのソフトウェアのウインドウが
アクティブになったときに、キー押させたいんです。
誘導ありがとうございました。
473:名無しさん@お腹いっぱい。
13/01/22 21:40:00.84 /8AUs2tB0
わからなけりゃ無理せずにWinWaitActiveなりSetTimerでいいと思うけどな
SleepなしにLoopぶん回すとかは論外だけど
474:名無しさん@お腹いっぱい。
13/01/22 21:47:55.31 KAdlKMrT0
>>472
コピペして動かしてみたら分かりやすいよ
アクティブウィンドウが変わるとツールチップが表示されると思うから
WinActivateHandler関数の中身のみ手を加えたりすれば良さそうだよね
>特定の一つのソフトウェアのウインドウがアクティブになったとき
これもWinActivateHandler関数の中に書いちゃえばいい
WinActivateHandler(...) {
IfWinActive("ahk_class somewindow") {
; 特定のウィンドウがアクティブになったときのみに
; この中に書いた内容を実行させる
}
}
475:名無しさん@お腹いっぱい。
13/01/22 21:50:46.96 KAdlKMrT0
ちょっと間違った
IfWinActive()関数なんてなかった
IfWinActive, ahk_class somewindow
あるいは
If WinActive("ahk_class somewindow")
が正しい
476:名無しさん@お腹いっぱい。
13/01/23 00:04:22.81 MZKW7qU80
教えて頂いてありがとうございます。
「それはできる」っていうことを教えて貰っただけでも大分お得なのですが、
テストしてみてもできないなぁ。
Tooltipは出るんですが、どのウインドウが全面になってもでてる。
限定できてない。おれの書いたのでは。
WinActivateHandler(hWinEventHook, event, hwnd, idObject, idChild, thread, time) {
IfWinActive, ahk_class MozillaWindowClass
WinGetTitle, title, ahk_id %hwnd% (前後行、同じ)
の2行目を足しただけなんですが。
ほかにもコピペのを書き直さないといけないところあるかもしれないのかな。
IfWinActiveのあとを小括弧で囲むようなことをしないといけないのかな。
これあれば便利なのでもうちょっと考えてみます。
477:名無しさん@お腹いっぱい。
13/01/23 00:20:41.03 mU/uJWXm0
>>476
サンプルは、要するにウィンドウが切り替わったら教えてもらうってことだから、
どのウィンドウが前面に出てきてもツールチップが出るのは当たり前
あとはTooltipのとこだけ書き換えてそれが指定ウィンドウか確認するだけでしょ
WinGetClass, class, ahk_id %hwnd%
If (class = "AU3_Spy.exeで調べたクラス名")
{
Send,
}
478:名無しさん@お腹いっぱい。
13/01/23 01:22:30.83 2qEXEY6Y0
なんかしらんがキーロガーらしきものが見つかったガクブル
H@tKeysH@@k.DLL: Trojan.W32.HotKeysHook.A-2
と思ったら
AHKで作ったエロゲ攻略スクリプトなような気がする
479:名無しさん@お腹いっぱい。
13/01/23 02:06:52.71 cVTLBPV+0
AHKもexeが作れるから、これでウイルスを作るやつがいてもおかしくないか
480:名無しさん@お腹いっぱい。
13/01/23 07:32:25.04 mU/uJWXm0
Aviraだと、AHK2EXEで作った実行ファイルは中身空でも全てウイルス認定されてた
誤検知報告してしばらくしたら検知されなくなったけど
481:名無しさん@お腹いっぱい。
13/01/23 11:33:01.28 pWsz8ahB0
>AHKで作ったエロゲ攻略スクリプト
そっちの方が気になる
あと実行ファイル化するとAvastでもこのファイル不審って反応するよ
482:名無しさん@お腹いっぱい。
13/01/23 13:41:57.79 CRP6GBvf0
なにそれw
エロゲ攻略スクリプトとか怖すぎw
483:名無しさん@お腹いっぱい。
13/01/23 15:34:57.01 4SiGHfCU0
実際は操作補助スクリプトだろ
484:名無しさん@お腹いっぱい。
13/01/23 16:18:12.37 /crZKM7j0
初歩的っぽいけどわからんので質問
キーが押されてる間、装飾キーを押してることにする
やりたいこと的には(イメージ)
a::send, ("Ctrl") & ("Shift")
485:名無しさん@お腹いっぱい。
13/01/23 16:41:07.54 F8cMVSu+0
>>484
a::
send, {ctrl down}{shift down}
keywait, a
send, {ctrl up}{shift up]
return
装飾キーはネタかもしれんけど正しくは修飾キー
486:名無しさん@お腹いっぱい。
13/01/23 17:13:02.90 /crZKM7j0
>>485
ありがとう!keywaitがみそなのね
そして間違いの指摘もアリガトウ、思い込みってこわいね
487:名無しさん@お腹いっぱい。
13/01/24 03:00:47.13 gvcfQkb60
みんなすごいことしてるよね
自分はコンビーネーションキーを変換したり
それをソフトごとに挙動替えたりしかしてないわ
どっかで拾ってきたスクリプトの一部分を理解して
自分なりにアレンジくらいはできるけど
0から大がかりなのは作れないわ
488:名無しさん@お腹いっぱい。
13/01/24 12:45:42.87 945pKXoE0
ctrl+hogeのショートカットが上手く機能しないソフトがあるんだけど、どうしたらいいかな?
^Right::
ControlSend,ClassHoge,{Right}
return
・・・とか書いてもダメ。クラスを変えても、カーソルキーじゃない普通の文字にしてもダメ
F1::みたいにファンクションキーだといけるから、環境じゃなくてソフトの問題だと思うんだけど・・・
ちなみに、なぜか^F1::だとダメで、+Rightだとおk
^Right::F1
F1::
ControlSend,ClassHoge,{Right}
return
・・・もダメですた
489:名無しさん@お腹いっぱい。
13/01/24 13:46:05.09 TeZWhKt30
>>488
他のSend使ってみたら?SendMode変更も
490:名無しさん@お腹いっぱい。
13/01/24 14:02:52.26 QYja0SeO0
ControlSend使いたいならWinTitleは指定するべきじゃね
1. ControlSend,ClassHoge1,{Right},WintiTle
2. ControlSend,,{Right},ahk_id %ControlhWnd%
等
control名をClassNNで指定するなら末尾に番号つくはず、window SPYで確認してみ
確実にやりたいならコントロールのハンドル取得して2の方式でやればだいたいけるはず
URLリンク(sites.google.com)
ていうか単にSendとControlSendをとりちがえてるだけな悪寒
491:名無しさん@お腹いっぱい。
13/01/24 23:10:56.47 945pKXoE0
>>489
inputもplayもダメですた・・・
>>490
┌─┬─┐
│①│②│
├─┴─┤
│ ③ │
└──┘
アクティブウィンドウがこんな風に3つのペインに分かれてて、
フォーカスは③にある状態で①や②を操作したいんですよね
#IfWinActive, ahk_class WinTitle1
^Right::
ControlGet,controlHWND1,Hwnd,,ClassNN1,ahk_class WinTitle1
ControlSend,,{Right},ahk_id %controlHWND1%
return
#IfWinActive
こんな感じで書いてもダメでした
>>488のスクリプト時もそうでしたが、上手くキーが通ることもあるんですが、
通ったり通らなかったりで・・・
連続して5回くらい通ったかと思うと次は3回通らなかったり、気まぐれで困ってます
492:名無しさん@お腹いっぱい。
13/01/24 23:51:59.43 dNpBbL/p0
あるソフトが~
とあるアプリで~
とボカす必要性って、どこにあるの?
493:名無しさん@お腹いっぱい。
13/01/24 23:57:21.55 XtxM3a0X0
XPですが現在選択しているファイルのファイル名のコピーを簡単に行うにはどうしたらいいでしょうか?
494:名無しさん@お腹いっぱい。
13/01/24 23:58:29.82 xvtD33160
エロゲである
過去の質問遍歴がばれる
495:名無しさん@お腹いっぱい。
13/01/24 23:59:26.84 XtxM3a0X0
追記:ファイル名をクリップボードに送るという意味
496:名無しさん@お腹いっぱい。
13/01/25 00:06:47.90 nO0UR7/90
Ctrl+cをSendしてSplitPath
497:名無しさん@お腹いっぱい。
13/01/25 00:32:08.15 8TqLIrpd0
ありがとう
498:名無しさん@お腹いっぱい。
13/01/29 17:46:13.28 q1derZ65i
ファイルのフルパス収得目的で同じようにahk使ってるけど、いつの間にかワードやエクセルで書式無視してのコピペに使うようになってた。
499:名無しさん@お腹いっぱい。
13/01/31 12:38:27.68 oI4JsJDK0
MouseMove,-16,0,,r
のようなコードでマウスカーソルを相対移動させてる時に
ユーザーがマウスカーソルを動かすと誤動作してしまうんですが
マクロ実行中はユーザーからの入力をロックさせるということはできませんか
500:名無しさん@お腹いっぱい。
13/01/31 12:42:16.70 r5ebVVNc0
BlockInput
501:名無しさん@お腹いっぱい。
13/01/31 12:58:22.97 oI4JsJDK0
BlockInput,On
...
BlockInput,Off
ではさめばいいんですね。ありがとうございました。
502:名無しさん@お腹いっぱい。
13/01/31 23:20:01.20 jFyPnqkZ0
変換キーを押しながらマウス移動下をしてる時に左右キーのどちらかが押されたら斜めに、って
やりたいのですが思ったように動いてくれません。どこが悪いのでしょう
vk1Csc079 & s::
if getkeystate("a")
MouseMove, -11, 11 , 1, R
else
MouseMove, 0, 11 , 1, R
return
503:名無しさん@お腹いっぱい。
13/02/01 00:04:45.30 Lvgr/jLR0
変換+WASDで縦横斜めにカーソル移動したいってこと?
504:名無しさん@お腹いっぱい。
13/02/01 00:17:53.93 etQQOqtI0
よくわかんないけど、
普段 → 普通にマウス操作。ex.マウス下に動かす
特殊 → マウス操作しつつ、変換+カーソル。ex.マウス下に動かしつつ、変換+左
ってことじゃね
505:名無しさん@お腹いっぱい。
13/02/01 02:27:37.29 bDd6YDDv0
ごめんなさい、見返したらよくわからないですね、、
マウス移動は上下左右それぞれ1つずつは動いてくれてるんですが
下を押しながら左で左下に、右を押しながら上を押して右上に。という感じでWASDでカーソル操作がしたいのですが
(結局は>>503がしたいけれど)斜めのところでどうすればいいのかわからない。といった感じです。へるぷみー!
506:名無しさん@お腹いっぱい。
13/02/01 02:40:04.82 Lvgr/jLR0
>>505
vk1Csc079 & w::
vk1Csc079 & a::
vk1Csc079 & s::
vk1Csc079 & d::
While (GetKeyState("vk1Csc079", "P"))
{
MoveX := 0, MoveY := 0
MoveY += GetKeyState("w", "P") ? -11 : 0
MoveX += GetKeyState("a", "P") ? -11 : 0
MoveY += GetKeyState("s", "P") ? 11 : 0
MoveX += GetKeyState("d", "P") ? 11 : 0
Sleep, 10
MouseMove, %MoveX%, %MoveY%, 1, R
}
Return
これでどう?
507:名無しさん@お腹いっぱい。
13/02/01 22:43:37.22 bDd6YDDv0
>>506
う…うごかない、、ですがWASDには変数操作をさせて動かすという感じは
なんとなく伝わってきたのでそんなアプローチでやってみます
508:名無しさん@お腹いっぱい。
13/02/02 00:43:16.00 605eqp6b0
全角スペースそのままコピペしたとか?
509:名無しさん@お腹いっぱい。
13/02/02 00:47:17.28 oiG3GNcR0
全角スペースじゃなく【TAB】とかにした方がいいのかな?
510:名無しさん@お腹いっぱい。
13/02/02 02:01:39.49 IbcH0npi0
キーボードがうんこ
の可能性
Nキーロールオーバーのを買うか
斜め専用キーを設定するか
511:507
13/02/02 02:07:57.06 /AgeXOfO0
うごきました!ゼンカクでした。ありがとうございました。
ほんとにもう、、感謝です
512:名無しさん@お腹いっぱい。
13/02/02 13:16:51.83 CAjke4a60
二つやりたいことがあるのですが、いい方法がありましたら教えてください
1.任意のウィンドウのボタンをタスクバーから消す
2.Windows8では(7から?)タスクバーが常に最前面表示で領域固定されていて
ウィンドウを最大化してもタスクバーを除いた部分までしか広がらず画面一杯に最大化できません
画面一杯にウィンドウを最大化させたい
調べてみた所ツールウィンドウ化することで目的を果たせそうだったのですが
試した結果、ウィンドウのスタイルがクラシック表示の様になり見た目がよくありません
さらにいじってみるとTOOLWINDOWからWS_SYSMENUを取り除くことで
理屈は分からないのですが元通りのスタイルが適用されるようになりました
結果、一応以下の様なものができあがりました
ただ素人考えなので、ウィンドウ開閉ボタンが消えてしまったりと難ありです
もっとスマートな方法があったら教えて頂けないでしょうか
WinSetTitle, ahk_class Progman,,XABCDExclude ;デスクトップとタスクバー除外
WinSetTitle, ahk_class Shell_TrayWnd,,XABCDExclude
return
#z::
DetectHiddenWindows, On
WinWait, A
WinGetActiveTitle, AW
WinHide, %AW%,, XABCDExclude
WinSet, ExStyle, ^0x80 ;WS_EX_TOOLWINDOW
WinSet, Style, ^0x00080000 ;WS_SYSMENU
WinSet, Topmost, TOGGLE
WinShow, %AW%
return
513:名無しさん@お腹いっぱい。
13/02/04 04:54:47.97 FA7/FKmD0
IME_GetConvertingについて質問です
変換候補窓において、alt+kをTabに割り当てようとしています(alt+kで候補を選択したいということです)
しかし、alt+kは個別のウィンドウにおいても、よくキーが割り当てられています
例えばエディタではalt+kにPgDnを割り当てています
AHKでは#IfWinActiveが優先するため、この場合、変換中でもalt+kはPgDnになってしまいます
かといって、これを最優先するように最初の#IfWinとして書くと、
今度は個別の設定(PgDnなど)が効かなくなってしまいます
どうにか変換中だけalt+kをTabにするうまい方法はないでしょうか
Label1:
Send,{Tab}
return
#IfWinActive, A
!k::
if IME_GetConverting()=0
Hotkey,!k,Label1,Off
else
Hotkey,!k,Label1,On
return
#IfWinActive
一応、試行錯誤の末に、↑のように書いてみたのですが、うまくいきませんでした・・・
514:名無しさん@お腹いっぱい。
13/02/04 07:05:20.79 3AtmnZEo0
>>513
こんなのは?
#If IME_GetConverting()
!k::Send, {Tab}
#If
#IfWinActive エディタ指定
!k::Send, {PgDn}
#IfWinActive なんか別のソフト指定
!k::なんか別の処理
#IfWinActive
515:名無しさん@お腹いっぱい。
13/02/04 12:03:51.51 mniDA1zd0
Windows8ではデスクトップアプリケーションでのみAutoHotKeyが動作するのでしょうか?
516:名無しさん@お腹いっぱい。
13/02/04 13:02:35.72 FA7/FKmD0
>>514
うまくいきました! ありがとうございます!
#Ifなんてコマンドがあるんですね・・・リファレンスには見当たりませんでした
一部のウィンドウ(ワードの検索小窓など)ではうまく動かないようですが、
エディタやブラウザなど、ほとんどの環境で問題なく変換候補が選べました
ありがとうございますー
517:名無しさん@お腹いっぱい。
13/02/04 19:15:19.36 0io5GWW80
#IfはAutoHotkey_Lで追加された機能だから流行らせるページにはないよ
URLリンク(sites.google.com)
518:名無しさん@お腹いっぱい。
13/02/04 19:31:35.83 zgTphjI30
自分もWindows8に関して質問させてください
alttabmenuは7と同様に動作しますか?
両方使用している方がいればいいんですけど
519:名無しさん@お腹いっぱい。
13/02/04 20:19:59.17 5Ho14i5G0
>>516
ワードでうまく動かないのは修飾キーのAltが原因じゃない?
Altを使わないホットキーに変更したらうちではちゃんと動く
>>518
オレはWin8持ってないけど>>94-103あたりで話題になってる
520:名無しさん@お腹いっぱい。
13/02/04 20:32:17.53 zgTphjI30
>>519
見た感じAltTabMenuが8で動くかどうかとは具体的には書いてない感じですかねぇ
>>131 >>134もそうですけど
ありがとうございます
521:名無しさん@お腹いっぱい。
13/02/04 23:57:20.35 0h6UKwo60
>>519
IME_GetConverting()の制約だと思う、IMEのシームレス表示の時は値取れないから
522:名無しさん@お腹いっぱい。
13/02/05 22:15:07.31 9lgA8wfo0
>>519,521
ワード本文ではシームレス表示を切ることできちんと動作しました
動かないのはctr+Fで出る小窓上でのことです
こういうポップアップ系については、
ウィンドウ操作が特殊だったり難しかったりするという話なので、これは仕方ないと諦めております
十分便利ですので! 助かっております!
523:名無しさん@お腹いっぱい。
13/02/05 22:19:25.56 9lgA8wfo0
あ、>>517さん、ありがとうございます! 参考に致します!
524:名無しさん@お腹いっぱい。
13/02/06 02:13:45.40 QoaawrgJ0
>>522
普通に小窓のwin指定が別物だからってだけなのでは
ポップアップ系といっても大概は特殊でもないよ
525:名無しさん@お腹いっぱい。
13/02/07 17:18:42.99 7N4nHyuw0
本家 → L で Strlen() での戻り値がバイト数から文字数に仕様変更されたようですが
VBのLenB関数的なものが別途用意されたわけではないみたいでちょっと困っています
全半混在文字列のバイト数を得たいのですが、代替方法はないでしょうか?
具体的には↓の Unicode対応版 ファイルドロップ関数を使いたいのですが
これだとパスに日本語が混じってると動かないみたいです
URLリンク(www.autohotkey.com)
526:名無しさん@お腹いっぱい。
13/02/07 18:19:26.76 4WxMF3HJ0
>>525
その Url の関数は Unicode に対応してないね
バイト数を得たいなら、単純に StrLen() *2 すればいいだけだよ
過去ログに Unicode 対応版があったので貼っておく
AutoHotkey スレッド part11
スレリンク(software板:332番)
527:名無しさん@お腹いっぱい。
13/02/08 01:27:57.85 yiBR12/Q0
>>526
おお!ありがとうございます、ばっちり動くようになりました
一応StrLen() *2 はやってみたんですが最初の一個しかドロップできなかったので
てっきりLengthが違ってるのかと思ってました
U対応やx64対応でポインタ周りはひと通り見なおしてはいたんですが
AllocやRtlMoveMemoryが出てくるとどうも思考停止してしまいます
528:名無しさん@お腹いっぱい。
13/02/08 22:41:16.84 9GItAqiv0
すいません。
1) アス比そのままでウインドウを拡大したり縮小したりするのってどうしたらできますか?
ウインドウの右下に矢印を持って行って斜め右下にドラッグするのと同じ機能のやつです。
2) マウスのダブルクリックを、特定のソフトウェアウインドウがアクティブなときに、違う機能を割り当てる
ってのやっぱり無理ですよね?
おしえてください。
529:名無しさん@お腹いっぱい。
13/02/08 23:08:50.02 yiVohghI0
>>528
1→winmoveをいじる
2→何がやっぱりなのかは分からないが通常は可能。AHKスレ検索なりを推奨
530:名無しさん@お腹いっぱい。
13/02/09 00:00:33.23 6OAQX2tq0
>>528
一応言っておくけど、スクリプトをまるまる上げるつもりはさらさらない
それを期待してるなら無駄だから帰ったら
「こうしたくてこうしたんですけどダメでした。どこがダメだか教えて下さい」なら、力になるけど
531:名無しさん@お腹いっぱい。
13/02/09 01:42:54.53 fmBrf3pH0
そういうツッコミを受けて、適当に歯抜けのコードを書いてここに書いて、
どこを修正すればいいんですかって何回も連発してたやついたな。
数年前だっけ。いわゆる日記君。
532:名無しさん@お腹いっぱい。
13/02/09 09:59:40.11 E/XF3UY40
ダブルクリックはブロック、普通のクリックだったら通すってやりたいのですがどうすればよいのでしょうか?
本家,マニュアルのを参考にしたんですがいい考えがうかびません。。
#If MouseIsOver("ahk_class Notepad", "Edit1") ; テスト用。メモ帳の編集部分だけ有効
LButton::
KeyWait, LButton
KeyWait, LButton, D T.3
If (!ErrorLevel) {
msgbox 別の機能
return
} ;;; Click (遅い
return
#If
MouseIsOver(WinTitle, ctrl_in := "") {
MouseGetPos,,,hWnd, ctrl_cur
return (ctrl_in == "" || (ctrl_in && ctrl_in == ctrl_cur)) && WinExist(WinTitle . " ahk_id " . hWnd)
}
533:名無しさん@お腹いっぱい。
13/02/09 18:58:52.20 jJJe4w1R0
>>532
書いてみたら大して変わらなかったでござる。
RButton::
KeyWait,RButton
KeyWait,RButton,D T0.2
If(errorlevel){
msgbox,( ゚∀゚ )キタ━━!
}
Return
534:名無しさん@お腹いっぱい。
13/02/09 19:30:46.06 E/XF3UY40
>>533 どうもです。
自分のはこれを参考にしました
URLリンク(www.autohotkey.com)
535:名無しさん@お腹いっぱい。
13/02/09 19:41:23.17 jJJe4w1R0
目的は達成したのか?
536:名無しさん@お腹いっぱい。
13/02/09 21:55:36.54 E/XF3UY40
3行目にClickで妥協しました
537:名無しさん@お腹いっぱい。
13/02/10 01:29:38.34 OfMQVl1a0
stringTrimLeft , outstr , %A_LoopFileFullPath% , StrLen(%3%)
loopのフルパスから%3%(フォルダを指定)を削ってサブフォルダを含めたパスを取りたいんですけど
エラー出て困っています。
Error: The following variable name contains an illegal character:
引数は使えないとか制限有りますか?
538:名無しさん@お腹いっぱい。
13/02/10 01:59:00.33 D6LYYdFu0
splitpath
539:名無しさん@お腹いっぱい。
13/02/10 02:03:15.24 D6LYYdFu0
ではなさそうだが、よくわからん
540:名無しさん@お腹いっぱい。
13/02/10 03:08:28.60 EXpfFUoO0
>>537
エラーを素直に読んだら駄目文字の所為だから
L版使わなきゃ駄目じゃないの?
外してたらスマン
541:名無しさん@お腹いっぱい。
13/02/10 05:06:09.96 FnxzPPKp0
inputvarのところは%A_LoopFileFullPath%じゃなくてA_LoopFileFullPathでしょ
やりたいことがよくわからんがStringReplaceじゃだめなの?
542:名無しさん@お腹いっぱい。
13/02/10 08:42:47.60 zhnBsNCy0
StringTrimLeft, OutputVar, InputVar, %Count% だな
InputVarは変数名でCountは直値
URLリンク(sites.google.com)
%3%の中身わからんけど相対パスを取りたいってことかな?
outstr := Substr(A_LoopFileFullPath,Strlen(%3% "\")+1)
とかでもいけんじゃね
543:537
13/02/10 09:44:29.79 b/IlD6Zo0
色々有り難うございます
でも上手くいきませんでした。
やりたいこと
Aフォルダ(%1%)からBフォルダ(%2%)にある同名ファイルだけを抽出してCフォルダ(%3%)に置きたい。
その際、Bフォルダに存在しているがAフォルダにない場合はerror.logに書き出し、元のファイルを抜き出す。
%1% = C:\Users\myname\Desktop\dlg\source
%2% = C:\Users\myname\Desktop\dlg\target
%3% = C:\Users\myname\Desktop\dlg\result
ahk2exeで実行ファイル化して batchから起動しています。
--------------------------------------------------以下ソース
FileCopyDir, %2% , %3% , 1
sleep,1000
Loop, %3%\*.* ,1,1
{
StringTrimLeft , outstr , A_LoopFileFullPath , StrLen(%3%)
IfExist %1%\%outstr%
{
FileCopy, %1%\%outstr%, %A_LoopFileFullPath% , 1
}
else
{
FileAppend ,does not exist: %1%\%outstr% -> %A_LoopFileDir%\%A_LoopFileName%`r`n,%A_ScriptDir%\error.log
}
}
--------------------------------------------------終わり
最初は%1% %2%だけで上書きにしようと思っていたのですが
途中で%3%に書きだすように変更したために変な感じになってます・・・
これでダメな部分がわかりますでしょうか?
544:537
13/02/10 09:48:07.90 b/IlD6Zo0
追記
AフォルダとBフォルダにはサブフォルダがあります。
545:名無しさん@お腹いっぱい。
13/02/10 10:51:38.83 zhnBsNCy0
だからCountは直値なんだってば
あとコマンドラインパラメータは変数としては使えないから別の変数に取らないとダメ
result = %3%
StringTrimLeft , outstr , A_LoopFileFullPath , % StrLen(result)
StrLen(%3%) は「C:\Users\myname\Desktop\dlg\result」という名前の変数を指定してることになる
546:名無しさん@お腹いっぱい。
13/02/10 11:10:39.67 zhnBsNCy0
\も削るから % StrLen(result "\") か
>542のsubstr()も
outstr := Substr(A_LoopFileFullPath,Strlen(result "\")+1) だな
547:537
13/02/10 11:24:48.82 b/IlD6Zo0
直値ってそういう意味か
言われてみれば、そのまんまのエラーが出てるね
%とかよくわからん部分はまだあるけど動きたみたいです。
マジありがとう
548:名無しさん@お腹いっぱい。
13/02/11 00:06:53.91 PF/lWswt0
>>547 同じく%まじわかんないから、最近 Notepad++他デバッガで値を確認しながらステップ実行してる。
SciTE4AutoHotkey
URLリンク(www.autohotkey.net)
Notepad++
URLリンク(www.youtube.com)
549:名無しさん@お腹いっぱい。
13/02/12 23:31:51.61 kq9ZElGt0
>>548
SciTE4AutoHotkeyで、開いたファイルの履歴を消すことはできないのかな
どこで設定するかが分からない
誰か分かる人いる?
550:名無しさん@お腹いっぱい。
13/02/13 19:33:43.26 BxHB0Jvu0
>>549 Global properties(日本語の場合「共有~設定」) "save.recent=1" -> "save.recent=0"
じゃダメだよね・・
551:名無しさん@お腹いっぱい。
13/02/13 20:22:03.81 hExK1ZcuT
マウスジェスチャのサブルーチンにウィンドウ移動のキー割り当てをしてるのですが
タイトル指定(日本語)で移動させるのはどうすればよいのでしょうか
^F1::WinMove,ahk_class (AU3_Spy.exeでクラス指定),,2488,123 ← 動く
^F2::WinMove,WinTitle (AU3_Spy.exeで日本語のタイトル指定),,0,0 ← 動かない
AHK unicode64bit 1.1.09.00
552:551
13/02/13 20:41:05.08 hExK1ZcuT
すみません
WinTitleのところに入れるのですね。申し訳ない
553:名無しさん@お腹いっぱい。
13/02/13 21:36:27.43 pAe7q3zl0
>>550
ありがとうございます!それでokです!
554:名無しさん@お腹いっぱい。
13/02/14 02:32:55.18 VQ5vuT+O0
BlockInput, Onを使ってもホットキーに割り込まれてしまうんですが、
ホットキーも完全にブロックする方法ってありませんか?
555:名無しさん@お腹いっぱい。
13/02/15 07:53:14.89 n7k+hGVF0
>>554 コード見せてkds BlockInputにはhook hotkeyはtriggerdってかいてあるからだめなのかな
#MaxThreads1 か#MaxThreadsPerHotkey 1 か 実行中の時だけ Hotkey, キー名,, Off するとか・・
556:554
13/02/15 11:07:09.89 uwar21Mq0
\::
CoordMode, Mouse, Relative
KeyWait, LButton
BlockInput, On
MouseGetPos, x0, y0
MouseMove, 380, 240, 0
MouseClick
MouseMove, 320, 320, 0
MouseClick
MouseMove, 600, 70, 0
MouseClick
ClipSaved := ClipboardAll
Clipboard :=
Send, {Left 3}+{Left 3}^c
ClipWait, 1
if ErrorLevel {
BlockInput, Off
MsgBox, クリップボードにテキストをコピーできませんでした。
return
}
If Clipboard Is integer
SetFormat, Float, 03
Clipboard += 1.0
Sleep, 25
Send, ^v
Clipboard := ClipSaved
ClipSaved :=
MouseMove, 440, 400, 0
MouseClick
MouseMove, x0, y0, 0
BlockInput, Off
return
557:554
13/02/15 11:08:39.30 uwar21Mq0
>>555
Murdoc Cutterで1回押すごとにテキストボックスのファイル名をカウントアップして出力ボタンを押すというものです>>556
これの実行中に以下のホットキー(1GOP進める)を押すとファイル名のカウントアップが行われず
そのまま出力しようとしてファイル名重複のアラートが出ます(恐らく選択範囲をコピーする前に解除してる)
Right::
CoordMode, Mouse, Relative
KeyWait, LButton
BlockInput, On
MouseGetPos, x1, y1
MouseMove, 210, 320, 0
MouseClick
Sleep, 25
MouseMove, x1, y1, 0
BlockInput, Off
return
558:名無しさん@お腹いっぱい。
13/02/15 11:20:10.69 Q+zgcLAc0
Murdoc Cutterで最終的になにをやってるのかがわからないが、
デフォルトで、入力ファイルと同じファイル名が自動的に入ってなかったっけ?
まずは重複しないファイル名を適当につけておいて、あとで整列する仕事を
AHKでやらせたほうが効率的な気がする
559:554
13/02/15 11:35:53.89 uwar21Mq0
>>558
1本を細切れにしてると思っていいです
連結させずにバラバラに吐かせるためにこうなってます
560:名無しさん@お腹いっぱい。
13/02/15 11:46:33.67 Q+zgcLAc0
ああなるほど。
それだったら俺は、
・マウスカーソル絶対値指定で外部アプリを制御するのが億劫
・クリップボード経由でいじると、いろいろと想定外の何かが必ず起きる
が経験則で多いので、出力するファイルの新規作成をAHKで監視して、
新作がきたらfilemoveですぐにどけて、Murdocのほうは常に同じファイル名で
outさせるかなぁ
561:名無しさん@お腹いっぱい。
13/02/15 11:49:48.12 Q+zgcLAc0
ちなみにMurdocは「出力完了」のダイアログをちゃんと閉じてからじゃないと、
filemoveができない。このへんの自動化は画面を見て監視する必要がある。
562:名無しさん@お腹いっぱい。
13/02/15 21:32:01.31 uwar21Mq0
>>555
#MaxThreads1は非推奨らしいです
#MaxThreadsPerHotkeyで挟んでみましたが効果はありませんでした
Hotkey, キー名,, Off はRightの指定ができなかったです
>>560
AHKは割り当て以外の使い方が全くわからないので少し時間がかかりそうです
とりあえずSendをSendInputにしてスピードを上げて凌いでみます
563:名無しさん@お腹いっぱい。
13/02/16 03:00:20.64 q34Co9Ik0
いつもは音量ミキサーからマウス操作でやってる
マイクのミュートを1KEYでしたいの
SoundSetでやってみたけどダメだった
「サウンド解析スクリプト」を実行しても目的のマイクデバイスは出てこない
環境:
Win7x64 , AHK Version 1.0.46.17
参考URL:
URLリンク(sites.google.com)
564:名無しさん@お腹いっぱい。
13/02/16 03:12:22.64 bxtZVs8z0
そのリンクから飛べるがvista以降はSoundSet無意味
URLリンク(sites.google.com)
565:名無しさん@お腹いっぱい。
13/02/16 03:31:49.64 q34Co9Ik0
>>564
ありがとう
代替機能をフリーソフトで探しにいきます><
566:名無しさん@お腹いっぱい。
13/02/16 19:06:36.96 pgOQn4Xi0
そこにリンク貼ってある関数でいいじゃん
俺も使ってるよ
567:名無しさん@お腹いっぱい。
13/02/19 12:11:10.40 ew1X9YmP0
ディレクトリ名が、大文字と小文字で相違する場面でハマってしまいました。
実際に存在してるディレクトリ名「C:\AbC」
ifexistだと、Windows側が差を吸収して常に「存在あり」になります。
大文字小文字を厳格に指定するFTPのダウンロード制御で、
「転送先のディレクトリがないよ」というエラーが出てしまいました。
ifexist,C:\ABC →成立
ifexist,C:\abc →成立
ifexist,C:\AbC →成立
↓こうしたい
ifexist,C:\ABC →不成立
ifexist,C:\abc →不成立
ifexist,C:\AbC →成立
一番最後だけ通過するよう厳格にチェックするには、どのようにしたらよいでしょうか。
568:名無しさん@お腹いっぱい。
13/02/19 18:07:56.90 r2CUIvVp0
>>567
Loop, c:\*, 2
{
if (RegExMatch(A_LoopFileFullPath, "AbC")) {
msgbox % "hits: " A_LoopFileFullPath
}
}
RegExMatch だとデフォルトでcase sensitiveでした。。ディレクトリ名を一発で引っ張れるのないかなぁ
569:名無しさん@お腹いっぱい。
13/02/20 22:18:48.50 6OnoMbHJ0
検索ソフトのEverythingがアクティブな状態だとautohotkey、mousgesture.ahkの
マウスジェスチャーやショートカットキーが働かないんですがどうすればいいのでしょうか
他のクリップボード監視ソフト等の呼び出しキーショートカットも効かなかったりと
Everything自体が他ソフトのショートカットを動かないようにしてるっぽいんですが
Everythingにautohotkeyでキーショートカットを当てることを書いてるサイトもあったりするんですよね
570:名無しさん@お腹いっぱい。
13/02/20 22:56:08.48 mv3AM2Vl0
管理者権限とかじゃねーの
571:名無しさん@お腹いっぱい。
13/02/20 22:56:46.08 ybtrSJHe0
AHKLはインストーラ版しか無いのでしょうか?
572:名無しさん@お腹いっぱい。
13/02/20 23:02:31.31 tjD8sD160
プログラム未熟者ですが
関数とGosubてどう使い分けるのでしょうか?
戻り値を必要としない場合でも関数で全てこと足りると思うのですが
関数のデメリットもあるんでしょうか?
573:名無しさん@お腹いっぱい。
13/02/20 23:27:22.84 5jlXFfFu0
>>571
URLリンク(l.autohotkey.net)
574:名無しさん@お腹いっぱい。
13/02/20 23:32:34.24 ybtrSJHe0
>>573
自分の確認不足でした。
ありがとうございます。
575:名無しさん@お腹いっぱい。
13/02/21 00:06:18.36 tq7Pwaxo0
Altキーを押しながらCを押すって動作をさせたい場合はどの様に入力したら良いのでしょうか?
send,!C
では駄目でした。
先にAltを押してほんの一瞬遅れてCを押すって感じにしたいです。
576:名無しさん@お腹いっぱい。
13/02/21 00:07:58.95 wOXuXPL60
send,{alt down}
sleep,100
send,c
こんな感じ?
577:名無しさん@お腹いっぱい。
13/02/21 00:21:24.14 tq7Pwaxo0
>>576
動きました!が、
Altキーが押しっぱなしの状態になるのでが
そうなる事を回避するにはどうしたら良いのでしょうか?
手動でAltキーを押せば解除出来ます。
578:名無しさん@お腹いっぱい。
13/02/21 00:29:12.80 Yew6/Ne90
send,{alt up}を加えてください
579:名無しさん@お腹いっぱい。
13/02/21 00:36:25.87 tq7Pwaxo0
>>578
解消しました!
>>576,578
感謝です^^
580:名無しさん@お腹いっぱい。
13/02/21 01:00:33.96 MF/No1EK0
>>572
Gosubは関数が実装される前にできたもの
MenuやTimerとかは今でもサブルーチンラベルに飛ぶので
他は大抵ら関数で代替えできるのでそっち使えばいい
あと、あまりお薦めできる使い方じゃないが、subはラベルに飛ばしてるだけなので
関数みたいに入口は明確に一つじゃなくても実はかまわない
if (前準備まだ)
Gosub jyunbi ;前準備→本番
Else
Gosub honban ;本番だけ
次の処理~
jyunbi:
前準備1
前準備2
前準備3
honban:
本番処理
return
581:名無しさん@お腹いっぱい。
13/02/21 01:02:23.52 MF/No1EK0
×MenuやTimerとかは今でもサブルーチンラベルに飛ぶので
○MenuやTimerとかは今でもサブルーチンラベルに飛ぶので避けられないけど
582: ◆T98aC7LCC.
13/02/21 07:20:03.40 XtZcssSw0
1月からローカルで延々と作業してましたがようやく形になりましたので告知させていただきます。
サイト名: AutoHotkey Wiki
URL: URLリンク(ahkwiki.net)
AutoHotkeyを流行らせるページ、AutoHotkeyJp 様方には2週間ほど前に文章を使用させていただくという旨のメールを送っています。
編集段階で気がついた部分はなるべく修正しましたがまだまだ編集すべきところがたくさんあると思います、皆様のお力添えをどうぞよろしくお願いいたします。
583:名無しさん@お腹いっぱい。
13/02/21 07:52:54.33 zeK7WlKZ0
お疲れ様です
サイドバーのコマンドはデフォで開いてくれてた方がいいような
あとページタイトルが日本語+括弧になってる記事の編集ページのほとんどに警告が出てるような
584: ◆T98aC7LCC.
13/02/21 08:07:29.65 XtZcssSw0
>>583
さっそくのアクセスありがとうございます。
エラー?ですがこちらでは再現しなかったので申し訳ないですが
ページ名、使用環境(OS、ブラウザ)、警告の内容 教えていただけますか?
以下の場合は仕様です。
警告: このページの記事名の付け方は、当ウィキペディアのガイドラインなどにそっていないかもしれません。理由は以下のとおりです。
警告:ログインしていません。編集すると、IPアドレスがこのページの編集履歴に記録されます。
585:名無しさん@お腹いっぱい。
13/02/21 08:53:15.34 zeK7WlKZ0
>>584
仕様なんですね なら問題無いです
586:名無しさん@お腹いっぱい。
13/02/21 08:53:22.81 jxR69Inn0
>>582
ありがとう。便利です。
587:名無しさん@お腹いっぱい。
13/02/21 10:04:00.23 wOXuXPL60
autohotkeyjpは更新が止まったみたいだから、こう引き継がれるのはいいことだね
開発環境の構築とデバッグ機能を充実してほしい
588:名無しさん@お腹いっぱい。
13/02/21 17:55:22.24 rL6/w3yH0
他人が翻訳して書いた文章をコピペしてアフィ付けただけじゃないの。そういや似たような事がマウ筋であったな
589:名無しさん@お腹いっぱい。
13/02/21 18:01:04.73 oxWahYt90
あの流れをうんざりするほど見てる身としては話をふるやつもウザイ
590:537
13/02/21 20:01:58.23 tqzmtA9P0
マジで足引っ張るだけのやつはウザいな。クズすぎる
591:名無しさん@お腹いっぱい。
13/02/21 20:46:26.08 mDLhgvnu0
>>580
凄く勉強になりました ありがとうございます
ラベルをreturnで終わらせないで続けて書けば
入り口を複数作ることができるという事ですね
592:名無しさん@お腹いっぱい。
13/02/21 21:51:16.28 xVZVfegL0
ドメインやサーバの費用にするとか言うのかもだけど
アフィの貼りっぷりがなんともw
他人の仕事に乗っかってサイトを作って
wikiだから更新も人任せでもいけるし
カネ目当てのページ扱いされるのは
覚悟の上でやってるんじゃないの
最初だけちょっと自分で足してれば
とりあえず格好もつくし
こうは書いたけど、俺としてはカネ目当てのほうが
継続的にメンテしてくれそうだし歓迎だな
気分悪いって奴は無料wikiでも別に立ち上げて
どんどん使われるように頑張ってくれよ
ライセンスがパブリックドメインになってるから
アフィwikiのほうから全記事をコピーしても大丈夫だぞ
593:名無しさん@お腹いっぱい。
13/02/21 22:18:14.46 tqzmtA9P0
あ?因縁つけてんのかと思ったらアフィ貼りまくりなん?
フィルターで全部消えてるから見えないわw
594:名無しさん@お腹いっぱい。
13/02/21 23:18:18.85 wXTn9mG60
Gosubはホットキーに飛べるじゃん
595:名無しさん@お腹いっぱい。
13/02/22 00:24:03.64 9sfDc0xq0
>>594
もうちょっと詳しくお願いします
逆なら分かるのですが・・・
596:名無しさん@お腹いっぱい。
13/02/22 07:02:06.88 3rhhNlQT0
ホットキー「に」て、どういうこと?
597:名無しさん@お腹いっぱい。
13/02/22 08:03:13.24 15jgzyi+0
俺もオミトロンで全く見えないから気づかなかった
598:名無しさん@お腹いっぱい。
13/02/22 09:10:15.83 1Qdt6imo0
ホットキーラベルに飛べるってことじゃないの
a::
Msgbox,a
Return
b::
GoSub,a
Msgbox,b
Return
599:名無しさん@お腹いっぱい。
13/02/22 20:02:19.36 XUUeTvaS0
ウェブサイトで5か所を自動でクリックさせたくて下記のを作ってみました。
クリックはできるようになったんですが、スペースキーを押すまで繰り返すように作れないでしょうか?
ぐぐったりしてるんですが、まだ自分のスキルでは無理なようで・・お願いします
#IfWinActive ahk_class MozillaWindowClass
F1::
MouseGetPos, x0, y0
WinGetPos, X, Y, Width, Height
MouseMove, 730, 460
MouseClick, left
Sleep, 1000
MouseMove, 400, 535
MouseClick, left
Sleep, 1000
MouseMove, 660, 500
MouseClick, left
Sleep, 1000
MouseMove, 660, 525
MouseClick, left
Sleep, 1000
MouseMove, 660, 430
MouseClick, left
Return
#IfWinActive
600:名無しさん@お腹いっぱい。
13/02/22 23:01:01.96 zVll76ro0
>>599
loopとgetkeystate使え
loop{
繰り返したい内容
if getkeystate(space)
return
}
601:名無しさん@お腹いっぱい。
13/02/23 01:04:54.33 B3O9d/7M0
右クリック + ホイールダウンをAlt + Tabにしたいのですが
どのように書けばいいでしょうか?
602:名無しさん@お腹いっぱい。
13/02/23 01:30:35.75 pNH9BoKc0
>>601
頑張れ
603:名無しさん@お腹いっぱい。
13/02/23 01:40:10.53 xhHpGFi60
>>601 URLリンク(ahkwiki.net)
早速使ってみたが、検索で"alttab"が引っかからないなコレ
604:名無しさん@お腹いっぱい。
13/02/23 01:52:31.53 B3O9d/7M0
>>603
出来ました
Ctrl + F6の場合はどうすればいいでしょうか?
RButton & WheelDown::Send {Ctrl Down}{F6}{Ctrl Up}
としたところ単独の右クリックが無効になってしまいます…
605:名無しさん@お腹いっぱい。
13/02/23 02:15:40.75 pNH9BoKc0
>>604
そんなの当たり前
いちいち書き込んでないで、>>603から学べよ
wikiの中を検索しろ
いくらなんでも>>601,>>604みたいな、糞みたいに初歩的な質問をするんじゃねーよ
その程度のことなら、「基本的な使い方」みたいなとこに目を通すだけでわかるだろうが
わからないならお前にこのソフトは向いてない、諦めろ
606:名無しさん@お腹いっぱい。
13/02/23 02:16:30.66 xhHpGFi60
>>604 同じ頁の「修飾シンボル」~見て
607:名無しさん@お腹いっぱい。
13/02/23 02:27:56.43 B3O9d/7M0
>>606
やってみました
これだとホイールを回したときも右クリックのポップアップが出てしまいます
なかなか難しいですね
608:名無しさん@お腹いっぱい。
13/02/23 08:25:53.50 o6EDYp5Y0
その辺は誰もが一度ははまる罠
左右マウス乗っ取りは制御むずかしいよ、微妙な操作感で妥協するか
諦めてX1,X2あたりに割り振るかしたほうがいい
609:名無しさん@お腹いっぱい。
13/02/23 16:46:39.77 lNnm2ixd0
Loop,PARSEで特定の拡張子のフルパスを列挙するのに
Var := "D:\myDocuments\*.zip`n"
Var .= "D:\myDocuments\*.rar`n"
・・・
Loop, Parse, Var, `n
のようにしているのですが、一行で複数特定の拡張子を当てはめるにはどうすればいいのでしょうか
610:名無しさん@お腹いっぱい。
13/02/23 17:22:45.68 hjuNjHyQ0
>>609
If (RegExMatch(A_LoopField, "i)\.(zip|rar)$"))
611:名無しさん@お腹いっぱい。
13/02/23 17:58:27.20 dCNwSkqs0
マウスパッドの純正ソフトで特定動作で.exeを実行出来るツールがあるのですが
.ahkは指定出来ません。
AHKLで作った物を.exeにする方法があれば教えて下さい。
612:名無しさん@お腹いっぱい。
13/02/23 18:02:15.66 hjuNjHyQ0
>>611
URLリンク(sites.google.com)
613:名無しさん@お腹いっぱい。
13/02/23 18:52:44.95 lNnm2ixd0
>>610
正規表現はまだ手に負えそうにないので現状で我慢します
ありがとうございました
614: ◆T98aC7LCC.
13/02/24 01:37:05.23 dXbH172g0
>>603
報告ありがとうございます。先ほど不具合を修正いたしました。
Mediawiki検索で大文字小文字の違いを無視するように設定を変更
Googleカスタム検索をサイドバーに追加
615:名無しさん@お腹いっぱい。
13/02/24 12:52:53.59 LZniQRGM0
乙乙
616:名無しさん@お腹いっぱい。
13/02/25 17:32:43.73 st8WD3K80
MDI子ウィンドウをアクティブにするにはどうしたらいいのでしょうか?
WinActivate, ahk_id %hWnd%;hWnd=子ウィンドウのウィンドウハンドルです
ではできませんでした
他の子ウィンドウがアクティブになっている状態でhWndを前面に持ってきたいんです
617:名無しさん@お腹いっぱい。
13/02/25 19:13:41.28 Bw6+H3ko0
>>616
具体的にどのプログラムに対して(知られるのが嫌なら同じ状況が再現できる物)
どんなスクリプト書いたか(必要な部分全文 他のミスかどうか判断できない)
618:名無しさん@お腹いっぱい。
13/02/25 23:31:43.13 st8WD3K80
>>617
有難うございます。プログラムはEXCEL2007です。
hWnd := getMousePosWindowEx()
getMousePosWindowEx(def_cmode = 1)
{
CoordMode,Mouse,Screen
MouseGetPos, mx,my
hWnd := DllCall("WindowFromPoint",Int,mx, Int,my, UInt)
619:名無しさん@お腹いっぱい。
13/02/25 23:33:59.69 st8WD3K80
Loop
{
WinGet,ExStyle,ExStyle,ahk_id %hWnd%
if (ExStyle & 0x100 = 0x100) ;WS_EX_WINDOWEDGE
{
WinGet,Style,Style,ahk_id %hWnd%
if (Style & 0x00C00000 = 0x00C00000) ;WS_CAPTION
Break
}
hWnd := DllCall("GetParent",UInt,hWnd, UInt) ;親ウィンドウ検索
ifEqual,hWnd,0, Break ;Error
}
ifEqual def_cmode,1, CoordMode,Mouse,Relative
return hWnd
}
IfWinNotActive, ahk_id %hWnd%
WinActivate, ahk_id %hWnd%
※getMousePosWindowExを作ってくださった人有難うございます。
↑のように書いて重なり合った子ウィンドウをアクティブ化したいです
620:名無しさん@お腹いっぱい。
13/02/25 23:48:51.28 st8WD3K80
書き込めないため分割したらインデントもなく見難くなってしまいました・・
すみません。気をつけます
621:名無しさん@お腹いっぱい。
13/02/26 00:55:20.03 XM2Sq1LT0
Excelは WM_MDIACTIVATEでアクティブ化できないんだよな
しょうがないんで原始的にControlClickで対応してる
MdiClient := DllCall("GetParent",Ptr,hChild, Ptr) ;
SendMessage, 0x229, 0,0,,ahk_id %MdiClient% ;WM_MDIGETACTIVE
if (hChild != ErrorLevel) {
if(ChildClsName = "Excel7") ;Excelカスタム
ControlClick,,ahk_id %hChild%
Else
PostMessage,0x222, %hChild%,0,,ahk_id %MdiClient% ;WM_MDIACTIVATE
}
インデントは全角スペースなんで置換よろしく
622:名無しさん@お腹いっぱい。
13/02/26 13:11:34.83 YsX4GWTF0
>>569
亀レスだがEverythingの1.3.1.636b Betaだと対応してる
623:名無しさん@お腹いっぱい。
13/02/26 13:26:27.34 wk16gQ3+0
>>621
本当に有難うございます。
hChildは hChild := getMousePosWindowEx() で取得するので合っていますよね?
ChildClsName = "Excel7"の部分が Excelのバージョンによって違うのかExcel2007では動きませんでした・・
(他のMDIソフトウェアでは動きました!)
SendMessage, 0x229, 0,0,,ahk_id %MdiClient% ;WM_MDIGETACTIVE
if (hChild != ErrorLevel)
の部分が理解できないため宜しければ解説頂けないでしょうか
624:名無しさん@お腹いっぱい。
13/02/26 14:29:43.33 XM2Sq1LT0
>>623
>ChildClsName = "Excel7"の部分が Excelのバージョンによって違うのかExcel2007では動きませんでした・・
すまん ChildClsName はhChildのClass名ね(ClassNNではなく)
WinGetClass,ChildClsName,ahk_id %hChild% をifの前に取得してからやってみて
>if (hChild != ErrorLevel)
ErrorLevelにはWM_MDIGETACTIVEで取得したアクティブなMDI子ウィンドウのハンドルが入ってる
URLリンク(msdn.microsoft.com)
対象の子ウィンドウが既にアクティブな時は何もしないようにしてる
つっても判定なしで常に実行しても特に支障はないと思うので、邪魔くさかったら削っちゃてもおk
625:名無しさん@お腹いっぱい。
13/02/26 15:36:29.26 wk16gQ3+0
>>624
本当にありがとうございました!
なるほど戻り値がErrorLevelに格納されているんですね
Excelでもバッチリです
626:名無しさん@お腹いっぱい。
13/02/26 18:51:32.25 R2IcDDh4P
Win32API無知でスマソ
MdiClient := DllCall("GetParent",Ptr,hChild, Ptr)
と
MdiClient := DllCall("GetParent",UInt,hChild, UInt)
PtrはL専用という以外に 両者はどう違うんですか?
627:名無しさん@お腹いっぱい。
13/02/27 01:07:24.68 u4F8yNb80
x86とx64ではポインタ型のバッファサイズが違うため、UIntのままではx64版で正常に機能しない
Ptrって書いとけばLが自動でサイズ判断してくれる
>618-619の getMousePosWindowEx()は 2005年くらいに作った関数なのでそのあたり未考慮だが
DllCallの部分だけ修正すればx64 でもおkだと思う
hWnd := DllCall("WindowFromPoint",Int,mx, Int,my, Ptr)
hWnd := DllCall("GetParent"Ptr),hWnd,Ptr)
628:名無しさん@お腹いっぱい。
13/02/27 01:09:39.92 u4F8yNb80
×hWnd := DllCall("GetParent"Ptr),hWnd,Ptr)
○hWnd := DllCall("GetParent",Ptr,hWnd,Ptr)
629:名無しさん@お腹いっぱい。
13/02/27 19:49:12.45 KvFVP2/5P
>>627-628
勉強になりました。サンクスです。
630:名無しさん@お腹いっぱい。
13/02/28 10:38:35.26 Annsqc8S0
Windows7でWindowsサービスのウィンドウ上でマウスの横取りができないのですが、これってAutoHotKeyのexeに何日のプロパティを設定すれば治ったと思ったのですが、何を変更すればよかったのでしたっけ?
631:名無しさん@お腹いっぱい。
13/02/28 18:12:05.55 a4gvITa10
管理者権限の問題じゃ無いの?
632:名無しさん@お腹いっぱい。
13/02/28 18:45:08.54 uH7K3E2r0
UAC無効にしてる?