1 名前:名無しさん@お腹いっぱい。 [2005/10/21(金) 04:31:53 ID:qy14hWPT0] If You = beginner Read, Template, >>2-6 Previous Thread:: AutoHotKey Thread pc7.2ch.net/test/read.cgi/software/1098531338/ If Res > 950 Please, Build, NextThread
325 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/20(火) 15:28:39 ID:6fVVhLVx0] もしかして、とおもってやってみたらドンピシャ。 #Persistent OnExit, ExitSub hModule := DllCall("LoadLibrary", str, "getcpust.dll") if hModule=0 { ExitApp } SetTimer, GetCpust, 500 return GetCpust: Ret:=DllCall("getcpust\GetCpuStatus", "Int*", cpust, "cdeclInt") ToolTip, 返値 %Ret%`ncpust %cpust%`nErrorLevel %ErrorLevel% return ExitSub: DllCall("FreeLibrary", UInt, hModule) ExitApp
326 名前:320 mailto:sage [2005/12/20(火) 15:35:13 ID:yg2tqewb0] >>325 なるほど、そうやるんですね 勉強になりました ありがとうございます
327 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/20(火) 15:41:31 ID:6fVVhLVx0] これみてピンとキタ━━(゚∀゚)━━ヨ。 ttp://lukewarm.s101.xrea.com/commands/indexframe.html >DLL確保/開放の手動化 >DLLの処理によっては、処理の途中でDLLが開放してしまうと正常に動作しない場合がある。 >その場合、上記の例のように手動でLoadLibrary/FreeLibraryを行うことで、本来の動作になることがある。 できるだけ、この方法使った方が正常に動作するのかもしれませんね。
328 名前:320 mailto:sage [2005/12/20(火) 15:44:01 ID:yg2tqewb0] >>327 そこには目を通していたはずなのに実行してみなかった自分が恥ずかしいです
329 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/20(火) 15:45:24 ID:6fVVhLVx0] >>327 ttp://lukewarm.s101.xrea.com/commands/DllCall.htm だった・・ >>328 案外見落としてしまうですね^^
330 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/20(火) 16:14:40 ID:e8aKpTDx0] 平日の真昼間にいきなり活性化してんのな 学生ってもう冬休みに入ってるのかなw
331 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/20(火) 16:19:32 ID:e8aKpTDx0] ↑末尾のwは Alt+w(書き込み)の押し間違いだorz
332 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/20(火) 16:59:12 ID:f5Fr+yX00] Ctrl+Alt+Delを無効にしようと思うんだけど ^!Del::return としても変化なし 何か特別なことをしなければならない?
333 名前:332 mailto:sage [2005/12/20(火) 17:22:32 ID:f5Fr+yX00] もっとよく調べてから質問すればよかった・・・ ttp://nienie.com/~masapico/doc_DisableSAS.html コンパイルする環境にないのでコンパイル済を探しているところ ・・・ってこれはスレ違いか
334 名前:名無しさん@お腹いっぱい。 [2005/12/21(水) 22:00:44 ID:C94x2s+u0] >>333 俺もそれほしくてコンパイル済みを探したけど見つからんかった。 どなたかお願いします・・
335 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/22(木) 02:31:48 ID:MS28PmO/0] >>333-334 コンパイルだけなら出来ないこともないが、 さすがにそんなシステムの根幹に関わるファイルは試したくないし、 そのまま上げて、うまく動かなくてシステム復旧できなくなっても責任取れないし。 第一、こんな危険度の高いファイルを匿名掲示板の誰とも知れぬヤツに 頼むのはどうかしてるとしか思えない。
336 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/22(木) 16:11:43 ID:7k5DRGNJ0] 335の言うとおり。どれほど危険かわかっていってんのかね。
337 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/22(木) 17:01:29 ID:V901fh0D0] 何度もいう必要は無いよ 一度言えば分かる もしやる奴がいれば上げればいいし 自己責任で使えばいい
338 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/22(木) 18:39:00 ID:8FMcnaKn0] とりあえず自力でコンパイルできる位のスキルがある奴でないと危ないってこった
339 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/22(木) 18:44:59 ID:KsC0+Fth0] 何度もいう必要は無いよ 一度言えば分かる もしやる奴がいれば上げればいいし 自己責任で使えばいい
340 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/22(木) 22:47:41 ID:1UNMjvMz0] 乱数が必要なときどうしてます?
341 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/22(木) 23:14:28 ID:mI5CV1Yi0] Random使ってますが
342 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/22(木) 23:14:55 ID:MS28PmO/0] Random, OutputVar [, Min, Max]
343 名前:340 mailto:sage [2005/12/22(木) 23:16:16 ID:1UNMjvMz0] 関数の方で探してましたorz
344 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/22(木) 23:26:11 ID:1UNMjvMz0] もしかして16進数←→10進数もあったりする?
345 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/23(金) 00:08:10 ID:6+7NW5wO0] >>344 ある。探し方が下手なだけだと思う。
346 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/23(金) 00:24:43 ID:HDLrFyls0] >>345 ありました SetFormatですね 今度一からリファレンスを見直そうかな・・・・
347 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/23(金) 17:22:00 ID:6+7NW5wO0] 一部のソフトのバグが原因(だと思われる)でフォーカスの横取りがうまくされなくなる問題の解決のために、 フォーカスを奪いたいソフトを実行させる前に以下のコマンドを実行するようにしてみた。 GetFocus: RegRead, fore, REG_DWORD, HKCU, Control Panel\Desktop, ForegroundLockTimeout IfNotEqual, fore, 0 { RegWrite, REG_DWORD, HKCU, Control Panel\Desktop, ForegroundLockTimeout, 0 Sleep, 500;反映待ち } return しかし、実際にレジストリの方は書きかわっているものの、きちんとフォーカスを奪ってくれず、 TweakUIで該当の項目を見てもチェックが付いたまま…もちろんTweakUIでチェックを外せば奪うようになる。 他に何をすればAHKでも反映されるようになるんかな。
348 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/23(金) 19:43:26 ID:JrNibnEe0] あーなんか昔クリップボード拡張ソフトのスレでそれっぽいの見たような記憶が 今ちと忙しくて過去ログ探してる暇がないが Charu3起動するとフォーカス関係がおかしくなる奴
349 名前:347 mailto:sage [2005/12/23(金) 21:18:22 ID:6+7NW5wO0] >>348 そのスレ自体は知っているんだけど、やっぱり原因となってるソフトを特定して、 作者に直してもらうほか無いのかなぁ。
350 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/23(金) 22:08:11 ID:4kg8U7Th0] >>347 その手の設定はレジストリ変えた後に「再設定したよ」ってOSに知らせないといけないのかも 確かそんなAPIがあったはず
351 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/24(土) 00:50:55 ID:qmuEaf2G0] 最強クリップボード拡張ソフトはこれだ!Part5 pc8.2ch.net/test/read.cgi/win/1085675606/371-383 CharuシリーズサポートBBSの下のほう XPでフォアグラウンドアクティブできなくなるのですが… ttp://8537.teacup.com/keiziweb/bbs?OF=120&BD=9&CH=5 自分このときCharuの作者さんに報告したものだけど 問題部のソース晒して貰った上でバグ部分を特定してるので >347氏のも同じ現象ならソフトの作者さんに報告すれば直して貰える確率は高いと思う 常駐物もいったん全部外して、常用ソフト一個ずつ起動終了ごとにTweakUIで状態確認、で 原因のソフトは特定できると思うよ。ちと手間だけど
352 名前:名無しさん@お腹いっぱい。 [2005/12/29(木) 13:16:24 ID:kRbce90V0] age
353 名前:347 mailto:sage [2006/01/02(月) 13:16:01 ID:ECSj1xL10] 状況報告 Tweak UIの挙動をSpy++で確認。レジストリ変更後、↓を確認。 WM_SETTINGCHANGE wFlag:2001 pszMetrics:0006F4B4 ということで、スクリプトに↓を追加。 SendMessage, 0x1A, 0x0002001, 0x0006F4B4,, ahk_id 0xFFFF これで試したところ、以下のような良く分からん状態に。 Tweak UIでチェックをつけてOKを押す 該当レジストリが200000になる ↓AHK実行 レジストリが0になる ↓フォーカスをきちんと奪うようになる ↓Tweak UI起動して確認するとチェックが付いたまま レジストリの方は0になっている ↓そのままOKを押す ↓AHK実行 レジストリは0のまま ↓フォーカスを奪えない Tweak UIの方もチェックが付いたまま ↓のようにいろいろ変えてみても効果無し。 SendMessage, 0x1A, 2001, 0x0006F4B4,, ahk_id 0xFFFF SendMessage, 0x1A, 0x0002001, "Control Panel\Desktop",, ahk_id 0xFFFF SendMessage, 0x1A, 0x0002001, "HKEY_CURRENT_USER\Control Panel\Desktop",, ahk_id 0xFFFF SendMessage, 0x1A, 0, 0x0006F4B4,, ahk_id 0xFFFF SendMessage, 0x1A, 0, 0,, ahk_id 0xFFFF
354 名前:347 mailto:sage [2006/01/02(月) 13:23:01 ID:ECSj1xL10] 続き 参考にしたのは↓のサイト ttp://www.sxlist.com/techref/os/win/api/win32/mess/src/msg27_28.htm 何か根本的に間違っているのかそれとも足りないのか… ちなみに原因となってるソフトを探してみるものの、問題が起こるときは何度でも起きるし、 起きないときは全然で、再現性が無くて困り中。 何かSyleraが怪しい気もするけど確証が取れず。複数ソフトが原因だったらお手上げっす。 長文スマンね。
355 名前:名無しさん@お腹いっぱい。 [2006/01/03(火) 07:25:06 ID:jyT5EMJg0] JoeのようなAltTab代替アプリを実現しようと思ったんですが、 アイコンの取得の仕方がわかりません。 インスタンスハンドルを取得できればWinAPIを使ってできそうなんですがうまく取得できず。
356 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/03(火) 12:14:30 ID:Tw0iMMgh0] HDD漁ったら昔作ったアイコン存在チェックソース出てきた。時間ないので未検証でコピペするお ;WNDCLASSEX 構造体にセットされたアイコン GCL_HICON := DllCall("GetClassLong", Uint,hWnd, Int,-14) ;GCL_HICON GCL_HICONSM := DllCall("GetClassLong", Uint,hWnd, Int,-34) ;GCL_HICONSM ;WM_SETICON メッセージによってセットされたアイコンを取得 SendMessage,0x007F,0,0,,ahk_id %hWnd% ;ICON_SMALL ICON_SMALL := ErrorLevel SendMessage,0x007F,1,0,,ahk_id %hWnd% ;ICON_BIG ICON_BIG := ErrorLevel SendMessage,0x007F,2,0,,ahk_id %hWnd% ;ICON_SMALL2(XP) ICON_SMALL2 := ErrorLevel OutputDebug, GCL_HICON=%GCL_HICON% GCL_HICONSM=%GCL_HICONSM% ICON_BIG=%ICON_BIG% ICON_SMALL=%ICON_SMALL% ICON_SMALL2=%ICON_SMALL2%
357 名前:355 mailto:sage [2006/01/03(火) 17:40:06 ID:jyT5EMJg0] >>356 ありがとうございます。 これでアイコンハンドルは取得できました。 ListViewのGuiのIL_Add()ではアイコンのファイル名が必要なんですが ハンドルからファイル名は取得できるのでしょうか?
358 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/03(火) 21:17:52 ID:Tw0iMMgh0] 取得したアイコンハンドラを元にGUIへ反映する方法はわからんです。 (自分はウィンドウのタイトルバー左上にアイコンがあるのかどうか調べるためだけに アイコンハンドル取得してみてるだけなので) APIでどうにかできそうとのことだったので、むしろフィードバックを期待してたんですが 単純にexeのアイコンが表示できればいいのなら、管理人さんの プロセスIDを指定して実行ファイルパスを得る関数で .exeフルパス取得して セットしてやればいいと思われ cgi19.plala.or.jp/lukewarm/news/2005_05.html#14
359 名前:355 mailto:sage [2006/01/03(火) 21:27:09 ID:jyT5EMJg0] >>358 その管理人さんの関数で解決できそうです。 ありがとうござました。
360 名前:355 mailto:sage [2006/01/03(火) 21:45:14 ID:jyT5EMJg0] 最後のほうの DllCall("psapi\CloseProcess","Int",hProcess) のErrorLevelが-4になってしまうんですが大丈夫なんでしょうか?
361 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/04(水) 15:29:26 ID:SbxpZ6KF0] ホイールの挙動がなんかおかしいです SetTimer,tip,1000 return tip: GetKeyState,ks,WheelDown,P ToolTip,%ks% return で調べると、一度でもWheelDownをするとそのあとマウスから手を離しても ずっとksの値はDのままになってしまいます。
362 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/04(水) 15:49:26 ID:x6p42A6B0] >>360 これはCloseHandle()の間違いらしい。 DllCall("CloseHandle", "Int", hProcess)
363 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/04(水) 16:55:55 ID:95AmdYfp0] >361 ホイールの回転はホイール押下みたいなUP/DOWNが有るイベントじゃないから 状態を取ること自体間違ってる気がする
364 名前:361 mailto:sage [2006/01/04(水) 17:01:50 ID:SbxpZ6KF0] >>363 ホイールが回転されるまで待機、ってことがやりたいんですが 無理ですか?
365 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/04(水) 19:47:56 ID:95AmdYfp0] 単にWheelDown::に処理書いてやって,フラグ立てるなり終了するなりすればいいんでは
366 名前:361 mailto:sage [2006/01/04(水) 19:50:45 ID:SbxpZ6KF0] >>365 & WheelDown::の最中で待機したかったんですが あきらめて他の仕様にすることにします
367 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/05(木) 01:16:03 ID:YlkDRsZz0] フォルダのパスを引数として渡し、 「フォルダの参照」ダイアログのツリーを操作して 引数のフォルダを選択させる、ということをしたいのですが、 どのようにすればいいのでしょうか? DialogSetやDialogHandlerが使えないソフトにも 自前で対応させようとしているのですが、 「フォルダの参照」ダイアログがどうにもできず困っています。 助言をいただきたいです。
368 名前:355 mailto:sage [2006/01/05(木) 01:17:18 ID:n7Jr+2qn0] >>362 亀レスすみません エラー出なくなりました。ありがとうございます。
369 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/05(木) 01:40:30 ID:8eGMClaI0] >>367 「フォルダの参照」の場合、パスをセットする場所がないので ルート(マイコンピュータ)からインクリメンタルサーチで1階層ごとに フォルダ選択していくしかないのでは? DialogHandlerは随分とうまいことやってるけど、多分100%の無理そうな気がする。
370 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/05(木) 01:41:29 ID:8eGMClaI0] ×多分100%の無理そうな気がする。 ○多分100%の精度での実現は無理そうな気がする。
371 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/05(木) 10:54:01 ID:mE3SDKUy0] 一応フォルダの参照ダイアログの選択フォルダを指定する 方法はあるが(>>369 のような不確かな方法ではない) AutoHotKeyでは無理っぽい気がする。 とりあえずSHBrowseForFolder SHGetPathFromIDList あたりでググってみるといい。この方法は環境に問題がなければ 精度はほぼ100%だよ。(完全に100%かもしれないが、 言い切れるほどの確認はしてないので)
372 名前:367 mailto:sage [2006/01/05(木) 15:29:16 ID:YlkDRsZz0] >>369 >>371 レスありがとうございます。どうも難しいようですね。 「フォルダの参照」の場合はDialogHandlerに丸投げすることにしました。
373 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/07(土) 16:48:04 ID:g9rnGIxl0] 特定のアプリにのみ有効にすることはできますか? また、マウスジェスチャ(←→ならESCなど)を指定することはできますか?
374 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/07(土) 17:08:20 ID:E/GD5dod0] そのように書けばできますYO!
375 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/09(月) 15:47:48 ID:OvYu84cO0] >>347 AutoHotkeyユーザーではありませんが、347さんと同じような現象で困っていてこのスレにたどり着きました。 tuneappスレ(Windows2000/XP チューンナップ専用スレ Part17)にも書き込んでます。 以前はこんな現象は起こらなかったので困ってます。 常駐ソフト切ったり、バージョンを変えたり(上げたり落としたり)しても同じく原因がわからないんですよね・・・ レジストリを書き換えても(tuneappでも可)、TweakUIの「アプリケーションにフォーカスを横取りさせない」のチェックボックスに変化無し。 チェックボックスを外してもいつの間にかチェック状態に戻ってしまう・・・ Windows2000を普段使ってまして、WindowsXPだと起きていないので Windows2000の何かが原因なんですかね。 ネットで調べたらWin32 APIてのが関係してるかもしれないようですが、お手上げ状態です。
376 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/09(月) 17:38:31 ID:r9CSfa8s0] >>347 今更だが、Regmon辺りで書き換えてるアプリ探すのが一番かと ForegroundLockTimeoutでフィルタリングして放置しておけばそのうち引っかかると思うぞ
377 名前:347 mailto:sage [2006/01/09(月) 21:51:22 ID:gCdov2U80] >>376 残念ながらそれはもう試してた。Regmonでは引っかからなかったよ。 Tweak UI等での正規の方法で変更する場合は関知してくれるけど、このバグの場合は無理らしい。 いっそ、この問題が起こる人用のスレでも立てて、全使用ソフトを書き連ねる→共通するソフトが容疑者 って方法でも取らないと無理かなぁ…ちなみにOSはXP SP2です。 とりあえず原因が除去できないならってことで、>>347 で書いたものの代わりにこんな感じで無理矢理対処。 SendMessage等を用いたもっとスマートなやり方を誰か分かれば頼む。 TweakFocus: Run, TWEAKUI.EXE WinWait, Tweak UI ControlSend, SysTreeView321, {Down}{Right 2}, Tweak UI Sleep, 50 Control, UnCheck, ,Button2, Tweak UI Sleep, 50 ControlClick, Button6, Tweak UI return
378 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/09(月) 23:37:50 ID:r9CSfa8s0] >>377 Regmonでダメだったのか 古典的なwin.iniのCompatibility95セッションに追加する手法は?
379 名前:347 mailto:sage [2006/01/10(火) 00:20:10 ID:YKl99lMm0] >>378 こんな簡単な解決方法があったとは… 根本的な解決になったわけではないけど、実用上は何の問題もなし。 激サンクス!
380 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/10(火) 12:26:18 ID:edhaETY50] 今更かもしれませんが・・・前スレ749さん hModule := DllCall("LoadLibrary", str, "DengakuDLL.dll") p := DllCall("DengakuDLL.dll\TOHANKAKU", "str", "01234567890", "str") msgbox, %p% DllCall("lstrcpy", "str",str1, "str", p) msgbox, %str1% DllCall("FreeLibrary", UInt, hModule) で、動きました。処理途中で解放されていたのが問題だったぽいですね。 すでに解決してたらすいません。
381 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/10(火) 21:55:48 ID:h3Yb+cm+0] DllCall("SetCaretBlinkTime",UInt,100) とやってもすぐに反映されず、何かアクションを起こさなければ速度はそのままです。 何か足りないんでしょうか?
382 名前:前スレ749 mailto:sage [2006/01/11(水) 01:30:09 ID:95IZTI+k0] >>380 あ! LoadLibraryで確保すればOKだったのか。 管理人氏がBRegExp.dll でやってたのは知ってたけど再検証はしてなかったです。 (自分でも忘れてた) 秀マクロ用のDLLが使えるようになるのは結構大きいかも。 教えてくれてアリガトン てことは、AHKでも田楽DLLのSETVER/GETVERでグローバル変数が扱えるのかな iniとか経由なしでオンメモリ上で秀マクロや他のアプリとデータを共有化できるのか うはw夢がひろがりんぐwww
383 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/11(水) 04:51:40 ID:tIP7xIJe0] 起動するとそのままタスクトレイに入るソフトがあるんですが、 これをScrollLockで起動・終了したいんですね。 で、こんな風に書いてみたんですが…… ~ScrollLock:: Process, Exist, task.exe if ErrorLevel = 0 Run, task.exe else WinClose, ahk_pid %ErrorLevel% return これだとそのソフトの終了ができないんです。 ここの「WinClose」が「Process, Close」にすれば「強制終了」はできるんですが、 強制終了でなくふつうの終了がしたいんです……。ソフトの挙動が変わってしまうので。 タスクトレイアイコンを右クリックでxすると終了できるので、 この「WinClose」の行を「Send, #b & AppsKey & x」とかやってみたんですが、 別のアイコンにフォーカスが当たってしまい、、、どうにもうまくいきません。教えてください。
384 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/11(水) 05:02:56 ID:XYQfQQRG0] トレイメニューの「閉じる」のコマンド番号を調べておいてWM_COMMANDで送ってやればいいような
385 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/11(水) 07:58:09 ID:95IZTI+k0] 挙動の本質とは関係ないかもしれないけど、Locks系の押下情報は OSが返してくる値がおかしいからホットキーに割り当てるのは控えたほうが良いと思われ
386 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/12(木) 01:07:46 ID:rmvCVckQ0] なまず日記すげえな。
387 名前:383 mailto:sage [2006/01/12(木) 03:13:12 ID:HWiUEJ9g0] 助言ありがとうございました。 Send, #b{APPSKEY}x これでいけました。 これ「ソフトがタスクトレイの左端にある」ことを決めてかかっているのでよくないですが、 紹介いただいた「コマンド番号を調べる」方法を知らないので……(^^; ぐぐって見て、 ResouceHackerでできるという話があったのでやってみたんですが、 それらしいエントリが見つからず……断念。
388 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/12(木) 03:30:15 ID:5XY6ilOR0] Direct Command ttp://members.jcom.home.ne.jp/shinonon/dircmd.html 終了命令はこれで調べられる可能性があるよ SendCmdをRunさせてもいいし、 AHK内でも処理できる。
389 名前:383 mailto:sage [2006/01/12(木) 21:12:12 ID:HWiUEJ9g0] ありがとうございます。 ただ、流行らせるページで紹介されている方法も含め、ソフトが特殊なのかうまくいきませんでした……。 件のソフトはWorkCheckerという、キーの押下回数をカウントするソフトなんですが(^^; 終了時にCSV形式でファイルを出力するもので、強制終了するとこれをやってくれないんですよ。 「終了」のほうは、とりあえず何とかなっているのでこれでいいとして、 もう一つうまく行かないことがありますので、よろしければお願いします。 Media Player Classicを「フルスクリーン」にしているときに、 383で挙げているスクリプトを走らせると、MPCのフルスクリーン化が解除されてしまうんですね。 これが「ウィンドウの最大化」なら、特に解除されることもないんですが……。 問題の部分はこんな感じになってます。 WinGetActiveTitle, player Send, #b{APPSKEY}x WinActivate, %player% このSendをした際に、 タスクトレイにフォーカスが移ってタスクバーが出たままになるのを何とかしたくて このような処理をしてみたんですが、先にも書いたとおり、 最大化したウィンドウでは期待どおりに動くものの、全画面化した場合はうまくいきません。 WinGetActiveTitleが、タイトルの取得のためにウィンドウ表示に戻してしまうんでしょうか……。 ちなみに、playerにはMPCの決め打ちができません。
390 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/12(木) 21:23:04 ID:HWiUEJ9g0] あ、ちなみに、MPC以外でも同じ状態になります。 それと、 WinGet, player, PID 〜 WinActivate, ahk_pid %player% とか、PIDじゃなくてIDだとかの場合も試しましたが、これもうまくいかず。
391 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/13(金) 01:26:59 ID:+pozkCUx0] 今プログレスバーを半透明にしようとしているのですが、期待した表示になりません。 Progress,cwFFFFFF ,,name,time winset,TransColor ,FFFFFF 50,time return esc::exitapp ウィンドウを半透明にして文字とバーは透過なしにしたいのですが、出来ないのでしょうか? これだとウィンドウが完全な透明、文字とバーが半透明になります。 Trans ,で設定するとウィンドウは半透明なのですが文字も半透明に。。トホホ。
392 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/13(金) 12:15:47 ID:5XB+c2x50] 2枚重ね
393 名前:391 mailto:sage [2006/01/13(金) 17:00:20 ID:dZX44Wpz0] >>392 ありがとう!発想を変えれば良かったんですね。希望の動作になったので報告までにはっときます。 オプションでツールウィンドウを指定してるのは、タスクバーに表示させたくないためです。 gui,add,text Gui, Color,000000 gui,+ToolWindow +AlwaysOnTop +OwnDialogs -border gui,show,w300 h200,back winset,Trans, 50,back Progress,cwC8D0D4 ctFFFFFF B,,name,time Progress,50,,,time winset,ExStyle,+0x00000080,time winset,TransColor ,C8D0D4 255,time return esc::exitapp
394 名前:381 mailto:sage [2006/01/14(土) 21:15:58 ID:6j6GF4sd0] いまだ解決せず。 キャレットの速度変更した後、Send,{Left}{Right}とか無理やりアクション起こすと 色々不具合がでるソフトもあるし・・・ SmartCaretはどうやってるんだろう。
395 名前:383 mailto:sage [2006/01/17(火) 10:21:04 ID:aCgAJjPo0] 一段落したのでまとめをさせてください。 したかったのは、プログラム全画面化時のキー押下回数のカウントでした。 カウントには>389で挙げているWorkCheckerというソフトを利用することにしていました。 はじめ>383にてScrollLockを使おうとしていたのは、 全画面化時でもキーボードインジケータによって動作中かどうかがわかるためです。 これによって挙動がおかしくなったかどうかはわかりませんが、>385さんの助言を受け、 起動キーを変更して(NumpadSubに)、動作情報はツールチップに表示させるようにしました。 いろいろ調べてみましたが、WorkCheckerのメッセージによる終了のさせ方がわからず、 タスクトレイにフォーカスを当ててキーをSendするというムリヤリな解決法をとりました。 その後WorkCheckerの使用をやめ、AutoHotkeyスクリプト内部の処理でカウントすることに。 これでスクリプト終了の問題は一応決着がつきました。 が、その数値をファイルに書きこむ際、エントリ名を取得しようとInputBoxを出すと、 >389と同じ状況になり、全画面化が解除されてしまいます。 最大化でなく全画面化なので、WinMaximizeでも状態を復帰させることができません。 いろいろやってみたところ、WinGetActiveTitleとかWinActivateには問題がなく、 プログラムの全画面化が解除されるのは、タスクトレイやInputBoxなど 他のウィンドウにフォーカスが移ったときであることを突き止めました。 また、この現象は、プログラムの最大化時や、 IEのキオスクモード(F11を押すとできる一種の全画面化)では発生しないこともわかりました。 以上です。 全画面化の解除問題は解決してないのですが、うまくいきそうにないので諦めることにしました。 プログラムはPerlのワンライナー程度のスクリプト処理をちょっとかじっていただけ、 Windowsプログラミング経験なしのド素人なので、 コメント行やエラー処理も含めて100行を越えるスクリプトを書いただけでいっぱいいっぱいです(^^; 皆さん、助言どうもありがとうございました。
396 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/17(火) 13:41:14 ID:aCgAJjPo0] まとめてみて、もしや、と思って試してみました。 全画面化中にAlt+Tabをしてみると、AHKスクリプトでの全画面化解除の挙動と一緒でした。 つまり、AHKスクリプト中に全画面化解除されるプログラムは、Alt+Tabでも解除され、 AHKスクリプト中に解除されないプログラムは、Alt+Tabでも解除されませんでした。 (最大化した場合や、IEのキオスクモード) この問題の発生はAutoHotkeyに直接関係がなかったようです。お騒がせしました。
397 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/17(火) 17:29:06 ID:kObrtqt+0] 全画面化解除されても、復帰させれば問題ないのなら、 全画面化解除されるアプリ毎に全画面化に必要な操作をAHKにさせれば良いんでねーの? 数が多いと嫌になるかもしれんが、大抵全画面化のホットキーは決まってるし。
398 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/22(日) 12:49:22 ID:2qAgcpH90] 時間の計算で難儀してます.... 時刻t1〜時刻t2間の時間T[s]を求める際に、 T := t2 - t1 みたいな書き方はできるんですが、 時刻t2と時間T[s]から、 t1 := t2 - T のような式だとうまくいきません。 たとえば、ここでT=300[s](5分)として計算すると、 t2を時間としてでなく、数値として解釈するようで、T=3:00(3分)として計算されてしまいます。 t1 := t2 - T, Second とやると、今度は「TがYYYYMMDDHH24MISSのフォーマットではない」とエラーになるし、 EnvSubのマニュアルを見ていてもいまいちやり方がわかりません....
399 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/22(日) 15:46:10 ID:Yqz0MIUn0] EnvAddで-300秒を足すんじゃなかったけ?
400 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/22(日) 16:19:08 ID:1N3K73ci0] 時間計算はEnvAddとEnvSubの扱いの違いに気がつかないとハマるな 過去スレでも何度か話題になってるから調べてみ
401 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/22(日) 17:01:54 ID:2qAgcpH90] ほ、ほんとだ... >399,400 レスありがとうございました。 EnvAddのマニュアルにも、たしかにそれらしい文言がありますね。 でもこんなのわかんないよぅ...
402 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/22(日) 17:12:45 ID:v9Q+2/T40] タイトルバーで中クリックされたら処理を行うってこと(QuickDirみたいなもの)がやりたいんだけど、 どんな感じでやれば良いんでしょーか。とりあえず↓のようにやってみたけど、 SendMessageの使い方が間違ってるのか、うまくいかないっす。(ErrorLevelがFAILになる) ~MButton:: MouseGetPos, x, y, id SetFormat, integer, H x += 0 y += 0 xy := x + y * 0x10000 SendMessage, 0x84, 0, %xy%, ahk_id %id% If ( ErrorLevel == 2 ) { ;ここに処理を入れる } return
403 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/22(日) 17:52:51 ID:69RhDVUi0] 1.0.40.12から1.0.41にバージョンアップしたら、 RWin up::Return が効かなくなってしまいました。 AutoHotkeyを常駐させ、右Windowsキーを >#i::Send,{Up} >#k::Send,{Down} のように使っているのですが、Windowsキーを押して そのままはなすとスタートメニューがでるのがいやで 冒頭のものを一緒に書いていました。 ところが1.0.41ではスタートメニューがでてしまいます。 解決する方法があれば教えてください。
404 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/22(日) 17:54:27 ID:1N3K73ci0] 0x84 て何だっけ? 値からメッセージ名探すの大変なんで質問する時はコメントとか入れてクレ
405 名前:402 mailto:sage [2006/01/22(日) 18:30:09 ID:v9Q+2/T40] >>404 スイマセン。 コメント入れるとこんな感じです。 ~MButton:: MouseGetPos, x, y, id ;カーソル下の座標とid取得 SetFormat, integer, H ;座標を16進数に変換 x += 0 y += 0 xy := x + y * 0x10000 ;座標を上位ワードと下位ワードにまとめる SendMessage, 0x84, 0, %xy%, ahk_id %id% ;カーソル下のウィンドウにWM_NCHITTESTを送る If ( ErrorLevel == 2 ) ;タイトルバーならば処理を実行 { ;ここに処理を入れる } return メッセージに関してはここを参考にしました。 ttp://www.winapi-database.com/Message/WM/WM_NCHITTEST.html
406 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/22(日) 19:02:30 ID:GjGnwmrQ0] >>403 1.0.41 から流行らせるページの 2 stroke key も動かなくなっちゃいましたね。 本体のバグだと思うんで、本家の更新待ちです。
407 名前:406 mailto:sage [2006/01/22(日) 20:00:46 ID:GjGnwmrQ0] すいません。 Ctrl key double tap の方でした…。
408 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/22(日) 21:39:01 ID:1N3K73ci0] >>405 とりあえず2つほど気がついた点。ただこれでも期待通りの値は取れてないが。 ・SendMessage はウィンドウ指定より先にControlを指定する。(FAILの原因) ・MouseGetPosのX,Y座標はアクティブウィンドウの左上からの相対座標で取得される。 (CoordMode,Mouse,Screenを実行してない場合) つかこのWM_NCHITTESTって「非クライアント領域のどの部分でマウスが操作されたか調べる」って なってるんだけど、いいのだろうか ~MButton:: MouseGetPos, x, y, id,ctl ;カーソル下の座標とid取得 xy := x + y * 0x10000 ;座標を上位ワードと下位ワードにまとめる SendMessage, 0x84, 0, %xy%, ,A MsgBox, ErrorLevel=%ErrorLevel% return 自分もキャプション位置を取得するのにかなり面倒な関数組んでるので こんな簡単にまとめられるならその方が有り難いんだがね
409 名前:402 mailto:sage [2006/01/22(日) 23:52:19 ID:v9Q+2/T40] >>408 座標自体は16進変換しなくても良かったんですね。 自分もその座標の原点をどこにすればよいのか分からなかったので、とりあえずそのままやってみた次第です。 どうやら、Delphi製もしくはWTLを用いて作られたソフトではうまくいくようです。 >自分もキャプション位置を取得するのにかなり面倒な関数組んでるので どのようなロジックで実装されているんでしょうか。
410 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/23(月) 03:04:13 ID:zfPva1iV0] >>409 ちと長いんで自ブログのほうに上げますた。無駄に助長だが一応コピペで当座は動くと思う ttp://d.hatena.ne.jp/eamat/20060123
411 名前:403 mailto:sage [2006/01/23(月) 22:02:12 ID:mqTpMs440] >>406 そうなんですか。 では次のバージョンでの改善を望むことにします。
412 名前:402 mailto:sage [2006/01/24(火) 01:16:40 ID:JUUu5mZd0] >>410 ありがとうございます。期待通りの動きとなりました。 ご苦労の程お察しします。 自分はSendMessageの挙動はいまいち理解できていなく、 根本的な解決法を考えられそうにないので、誰か識者の方ヘルプ^^
413 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/24(火) 11:29:31 ID:hmUrV7Tv0] winキーを単体で押したときだけ無効にするにはどう設定すればいいんでしょうか win+Dとかの操作は有効にしたいんですけど LWIN::Return とすると全部無効になってしまいます。
414 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/24(火) 12:41:36 ID:ArnUgYQ30] 質問前にせめて10レス前ぐらいは読みたまえよ
415 名前:413 mailto:sage [2006/01/24(火) 16:50:53 ID:hmUrV7Tv0] 1.0.40.12 で LWIN up::Return としても全部無効になってしまいます どうしたらいいんでしょうか
416 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/24(火) 23:18:38 ID:Kbo1n5/E0] >>412 ttp://cgi19.plala.or.jp/lukewarm/news/2006_01.html#23
417 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/24(火) 23:30:27 ID:duKuEjYk0] >>413 LWIN::Return LWIN & LWIN::Return;二つ目のLWIN部分は何でも良い。 裏技的だが・・v1.0.40.05ではこれで動いた。他verではどうなるか知らん。
418 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/24(火) 23:35:41 ID:duKuEjYk0] >>416 あぁ、なるほど、SendMessage自体を直に呼べばいいのか。目から鱗。 そうだよなぁ・・・気が付かなかったなぁ・・
419 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/25(水) 00:09:26 ID:1ITNklYD0] >>416 ぬおお、コンパクトだ。さすが
420 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/25(水) 00:37:47 ID:whVXuEi20] ぬるたん ∩ ( ⌒) ∩_ _ グッジョブ!! /,. ノ i .,,E) / /" / /" _n グッジョブ!! / /_∧ ,/ノ' ( l ∧_∧ / /*´∀`)//∧_∧ グッジョブ!! \ \ (*´∀`)( / (*´∀`) n ヽ___ ̄ ̄ ノ ヽ |  ̄ \ ( E) / / \ ヽ フ /ヽ ヽ_//
421 名前:402 mailto:sage [2006/01/25(水) 02:38:42 ID:XjlFS14L0] >>416 (n‘∀‘)ηキテルワー!! 確かにDllCallから使った方が確実ですね。 さり気なくビットシフトなどを使っている辺り、自分との経験?の差を感じます… 改めてお二人に感謝。
422 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/25(水) 04:04:49 ID:8YZ6hNpP0] あら・・スクリーン座標にするだけで、AHKのSendMessageでも出来たよ・・・ 問題はそこだったか・・
423 名前:413 mailto:sage [2006/01/25(水) 19:22:45 ID:sklEJtBz0] >>417 1.0.41.00 で動きました! ありがとう
424 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/26(木) 00:09:38 ID:NczzL1RK0] RButton & WheelDownにAltTabを割り振りました 特定のアプリだけ、この機能を無効にしたいのですがそれは可能でしょうか Sendにするとすぐキーを離してしまうし、かといってifで条件分岐したあとにAltTabを置いても機能しません
425 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/26(木) 03:33:13 ID:AxRUycRL0] #IfWinActive