X



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

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。 転載ダメ©2ch.net (ワッチョイ f977-fKjf)
垢版 |
2017/09/14(木) 11:52:40.84ID:uijNj4qb0

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

■前スレ
AutoHotkey スレッド part24
http://egg.2ch.net/test/read.cgi/software/1487149472/

■日本語解説等
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)
0301名無しさん@お腹いっぱい。 (ワッチョイ 536a-Akqv)
垢版 |
2017/10/30(月) 22:34:34.80ID:BusKigX60
>>297
回答ありがとうございます。およそ次のような枠組みになることはわかりました。
AppsKey::
Flag += 1
If Flag =1
{
「コマンド1」
Return
}
If Flag =2
{

Return
}
Flag = ;3回目変数をカラ
Return

「コマンド1」に関してhttp://ahkwiki.net/Sendを参照すると
Loop
{
Send {w down}
sleep 30
}
Send {w up}
のように書くのかと思いましたが、 loopを脱出する条件やAppsKey:: Flag += 1などを考えるとわかりません。
サーチが不足しているかも知れませんが、どうかお助け願います。
0303名無しさん@お腹いっぱい。 (ワッチョイ 1367-xXVv)
垢版 |
2017/10/31(火) 05:01:26.49ID:7gNoBxwg0
ahk初心者です。よろしくお願いします。
環境(win10 64bit、AHK v1.1.26.01)
最初にアクティブだった窓で再生したスクリプトが違う窓に切り替えた後でも、バックグラウン
ドの最初の窓で終了(動作)させたくて、下記を書いたのですが反応なしです(IEなら動作しま
した)。chromeやoperaをWintitle指定でControlsendをさせる方法がありましたら教えてください

r::
WinGetTitle, title, Yahoo! JAPAN
ControlSend, ahk_parent, {f5}, Yahoo! JAPAN
Sleep, 2000
ControlSend, ahk_parent, {f5}, Yahoo! JAPAN
Sleep, 2000
ControlSend, ahk_parent, {f5}, Yahoo! JAPAN
return
0305名無しさん@お腹いっぱい。 (ワッチョイ 1367-xXVv)
垢版 |
2017/10/31(火) 10:31:49.91ID:7gNoBxwg0
>>304
回答ありがとうございます
下のをやっても反応なしでしたorz
諦める系なのかな?。。
;r::
DetectHiddenWindows, on
WinGetClass, Chrome_WidgetWin_1, A
ControlSend, ahk_parent, {f5}, Yahoo! JAPAN
return
r::
WinGetClass, Chrome_WidgetWin_1
ControlSend, Chrome_RenderWidgetHostHWND1, {f5}, Yahoo! JAPAN
return
0306名無しさん@お腹いっぱい。 (ワッチョイ d1c6-nu9H)
垢版 |
2017/10/31(火) 12:48:17.99ID:HXbL+oKY0
タイトルやclass名が固定でわかってるときはGetしなくていいよ
とりあえずウィンドウ指定の方法からわかってなさそうなのでwikiを読もう
http://ahkwiki.net/Window


(別タブではなくあくまで別窓という前提で)
確認してみたがアクティブ化後は効くけど非アクティブ時は効かない
この手の挙動のアプリはControlSendでは無理な場合が多い

WinActivate, Yahoo! JAPAN ahk_class Chrome_WidgetWin_1
ControlSend, Chrome_RenderWidgetHostHWND1, {f5}, Yahoo! JAPAN ahk_class Chrome_WidgetWin_1
0307275 (ワッチョイ d172-ZNPd)
垢版 |
2017/10/31(火) 16:35:05.33ID:zqELyNoa0
SysListView32ですが、値をとってくるのはGetContorolを使えば出来るのですが
リストの任意の場所の値をセットすることって出来ますか
今はその場所へmousemoveでカーソルを移動してクリックさせて
Sendで値を入れるみたいなことをリストのひとつひとつにしているのですが、時間がとてもかかります
0310名無しさん@お腹いっぱい。 (ワッチョイ 690f-Zqv1)
垢版 |
2017/11/01(水) 13:04:59.67ID:oLVxkSWa0
新しいPCでahkファイルへのD&Dで引数が正常に取れないと思ったら8.3形式のファイル名が無効になってた
Win10ではシステムドライブ以外のフォーマットは8.3形式のファイル名の無効がデフォになったのかな?
0311名無しさん@お腹いっぱい。 (ワッチョイ 536a-Akqv)
垢版 |
2017/11/01(水) 22:15:18.71ID:0XbH3Oow0
>>302
解決しました。指摘通り単に一回目がSend {w down}...etcで動作しました。
動作チェックがテキストエディタ上のみで、またその挙動が物理キーを押し続けた場合と違ってwがリピートされなかったため、
仕様を誤認していました。混乱させてしまい申しわけありませんでした。
アドバイスくださった方々、ありがとうございました。
0314名無しさん@お腹いっぱい。 (ワッチョイW 9987-IwaZ)
垢版 |
2017/11/02(木) 14:38:27.28ID:gLmdbRIP0
```
result2 := VarSetCapacity(point, 64, 0x00)
result := DllCall("kernel32\GlobalMemoryStatusEx", "Ptr", &point, "int")
lasterror := Dllcall("GetLastError")
ListVars
msgbox
```

このようなものを書いたのですが、GlobalMemoryStatusExが失敗しているようで、
Global Variables (alphabetical)
--------------------------------------------------
0[1 of 3]: 0
ErrorLevel[1 of 3]: 0
lasterror[2 of 3]: 87
point[0 of 32]:
result[1 of 3]: 0
result2[2 of 3]: 64

と表示されてます。
error codeの87は"パラメータが正しくない"だそうです。なにがだめなのでしょうか?
環境はwin8.1 64 のAutoHotkeyU64.exeです。
プログラム言語やスクリプトはAutoHotkey以外ほとんどやった事がないです。
0317名無しさん@お腹いっぱい。 (ワッチョイW 9987-IwaZ)
垢版 |
2017/11/02(木) 17:44:56.54ID:gLmdbRIP0
>>315
ありがとうございます!解決しました。
```
result2 := VarSetCapacity(point, 64, 0x00)
NumPut(64, point , 0, "int")
result := DllCall("kernel32\GlobalMemoryStatusEx", "Ptr", &point, "int")
;dwLength := NumGet(point, 0, "Int")
dwMemoryLoad := NumGet(point, 4, "Int")
ullTotalPhys := NumGet(point, 8, "Int64")
ullAvailPhys := NumGet(point, 16, "Int64")
ullTotalPageFile := NumGet(point, 24, "Int64")
ullAvailPageFile := NumGet(point, 32, "Int64")
ullTotalVirtual := NumGet(point, 40, "Int64")
ullAvailVirtual := NumGet(point, 48, "Int64")
;ullAvailExtendedVirtual := NumGet(point, 56, "Int64")
MsgBox,
(
メモリ使用率:%dwMemoryLoad%`%
全物理メモリ:%ullTotalPhys%B
利用可能メモリ:%ullAvailPhys%B
ページング可能な最大ファイルサイズ:%ullTotalPageFile%B
現在ページング可能なファイルサイズ:%ullAvailPageFile%B
全仮想メモリ:%ullTotalVirtual%B
利用可能仮想メモリ:%ullAvailVirtual%B
)
```
0318名無しさん@お腹いっぱい。 (ワッチョイ 4585-8/j8)
垢版 |
2017/11/03(金) 14:40:06.50ID:l+MEYLy90
これはバグでしょうか。 ツールチップなのですが
下記のスクリプトで、tipwindowというのを表示させてこれをアクティブにして
ActiveWindowsInfoを見てもWindowTitleのところに
tipwindow
というのが出てきません。にもかかわらず
WinGet, aid, ID, tipwindow
WinGetTitle, t1, ahk_id %aid%
とすると拾えて、t1にはtipwindowと入っています

これにExcludeTitleを加えて
WinGet, aid, ID, tipwindow,,ahk_exe AutoHotkey.exe
WinGetTitle, t1, ahk_id %aid%
とすると取れないだろうと思ったのですが、これでも
t1には、tipwindow
が入ってきます。 なぜでしょうか
idでもpidでも同じ結果です

^a::
ToolTip, tipwindow, 100, 500, 2
WinSet, AlwaysOnTop, On, ahk_class tooltips_class32
WinGet, aid, ID, tipwindow,,ahk_exe AutoHotkey.exe
WinGet, apid, PID, tipwindow,,ahk_exe AutoHotkey.exe

WinGetTitle, t1, ahk_id %aid%
WinGetTitle, t2, ahk_pid %apid%
MsgBox aid=%aid%`napid=%apid%`nt1=%t1%`nt2=%t2%
return
0321名無しさん@お腹いっぱい。 (ワッチョイ 416c-B8tQ)
垢版 |
2017/11/03(金) 16:58:12.94ID:oAKaFRrm0
>>318
少し試してみた感じだと、Tooltipの内容をタイトルとして取得できるのは同一のプロセス内だけっぽい?
AWIは別スクリプトだから取れてないのかと

あとExcludeTitleにはahk_??は使えなかったような
0324名無しさん@お腹いっぱい。 (ワッチョイ 2e4c-eyvs)
垢版 |
2017/11/03(金) 17:45:24.63ID:AEQ8+teS0
>>318
WindowSpyがTooltipの内容をタイトルとして拾えないのは昔から仕様扱いだったと思う。
ahkとWindowSpyの両方から全く同じコードでGetWindowText()を呼び出しても、
ahkからしか取得できないので、OSの仕様じゃねーの?という扱いだったような。
ahkのcppソースのコメントにWM_GETTEXT()とGetWindowText()のどちらを使うかってのが説明してあって、
WindowSpy改造すればタイトルとして取得できるけど、問題のほうが多そうということで仕様扱い。

まあ、tooltipにはタイトルなんてない、で誰も困らないような。
0325名無しさん@お腹いっぱい。 (ワッチョイ 4585-8/j8)
垢版 |
2017/11/03(金) 18:03:00.03ID:l+MEYLy90
>>324
複数のアプリを立ち上げていて、そのWinTitleがたとえば
アプリ1
アプリ2
アプリ3
となっていて、ToolTipsにアクティブになってる同じタイトル名を表示する、ということをしたのですよ
で、WinGet, v, PID, アプリ1
ってやったら、なぜかAutoHotkey.exeのPIDを取ってきたのです
で、なんで? ってなって今回の話になりました
ToolTipsはWindowSpyで見たらタイトルにはなかったのでテキストに入ってるのかと思ってて
原因究明にめっちゃ時間がかかりました。まさかToolTipsのPIDを取って来てたなんて思っても
いなかった

結局、こういう場合、WinTitleからは確実にアプリ1のPIDをとることが出来ません
現状ではアプリ1のexe名を憶えておいて、それを利用するとかしか出来ません
ExcludeTitleも使えないなんてなあ
でもexe名もWinTitleからは得られないんですよね。AutoHotkey.exeになっちゃうから
0327名無しさん@お腹いっぱい。 (ワッチョイ 4585-8/j8)
垢版 |
2017/11/03(金) 18:25:55.44ID:l+MEYLy90
>>326
WinGetで取る前にtooltip非表示にして取ってから
再度表示にする、ということですね
非表示にすると取らなくなるのかな
でも可能性はありますね
でもなあ、ExcludeTitleが使えたら解決するんですけどねえ

ahk_XXのときは使えないとか、なんでやねんw
今日は疲れました
0328名無しさん@お腹いっぱい。 (ワッチョイ 4585-8/j8)
垢版 |
2017/11/03(金) 18:37:53.97ID:l+MEYLy90
>>324
>まあ、tooltipにはタイトルなんてない、で誰も困らないような。

それとここですが、結局、Tooltipsの場合は、そこに表示されている内容も
WinTitleになる、ということですね。でもWindowSpyには出ないので要注意です

ほんとこれこそちょっとしたTIPSになりましたw
0330名無しさん@お腹いっぱい。 (ワッチョイ 6e67-PBuy)
垢版 |
2017/11/05(日) 14:42:30.14ID:lmZ+8dDx0
>>325
俺も似たようなことやってるけど
「アクティブウィンドウ:t1」みたいに表示させてたおかげで無自覚回避できてたようだな

というか真面目な話、バグとして報告していい案件なんじゃないの
0331名無しさん@お腹いっぱい。 (ワッチョイ 2ef3-vvLB)
垢版 |
2017/11/05(日) 23:42:34.65ID:mfJuW1tS0
>>325
>ToolTipsにアクティブになってる同じタイトル名を表示する
この部分がよく分からないんだけど、アクティブになってるウインドウのPIDを取得して、
それを元にウインドウタイトルを取得して、
そのタイトルをtooltipに表示する
ということだろうか?

だとしたら、
^a::
WinGet, v, PID, A
WinGetTitle, title, ahk_pid %v%
ToolTip, % title, 100, 500, 2
return
というのは?

wingetにおけるPIDの説明には
PID 条件に一致する一番最初(前面)のウィンドウのPID(プロセスID)。
となっており、「一番最初(前面)」というのは必ずしも「アクティブ」とは限らないと思うんだが…

間違っていたらスマン
0332名無しさん@お腹いっぱい。 (ワッチョイ 2e4c-eyvs)
垢版 |
2017/11/06(月) 08:39:10.84ID:+3FFCnlR0
1.app1というアプリが起動してあり、さらに
2.tooltipにapp1と表示させてた状況で
3.WinGetでタイトルがapp1のappを釣ろうとしたら、tooltipの中身のほうにひっかかった
という話でしょ。
0341名無しさん@お腹いっぱい。 (ワッチョイW c96c-u3Qf)
垢版 |
2017/11/08(水) 21:20:19.90ID:Aynw/XIa0
aaa()
{
実行文字列
}
で読み込んだ関数が

この後に
v::
while (GetKeyState("v","p") )
{
aaa()
}
return

で読み込めないのなんでだ…
aaaの実行ラインは
v::
の後に書き込むと問題なく動いてる

1.関数化できてない?
2.引数できてない?

あまり恥ずかしい内容なので中身を詳しく書けませんが
原因として考えられることがあれば教えてください
0344名無しさん@お腹いっぱい。 (スフッ Sd9f-/Tad)
垢版 |
2017/11/10(金) 00:56:44.09ID:far4pfand
1つの処理だと問題ないんですが
a::
の中と

b::
の中に
同じ処理を入れようとすると
Duplicateエラーが出るのは同じ関数を使っているから?
対応策はありますか?
0350名無しさん@お腹いっぱい。 (ワッチョイ 7f87-cd7v)
垢版 |
2017/11/10(金) 18:23:39.05ID:a1txFjAv0
>>349
ホットキーが無視されてしまいます。v1.1.26.0.1でも同様です。キーをフックする優先順位がAHKよりも高いような印象です。
皆様はいかがでしょうか?
最近、海外のソフトでは案外ひんぱんに経験します。AHKを管理者権限でインスコすればいいのかな?
0355名無しさん@お腹いっぱい。 (ワッチョイ 7f87-cd7v)
垢版 |
2017/11/10(金) 19:04:38.60ID:a1txFjAv0
>>352
私はいわゆるSpaceFNをやっていまして、それがSpace押下でSpaceが入力されて困っていました。
何故外国のマイナーなソフトだとこういう現象が起きるのか不思議ですね。定番のソフトでは経験したことありませんでした。
0356名無しさん@お腹いっぱい。 (ワッチョイ 5f87-p++X)
垢版 |
2017/11/10(金) 22:15:32.90ID:Oslygo4n0
windows APIのABM_SETSTATE messageを使って「タスクバーを自動的に隠す」をオンにしたいのですが、 APPBARDATA構造体のlParamメンバーには何を入れればいいのでしょうか?また、hWndメンバーに入れるのはタスクバーのハンドルということでいいのでしょうか?
0358名無しさん@お腹いっぱい。 (ブーイモ MM0f-mI+x)
垢版 |
2017/11/11(土) 07:52:33.31ID:IBbBqaBiM
>>357
よろしければ出典を
0359名無しさん@お腹いっぱい。 (ポキッー fff3-zaIK)
垢版 |
2017/11/11(土) 16:56:54.15ID:F5Z3qywF01111
「タスクバーを自動的に隠す」とは全く違う内容だが、こんなのあったの思い出した

1 Hour Software by Skrommel - DonationCoder.com
http://www.donationcoder.com/Software/Skrommel/index.html

【RunAndHide】

#NoEnv
#SingleInstance,Force
#NoTrayIcon
SetWinDelay,0

IfWinExist,ahk_class Shell_TrayWnd
{
 WinHide,ahk_class Shell_TrayWnd
 WinHide,Start ahk_class Button
}
Else
{
 WinShow,ahk_class Shell_TrayWnd
 WinShow,Start ahk_class Button
}
0361名無しさん@お腹いっぱい。 (ポキッー ff67-XY/E)
垢版 |
2017/11/11(土) 19:12:22.78ID:r2k0ryN301111
>>358
http://anago.5ch.net/test/read.cgi/software/1317156599/7のマンドクセがすげー便利だからブクマしとくといい

>■リンク等
>AutoHotkey メモ - Principia
>http://principia.s54.xrea.com/index.php?AutoHotkey%20%A5%E1%A5%E2
>なまず日記
>http://www.tierra.ne.jp/~aki/diary/
>eamatの日記
>http://d.hatena.ne.jp/eamat/
>1 Hour Software by Skrommel - DonationCoder.com
>http://www.donationcoder.com/Software/Skrommel/
>Rosetta Code (さまざまな処理を各種プログラム言語で書いた場合の比較)
>http://rosettacode.org/wiki/Category:Programming_Tasks
>
>以下公式フォーラムより
>http://www.autohotkey.com/forum/topic8795.html  Tips N Tricks
>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 コンパイルユーティリティ%28Compile_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/topic21451.html ポップアップメニューの情報を得る

昔はテンプレにあったんだがいつの間にか消えてたんだな
0362名無しさん@お腹いっぱい。 (ワッチョイ 5fab-9JVD)
垢版 |
2017/11/12(日) 12:55:49.04ID:8syapqkm0
ジョイスティックの傾き検出して逆にキーボード操作に置き換えるスクリプトが出来たけど需要ある?
G13使用とかでジョイスティックの傾きで歩き、走りを検出できるようにしたもの
Fallout4用に作ったけどジョイスティックが使えないゲームとか、他にも応用が効くはず
あるならうpします
0368名無しさん@お腹いっぱい。 (アウアウオーT Sa7f-0rpk)
垢版 |
2017/11/12(日) 21:23:05.65ID:PxES/4Ifa
この設定ってAHKで実現できますかね..?
https://qiita.com/hakomo/items/a19eb4b08bc2b3aa1533
緑文字の「Ctrlキーと(SandSの)Shiftキーを押しながら」のところが実現できるのか...
0369名無しさん@お腹いっぱい。 (ワッチョイ 5fab-QNbI)
垢版 |
2017/11/12(日) 21:24:18.65ID:0k5Ffqyx0
JTKで出来るのになんでこんなもの作ったのかというと
JTKの特殊入力のアナログレベルによって切り替えるってところに不満があったから
多分、座標のXYの傾きだけで長方形判定してる。斜め入力時のときに誤操作が起きるって理由から
コッチは半径を求めてそれを目安にすることにした
それと内部的にキーおしっぱループの処理がわかってないのが怖い、連打してるかもしれないから
なので作った
0370名無しさん@お腹いっぱい。 (ワッチョイ 5f87-p++X)
垢版 |
2017/11/12(日) 21:28:02.68ID:PRQr2sD50
>>361
ありがとうございます。もう少し調べてみます。
0377名無しさん@お腹いっぱい。 (アウアウカー Sad3-6BAZ)
垢版 |
2017/11/13(月) 00:16:44.83ID:jtVf8kaUa
三角関数とか半径計算とか思いつかなかったしめんどくさいことを代わりにやってくれただけでも俺としては助かったか
これだけあれば無理にバージョンアップしなくてもええで
軸情報さえ与えればいいからな
GPDwin用に使わせてもらうわ
0378名無しさん@お腹いっぱい。 (ワッチョイ 5f67-0ibl)
垢版 |
2017/11/13(月) 01:55:06.59ID:9Yyb7OWG0
Menuで出すホップアップメニューがたまに外クリックしても消えなかったりするんだけど対策とかある?
0386名無しさん@お腹いっぱい。 (アウアウエーT Sa7f-yEAn)
垢版 |
2017/11/13(月) 17:54:41.25ID:fTwFmDsma
なぜそうしたいのかなんて書く必要ねーからだろアホ
0387名無しさん@お腹いっぱい。 (アウアウエーT Sa7f-yEAn)
垢版 |
2017/11/13(月) 17:56:04.52ID:fTwFmDsma
質問に答えねーでケチつけるだけのゴミがでてくることこそあるある
0392383 (アウアウエーT Sa7f-yEAn)
垢版 |
2017/11/13(月) 20:15:26.75ID:fTwFmDsma
>>389
すいませんその方法も使えないんです。
>>391
そうですソフトウエアホットキーを使いたいということです。
ですが#usehookや$がないと無限ループがおこるとかリスクがあるみたいなのでもう少し調べてなかったらあきらめます。
ありがとうございました。
0399名無しさん@お腹いっぱい。 (アウアウエーT Sa0a-KWQn)
垢版 |
2017/11/18(土) 01:29:01.86ID:/66QZllda
だいぶ説明不足でしたすいません。
3つの数字は常に変動してて、ホットキー押したときにそのとき一番大きい値のを選択するってことがしたいです。
ifを沢山書けばできるけど一行でやる方法ないかなあと調べたのですが分からず。
一つ増えまして4つで比較ができればいいのですが。
0400名無しさん@お腹いっぱい。 (ワッチョイ e187-8CrJ)
垢版 |
2017/11/18(土) 02:02:09.20ID:s0iz+kxI0
z := (a >= b ? a : b) >= ( c >= d ? c : d ) ? (a >= b ? a : b) : ( c >= d ? c : d )

1行で書けるけど、1年後とかに見たら何をやってるのか分かり難いので
ifで書いといたほうが視認性はいいんじゃないかな
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況