AutoHotkey スレッド part19at SOFTWARE
AutoHotkey スレッド part19 - 暇つぶし2ch45:名無しさん@お腹いっぱい。
14/09/24 22:52:39.83 lsLyuOWz0
>>42
トグルなのでもう一度送信すればONになる。

>>44
デマ拡散はやめてくれ。

46:名無しさん@お腹いっぱい。
14/09/24 23:02:48.16 Q0GFm/Tj0
>>45
おお確かに出来ました!有難うございます。
それとサスペンドを送信したスクリプトのサスペンド状態を知るコマンドありますでしょうか?。
よろしくお願いします。

47:名無しさん@お腹いっぱい。
14/09/24 23:12:36.36 lsLyuOWz0
>>46
URLリンク(ahkwiki.net)

48:名無しさん@お腹いっぱい。
14/09/24 23:21:33.72 lsLyuOWz0
情報足らなかったので追加

値をOnMessageで受け取る
URLリンク(ahkwiki.net)

49:名無しさん@お腹いっぱい。
14/09/24 23:36:12.78 Q0GFm/Tj0
>>48
これは私には難しそうです。
どうも有り難うございました。

50:名無しさん@お腹いっぱい。
14/09/25 10:23:11.71 mEy0Rn1N0
超初歩的な言を聞くようですが、ググっても出てこなかったので教えて下さい

WindowspyのVisible Window Text
内部の文字列を取り出すにはどうすればいいんでしょう

エクスプローラ上でここを見ると今開いてるアドレスが表示されるんですが、これを使って処理をしたいんです

51:名無しさん@お腹いっぱい。
14/09/25 10:36:10.78 mEy0Rn1N0
すみません自己解決しました。聞き流してください

52:名無しさん@お腹いっぱい。
14/09/25 11:56:30.53 pwdySlks0
右から左に受け流す~♪

53:名無しさん@お腹いっぱい。
14/09/25 19:16:17.02 mEy0Rn1N0
ぐぬぬ
デスクトップの余白部分ダブルクリックでマイコンピュータを開くってのが地味に難しい

54:名無しさん@お腹いっぱい。
14/09/25 22:25:17.27 PVNcodU70
Process, Close, %プロセスグループ%
これは出来ませんでしょうか?

55:名無しさん@お腹いっぱい。
14/09/26 00:45:11.67 n9BxVIQz0
>>54
無くなるまで回せばいい。
Loop + WinGet + If + Break + Process

56:名無しさん@お腹いっぱい。
14/09/26 01:44:52.14 9pRGCenR0
個人的にだが、「Process, Close, …」はwincloseで終了できないプロセスに限り使う方が良いと思う。
wincloseなら>>54がしたい ahk_group 使えるみたいだからLoopで回す必要もなく、記述もシンプルになる。

57:名無しさん@お腹いっぱい。
14/09/26 02:09:53.19 n9BxVIQz0
>>56
Processのページにばっちり書いてあるから考慮してあるんじゃない?

58:名無しさん@お腹いっぱい。
14/09/26 02:40:50.65 rfMkdeRi0
WM_QUITはどうなんだろ
Process, Closeと変わらない?

59:54
14/09/26 04:08:07.13 ERPPP7460
みなさん大変申し訳ありません、GroupAddの存在を完全に忘れていました。
WinCloseでどうにかなりそうです、お騒がせしました。

60:名無しさん@お腹いっぱい。
14/09/26 23:51:58.75 ERPPP7460
msgboxのウィンドウクラスはahk_class #32770ですが
これだと他のウィンドウと重複してしまい、処理が上手くいきません。
ウィンドウタイトル以外の方法で、AHKのウィンドウだと明確に指定出来ませんでしょうか?。

61:名無しさん@お腹いっぱい。
14/09/27 00:32:42.44 qd2bT6T+0
>>60
「ahk_class #32770 ahk_exe AutoHotkey.exe」で指定。
ahk_class #32770 はダイアログのクラス。

62:名無しさん@お腹いっぱい。
14/09/27 00:47:59.24 wz9yNweh0
>>61
おおお素晴らしい!出来ました。
どうも有難うございました。

63:名無しさん@お腹いっぱい。
14/09/27 01:14:53.47 lCEmMHMT0
>>61
それだと複数ahk起動してると、どのスクリプトのmsgboxか区別できないからウィンドウタイトルも指定した方が良いんじゃ…
と思ったが、 AutoHotkey.exe をスクリプト名にリネーム(例:hoge.exe)してそれを起動すれば問題ないね。
「ahk_class #32770 ahk_exe hoge.exe」 or 「ahk_class #32770 ahk_exe c:\ahk_script\hoge.exe」

64:名無しさん@お腹いっぱい。
14/09/27 01:28:25.12 qd2bT6T+0
>>63
複数ある場合はWinGetでプロセスID(起動毎に割り当て、終了するまで固有)を取得してahk_pidで指定。

65:名無しさん@お腹いっぱい。
14/09/27 10:07:13.21 MWN87NGW0
AHKで他のプログラムを一時停止させる(プロセス優先度を最低にするのと同じ感じで)ことってできますか?

66:名無しさん@お腹いっぱい。
14/09/27 10:38:22.29 JCbBJ7Hy0
どうだろう……
プロセスを最低には出来るよ、でもサスペンドとかはどうなんだろう?

67:名無しさん@お腹いっぱい。
14/09/27 12:30:52.26 MWN87NGW0
>>66
不可能ですかね?
プロセス優先度を最低にしてもまだ重い(CPUを多く占領する)プログラムなので
一定時間キーとマウス操作をしていない時以外は停止させたいのですが

68:名無しさん@お腹いっぱい。
14/09/27 14:01:51.42 eu8qeP8j0
んー・・・regreadって機能使ってみたいけどネタが思い浮かばない
レジストリからしか入手できない値ってなんかあったっけかな

>>67
もうそこまでアレならいっそのこと一回プロセスを終了とかはできへんの?

俺はDropbox+ブラウザはネット専有しすぎて書き込み総量もすごいからブラウザ起動中はDropboxのプロセス終わらせて、ブラウザが終了したのみはからってDropbox起動っていうのやってるけども

69:名無しさん@お腹いっぱい。
14/09/27 14:06:42.29 MWN87NGW0
>>68
終了はできませんね、終了も再開も手作業しなければならない手間が多いので…
ファイアーウォールソフトなんかでは、通信しようとしてるソフトを一旦気絶させてユーザーの許可を得ようとしますよね?
そんな感じでWindowsには他のプログラムの動作を一時停止させる機能はないのでしょうかね?

70:名無しさん@お腹いっぱい。
14/09/27 14:08:49.05 eu8qeP8j0
さすがに思いつかんね。他のソフト当たるほうがいいかも

71:名無しさん@お腹いっぱい。
14/09/27 15:59:58.52 YcFvAXqt0
こんなのを見つけてやってみた。とっても便利で気に入りました
URLリンク(www.autohotkey.com)

Multiple virtual desktopsっていうやつで、上のほうにある、DesktopSwitch ってやつで
これはめちゃいいのでみなさんも是非やってみてくださいって言いたかったんだが
Alt+数字で切り替えると、ときどき、デスクトップ背景のアイコンが全部消えて見えなくなったり
Alt+0で終了すると、デスクトップ背景のアイコンが全部消えたままになったりするんだけど
AutoHotKeyってデスクトップに並べてるアイコンを消したりって出来るのですか?
このプログラム自身、とっても小さいので見てるのですが、どっかにバグがあるようには
見えないのですが、何が問題なのでしょうか
ちなみに私はWindows7です
また、消えたアイコンを復活させるWindows7のコマンドや操作ってありますか
Windows側の問題なのかな

72:名無しさん@お腹いっぱい。
14/09/27 16:42:23.43 BeXFoUnx0
>>69
FWはソフトを気絶させるんじゃなくて通信遮断してるだけじゃないの?

手作業で終了再開しなければならない手間、をどうにか自動化する方面のほうが
ahkの本領発揮だと思うが

73:名無しさん@お腹いっぱい。
14/09/27 17:02:00.15 lCEmMHMT0
>>65
「psr」っていうコマンドラインツールをahkで動かせば可能だと思うので試してみれば?
ahk使わない方法の一つとしては、Process Explorerを使うとか。

以下、別件。
>>63
自己レス。何かあんな小面倒くさいことしないで、やっぱり素直に、
「ahk_class #32770 ahk_exe AutoHotkey.exe」へ「msgboxのタイトル」を追加して、
「msgboxのタイトル ahk_class #32770 ahk_exe AutoHotkey.exe」ってすれば
msgboxの特定も問題ないだろうし、コードもシンプルに書けるような気がする。

でも、起動中の複数ahkスクリプトでmsgboxのタイトルが同じだったりすると破綻しそうだし、
msgboxのタイトルを書き換えたりすると監視するスクリプトの方も修正が必要になる面倒くささはあるけど。

>>64
自分のプロセスIDをどうやって監視用ahkに知らせるんだろう?
自分にはやり方分からないんだけど、OnMessage()とか使うんかな?
あ、クリップボードやファイルに書き出し→読み取りっていう方法もあるか?

>>60>>64のレス根本的に勘違いしてたらゴメン。

74:名無しさん@お腹いっぱい。
14/09/27 17:04:49.08 YcFvAXqt0
デスクトップからアイコンが消えたあと、デスクトップ上で右クリックして復活させる方法を見つけたので
やってみたけど、デスクトップ上で右クリックも出来なくなりました
でも、下のタスクバー上で右クリックしたら、デスクトップを表示というのがあったのでここを選択したらアイコンが
元通り表示されました。なんか焦ったわ。Atl+0でスクリプト終了させたあとずっとデスクトップのアイコン消えてたから

75:名無しさん@お腹いっぱい。
14/09/27 19:00:11.27 qd2bT6T+0
>>73 ID:lCEmMHMT0
質問の内容を無視してるのだが・・・。

「ウィンドウタイトル以外で」 AHKのダイアログを指定
「AHKで」 他のプログラムの優先度変更と一時停止


横レスのまったく違う条件の質問ということで以下回答。

通常は他のスクリプトを操作しないように「自分のPID」を指定する。
スクリプトから他のスクリプトをPIDを指定して操作する場合「対象のPID」を指定する。
値の受け渡し方はOnMessage()、外部ファイル書き出し、クリップボード監視。

76:名無しさん@お腹いっぱい。
14/09/27 20:30:08.69 qd2bT6T+0
>>69
任意のプロセスを一時停止/再開
URLリンク(www.autohotkey.com)
検索ワード:autohokey Suspend processes

77:名無しさん@お腹いっぱい。
14/09/27 21:29:00.66 shs41SRD0
>>76
む~読んだけどよくわからないっす;;
つまりこれはそういう機能がほしいという要望が既にある、という話ですかね?
それとも下の方に「それはこうやればできるよ」とやり方が書いてあるんですかね?

78:名無しさん@お腹いっぱい。
14/09/27 21:38:24.57 nZJdp6Er0
×読んだけどよくわからない
○読めないし読む努力もしたくない

79:名無しさん@お腹いっぱい。
14/09/27 21:38:25.70 JCbBJ7Hy0
>>76
試してみたが、これ危険だわ……
おとなしく終了、再起動を自動でやったほうが正確に動く

80:名無しさん@お腹いっぱい。
14/09/27 21:56:27.73 shs41SRD0
>>75 私は別にAHKだけで完遂できなくてもいいですよ 他のプログラム併用でもなんでもいいです

81:名無しさん@お腹いっぱい。
14/09/27 22:06:59.38 23Wk1MnK0
なんでもいいんなら>>73でも>>76でもいいだろ
やっぱ>>10-11は必要なんだなw

82:名無しさん@お腹いっぱい。
14/09/27 22:19:37.60 Q37fe4nD0
>>81
子供が多いスマホアプリスレだと完全に馬の耳に念仏状態だけどなそれ

83:名無しさん@お腹いっぱい。
14/09/28 09:11:26.08 moCoGGlM0
>>77
ソース読む読む能力無いのになぜ質問しようと思った
難しくて何やってるかわかりませんでした、ならともかく直リンクで辿り着けもしないとか

84:名無しさん@お腹いっぱい。
14/09/28 14:16:23.04 xi5JPEeR0
>>77
そのページのheresy さんやIce_Tea さんのレスがもっと下にスクロールできることに気づいてないんじゃない?
だからProcess_Resume(~でエラーが出るとか。
あとunicode版でインストールしてないとか。
とエスパー

85:名無しさん@お腹いっぱい。
14/09/28 14:45:33.42 AkkEqmTg0
>>76のリンク踏めば自動的にページエンドへ行く。
しかもそこにはコードサンプルが貼られているのにも関わらず、
それを確かめもしなかったから叩かれてんじゃないの?

86:名無しさん@お腹いっぱい。
14/09/28 14:55:05.71 xi5JPEeR0
>>85
いやいや、それは当然見えるけどそのレスの中にスクロールバーがあってコードにもっと続きがあることに気づいてないんじゃないの?ってこと

87:名無しさん@お腹いっぱい。
14/09/28 18:08:00.81 1+kB/N7l0
最小化していないウィンドウの数を数えるなんてできます?
たとえばブラウザ、ファイラー、メディアプレイヤーが存在してたら3と数えるとか

88:名無しさん@お腹いっぱい。
14/09/28 18:26:37.77 Rv/GylDU0
>>87
WinGetでリストと状態を取得、後は自分で考えよう。
URLリンク(ahkwiki.net)

89:名無しさん@お腹いっぱい。
14/09/28 18:46:36.27 1+kB/N7l0
あー、カウントとかリストとかコマンドあるんだ
情報有り難うございます。やってみます

90:65
14/09/29 09:49:14.53 GtFTMOJX0
>>84 >>86
すげー、ビンゴです
何もincludeもせずに耳慣れない関数が出てくるのでおかしいなと思ってました
最初から見える範囲がちょうどキリの良い空行で切れてるので気付かなかった
無事に狙ったことができました
>>76さんもありがとうございます

91:名無しさん@お腹いっぱい。
14/09/29 19:34:10.85 jgD1fp5t0
~MButton::
KeyWait, MButton, T0.5
If ErrorLevel
AltTabMenu
KeyWait, MButton

上記のような処理をしたいのですが、エラーで出来ません。
何かいい方法ありますでしょうか、よろしくお願します。

92:名無しさん@お腹いっぱい。
14/09/29 19:46:35.45 +htSO+Tj0
AltTabはあきらめた方が幸せという結論に至った
MbuttonだったらLogifcool製・Microsoft製マウスについてるユーティリティソフトの方が…

93:名無しさん@お腹いっぱい。
14/09/29 20:07:00.62 jgD1fp5t0
>>92
残念、諦めます・・。
コメント有難うございました。

94:名無しさん@お腹いっぱい。
14/09/29 20:12:21.65 bj/ecbDP0
>>93
自前でSendすればいいだけ
Alt + Ctrl + Tag (Vista以降)

95:名無しさん@お腹いっぱい。
14/09/29 20:17:02.42 jgD1fp5t0
>>94
有難うございます。
あっさり出来ました。

96:名無しさん@お腹いっぱい。
14/09/29 20:21:58.67 VgLnZsQB0
MGLではこういう感じでタスク切り替えできる

MB_WD_
MG_Abort()
if(!MG_Hold()){
Send,{Lwin Down}{Tab}
wintab:=1
}else{
Send,{Lwin Up}
wintab:=0
}

あとalttabで出てくるタスクメニューのclassはTaskSwitcherWnd

97:名無しさん@お腹いっぱい。
14/09/29 20:37:17.56 bj/ecbDP0
>>96
それAeroフリップ3D・・・。

98:名無しさん@お腹いっぱい。
14/09/29 21:51:33.52 j+LkBhr90
>>96
うん、まぁ、これも便利は便利よな

99:名無しさん@お腹いっぱい。
14/09/29 21:54:55.68 t+3LdmQR0
送るキーくらい自分で置き換えられるだろ

100:名無しさん@お腹いっぱい。
14/09/30 02:38:02.91 QrCMvsbv0
横から失礼

Autohotkey-Scripts/Affinity.ahk at master ・ dufferzafar/Autohotkey-Scripts ・ GitHub
URLリンク(github.com)

↑にあるアフィニティマスク設定のスクリプト(?)が何の動作もしないんですが
どういう原因が考えられますか?
例)

Affinity_Set(1,notepad.exe)

としてタスクマネージャーで関係を見ても使用コアが変化しません
CPUは4コア8スレッドです
AHK使い始めたばかりの初心者なので基本的なところを勘違いしているかもしれませんがよろしくお願いします

101:名無しさん@お腹いっぱい。
14/09/30 02:42:49.46 SeJUcLB30
それ以前にMGLはスレチ

102:名無しさん@お腹いっぱい。
14/09/30 04:10:39.76 SeJUcLB30
>>100
関数の引数()の中は式になるので文字列は””で囲う。 hoge( 123, "文字列", 変数 )
URLリンク(ahkwiki.net)

そもそも第二引数はプロセスID。

Process, Exist, notepad.exe
PID := ErrorLevel
Affinity_Set(1, PID)

; Affinity_Set( CPU=1, PID=0x0 ) ....
; CPU: CPU0=1 CPU1=2 CPU2=4 CPU3=8 ... 数の和を指定
; PID: プロセスID 省略時はスクリプト自身

103:名無しさん@お腹いっぱい。
14/09/30 15:25:37.51 12x17Na20
7日前の日付をフォルダ名にしたいんですがなんでコレ動いてくれないんでしょう

foldername:=A_now
foldername-=7,D

7日引いたらエラーが出ます。試しに+にしたらエラーが出ません

104:名無しさん@お腹いっぱい。
14/09/30 16:13:51.34 V+44fyZJ0
foldername += -7,D

105:名無しさん@お腹いっぱい。
14/09/30 17:46:50.26 6NIyJkr90
へーそんな機能があったのか
-=の場合は EnvSub を参照するといいみたいだぞ >>103

106:名無しさん@お腹いっぱい。
14/09/30 17:48:29.38 6NIyJkr90
-=の場合は → -=についての詳細は

107:名無しさん@お腹いっぱい。
14/09/30 18:18:33.16 QrCMvsbv0
>>102
サンクス
無事に使えました。
もう一つよく飲み込めてないけど沢山サンプルに接するうちに理解していけるといいなぁ…という心境です

108:名無しさん@お腹いっぱい。
14/10/01 12:11:12.93 x4VaPOtB0
>>104
出来ました出来ました
ありがとうございます

109:名無しさん@お腹いっぱい。
14/10/01 13:31:27.55 x4VaPOtB0
AHKは配列ないっぽい?
loop,Parseで回す他にいい方法ないかしら

110:名無しさん@お腹いっぱい。
14/10/01 14:33:01.00 m5XVznIk0
アルヨー

でも総当り処理だったら行数あんまり変わんねー気もする

111:名無しさん@お腹いっぱい。
14/10/01 14:41:41.20 NC4Qan6e0
object

112:名無しさん@お腹いっぱい。
14/10/01 17:13:16.66 m5XVznIk0
デスクトップにあるファイルの自動振り分け機能作ってるけどもうちょっとメンテナンスしやすくしたいんですがなんかいいアイディアないですかね?
これでも動くんですが、具体的にはftypeで書いてるのにIf連続地帯でフォルダ名二回目書かなきゃいけないのが地味にめんどくさいという

ftype = 画像 アーカイブス 動画 音楽 メモ Flash ;デスクトップにある振り分け先フォルダ名
loop,Parse,ftype,%A_space%
{
IfExist,%A_desktop%\%A_loopField%
{
foldergenre := A_loopField ;振り分け先フォルダを決定

If(foldergenre == "画像") ;フォルダの名前を調べて拡張子を入れるものを決める
Extype = *.jpg *.jpeg *.png *.bmp *.gif
else If(foldergenre == "アーカイブス")
Extype = *.zip *.rar *.exe *.cab *.7z *.iso *.img *.pdf *.lzh *.ipa
else if(foldergenre == "動画")
Extype = *.flv *.mp4 *.wmv *.avi *.3gp *.mkv
else if(foldergenre == "音楽")
Extype = *.mp3
else if(foldergenre == "メモ")
Extype = *.txt *.ahk
else if(foldergenre == "Flash")
Extype = *.swf

loop,Parse,Extype,%A_space%
{
FileMove,%A_desktop%\%A_loopField%,%A_desktop%\%foldergenre%,1  ;振り分ける
}
}
}

113:名無しさん@お腹いっぱい。
14/10/01 17:41:50.84 O8eRmxL00
>>112
なんで配列にしないでスペース区切りの文字列にしてるのか知らないけども
仮想配列と配列を使えばいいんでないの?

配列周りを勉強しなさいっていう神のお告げだ

114:名無しさん@お腹いっぱい。
14/10/01 18:18:18.72 ycG21aDl0
やってることは完全に同じだがA_indexで見ても良いんじゃね?
まあ、そんだけ出来るなら配列の概念もすぐわかるさ
まんま配列処理だし

115:名無しさん@お腹いっぱい。
14/10/01 18:38:29.60 m5XVznIk0
アイディアありがとござます!
連想配列にすると今度は関連付けで長ったらしくなりそうだったので控えてたんですが、今テストしてみたら

AssociativeArray := {Color: "Green"
,Size: "Large"
,Price:"10,000"
,Stock: "True"}

こんなかんじで縦に書いても認識するんですね、知りませんでした
連想配列で行きます

116:名無しさん@お腹いっぱい。
14/10/01 18:54:36.31 CvxdwXKW0
こうかな あんま動作確認してないから試すときはテストフォルダでやってね

Okataduke(A_Desktop)
Return

Okataduke(dir, force = 0){
Static ftype := {画像: ["jpg", "jpeg", "png", "bmp", "gif"]
, アーカイブス: ["zip", "rar", "exe", "cab", "7z", "iso", "img", "pdf", "lzh", "ipa"]
, 動画: ["flv", "mp4", "wmv", "avi", "3gp", "mkv"]
, 音楽: ["mp3"]
, メモ: ["txt", "ahk"]
, Flash: ["swf"]}
tDir := A_WorkingDir
SetWorkingDir, % dir
For k, v in ftype {
If (!FileExist(k := Chr(0x30A8) Chr(0x30ED) k))
FileCreateDir, % k
Loop % v.MaxIndex()
FileMove, % "*." v[A_Index], % k "\*." v[A_Index], % (force != 0)
}
SetWorkingDir, % tDir
}

117:名無しさん@お腹いっぱい。
14/10/01 21:19:38.97 V8yOKcSw0
A_TimeIdleが、30秒まで数えると0に戻っちゃうみたいなんですが
この状況でそれ以上数えるにはどうしたらいいですかね?

118:名無しさん@お腹いっぱい。
14/10/01 21:44:40.83 nD/Yt8j00
>>117
・A_TimeIdle
最後に何らかの入力があってからの経過時間をミリ秒で格納。(NT系専用)
PCが放置されているときにアクションを起こすのに使える。
何らかのプログラムが生成した入力イベントでもリセットされてしまう。
・A_TimeIdlePhysical
A_TimeIdleと同じだが、キーボードHookやマウスHookが使用されていると、プログラムが発生させた入力イベントを無視できる。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch