AutoHotkey スレッド part24 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1名無しさん@お腹いっぱい。 転載ダメ©2ch.net (ワッチョイ 997d-+Qhn)
垢版 |
2017/02/15(水) 18:04:32.01ID:kshCKhXn0
!extend:checked:vvvvv:1000:512と次スレを立てる際は1行目に記入してください

■配布元
http://ahkscript.org/download/

■前スレ
AutoHotkey スレッド part23
http://potato.2ch.net/test/read.cgi/software/1470936221/

■日本語解説等
AutoHotkey Wik
http://ahkwiki.net
AutoHotkeyを流行らせるページ(ミラー)
http://ahk.xrea.jp/ (不調時は http://hdd.s300.xrea.com/ahk/ )
AutoHotkeyJp(過去ログdatあり)
http://sites.google.com/site/autohotkeyjp/
Autohotkey日本語ヘルプ(chmファイル)
http://www6.atwiki.jp/eamat/
Autohotkey専用うpろだ
http://ux.getuploader.com/autohotkeyl/
簡易スクリプト掲示板
http://pastebin.com/

■派生版
IronAhk (.NET製、クロスプラットフォーム)
https://github.com/polyethene/IronAHK
AutoHotkey.dll (真のマルチスレッド対応など, AHKLの派生)
http://www.autohotkey.com/board/topic/39588-autohotkeydll/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
2017/05/02(火) 16:33:10.81ID:rrJHUz/00
>>362
嫌みを言ってるだけだろw
2017/05/02(火) 16:40:37.44ID:NmO727YQ0
どうみてもストレートな嫌味での皮肉だなw
2017/05/02(火) 16:51:22.50ID:Z3jAVDE20
コードそのものよりシーケンスの考え方を伝えたかったんだけど
>353総スルーで、完璧に動いてるのでこれでいいですか? て言われてしまうとね
まあ結局こっちの説明が下手すぎて伝わらなかったということなんだろう

コードの添削はしません
本人がよくわかってないまま修正するとまたバグが出てぐちゃぐちゃになるし
自分でどこを最適化したらよいか分かるようになってから自力でして下さい
2017/05/02(火) 18:53:40.69ID:/3o9eW+p0
359
>>365
353を総スルーしているつもりも、嫌みのつもりもないのですが・・・
『完璧に動いてるのでこれでいいですか?』というくだりも、
何らかの陰性感情を抱かせてしまったようですね。
手抜きをしているように映ってしまったということでしょうかね?

いずれにしても357の記述が不適切であるということは伝わってきました。
貴殿の気持ちがわかるまで、wikiを熟読して出直してきます。
ここまでお付き合いくださり、ありがとうございました。
2017/05/02(火) 19:12:14.89ID:v127Vr0k0
慇懃無礼というやつだな
2017/05/03(水) 17:41:53.64ID:mGMZlHNu0
誰にもメリットないし NG しときゃ良いんだよ
2017/05/04(木) 16:48:49.62ID:EVEHliNj0
そんなことより>>360を解決してください。一回の入力じゃ無視されること多々あります
2017/05/04(木) 16:52:41.96ID:RS2hmNwi0
>>369
>>2
■質問に際して
>操作したいソフト・やりたい処理などは具体的に書いた方がレスが付きやすい傾向にある。
2017/05/04(木) 16:55:27.54ID:H4uy8L700
>>369
ない
2017/05/04(木) 17:17:11.97ID:jtmuQjaf0
>>369
とりあえずコード貼ってみたら?
2017/05/04(木) 22:12:03.19ID:EVEHliNj0
とりあえず貼ります。

::kyouda::
FormatTime,imaTimeString,,yyMMdd
FormatTime,imajikan, L0x0409 T1,ddd
FormatTime,imaTime,Time,HH:mm
SendInput '%imaTimeString%%imajikan%%imaTime%
Return

でも記述がこの箇所のみでautohotkey.ahkとして起動しているとたぶん必ず一発で起動してくれるんですが、
普段つかってるこの箇所のほかにもいろんな記述があるautohotkey.ahkで動かすと、
イメージで5回に1回、初回のホットストリング打ち込みで無反応です。
kyouda{スペース} ってふつうに入力されるだけです。そのあとすぐ続けると2回目は必ず成功するイメージです。
2回連続失敗ってのは印象にないです。
なにか考えられるような要因ありますか?

GroupAdd, GameBindGroup, ahk_exe Overwatch.exe
#IfWinActive
#IfWinActive ;個別設定がでいっぱい
#IfWinNotActive, ahk_group GameBindGroup
#IfWinActive
#IfWinActive ;個別設定がでいっぱい
みたいな感じの構成で区分けています。
2017/05/04(木) 22:35:13.26ID:kC5yyJMz0
ならそのごちゃごちゃしてる他が干渉してるんでしょ
その肝心のごちゃごちゃ部分全部見ないとなんとも言えない
ログ見てどんな動作してるか確認してみないとね
とりあえずホットストリングをスクリプトの一番上に記述して同じ動作するか試してみ
2017/05/04(木) 22:49:24.04ID:EVEHliNj0
ですよね。ゴチャゴチャいっぱい書いてるうちのどこかが干渉してるんですかね。
autohotkey.ahkはいまみたら1980行でした。

ホットストリングの位置を前だったり後ろだったりいろいろ変えてみたんですが、やっぱりだめでした。
2017/05/04(木) 22:54:29.44ID:58DNMeaN0
それは1回ちょっと整理した方がいんじゃないか
2017/05/04(木) 22:55:27.87ID:kC5yyJMz0
スクリプトのログにちゃんと実行履歴があるなら
そのスクリプトを使用するアプリケーション側の相性や問題の可能性もある
俺もそこんとこ詳しくないからあまり言えないけど基本はまぁトライアンドエラーだし頑張りな
2017/05/04(木) 22:59:15.73ID:xMZhJJeb0
>>375
限界まで「自分で」地道にコードを削って動作確認
話はそれから
2017/05/05(金) 20:50:08.16ID:Vpqe3LRZ00505
複数のスクリプトを常駐させておきたい場合は、*.ahkを引数にしてそれぞれ
起動して使うものなのでしょうか? それとも、AutoHotkey.ahk からそれぞれの
*.ahkを引数にして、子プロセスをフォークして使うものなのでしょうか?

最近使い始めたのですが、一般的にどのように使っているのか分からなかったもので。
2017/05/05(金) 22:00:06.04ID:TRiKEWTN0
実行履歴があるのでそれをみる
使う対象のアプリ側との問題
自分で削って動作確認

一発でダメなのが判明するって性格のもんじゃないし、トライアンドエラーがめんどくさそう。
ホットストリングが発動しない確率が高いっていうかんじのものだから。
実行履歴にたしかに実行したスクリプトが載るけど、これみてどうしいいものやら

ありがとうございました。やってみます。
2017/05/05(金) 22:40:09.32ID:pP7Woi3/0
>>379
>*.ahkを引数
意味が分からないんだけど?何の引数?
2017/05/05(金) 22:50:32.77ID:ZSng4Fyk0
>>380
コードの長いやつから、独立したahkファイルに移行させて#Includeで管理するとかすればいいんじゃない
自分もそれで知らん間に動かなくなってたスクリプトが復旧できたことがある
いまだに原因が分からんがw 動いたらそれ以上調べる気が起きなかった
2017/05/06(土) 01:18:07.92ID:4LDITw9p0
>>379
SetTimer使うのが普通だと思う。
2017/05/06(土) 09:35:50.00ID:J5De719LM
>>379
autohotkey.ahk以外のスクリプトをどう起動するかって話なら
.ahkをautohotkey.exeに関連付けしてる人が多いんじゃないの
ポータブルに使いたいならbat作るなりautohotkey.ahk内の任意のタイミングで
runするなり好きにしたらいい
自分はエディタで編集中ahk実行マクロ作って試行してる

あと常時複数起動する前提ならプロセスとして分ける必要が本当にあるのか考えてみるべき
そうでないなら#includeでautohotkey.ahkにマージする
2017/05/07(日) 02:45:07.91ID:/qUzlPjG0
アクティブなウィンドウを画面の四辺に退かせるようにしようと思ったんですが
右端に移動と下端に移動が反応しません
どう書けばいいんでしょうか?

#Right::
WinGetPos, X, Y, Width, Height
WinMove, A, , A_ScreenWidth-Width
return
2017/05/07(日) 03:14:11.06ID:9FhLouSj0
>>385
WinGetPosをもう一度じっくり見直し
2017/05/07(日) 04:10:21.20ID:Sp0KdGmO0
省略してはいけないものが省略されてる
2017/05/08(月) 15:48:03.40ID:sgEHR+K40
すみません教えてください。

Func( path ) {
EnvGet, home, HOME
Run, %path%
}

上記のような関数に対し、
Func( "%home%\aaaa.exe" )
と呼び出した場合、実際に実行ファイルがあったとしても
パスが見つからないと言われてしまいます。

%path% の中の %home% が展開できないのではないかと考えたのですが、
多重の % を展開する方法はありませんでしょうか?
2017/05/08(月) 15:57:32.89ID:7swUnAyw0
>>388
>>273
2017/05/08(月) 16:04:50.67ID:sgEHR+K40
>> 389

ありがとうございました。
2017/05/08(月) 17:51:12.62ID:n+ysgQT20
https://autohotkey.com/boards/viewtopic.php?f=6&;t=6399
これ、面白いな
2017/05/09(火) 14:12:20.82ID:v0GmuPss0
AHKでやれよとおもったらAHKだったw

Vector 新着ソフトレビュー 「俺のキーボード」 - 「【BackSpace】+【Delete】で一行消し」などを行える“俺=作者”仕様のキーボード機能拡張ソフト
http://www.vector.co.jp/magazine/softnews/170509/n1705091.html

>【Win】+【A】で、アルファベットで打ってしまった文字を日本語で打ち直し
これはどういう実装なんだろうか
393名無しさん@お腹いっぱい。 (ワッチョイ 278e-Wm8h)
垢版 |
2017/05/09(火) 15:12:31.09ID:3+cE2t/J0
oi
misu
ってやつが
「おいミス」になるのかな
2017/05/09(火) 15:19:44.20ID:ep1GBXYg0
単純にアルファベット選択して変換キー押した動作と同じっぽい
2017/05/09(火) 15:35:42.26ID:YHfNFChO0
要らねえな
2017/05/09(火) 16:38:05.41ID:D6Yawi3g0
>>392
これLIB内の自動インクルード考慮しないでexe作っちゃってないか
IME_ON / IME_OFF の実態関数がないから機能しない
配布用exe作ったが本人はahkから実行してるから気づいてないってパターンぽい

まあスクリプトの方実行してもエラーになるけど
初期の頃のIME.ahkにしかない古い関数だから
さすがは俺環境ソフト
2017/05/09(火) 16:42:26.15ID:Zqe7Gozh0
作者ここの住人じゃないの
2017/05/09(火) 16:51:39.12ID:TqQ3ywXr0
AutoHotkeyの認知度に貢献してくれれば本望だな
2017/05/09(火) 19:28:38.09ID:uUNwpeuV0
とりあえずアドレスを貼るのみで、当スレからは立ち去りますが、
もし興味ある方は読まれて下さい。

(万人にプラスになる知識)
《神・転生の存在の科学的証明》
http://message21.web.fc2.com/index.htm

  
2017/05/09(火) 23:40:11.32ID:PXpMId0P0
>>392
>【Win】+【A】で、アルファベットで打ってしまった文字を日本語で打ち直し
↑はクリップボード使うみたいだけど、過去スレにそんな趣旨のスクリプト書かれてたがそれは「input」コマンド使用してるね
AutoHotkey スレッド part16
http://anago.2ch.net/test/read.cgi/software/1367725658/164-165
2017/05/09(火) 23:46:20.11ID:pWGqFUI10
+^left
^c
IMEオン
Sendでクリップボード出力

で大体似たようなことができる
2017/05/13(土) 03:30:17.50ID:Yj8xdb2h0
マウスを数秒間放置したらマウスカーソルを非表示にして、マウスを動かしたら
瞬時に表示されるようにするといったことはAHKで出来ますでしょうか?
もし可能ならばどんなコマンドを利用すればいいのかヒントだけでも頂けないでしょうか
2017/05/13(土) 04:42:46.58ID:G8PnK+ii0
>>402
日本語でも英語でもググルと載ってるよ
2017/05/13(土) 05:15:29.72ID:Yj8xdb2h0
>>403
ahk マウスカーソル 非表示
でググってみたけど目的のコマンドには辿り着けませんでした
もう少しヒントを頂けないでしょうか
まずはマウスカーソルを非表示にする方法さえ分かれば有難いのですが
2017/05/13(土) 09:15:12.46ID:IAUn2tZc0
>>404
コマンドって…一行で書けるようないわゆるコマンドは無いと思ったが

googleで「site:2ch.net ahk マウスカーソル 非表示」と2chに絞り込めば探しやすいだろう
2017/05/13(土) 14:22:40.80ID:e0r9kSFN0
DllCallでゴリゴリやる系は日本語で2chログ漁るより本家フォーラムを捜したほうがいいと思うが

hide Cursor ahk でググればそのまんまのモジュール関数出てくるし
ON/OFFはタイマーでA_TimeIdlePhysicalあたり監視すりゃいいんじゃないの
2017/05/13(土) 22:44:29.36ID:6BUBIjdu0
autohotkeyってボタンとか作れるの?
2017/05/13(土) 23:05:43.77ID:A4PaxIkp0
GUIなら結構簡単に作れる
2017/05/14(日) 08:49:21.83ID:/8OjOfMl0
ほ〜調べてみるわ
サンクス
2017/05/14(日) 13:02:06.46ID:6Fo4qCmh0
if ( %str1% = "mojiretsu")

のように文字列を""で囲んで比較したいのですがうまく行きません
生の文字列を””なしでコード中にそのまま書くのは避けたいんですが無理なんでしょうか?
2017/05/14(日) 13:15:06.03ID:wWYa+LOS0
所詮シェルスクリプト風の文法だし気持ち悪さになれるしか無いんじゃないの
どうしてもと言うなら
v:="mojiretu"
if str1==%v%
2017/05/14(日) 13:39:42.50ID:wC97xrej0
>>410
比較対象文字列が「"ほげほげ文字列"」という「"」も含む文字列ってこと?
書き方はいろいろあると思うけど、自分なら↓かなー

mojiretu := """ほげほげ文字列"""
if (str1 = mojiretu)
2017/05/14(日) 13:40:16.40ID:ysqfqjcX0
str1 := "mojiretsu"
if (str1 = "mojiretsu")
2017/05/14(日) 14:39:39.10ID:G5OYDNes0
%str1%の方は用法わかった上で使ってるん?

aaa := "mojiretsu"
str1 := "aaa"
if ( %str1% = "mojiretsu")
ToolTip,a
return

これで問題なく動くし間違えてないなら上手くいってると思うけど
2017/05/14(日) 15:52:10.04ID:Z9YfQS7e0
文字列ならstr使う方法も
if instr(str1, "mojiretsu")
2017/05/19(金) 08:55:09.24ID:zuLrkofa0
関数内でgoto使うのはあまり好ましくない?
func(){
label1:
...
if
{
goto, label1
}
}
2017/05/19(金) 09:30:58.27ID:mgmtBcLG0
いやべつに
2017/05/19(金) 09:32:44.30ID:E8LWLLPy0
美しくないだけ
2017/05/19(金) 09:57:24.07ID:GgHVwYsF0
頭に戻って繰り返し〜みたいな場合はループか再帰関数にするわ自分なら

多重ifやループから抜けて一気に終了処理に飛びたい時はgotoも使うけど
func(){
 if () {
  …
  if () {
   …
   if () {
    …
   }
   else goto exit
  }
  else goto exit
 }
exit: ; 後始末
 …
}
2017/05/19(金) 10:02:26.47ID:zuLrkofa0
ifの式が真の間、直前のコードと同じ処理をしたい時にまた同じ処理書くとコード長くなるのが嫌だからさ・・・
そこだけピンポイントで使うからそれだけのためにまた別の関数やライブラリ用意するのも微妙だしと思って他にいいアイデアないかと思った
2017/05/19(金) 10:06:05.45ID:zuLrkofa0
>>419
うーんwhileとかが使える条件だとそうしたいんだけどね
2017/05/19(金) 10:19:53.11ID:goZd5y1V0
Win10のファイルエクスプローラーでホイールを使ってファイルのフォーカス移動したいんだけど
表示方法によって移動がUp、DownとLeft、Rightで変わっちゃうんだよ
なんかいい方法ないかな?「次のファイル」みたいなショートカットが見つからない
ウィンドウの上部と下部でホイール回すとファイルのフォーカスが移動するように設定してて
応急処置として~RButton & WheelUpDwon の時だけ{Up}{Down}にしてる
2017/05/19(金) 10:32:51.22ID:6AxPrEfaM
>>421
再帰じゃだめなん?
2017/05/19(金) 10:43:49.45ID:zuLrkofa0
>>423
ごめん>>416が適当すぎた
再帰だと>>419みたいに条件がいくつもある場合に同じことしたいと上手く対応できない
2017/05/19(金) 17:06:38.10ID:2AN/Hzrs0
>>422
ExplorerItemFocus(Up:=False) {
  For Window In ComObjCreate("Shell.Application").Windows
  {
    If (WinExist("A") != Window.Hwnd)
      Continue
    
    Items := []
    For Item In Window.Document.Folder.Items()
      Items.Push(Item)
    
    FocusedItem := Window.Document.FocusedItem
    For Index, Item In Items
    {
      If (FocusedItem.Path = Item.Path) {
        FocusItem := Up ? Items[Index-1] : Items[Index+1]
        Window.Document.SelectItem(FocusItem, 0x15)
        Break
      }
    }
  }
}

COMオブジェでやってみたけどSystem32だと数秒フリーズするくらい重い
2017/05/19(金) 17:09:05.50ID:2AN/Hzrs0
>>422
GetExplorerViewMode() {
  For Window In ComObjCreate("Shell.Application").Windows
  {
    If (WinExist("A") = Window.Hwnd)
      Return Window.Document.CurrentViewMode
  }
}

>>425は実用的じゃないんで、表示モードによって送るキーを変えるのがいいと思う
2017/05/19(金) 18:11:11.88ID:PpwfT9pG0
>>424
例外処理にすれば?

func(){
 try {
  if () {
   …
  } else
   throw
 }
}
2017/05/19(金) 21:09:51.49ID:GgHVwYsF0
おお ahkLで try-catch もサポートしてたんやね
横だが知らんかったわ
2017/05/20(土) 21:16:42.42ID:3WOJ7VBV0
RunコマンドでMin起動した場合、RunしたアプリにControlsendが送信されません。
MinでRunしなければControlsendが送信されます。
これはAHKの仕様でしょうか?。
2017/05/20(土) 21:22:48.08ID:eg3beDWD0
コントロール鮮度は前々から話題に上がってるけど、不安定
環境やアプリケーションの相性に大きく依存する
2017/05/20(土) 21:34:22.91ID:D6AV13G70
>>429
手動で最小化したらどうなの?
2017/05/20(土) 22:18:49.76ID:cg5NPQjZ0
Min化した状態でClassNN(or hWnd)ってちゃんと取れてんの?
control指定してないならFocus外れてるんじゃね
2017/05/20(土) 23:23:44.64ID:3WOJ7VBV0
>>430
そうなんですか、知りませんでした。

>>431
手動で最小化後にControlsendしても同様の症状でした。

>>432
Controlsend対象が.NETアプリ何ですけども、コントロールを取得しても無しになってしまいます。
仕方なくウィンドウタイトルのみ指定してControlsendしています。
問題は私にあるのかも知れません。
2017/05/21(日) 00:03:11.61ID:5J23iwUk0
>>433
それならRunは関係ない問題は最小化

*ControlSendの指定が間違っている
*アプリ側が最小化状態でのキー入力に対応していない
2017/05/21(日) 02:11:45.49ID:0HKYOnaq0
>>434
最小化しなければ問題ないので、これでいく事にします。
有難うございました。
2017/05/23(火) 18:52:42.43ID:/z294Xzw0
winuser.h の KBDLLHOOKSTRUCTなど
色々な構造体のサイズを調べたいのですがahkだけでは無理ですか?
2017/05/25(木) 04:00:49.21ID:d6bAtKP00
>>436
構造体のサイズはC言語をちょっとかじれば手計算でできるし、
逆にCが全く分からないとポインタ関係で確実にポカをする。
そもそもwinuser.h自体がC言語で書かれているんだし、
少しC言語を勉強してみては?
今はMinGWもあるし、VisualStudioも安い版は無料だよ。
438名無しさん@お腹いっぱい。 (ワッチョイ db77-cSoe)
垢版 |
2017/05/25(木) 06:24:42.20ID:d6bAtKP00
> 構造体のサイズはC言語をちょっとかじれば手計算でできるし、

若干補足。手計算でやるといっても、複雑な場合にはもちろん
最終的にコンパイラに通して検算するんだけどね。

#include <stdio.h>
#include <windows.h>
#define OFFSETOF(_type, _member) (size_t)&( ((_type *)0)->_member )

int main(void)
{
int n = OFFSETOF(MENUITEMINFOA, wID);
printf("MENUITEMINFOA->iID: offset=%d (0x%02X)\n", n, n);
return 0;
}
2017/05/25(木) 07:55:24.37ID:XDVBwsnG0
>>437
Cでstructとメモリ関係は少し書いたことありますがahkで完結できないと
面倒なので…


手計算ってstructのメンバのサイズを合計して念のため1.2かけときゃ大丈夫ですか?
2017/05/25(木) 09:05:45.80ID:noecxPGT0
とりあえず「構造体 アライメント」とかで検索してちょろっと読めば大丈夫だと思う
441438 (ワッチョイ db77-cSoe)
垢版 |
2017/05/25(木) 16:10:17.52ID:d6bAtKP00
>>439
winuser.hが手元にあるってことは、手元にC言語の環境あるんでしょ?
とりあえずCでは>>438のようなテストコード「だけ」を書いてテストして、
そのあとはテスト結果の数字をAHK上に書き写して使えばいい。
Win32 APIで使うような構造体の配置は、どこのCコンパイラを使っても、
どのバージョンのWindowsでも同じ。
(Win32とWin64とではポインタとかの関係で当然変わるし、
 Windowsのバージョンが上がるごとに後ろに新しいメンバーが
 加わっていくということもあるけどね。)

>>438の例でいうと、>>438のコードを32bit環境でコンパイルして走らせると
「16(0x10)」という結果が出るので、あとはAHKで「先頭から16バイト目」と
記述すればよい。

安全倍率1.2というのは何もわかっていない証拠。
たとえばこんな構造体、サイズは何バイトになると思う?
struct sample
{
char c;
float d;
} x;
printf("sizeof(x)=%d\n", (int)sizeof(x));

これは環境とコンパイルオプション次第で5になったり8になったり、
あるいは16になったりする。
答は>>440の「アライメント」というキーワードにあるんだけど、
どうしてもわからなかったら>>438のように愚直にテストコードを書くこと。、
442名無しさん@お腹いっぱい。 (ササクッテロル Sp0f-uKyG)
垢版 |
2017/05/25(木) 21:58:34.37ID:F6r5NEnxp
autohotkey ホイール 加速
でぐぐるってヒットするブログのスクリプトを
今ままで利用してたんだけど
win10を最新にしたらホイールを回すとポポポって音を立てて
カクつくようになった
いったいなんなんだ
443名無しさん@お腹いっぱい。 (ササクッテロル Sp0f-uKyG)
垢版 |
2017/05/25(木) 22:12:38.61ID:F6r5NEnxp
WheelDown::
send, {WheelDown}
return

そもそもこれがまともに動かなくなった
2017/05/28(日) 02:19:08.81ID:w3NiANh30
ド初心者でごめんなさい。
マウス中央ボタン2回連続クリックでWinCloseさせたいのですが、
どうすればよろしいでしょうか?下記だとエラーが出てしまいます。

~MButton up:: DoubleKey("WinClose", 400)
DoubleKey(RunCommand, timeout){
if(A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < timeout)
Run, %RunCommand%
}

既出だったらホントごめんなさい・・・
2017/05/28(日) 02:27:46.75ID:0wNh4Fl10
>>444
ド初心者ならまずはwikiのサンプルコード集を参考にした方が良いと思うぞ
そこに1度押し、2度押し、長押しで別の動作を割り当てのサンプルがあるから
そのコードの長押しを除外して1度押しと2度押しだけ設定してやればいい
2017/05/28(日) 10:13:31.95ID:+E4xg+YL0
どっから拾ってきたコードか知らんけど大した行数じゃないんだから
具体的に何やってるか使われてるコマンド調べて把握しなさい
そしたらどこが間違ってどう直したらいいのか人に聞くまでもなくすぐわかるから
2017/05/28(日) 10:30:47.95ID:XUax02Ln0
>>444
Runはエクスプローラ上でファイルをダブルクリックするようなもので
AHKのコマンドを実行するためのものではない
それとAHKコマンドを変数に入れて直接実行するのも無理
2017/05/28(日) 13:13:52.62ID:w3NiANh30
皆様アドバイスありがとうございます。
サンプル集を参考にさせていただきましたが、なんとか
2回MButtonクリックで閉じることができました。
ただ、2回連続以外のときは通常のMButtonとして扱うには
どうしたらいいのでしょうか。
Send,{MButton}ではダメでした。


;MButton二回で閉じる

MButton::
KeyWait,MButton,T0.3 ;0.3秒対象キーが押されたかどうか
If(ErrorLevel)
{
;ここに任意のコマンド 長押し
KeyWait,MButton
Return
}
KeyWait,MButton,D T0.2 ;0.2秒対象キーが押されるのを待つ
If(ErrorLevel)
{
;ここに任意のコマンド 1度押し
KeyWait,MButton
Return
}
;ここに任意のコマンド 2度押し
MouseGetPos, , , id, control
WinGetTitle, title, ahk_id %id%
WinClose, ahk_id %id%
KeyWait,MButton
Return
Return
449名無しさん@お腹いっぱい。 (ワッチョイ ef0c-w2wH)
垢版 |
2017/05/28(日) 13:27:02.70ID:w3NiANh30
MButton::
If (A_PriorHotkey = A_ThisHotKey && A_TimeSincePriorHotkey < 300)
MouseGetPos, , , id, control
WinGetTitle, title, ahk_id %id%
WinClose, ahk_id %id%
KeyWait,MButton
return
2017/05/28(日) 13:28:07.55ID:w3NiANh30
途中送信スマソです。
一応、こっちのコードでもやってみましたがダメでした。
(Ctrlとかだといけるんですが。。。)
2017/05/28(日) 13:32:37.67ID:ROJiXvgz0
>>448
Send,{MButton}で出来たけど?
2017/05/28(日) 14:44:37.78ID:7NRiDcK80
タイムアウト設定してるんだからタイムアウトのエラーレベル使えばいいのに
2017/05/28(日) 14:55:04.55ID:1zbCO0Wu0
>>449
色々やり方はあるんだろうけど難しく考えすぎてない?
テストしてないけど、特にウィンドウ指定しないのなら、普通にAlt+F4使うとか

If (A_PriorHotkey = A_ThisHotKey && A_TimeSincePriorHotkey < 300)
Send,!{F4}
else
Send,{MButton}

というか身も蓋もない言い方かもしれんが、ホイール2連打は指負担がきつくない?
他に割り当てられないなら、マウスジェスチャー導入した方が良さそうな気がする
2017/05/28(日) 16:38:17.86ID:+E4xg+YL0
>>453
それ対象ウィンドウが非アクティブだったら誤爆するぞ
Mbutton乗っ取ってるからボタン押しでアクティブになってないし
2017/05/28(日) 17:21:34.02ID:1zbCO0Wu0
>>454
いや、アクティブにする方法は分かってるっぽいから、そこは本人が補足できるでしょ
最初と最後だって書いてないんだし、そのままコピペでやってくれと言ってるわけではない
というのは察してほしかった…
まあテストせずに書くのもアレなんで試してみたけど、これを使うことはないかなぁ
自分の場合はマウスは他のどのボタンよりも、ホイールが最初に壊れることが多いんで…
その部分の心配が少ないならいいかもしれないけど
2017/05/28(日) 19:15:31.62ID:G1h3bjYz0
Processコマンドで一気に5つくらいのソフトが起動しているか探すにはどう書いたらいいんでしょうか
2017/05/28(日) 19:31:48.25ID:7NRiDcK80
どういう意味?
5つ全部起動してるかどうかならプロセスリストから探したほうがいいと思うけど
2017/05/28(日) 20:54:00.57ID:G1h3bjYz0
>>457
5つのうちのどれかが起動していたらファイル生成して鯖PCの休止をオフにするっていうのを書きたいんです...
2017/05/28(日) 21:30:57.49ID:7NRiDcK80
>>458
wikiのProcessページにプロセス取得するサンプルコードあるから
それで一覧取得して一致するプロセスがあればコマンド実行でOK
2017/05/28(日) 21:46:54.76ID:WuyTnaDSM
>>455
まだそんな応用が効く段階じゃないと思われる
>449とかifの複数行は{}で囲うってことすらわかってないし
2017/05/28(日) 22:46:49.42ID:w3NiANh30
>>448です。

>>453
マウスジェスチャーはすでに導入済みなんですが
閉じるをどれに割り当てるか悩んでいまして・・・
右クリ+左右で進む・戻る、上下で最大化・最小化に
しています。
あと、中央ボタン+左クリックドラッグでウィンドウの持ち運びにしています。
下に長めドラッグとかも考えたんですが、結構腕に負担がかかります。

一応、自分のマウスはボタンはたくさんついてるんでいくらでも割り当てられるんですが、
職場のPCでも同じ操作がしたくて・・・

ありがとうございました。
2017/05/28(日) 23:23:58.87ID:1zbCO0Wu0
>>461
その書き方だと4方向かな?自分はロッカージェスチャーの右左で戻る、左右で進む
右+上/下はHome/End。最小化は?、最大化・戻すのトグルで?。?でタブ閉じる、?で新規タブ
??でアプリ終了。??で最後に閉じたタブを開く。まあ、ジェスチャーの割り当ては人それぞれでしょう
ただ、ホイールクリックは使わないなぁ。やっぱり指痛くなるから。MButtonはXButton1に置き換えてるくらいだし
だからオートスクロールはXButton1経由。以前はAHKのトラックスクロールなんかも使ってたけどね
ホイール回転は割り当てあるよ。右+上下回転でタブ移動とか
ウィンドウ移動は↓からタイトルバー右端ボタンの制限を外して右クリではなくキーを割り当てて使ってる
ttp://blog.blueblack.net/item_407.html
■ このスレッドは過去ログ倉庫に格納されています