AutoHotkey Thread 2at SOFTWARE
AutoHotkey Thread 2 - 暇つぶし2ch2:名無しさん@お腹いっぱい。
05/10/21 04:35:50 qy14hWPT0
■AutoHotkey公式
URLリンク(www.autohotkey.com)

■解説サイト
AutoHotkeyを流行らせるページ
URLリンク(lukewarm.s101.xrea.com)

猫歩き - AutoHotKey
URLリンク(tryhost.net)

TOKKY.COM
URLリンク(www.h3.dion.ne.jp)

eamatの日記
URLリンク(d.hatena.ne.jp)

AutoHotkey メモ - Principia
URLリンク(principia.s54.xrea.com)

3:名無しさん@お腹いっぱい。
05/10/21 05:56:58 pFmEOL420
SendMessage,0x10,0,0,,ahk_id >>1

4:名無しさん@お腹いっぱい。
05/10/21 06:02:30 UHzgbYwX0
#SetThreadMood, Mataari

5:名無しさん@お腹いっぱい。
05/10/21 06:03:04 hmcphRZM0
2つのテキストファイルを比較して、違う箇所を変数に代入するって無理ですよね?

6:名無しさん@お腹いっぱい。
05/10/21 07:11:20 U6Eoic8d0
おいおい、マジで1の説明スクリプトネタにしたんかよ。
miscにテンプレ案まとめてくれた人いたのに無視してるし。

しかし解説くらい入れてくれ、始めてきた人が何のソフトかわからんだろ

/*

AutoHotKeyはキーボードやマウスなどに様々な機能を割り当てる常駐ユーティリティです。
スクリプトで自由に動作を設定できます。
ポップアップメニューや入力ボックスなどのGUIを表示することができ、
応用次第で使い方は無限に広がります。

*/


7:補足
05/10/21 07:32:49 U6Eoic8d0
■BBS(2ちゃん形式)
URLリンク(lukewarm.s101.xrea.com)

■アップローダー
URLリンク(lukewarm.s101.xrea.com)

■関連記事のあるサイト 追加

流行らせるページの中の人の雑記
URLリンク(cgi19.plala.or.jp)

なまず日記
URLリンク(www.tierra.ne.jp)

おばけ日記
URLリンク(d.hatena.ne.jp)

スクリプトのページ for 信長の野望 革新
URLリンク(www2.pf-x.net)

1 Hour Software by skrommel
URLリンク(www.donationcoders.com)

8:名無しさん@お腹いっぱい。
05/10/21 14:34:59 BHfWk1Gq0
これってLANで繋がってる別のPCにキー操作を送ることは出来ますか?

9:名無しさん@お腹いっぱい。
05/10/21 14:39:07 gNwVAaQx0
>>8
バカスwwwwwwwwwwwww

10:名無しさん@お腹いっぱい。
05/10/21 18:54:16 BHfWk1Gq0
(・3・) ?

11:名無しさん@お腹いっぱい。
05/10/21 21:13:52 U6Eoic8d0
>>8
確か本家のほうでそういうのなかったっけ?
英語わかんないんでちゃんと読んでないが、向こう製の有名なソフトと組み合わせると
クライアントPCをどうにかできたのあった気がする

12:5
05/10/22 17:01:31 0mEJt8xM0
やっぱ無理ですか?

13:名無しさん@お腹いっぱい。
05/10/22 17:21:52 PJPwE6IS0
がんばりゃ出来るだろ

14:名無しさん@お腹いっぱい。
05/10/22 17:22:49 T09muY/00
>>12
ロジックが難しいよ
どんな仕様にするか自分で考えてみた?
この難しさは言語関係ないよ

15:名無しさん@お腹いっぱい。
05/10/22 17:51:27 bbxBVyHG0
>>12
Windows付属のFCや、GNUのdiffを呼び出して、
結果を標準出力でもらうのがいいと思います。

16:5
05/10/22 17:56:58 0mEJt8xM0
スクリプト初心者の自分には無理っぽいですね・・・

17:名無しさん@お腹いっぱい。
05/10/22 18:42:36 bbxBVyHG0
>>16
私も初心者ですが、URLリンク(www.autohotkey.com) 首っ引きで落書きして遊んでますよ。
今は試しもせずにここに落書きしますが
file1=C:\data\1.txt
file2=C:\data\2.txt
tmpfile:=%TEMP%\A_NowUTC%
RunWait, FC /n %FILE1% %FILE2% > %tmpfile%
FileRead, fc, %tmpfile%
何がしたいか分からないですが、最初はこんな雰囲気じゃないですか?
(上記だとFCの不要な出力まで入るので、FileReadLineで除外しながら読むべき)

18:名無しさん@お腹いっぱい。
05/10/23 00:30:53 GKt8y+QZ0
>>17
>RunWait, FC /n %FILE1% %FILE2% > %tmpfile%

ここがうまくできないです。

File1 = D:\a.txt
File2 = D:\b.txt
File3 = D:\c.txt
RunWait, FC %File1% %File2% > %File3%
Return

とやっても出力されず。

19:名無しさん@お腹いっぱい。
05/10/23 01:02:53 F0F64ea40
>>18
コンソールで標準出力取り込みたい場合は
RunWait, %COMSPEC% /C FC /n %FILE1% %FILE2% > %tmpfile%,,hide

詳しい説明知りたかったら、DOS窓開いて cmd.exe /? (9x系は command.com /?)してみれ

20:18
05/10/23 01:06:30 GKt8y+QZ0
>>19
ありがとうございます

21:名無しさん@お腹いっぱい。
05/10/24 04:09:18 a7aA78Tt0
正規表現使うのって無理?
なんか通すなら何がいいかな

22:名無しさん@お腹いっぱい。
05/10/24 06:13:52 EXVZlPHc0
Refoとか URLリンク(www.vector.co.jp)

23:名無しさん@お腹いっぱい。
05/10/24 20:01:21 tAwpBQuA0
やっぱクリップボード使うしか手段はないのか・・・。

24:名無しさん@お腹いっぱい。
05/10/24 20:24:06 2CoEqoGk0
標準出力か直接ファイル書き出しできるツールで出力結果テンポラリに書き出して
FileReadで読み込んだらどうだろう

ツールはperlでもDMonkeyでもWSHでもエディタマクロでも好きなの使いたまい

25:名無しさん@お腹いっぱい。
05/10/24 20:54:53 uNfVf2Yw0
RegExp扱えるDLL(各種)をDllCallで利用するのは無しですか。

26:名無しさん@お腹いっぱい。
05/10/24 21:33:17 PCi80khV0
URLリンク(lukewarm.s101.xrea.com)
ためしに作ってみた。

27:名無しさん@お腹いっぱい。
05/10/24 21:35:54 tAwpBQuA0
oioi!

28:21
05/10/24 21:37:42 a7aA78Tt0
>>22>>26
レス遅れてしまって申し訳ないがサンクス !!


29:名無しさん@お腹いっぱい。
05/10/24 22:31:46 a7aA78Tt0
SpilitPathって「ソ」が入ってるとうまく働かないみたいなんですが・・・・
他にダメ文字ってあります?

30:29
05/10/24 22:35:41 a7aA78Tt0
よく調べずにすみません。
一般的に言われてる通り、2バイト目に \ を含むとダメなようですね。

31:名無しさん@お腹いっぱい。
05/10/24 23:17:32 xz8pIzwD0
窓使いの憂鬱の &EditNextModifier のような機能を持たせる記述はありますかね。

以下,窓使いの憂鬱の Manual から &EditNextModifier の説明です。
----------------------------------------------------------------------------
次にユーザーがキーを入力した時に、モディファイヤ が押されていることにします。例えば、
key ESC = &EditNextModifier(M-)
とすると、Alt + X などを ESCAPE X などで代用することが可能になります。
-----------------------------------------------------------------------------

32:名無しさん@お腹いっぱい。
05/10/25 01:18:37 C2fzdx1p0
ダメ文字回避することって公式で頼まないと無理?

33:名無しさん@お腹いっぱい。
05/10/25 02:25:47 8o+XQN/n0
多分むかし誰かが頼んだと思う
でも英語圏だと全然無意味だし
日本人とかがソース提供しないと無理じゃないかな

34:名無しさん@お腹いっぱい。
05/10/25 05:46:49 zWdEJo5k0
ここや流行らせるBBSで話題に上がってるのは何度も見たけど
実際に本家に特攻した人いたんだっけ?
(IME云々のあたりはサンプル送ろうかって話も出たけどSendMessageでカタが付いたので
結局フィードバックはしなかった筈)


35:名無しさん@お腹いっぱい。
05/10/26 22:27:19 nd14Kelo0
ゲームオプションを開こうと↓のように記述したのですが、上手く開けません。
Run,c:\windows\rundll32.exe shell32.dll,Control_RunDLL C:\WINDOWS\SYSTEM\JOY.CPL
どこか足りない部分でもあるのでしょうか?

36:名無しさん@お腹いっぱい。
05/10/26 22:29:53 MJ0XX+Ib0
,

`,
でエスケープすれば?

37:名無しさん@お腹いっぱい。
05/10/26 22:33:41 nd14Kelo0
無事開くことができました。
即レスありがとうございました。

38:名無しさん@お腹いっぱい。
05/10/27 11:52:21 R8o0MbA00
--- test.ini ------
[test]
testpath = %A_MyDocuments%\Script
-----------------

IniRead, testpath, c:\test.ini, test, testpath ,

変数testpath中の %~%部分を展開させる方法ってありますか

StringReplace,testpath,testpath,`%A_MyDocuments`%,%A_MyDocuments%
内容が固定で予測できるものなら↑で置換えられるけど
環境変数とかもフレキシブルに参照できたらなぁと

39:名無しさん@お腹いっぱい。
05/10/27 13:32:18 u/F9vgSO0
質問です。

URLリンク(www.autohotkey.com)
のKeyWaitのコマンドリファレンスのサンプル3

*NumpadAdd::
MouseClick, left,,, 1, 0, D ; Hold down the left mouse button.
KeyWait, NumpadAdd ; Wait for the key to be released.
MouseClick, left,,, 1, 0, U ; Release the mouse button.
return

をNumpadAddからShiftやらCtrlやらAltやらに変えると
うまく動かないのですが(どうもキーがリリースされた時点でスクリプトが走る感じになってしまう
修飾キーでも動く、なにかいい方法はありませんか?

Shift::
MouseClick, left,,, 1, 0, D
KeyWait, Shift
MouseClick, left,,, 1, 0, U
return

40:名無しさん@お腹いっぱい。
05/10/27 17:54:25 rPavX0hw0
Shift::

+Shift::
で一応出来た。これが正しいのかは知らんけど。

ペイント:押してる間ちゃんと描画可能であることを確認。
エクスプローラ:押してアイコンのドラッグ可能であることを確認。
Spy++で一応メッセージもみてみたけど多分大丈夫だと思う。

41:名無しさん@お腹いっぱい。
05/10/27 18:14:57 Z0Jib14Q0
>>38
Transform,Derefでできる気がする

42:38
05/10/27 21:26:36 BJupbOTH0
>>41
thx ! ↓で試してみたら上手くいったよ!

/*
[test]
testpath = %A_MyDocuments%\Script
[dmy]
*/
IniRead, testpath, %A_ScriptFullPath%, test, testpath ,
Transform,pathdata,Deref,%testpath%
MsgBox,%pathdata%
return

ついでに Transform,val,HTML も試してみたけどこっちは2バイト文字(日本語)がだめぽ

43:名無しさん@お腹いっぱい。
05/10/27 21:45:02 wCR+8YoN0
いつのまにか1.0.40.03 になってる

44:名無しさん@お腹いっぱい。
05/10/28 09:33:32 A/rBIdCZ0
>>43
でもZIPファイルは落とせないね!

45:名無しさん@お腹いっぱい。
05/10/29 00:58:05 XDFu3HNG0
Set Win = WScript.CreateObject("Shell.Application")
'Win.MinimizeAll '全ウィンドウを最小化
'Win.UndoMinimizeALL 'ウィンドウ操作を元にもどす
'Win.TileVertically 'ウィンドウを左右に並べて表示
'Win.TileHorizontally 'ウィンドウを上下に並べて表示
Win.CascadeWindows ' ウィンドウを重ねて表示
こんなvbsをAHKで賢くやるほうほうはないですかね。
(vbsはコンパル時間がうざい)

46:名無しさん@お腹いっぱい。
05/10/29 01:13:06 Yt1MOkGO0
なにを言ってるのか解らんのだが・・・

47:名無しさん@お腹いっぱい。
05/10/29 11:28:39 DzqBi16s0
解像度を取得して
WinSetで並べる

48:名無しさん@お腹いっぱい。
05/10/29 12:27:47 6hUgk4ep0
vbsで何でコンパイルが必要なのかわからん、あれもスクリプトやろ
全最小化と元に戻すのはまんまのがある、コマンド調べろ
並べて表示、重ねて表示はタスクバーのコンテクストメニューから選べるので
その辺をエミュレートするとか。

49:名無しさん@お腹いっぱい。
05/10/29 12:48:18 HP8QDb5t0
LButtonを押した、離したをキーで代替したいのですが

w:: ;
    Send,{LButton Down}
    return
まではできたのですが、wキーを離したというイベントは取得できないのでしょうか?
???:: ;
    Send,{LButton Up}
    return

50:名無しさん@お腹いっぱい。
05/10/29 12:56:44 e8EHHc6U0
インタープリタ言語って実行するたびコンパイルしてるみたいな感じなんでしょ?
そんときのウェイトがダルいっつってんだと思うけど、俺も>>48に同意
VBSが必要な理由がわからない

51:名無しさん@お腹いっぱい。
05/10/29 13:02:30 e8EHHc6U0
>>49
流行らせるページにそのものズバリで解説されてるよ
NT系限定みたいだけど

52:名無しさん@お腹いっぱい。
05/10/29 13:31:01 HP8QDb5t0
>>51
目を通してみたつもりだったんですが見落としてました。
NTで検索したら見つかってこれでできました。
ありがとうございます。

w:: ;
    Send,{LButton Down}
    return
w up:: ;
    Send,{LButton Up}
    return


53:名無しさん@お腹いっぱい。
05/10/29 16:44:12 +/XWPeiP0
>>40ありがとうできますた。

+Sift::
とか、なんか裏技っぽいですねぇ

54:名無しさん@お腹いっぱい。
05/10/29 17:10:19 6hUgk4ep0
>>50
>45は vbs → ahkに移行したいって内容だし、漏れはvbsが不要とは言ってない

>実行するたびコンパイルしてるみたいな感じ
言いたいことは大体わかるが、コンパイルって「実行前に行う構文チェック」とは違うから。

コンパイルとはソースをオブジェクトコードに翻訳する作業のこと、
スクリプト(インタプリタ)言語は実行時に逐次処理するのでオブジェクト変換は行われない。

と思ったら、wikipediaに↓の記述があった
>インタプリタの中には、実行直前に一度ソースコードを中間的なコード(中間言語)に変換し、
>それを逐次解釈するものもある
URLリンク(ja.wikipedia.org)

vbsがどうなのかは知らん

55:名無しさん@お腹いっぱい。
05/10/30 04:22:18 /Ikc9y6N0
クリップボード拡張を作ってみようと思ったんだけど
クリップボード内に指定した文字列が入らずに
元からあった内容が貼り付けられたり
メニュー操作が無視されたりします(何も起こらない)
書いたのは以下のような内容なのですが、何かいい方法はありませんか?

Backup := ClipboardAll

Menu,clip_select,Add,line,clip
Menu,clip_select,Add,text,clip
Menu,clip_select,Show,%A_CaretX%,%A_CaretY%
exit

clip:
if A_ThisMenuItemPos=1
{
Clipboard = ――――
send,^v
Clipboard := Backup
Backup :=
return
}

if A_ThisMenuItemPos=2
{
FileRead,Clipboard,C:\text.txt
send,^v
Clipboard := Backup
Backup :=
return
}

56:名無しさん@お腹いっぱい。
05/10/30 05:09:41 TyhuAUFb0
音量をCtrl+UpとCtrl+Downで操作し、そのボリュームをGUIで表示して1秒後に消える
というものを作ろうとしています。(ようはMasterVCみたいなもの)

Gui, +AlwaysOnTop -Caption
Gui, Color, 245DDB
Gui, Add, Text, vVolume cWhite, ***
Return

^Up::
 SoundSet, +5, Master
 Gosub, Sound
 Return

^Down::
 SoundSet, -5, Master
 Gosub, Sound
 Return

Sound:
 SoundGet, Vol, Master
 Transform, Vol, Round, %Vol%
 GuiControl,, Volume, %Vol%
 Gui, Show, x624 y998 NA
 Sleep, 1000
 Gui, Hide
 Return

しかし、これだと音量を例えば20上げたくてCtrl+Upを4回押しても
1回押すごとに1秒待たなくてはいけず、反映されません。

どなたかお力をお貸しください。


57:名無しさん@お腹いっぱい。
05/10/30 05:58:30 CU8CuHjq0
>>56
タイマーでGui,Hideを1秒後に1回だけ実行させるように取り計らう

58:名無しさん@お腹いっぱい。
05/10/30 06:00:59 CU8CuHjq0
>>55
適当に間空けてみたら?

59:56
05/10/30 06:04:03 TyhuAUFb0
>>57
なるほど、こんな方法があったんですね。
ありがとうございます。

ところで、これのGUIウィンドウがタスクバーに表示されないようにできないでしょうか?

60:55
05/10/30 06:53:42 /Ikc9y6N0
>>58
Clipwaitを入れたりはしてたんですが
そういえばSleepはやってませんでした。
ClipWait
Sleep, 250
ぐらいを挟んだらたまにコケますがうまくいくようになったようです。
とりあえずこれで微調節してみようと思います。
ありがとうございました。

61:名無しさん@お腹いっぱい。
05/10/30 08:44:09 mpnujeVB0
>>59
Gui,+/-Option

>>60
ClipWaitはクリップボードを空にしてからじゃないと意味がないよ
内容が書き換わったか、ではなくクリップボードに何か入っているかを見てるから

62:56
05/10/30 14:09:58 TyhuAUFb0
>>61
見あたらないんですが・・・。
どのオプションでしょうか?

63:56
05/10/30 14:23:56 TyhuAUFb0
見つかりました。
+ToolWindowですね。すみませんでした。

64:56
05/10/30 14:33:52 TyhuAUFb0
もう1つすみません。
+E0x00000020を入れても透過ウィンドウにならないです。

65:名無しさん@お腹いっぱい。
05/10/31 13:05:42 auv8fr6b0
つWinSet

66:名無しさん@お腹いっぱい。
05/11/01 18:03:24 ozgXNR060
>>56

完成したらUPしてくれませんか?

67:名無しさん@お腹いっぱい。
05/11/01 18:40:57 JPnPn5j40
>>56
>>66
URLリンク(www.autohotkey.com)
これのHotkey部分を書き換えれば望みの動作になるかと。

68:56
05/11/01 22:04:36 hYFbhs5k0
>>66
>>56のSoud:の部分を

Sound:
 SetTimer, GuiHide, off
 SoundGet, Vol, Master
 Transform, Vol, Round, %Vol%
 GuiControl,, Volume, %Vol%
 Gui, Show, x624 y998 NA
 SetTimer, GuiHide, 1000
 Return

GuiHide:
 SetTimer, GuiHide, off
 Gui, Hide
 Return


>>67
>>56の時点でできた上のスクリプトで動作は満足していましたが、リンクのスクリプトも参考になりました。


ところで、視覚スタイルをOFFにする以外にタスクバーのグラデーションって切れないんでしょうか?
上のスクリプトの色設定だとタスクバー上でしっかり隠れてくれない。
透過も上手くいかないし・・・・

69:56
05/11/01 22:05:59 hYFbhs5k0
> >>56の時点でできた上のスクリプト
>>59の時点でできた上のスクリプト

間違いです

70:名無しさん@お腹いっぱい。
05/11/01 22:29:37 so0ECgfj0
>>68

下のようなエラーになります。

URLリンク(matsuya.dyndns.tv)

71:70
05/11/01 22:30:27 so0ECgfj0
70のエラーになるやつです。

Gui, +AlwaysOnTop -Caption
Gui, Color, 245DDB
Gui, Add, Text, vVolume cWhite, ***
Return

^Up::
 SoundSet, +5, Master
 Gosub, Sound
 Return

^Down::
 SoundSet, -5, Master
 Gosub, Sound
 Return

Sound:
 SetTimer, GuiHide, off
 SoundGet, Vol, Master
 Transform, Vol, Round, %Vol%
 GuiControl,, Volume, %Vol%
 Gui, Show, x624 y998 NA
 SetTimer, GuiHide, 1000
 Return

GuiHide:
 SetTimer, GuiHide, off
 Gui, Hide
 Return

72:名無しさん@お腹いっぱい。
05/11/01 23:10:10 B9WSZONo0
>>71
7行目(以降)のどこか(ていうか行頭)に不正な文字がある。
2ちゃんに貼ってて整形が崩れずインデントが保たれている段階で気付こうな

73:70
05/11/01 23:36:01 so0ECgfj0
>>72
thx。全角スペースが入ってた。

74:名無しさん@お腹いっぱい。
05/11/02 00:05:41 k4q1X8S+0
全角スペースいれるのやめない?
ちょっと見にくいだけじゃん。コピペめんどくせ。

75:名無しさん@お腹いっぱい。
05/11/02 00:17:11 Pn1A6Moc0
>>74
どっちにしろ、コピペしたのをそのまま使わず
後で自分好みにタブ入れたり改良したり変数変えたりするから
掲示板上での見やすさを優先してほしい。

76:名無しさん@お腹いっぱい。
05/11/02 01:04:10 1s79aisd0
なんか裏技的にうまくインデントを表現できないかね

77:名無しさん@お腹いっぱい。
05/11/02 01:04:59 Oarl5uV80
漏れは自分が質問するときは除去してるけど、人にレス付ける時は
敢えて全角スペースでインデント入れる場合が多いな。
特にそのままAutoHotkey.iniにコピペして使いそうな相手なら尚更

あぷろだに上がってる投稿モノの中に、全然インデントされてないスクリプトが
いくつかある。多分元々プログラミングしない人で掲示板でしか
人のソース見てないとインデントの概念自体がないんだと思う。

コーディングルールは個人の好き好きではあるけど、AHKの場合は
人から貰ったソースを手を入れずにそのまま使えるケースは少ないし
他人が見てもわかりやすい記述は知ってて欲しいと思うので

78:名無しさん@お腹いっぱい。
05/11/02 02:11:33 L1tQPzXC0
スペース0
スペース1
スペース2
スペース3
スペース4


79:名無しさん@お腹いっぱい。
05/11/02 02:13:48 L1tQPzXC0
>>78

80:名無しさん@お腹いっぱい。
05/11/02 02:15:47 L1tQPzXC0
スペース0
 スペース1
  スペース2
   スペース3
    スペース4

81:名無しさん@お腹いっぱい。
05/11/02 02:23:32 L1tQPzXC0
スペース0
スペース1
スペース2
スペース3
スペース4

>>78はコピペミス。

 または と書くと、半角スペースに変換される。
半角スペースが連続しても1個に変更されてしまうことがないみたい。


82:名無しさん@お腹いっぱい。
05/11/02 03:25:15 yA1z2EuC0
ギコナビで特殊文字変換してる

83:名無しさん@お腹いっぱい。
05/11/02 17:33:22 y7CD98+Z0
>>77
世の中にはインデントがないほうが見やすい人も存在する

84:名無しさん@お腹いっぱい。
05/11/02 18:48:13 Oarl5uV80
>>83
>コーディングルールは個人の好き好きではあるけど、AHKの場合は
>人から貰ったソースを手を入れずにそのまま使えるケースは少ないし
>他人が見てもわかりやすい記述は知ってて欲しいと思うので


85:名無しさん@お腹いっぱい。
05/11/02 20:23:36 5+koFFKw0
>>84
>>83

86:名無しさん@お腹いっぱい。
05/11/02 21:00:58 mmYbLWLG0
>>84-85
#SetThreadMood, Mataari



87:名無しさん@お腹いっぱい。
05/11/03 04:45:03 CGo3fQX00
キャプションを非表示にすることってできますか?
たぶんSendMessageを使うんだろうけど、見つかりません。

88:87
05/11/03 05:08:44 CGo3fQX00
みつかりました。
SendMassageではなくてWinSetだけれど。

WinSet, Style, ^0x00C00000

89:名無しさん@お腹いっぱい。
05/11/03 16:00:33 aDGTml8d0
あるアプリAを起動すると、別のアプリBも自動的に起動するようにするには、どのようにすればよいのでしょうか?

90:名無しさん@お腹いっぱい。
05/11/03 16:16:15 RQBG0Gu80
条件をもっと絞ってくれないとな。
単純な方法から高い連動性を求めるものまでいろいろあるから

91:名無しさん@お腹いっぱい。
05/11/03 16:53:28 aDGTml8d0
アプリAが何らかの方法で起動されると、プロセスを監視していたAutoHotKeyがそれを察知してアプリBも自動的に開くようにしたいのです。
何秒後に開く、とかの指定は必要なく、アプリAを終了したらアプリBも終了する、などの機能も必要ありません。
AutoHotKeyの監視はできれば5分ごとに監視するようにしたいのですが、常に監視するのでもかまいません。

方法をご存じの方がいましたら、お願いします。

92:名無しさん@お腹いっぱい。
05/11/03 17:47:09 GMRToEkf0
#Persistent
Settimer,kansi,5000
kansi:
IfWinExist,A
If hoge = 0
{
{
IfWinExist,B
{
hoge = 1
}
else
{
Run,B
}
}
return
}
else
{
hoge = 0
return
}

こんな感じでいいんでしょうか?

93:名無しさん@お腹いっぱい。
05/11/03 17:49:07 GMRToEkf0
スレの流れからして俺、最低だな・・・。

94:名無しさん@お腹いっぱい。
05/11/03 18:42:44 CgkRLY9O0
あー、Ifがネストしちゃうと漏れは完全アウトだな。
パッと見ではもちろんじっくり考えても全然理解できない。

で、エディタに貼っつけてインデントしてから考えてみたんだけど
一番上位のIfWinExist,A の{ }抜けてるけどいいのんかい?
あと 7,16行の { } に意味なくないか、これ


95:名無しさん@お腹いっぱい。
05/11/03 18:47:37 6IkeUy0z0
>>91
つProcess

96:名無しさん@お腹いっぱい。
05/11/03 20:16:45 IdqDMTZK0
ThumbSenseのように、タッチパッドに触れているかどうかを判定できるようになるといいなあ。

97:名無しさん@お腹いっぱい。
05/11/03 21:22:00 myFIFexE0
TAB使えばいいじゃん

98:名無しさん@お腹いっぱい。
05/11/03 22:56:37 ZNzLxnpo0
もしどなたかソースコード解凍できる人いましたら
ソースからShellExecuteというAPI検索して6個目(=最後)の引数何になってるか
確認していただけませんか?

99:98
05/11/03 23:06:30 ZNzLxnpo0
ごめんやっぱりいいです。
でもやっぱりなんかおかしい。

100:名無しさん@お腹いっぱい。
05/11/04 22:35:21 GuCt95u60
マウスカーソルを変更したり消去するコマンドは無かったorz
ノーマウスカーソルの機能をぱくれると思ったが残念

101:名無しさん@お腹いっぱい。
05/11/05 00:12:48 1+JQ8ek+0
>>100
前スレより。 DAT落ちしてるみたいなんでコピペ

> 627 名前:625[sage] 投稿日:2005/05/20(金) 23:58:26 ID:jhPL19PD
> とりあえずLoadCursorFromFileで直接カーソルファイル指定で
> システムのポインタは変えれるぽい
> (LoadCursorも試してみたがイマイチ挙動がよくわからん)
>
> #1::  SetSystemCursor(LoadCursorFromFile("C:\WINDOWS\Cursors\hoge.cur"),32512)
> #2::  SetSystemCursor(LoadCursorFromFile("C:\WINDOWS\Cursors\hoga.cur"),32512)
>
> LoadCursorFromFile(lpFileName)
> { ; カーソルファイルからマウスカーソルを作成する
>   return DllCall("LoadCursorFromFile",Str, lpFileName, Int)
> }
> SetSystemCursor(hCur,id)
> { ;システムカーソルを変更する
>   return DllCall("SetSystemCursor", Uint,hCur, Int,id ,Int)
> }
>
> 630 名前:592[sage] 投稿日:2005/05/25(水) 12:53:24 ID:62rl7YBY
> IME状態表示用のアイコン作ってみた
> URLリンク(lukewarm.s101.xrea.com)
>
> 631 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2005/05/25(水) 12:54:38 ID:62rl7YBY
> あ、マウスカーソルに訂正

102:名無しさん@お腹いっぱい。
05/11/05 03:27:14 kQuWg8rN0
dllcallでShowCursorを使えばいけそうだけど

#y::DllCall("User32\ShowCursor", "int", 0)
テストで作ってみても反応無かったorz 助けて

103:名無しさん@お腹いっぱい。
05/11/05 04:50:06 /8hJVayJ0
>>102
それ自分のプロセスのウィンドウにしか利かない

104:名無しさん@お腹いっぱい。
05/11/05 15:21:11 q4T/nF7a0
URLリンク(www.autohotkey.com)
の OnClipboardChange の例にある%A_EventInfo%ですが
誰か解説してほしい・・・

とりあえず、文字やファイルだと1
bmpだと2になるんだが、

文字とファイルの区別はつかないのかな

105:名無しさん@お腹いっぱい。
05/11/05 16:06:10 1+JQ8ek+0
>>104
URLリンク(lukewarm.s101.xrea.com)

106:名無しさん@お腹いっぱい。
05/11/05 16:07:29 1+JQ8ek+0
違った。こっちの下のほう
URLリンク(lukewarm.s101.xrea.com)

107:名無しさん@お腹いっぱい。
05/11/05 16:12:49 1+JQ8ek+0
何度もスマソ、ちなみにクリップボード内のフォーマットはDllCallでAPI使えば取得できる
サンプル URLリンク(d.hatena.ne.jp)

108:名無しさん@お腹いっぱい。
05/11/05 19:25:38 q4T/nF7a0
>>106
ありがとう。
日本語のヘルプ(chm)しか見てなかった・・・すまん

>>107
こっちも参考にしてみる。ありがと

 今週初めにAutoHotkey知ったんだがおもしろい。
これでCaps入れ替えができれば完璧なんだが・・・


109:名無しさん@お腹いっぱい。
05/11/05 20:23:00 YtsoQGy80
やっとサッカーチームが!

110:名無しさん@お腹いっぱい。
05/11/05 20:24:40 rpDKFDGY0
戦う相手がいません!

111:名無しさん@お腹いっぱい。
05/11/06 16:38:36 7Hz8Kh6P0
こんなスクリプト書いてくださいってのは、ここ的にアリですか?

112:名無しさん@お腹いっぱい。
05/11/06 17:44:40 PoGd2lip0
(ω・ )ゝ なんだって?

113:名無しさん@お腹いっぱい。
05/11/06 19:45:09 7Hz8Kh6P0
>>112
こんなスクリプト書いてくださいってのは、ここ的にアリですか!!!

114:名無しさん@お腹いっぱい。
05/11/06 19:55:01 FAFXojQr0
   /.─┬  /⌒ヽ ┌─┴─┐ .  |  ヽヽヽ       ―┼―         .|  ヽ  | \
 /| ┌─┐|    ノ     ̄フ   .  ̄| ̄ヽ |    , |      |   |   \   ̄| ̄ヽ | . |
   | └─┘|    |    ─┼─    ,ノ  │   ノ . | \ |  ゝ   |     |  ノ  │   |/ ̄ヽ
   |     J   ○      J  .   ノ  ヽノ  .   J   \_   レ     ノ  ヽノ     _ノ
  _____
 ____ー┼ー     |   /   _/_
  --  二二_   /~| ̄/ヽ    /   ヽ  |   \
   ̄ ヽ | | ノ  .|  ∨   |  /  _|   |     |
  | ̄|  ノ l____,  \ノ   ノ    (_ノヽ  レ
    ̄

115:名無しさん@お腹いっぱい。
05/11/06 19:56:57 0hkV63L40
>>111
いちいちそんな無駄レスせずにさっさと本題書けよ。印象悪いぞ。
過去スレからの流れを見てるとこのスレは自分である程度試行錯誤する人間には
手助けするけど、丸投げは(・A・)イクナイ!って感じだからそれを踏まえた上でヨロシク。

116:名無しさん@お腹いっぱい。
05/11/06 21:48:46 A0mk0Y990
横やりですいません。>>102のヒントお願いします。。。

117:名無しさん@お腹いっぱい。
05/11/06 23:40:35 z+zoLLJT0
>>111
無し

ヒントを教えてくれとかならまだしも、丸投げはダメだろ

118:名無しさん@お腹いっぱい。
05/11/07 00:15:52 Lx44qPKh0
>>116
>103で答えは出ていると思うのだが

119:名無しさん@お腹いっぱい。
05/11/07 04:00:09 S2Pl78Ca0
>>111
とりあえず、なにがしたいんだ?怒らないから言ってみなさい

120:名無しさん@お腹いっぱい。
05/11/07 18:35:53 7cDsa3uM0
>>111
やっぱり怒る

121:名無しさん@お腹いっぱい。
05/11/07 20:21:01 rV/rS1+v0
^p::
IfWinActive, ahk_class Notepad
Send, ^o
else
Send, ^p
return

こんな感じのスクリプトを書いているんですが、指定ウィンドウ以外で無限ループしちゃいます。
こういう時どうしたらいいんでしょうか?


122:名無しさん@お腹いっぱい。
05/11/07 20:39:04 PUaC//G70
>>121
一行目に
#UseHook
を追加

123:名無しさん@お腹いっぱい。
05/11/07 21:58:01 Lx44qPKh0
$^p::

124:名無しさん@お腹いっぱい。
05/11/07 23:09:43 rV/rS1+v0
>>122-123
無限ループしないようになりました。
ありがとうございます。


125:名無しさん@お腹いっぱい。
05/11/07 23:58:04 d1b3VXPA0
>>117
では、ヒントをお願いします。

>>119
優しいお言葉どうもです。書いてみます。
起動していたらアプリをアクティブ、起動していなかったらアプリを起動。
これは出来ました。これにさらに、Ctrlを押していたらアプリを終了。
Altを押していたら、アプリを最前面にをトグルということをやりたいです。
Win + H >秀丸を起動、起動していたらアクティブ。
Win + Ctrl + H>秀丸を終了、起動していなかったら何もしない。
Win + Alt + H>秀丸を最前面に、起動していなかったら起動して、最前面に。
これ単純にすべてのホットキーを設定しちゃえばいいのですが、
いろいろなアプリに対応させたいので、関数っていうんですか?
処理をうまいことまとめられたらいいなぁとおもいまして。

>>120
ひぃ…そこをなんとか。ヒントだけでも。

126:名無しさん@お腹いっぱい。
05/11/08 01:56:56 BqfIoljv0
どのへんを関数化したいのかわからんのだが
取り零しとかあるしトリガは素直にホットキー使ったほうがよい
モデファイヤキーの押下状態で内部分岐もできるが
これだとhが入力できなくなるので ~ つけるか中でSendするとかの処理が必要

*h::
dsp=
if (GetKeyState("CTRL"))
dsp = ctrl
if (GetKeyState("SHIFT"))
dsp = %dsp% sift
if (GetKeyState("ALT"))
dsp = %dsp% alt
if (GetKeyState("LWIN") || GetKeyState("RWIN"))
dsp = %dsp% win

ToolTip,%dsp%
return


127:名無しさん@お腹いっぱい。
05/11/08 07:16:19 OmlMtwX30
SetHotkey("n" , "notepad.exe", "C:\WINNT\System32", "max")
SetHotkey("c", "calc.exe", "C:\WINNT\System32", "")
return

SetHotkey(key, appPath, appWorkDir, appWinState)
{
global
appPath%key%:=appPath
appWorkDir%key%:=appWorkDir
appWinState%key%:=appWinState
Hotkey, #%key%, launchApp
;Hotkey, ^#%key%, quitApp
;Hotkey, !#%key%, toggleWindow
Return
}

launchApp:
StringRight, key, A_ThisHotkey, 1
appPath:=appPath%key%
appWorkDir:=appWorkDir%key%
appWinState:=appWinState%key%
Run, %appPath%, %appWorkDir%, %appWinState%
Return

hotkeyが関数に対応してないからめんどくさかった・・
とりあえずこれで動的に割り当てられるはず。

ヤレヤレダゼ( ゚д゚)y─┛~~

128:名無しさん@お腹いっぱい。
05/11/08 08:00:45 AQU/ZuaD0
「=」と「:=」ってどう使い分けるんですか?

129:名無しさん@お腹いっぱい。
05/11/08 10:08:44 U5/qb0is0
>>128
一緒

130:128
05/11/08 10:19:07 AQU/ZuaD0
>>129
そうなんですか?
あとIfの時()で囲むか囲まないかってのもいまいちよくわかりません。

131:名無しさん@お腹いっぱい。
05/11/08 10:32:21 w31TiB9U0
>>128
a:=A_AhkVersion

a=%A_AhkVersion%
だとaが同じ内容になる。
d=%abc%xyz%%
ってやりたくても出来ないので、こんなときは
b:=adc%xyz%
これで似たような意味になる。こう解釈してんだけど間違ってたらごめん。

132:131
05/11/08 10:34:58 w31TiB9U0
ごめん。
d=%abc%xyz%%→b=%abc%xyz%%
間違えました。

133:名無しさん@お腹いっぱい。
05/11/08 13:01:31 x8v+5Rvv0
>>126
>>127
ずばり答えまで書いてくださって、ありがとうございます。
内容を解釈しながら、改良してみます。

134:名無しさん@お腹いっぱい。
05/11/08 13:16:32 OmlMtwX30
>>127
あー、寝ぼけてるな・・・
hotkeyが関数に対応してたとしても別段コード変わらんよな・・

>>133たしかに、ヒントじゃないなw
がんばってね

135:名無しさん@お腹いっぱい。
05/11/08 15:15:11 ZVndp7Og0
>>129
おいおい。。。
違うやろ、ifの = と == は文字列比較以外はほぼ一緒だけど
>131の解釈でだいたい合ってる

136:128
05/11/08 19:12:51 AQU/ZuaD0
「=」と「:=」の使い分けはわかりました。

「If」と「If()」は?

137:名無しさん@お腹いっぱい。
05/11/08 19:27:52 BqfIoljv0
If var = value
 → 従来仕様、1行に1判定文しかかけない

If (var1 = var2) and (var1 = "value")
 → 後から追加された形式、AND や OR で複数の判定を連結できる

AHKは 1.0.25と1.0.34あたり(うろ覚え)で大幅な仕様追加があった。
 := や if () 、Functionは従来の記述ルールでできない部分を拡張する形で導入された記述形式
従来仕様とチャンポンになってるので後から入ってきた人には分かりにくいかもしれないな

138:128
05/11/08 19:32:07 AQU/ZuaD0
>>137
なるほど。
ありがとうございました。

139:名無しさん@お腹いっぱい。
05/11/08 22:48:46 x8v+5Rvv0
>>134
続きを改良しつつ、作ってみました。
SetHotkey(key, appPath, appTitle, appWorkDir="", appOpt="")
{
global
appPath%key%:=appPath
appTitle%key%:=appTitle
appWorkDir%key%:=appWorkDir
appOpt%key%:=appOpt
Hotkey, #%key%, launchApp
Hotkey, ^#%key%, quitApp
Hotkey, !#%key%, toggleWindow
Return
}

launchApp:
StringRight, key, A_ThisHotkey, 1
appPath:=appPath%key%
appTitle:=appTitle%key%
appWorkDir:=appWorkDir%key%
appOpt:=appOpt%key%
ifWinNotExist, %appTitle%
Run, %appPath%, %appWorkDir%, %appOpt%
else
WinActivate, %appTitle%
return
Return

140:名無しさん@お腹いっぱい。
05/11/08 22:50:31 x8v+5Rvv0

quitApp:
StringRight, key, A_ThisHotkey, 1
appTitle:=appTitle%key%
ifWinNotExist, %appTitle%
Exit
else
WinClose, %appTitle%
return
Return

toggleWindow:
StringRight, key, A_ThisHotkey, 1
appPath:=appPath%key%
appTitle:=appTitle%key%
appWorkDir:=appWorkDir%key%
appOpt:=appOpt%key%
ifWinNotExist, %appTitle%
Exit
else
WinSet, Topmost, TOGGLE, %appTitle%
return
Return

んー >>126さんの言うとおり、取りこぼしがあるし、
Topmostのトグルが出来てないような。
折角作ってもらったのに、ホットキーの方が確かってことなんですかねぇ。

141:名無しさん@お腹いっぱい。
05/11/08 23:08:59 BqfIoljv0
いや、取りこぼしが発生するのは LoopやSettimerで自力監視する場合の話
Hotkeyコマンドは動的に割り当ててるだけでトリガはAHKまかせだし
問題ない筈だが

142:名無しさん@お腹いっぱい。
05/11/08 23:28:51 BqfIoljv0
Returnを2回重ねてるところと Exit使ってるのの意味がわからんのだが

toggleWindow:
 StringRight, key, A_ThisHotkey, 1
 appTitle := appTitle%key%
 ifWinExist, %appTitle%
   WinSet, Topmost, TOGGLE, %appTitle%
Return

でいいんじゃね? (If あるんで全角インデントした)

143:名無しさん@お腹いっぱい。
05/11/08 23:38:44 x8v+5Rvv0
>>141
なんか反応が鈍い時があるんですよね。

>>142
メタメタだ…。

144:名無しさん@お腹いっぱい。
05/11/09 07:51:17 HqHg5smR0
ていうかappTitleにどんな値指定してんだか知らんけど
秀丸みたいに多重起動できるアプリだとウィンドウを限定できねんじゃね?
判定は ifWinExist じゃなくて ifWinActiveにして
任意のウィンドウがアクティブなときに動作させないと誤爆するな

あと秀のようにアプリ自体がTopmostの機能をもってる場合はSendで
ショートカットキー投げるとかしてそっち使ったほうが話は簡単かもしれんよ

145:名無しさん@お腹いっぱい。
05/11/09 15:43:04 +AeGgYao0
>>143秀丸落として試してみたが、うちでは問題なくトグル出来るが・・・
それと>>141が言うようにhotkeyコマンド使って設定した場合、ホットキーラベルで設定したのと同じ動作になるはずで、
反応鈍いって事はないだろう。ホントにそうならAHK自身のバグとしか考えられん。



>>144
ifWinExistでもちゃんとできるみたい。

同タイトルのウィンドウが存在した場合、まず最前面ウィンドウが優先され、
最前面がない場合と複数最前面がある場合、アクティブの時にはそのウィンドウに、
非アクティブの場合、最後にアクティブだったウィンドウに適用されるっぽいな。
違ったらごめん。


気になったのが、非アクティブの最前面ウィンドウを非最前面にしたときに
一度そのウィンドウをクリックしてやらないと、
他のウィンドウクリックしても後ろに行ってくれないが、
ここらへんはOSの仕様のような気がする。
topmostトグルするまえにWinActivateつかってアクティブにしてやれば一応解決するが。

146:名無しさん@お腹いっぱい。
05/11/10 21:56:38 RwGjNG9H0
ウィンドウ指定の条件をandじゃなくてorにすることはできないでしょうか。
IfWinActiveとかを何度も書かなきゃだめですか

147:名無しさん@お腹いっぱい。
05/11/10 22:01:45 We9gQrEX0
>>146
URLリンク(lukewarm.s101.xrea.com)

148:名無しさん@お腹いっぱい。
05/11/10 22:25:50 RwGjNG9H0
>>147
なるほど。ウィンドウのタイトルを変数に入れてIf var inでマッチリストと
比較するわけですね。
or条件を使うときはIfWinActiveではなくこれを使ってみることにします。
ありがとうございました。

149:名無しさん@お腹いっぱい。
05/11/11 03:42:19 khVemMEi0
タイマー作るのって無理?
InputBoxで入力した時間Sleepしてアクションを起こすってことはできるけど
残り時間の表示をどうやればいいのかわからない。

150:名無しさん@お腹いっぱい。
05/11/11 04:01:08 xFnBvB+A0
>>149
time=%A_Sec%
settimer,count,1000
count:
rest:=time-A_Sec+30
tooltip,%rest%
return

esc::exitapp

こんなんでええのだろうか

151:149
05/11/11 04:05:08 khVemMEi0
>>150
なるほど!
これはは思い浮かばなかった。
迅速なレスありがとうございます。

152:149
05/11/11 04:10:33 khVemMEi0
あ、いやちょっと待って。
よく考えたら全然ダメじゃん。

数秒確認しただけでレスしちゃった。

153:名無しさん@お腹いっぱい。
05/11/11 04:24:46 xFnBvB+A0
returnの前にこれ追加しといて
if rest=0
exitapp

的外れだったらすまん。つーか何がダメなんかわからん、とりあえずカウントダウン表示してみただけだし。

154:129
05/11/11 04:31:30 khVemMEi0
たとえば、今、○時○分55秒だったとします。

55-55+30=30
55-56+30=29
55-57+30=28
55-58+30=27
55-59+30=26
55-00+30=85
55-01+30=84

こういう計算だと思うんですが・・・・。
私の方が間違っているのかな。

155:名無しさん@お腹いっぱい。
05/11/11 05:53:00 FTok57/z0
A_TickCountつかえ

156:名無しさん@お腹いっぱい。
05/11/11 07:51:44 A6pk7vW20
時間関係の計算はよくわからんルールになってるぞ
一人で脳使ってないでヘルプ熟読してきなされ

157:名無しさん@お腹いっぱい。
05/11/11 18:08:09 KIS/mZVoO
ちょっとくらいヒントをくれてもいいじゃないですか。

158:名無しさん@お腹いっぱい。
05/11/11 18:52:34 A6pk7vW20
とりあえず149はA_Sec参照して何がやりたいんだ?
単純に残り秒数カウントダウンしたいだけなら

dwncnt := 30 ;残り秒数
settimer,count,1000

count:
dwncnt--
tooltip,%dwncnt%
return

きちっと精度上げたいならSetTimerの値を小さくして>155が言うようにA_TickCount使う

159:149
05/11/11 20:12:02 khVemMEi0
○時間○分○秒というタイマーも使えるようにしたかったので
A_TickCountではなく、YYYYMMDDHH24MISSで記述した物からEnvAddでSecondsを指定して
1秒ごとに-1加算するようにしたら上手くできました。

160:名無しさん@お腹いっぱい。
05/11/13 18:02:11 A/9NzbIG0
あるSetTimerがonの時とoffの時で条件分岐って無理?

161:名無しさん@お腹いっぱい。
05/11/13 19:35:11 N8ylNJMv0
タイマーが動いてるかどうかを調べる方法はなかったはず
自分でフラグ変数用意して現在の状態覚えとくようにすればOKだけど

162:160
05/11/13 19:37:47 A/9NzbIG0
>>161
どういうことですか?

163:名無しさん@お腹いっぱい。
05/11/13 19:41:43 5IyRr/ha0
自分で変数を用意する。

164:160
05/11/13 19:53:57 A/9NzbIG0
こんな感じ?

SetTimer, ABC, 3000
ST_Flag = on

#A::
If(ST_Flag = "on")
{
SetTimer, ABC, off
ST_Flag = off
}
Else If(ST_Flag = "off")
{
SetTimer, ABC, on
ST_Flag = on
}
return


165:名無しさん@お腹いっぱい。
05/11/13 21:50:43 N8ylNJMv0
そう、それか↓みたいにしてもいいし

#A::
If (interval > 0)
{
interval = 0
}
else
{
interval = 3000
}
SetTimer,ABC,%interval%
return

166:名無しさん@お腹いっぱい。
05/11/13 21:52:52 N8ylNJMv0
0だとOFFにならんのか

#A::
If (interval > 0)
{
SetTimer,ABC,OFF
interval = 0
}
else
{
interval = 3000
SetTimer,ABC,%interval%
}
return

167:160
05/11/13 22:19:27 A/9NzbIG0
>>166
なるほど
ありがとうございます

168:名無しさん@お腹いっぱい。
05/11/14 03:42:28 tpTqEc+p0
>+Up::send,{PgUp}
>+Down::send,{PgDn}
>+Left::send,{Home}
>+Right::send,{End}
こんな風に割り当てますよね。
これをあるウィンドウだけは適用したくないのですが、
そういった場合はどう書けばいいんでしょうか?

169:名無しさん@お腹いっぱい。
05/11/14 05:14:00 h9uxRFHg0
>>168
+Up::
WinGetActiveTitle, ActTitle
If(ActTitle <> "割り当てたくないウィンドウタイトル")
send,{PgUp}
return

タイトルで上手くいかなかったらウィンドウハンドル取得して分岐

170:名無しさん@お腹いっぱい。
05/11/15 13:59:54 3R61f5fz0
>>169
どうもです。
169さんの方法だと、一キーずつ割り当てるしかないんですよね。
一気にやる方法があったら、便利だな。

171:名無しさん@お腹いっぱい。
05/11/15 15:34:14 Qg1alPao0
一気にやるってどういう意味だよ。

172:名無しさん@お腹いっぱい。
05/11/15 16:41:57 g/ADYEbp0
+Up::
+Down::
+Left::
+Right::

WinGetActiveTitle, ActTitle
If(ActTitle <> "割り当てたくないウィンドウタイトル")
{

send,{PgUp}
}
return


173:名無しさん@お腹いっぱい。
05/11/15 16:44:53 g/ADYEbp0
すまん途中で書きこんでもうた。関数にしてパラメータ指定するようにしたほうがよりスマート

+Up::
+Down::
+Left::
+Right::
WinGetActiveTitle, ActTitle
If(ActTitle <> "割り当てたくないウィンドウタイトル")
{
if A_ThisHotkey = +Up
send,{PgUp}
else if A_ThisHotkey = Down
send,{PgDn}

}
return

174:名無しさん@お腹いっぱい。
05/11/15 18:16:51 Qg1alPao0
ヒドスwwwww

175:名無しさん@お腹いっぱい。
05/11/15 18:34:11 Fr3rXntL0
+Up::
Ifwinnotactive,XXXX
Send,{Pgup}
return

これで全部書いたほうが短かくてわかりやすい気がするのだが

176:名無しさん@お腹いっぱい。
05/11/16 01:46:01 EX3GaO8n0
任意のアプリのタスクトレイアイコンを非表示にすることってできないでしょうか?
わからないなりに調べてみたらShell_NotifyIconというAPIがあるようなので
これをDllCallで呼びせさばできそうな気が。

DLLについてはまったくの初心者なので今奮闘しています。

177:名無しさん@お腹いっぱい。
05/11/16 02:17:34 ExozuSiy0
これって構造体扱えるんだっけ?
構造体扱えなかったらShell_NotifyIconも使えないだろ

178:176
05/11/16 13:41:19 EX3GaO8n0
>>177
URLリンク(lukewarm.s101.xrea.com)
ここの「構造体と配列の扱い」によればできるようなのですが、
いかんせんまだ勉強中なので難しくて

179:名無しさん@お腹いっぱい。
05/11/16 14:43:39 YfyIAE/u0
>>178
うまいこと考えたな~

180:名無しさん@お腹いっぱい。
05/11/16 16:26:24 ExozuSiy0
構造体は扱えないけど、逃げ道はあるってことか
面倒そうなので漏れはパス

181:名無しさん@お腹いっぱい。
05/11/16 17:08:15 YfyIAE/u0
>>178
べつに難しく考えること無いよ。外部にあるからDllCall使ってロードしてやらなきゃならないだけで、
考え方は普通の関数扱うのと変わらない

とりあえず、そこにある関数コピペすれば構造体に値をセットしたり読み出したりは出来る。
関数の中身は知らなくていい。
一番下のサンプルみれば使い方はわかるはず。

182:176
05/11/16 23:23:04 EX3GaO8n0
WinGet, whd, ID, A

VarSetCapacity(NotifyIconDate, 24, 0)
InsertInteger(whd, NotifyIconDate, 4)
DllCall("Shell_NotifyIcon", Int, 0x00000002, Str, NotifyIconDate)
Return

InsertInteger(pInteger, ByRef pDest, pOffset = 0, pSize = 4)
{
mask := 0xFF
Loop %pSize%
{
DllCall("RtlFillMemory", UInt, &pDest + pOffset + A_Index - 1, UInt, 1, UChar, (pInteger & mask) >> 8 * (A_Index - 1))
mask := mask << 8
}
}

わからないなりに作ってみましたが、うまくいかないです。
たぶん色々勘違いしてると思うのですが。

183:名無しさん@お腹いっぱい。
05/11/18 03:16:50 /PztpgYi0
テキスト入力欄かどうかを取得するにはどうすればいいでしょうか?
If(A_CaretX <> "")だと入力欄でないところでも反応してしまいます

184:名無しさん@お腹いっぱい。
05/11/18 22:11:48 KVZUSxn10
たしかA_CaretXとA_CaretYはエディット以外の場合は
コントロールの左上の座標になるから
そんな感じで弾けばいいと思うよ

185:183
05/11/18 22:16:55 /PztpgYi0
>>184
例えばSleipnirとかJaneとかでテキストを選択してコピーしたら
その位置にキャレットがあると見なしてしまいまして

186:名無しさん@お腹いっぱい。
05/11/19 01:56:22 adRLoPdI0
EDITコントロールか否かの判定はControlGetでLine数を取得してチェックしてる。
非EDIT コントロールの場合 0が返るので

ControlGet,line_cont,LineCount,,%ctl%,ahk_id %hwnd%
if line_cont > 0
{
 ;テキスト入力欄の処理
}

あとSendMessageで EM_xxx あたりの情報を調べるとか。
URLリンク(www.winapi-database.com)

編集不可だがコントロールはEDIT使ってる場合(AU3_Spy.exeとか)もあるので
そういう場合はどうにかしてLoked状態を確認しないといかんかも知れん

187:183
05/11/19 02:20:34 EUr5m4mr0
>>186
ありがとうございます

ですがライン数取得では上手くいかないものが多くて諦めていましたが、
殆どのクラス名に「Edit」が入っていたのでクラス名取得して分岐するようにしました。

188:名無しさん@お腹いっぱい。
05/11/19 10:46:19 q++McXD/0
>>176
> 任意のアプリのタスクトレイアイコンを非表示にすることってできないでしょうか?

これぜひ俺も知りたい。
自分が使ってる常駐ソフトはほとんどアイコン非表示にできるが、1つ2つできないのがある。
XP付属の「アクティブでないインジケータを隠す」はあまり好きではないし。

189:名無しさん@お腹いっぱい。
05/11/19 12:11:21 adRLoPdI0
>>182
試してないしちょっとググって調べて見ただけだが、とりあえずhIconをどうにかして
取得して構造体にセットしてやらんといかんのとちゃうか?

NOTIFYICONDATA構造体
Type NOTIFYICONDATA
  cbSize As Long         構造体のバイト数
  hWnd As Long         対象のウィンドウハンドル
  uID As Long           タスクバーアイコンのユーザー定義のID
                    (つまり、アイコンを複数使うときのアイコンの番号のこと)
  uFlag As Long          有効なメンバを示す定数の組み合わせ
  uCallbackMessage As Long  ユーザー定義のメッセージ
                    (アイコンの上でマウスイベント(クリックなど)が発生すると
                    ウィンドウに送られてくるメッセ―ジ)
  hIcon As Long         追加・削除・変更するアイコンのハンドル
  szTip As String * 64      チップヘルプのテキスト
                    (アイコンの上にマウスを1秒くらい置いた時に表示される文字列)
End Type

190:名無しさん@お腹いっぱい。
05/11/19 12:23:12 iPF8NBAy0
一応聞くけどautohotkeyでやりたいって趣旨なんだよね
フリーソフトを使ったら出来るけど

191:名無しさん@お腹いっぱい。
05/11/19 12:24:18 q++McXD/0
>>190
ちなみにそのソフトとは?

192:名無しさん@お腹いっぱい。
05/11/19 13:04:10 z99JDpKz0
使ったことないけどニュースサイトとかで何種類か見た
とりあえず今ぐぐったらコレがあった
常駐しないのがあるかは知らん
URLリンク(www.vector.co.jp)

193:名無しさん@お腹いっぱい。
05/11/19 13:51:07 adRLoPdI0
タスクトレイ アイコン 整理 でググると TrayManager とか Tray Wizard とかTrayExpand とか出てくる。
TrayExpandはソースも公開してるみたいだし、AHKでやりたいなら参考にしてみては?

194:名無しさん@お腹いっぱい。
05/11/19 14:04:50 0di78jxb0
>>182
とりあえず、戻り値ぐらいみれ。

>>189
トレイアイコンの削除するだけならhIconはいらないが、uIDが必要。


まぁ、既存のソフト使ってしまった方がいいようなきもする・・・AHKでやるメリットあまりないような・・

195:名無しさん@お腹いっぱい。
05/11/19 14:32:32 q++McXD/0
TrayExpandが自分には良さそう
これ使うことにします

196:名無しさん@お腹いっぱい。
05/11/19 14:33:46 q++McXD/0
お礼言う前に途中で送信してしまった・・・・

>>192-193
ありがとうございます

197:189
05/11/20 05:00:08 zlspGYDE0
>>194
フォローサンクス ええかげんなレスしてスマンカッタ

198:名無しさん@お腹いっぱい。
05/11/20 06:10:35 i5sKQ9wq0
タスクトレイの項目をメニューで表示させることはできるでしょうか?
フリーソフトでもこういった感じのソフトは自分で探した限り見つからなかったので
知っている方がいたら教えていただきたいのです

199:名無しさん@お腹いっぱい。
05/11/20 10:52:17 u5r0IAMMO
>>198
>>193

200:名無しさん@お腹いっぱい。
05/11/20 17:09:08 9waBFH8F0
SetTimerってAutoHotkey.iniに書いても動かないの?

201:名無しさん@お腹いっぱい。
05/11/20 19:14:54 zlspGYDE0
動くよ

202:名無しさん@お腹いっぱい。
05/11/20 20:09:01 9waBFH8F0
>>201
動くのか・・・

特定のウインドウが表示されたらOKボタンをクリックしたいんだけど
.ahkに書くと動くんだけど、AutoHotkey.iniに書いても動かない
これじゃだめなの?

SetTimer,b,250
return
b:
IfWinActive,Aterm WARPSTAR
{
ControlClick,OK,Aterm WARPSTAR
return
}
return

203:名無しさん@お腹いっぱい。
05/11/20 21:37:35 MfpEbr860
常駐するSetTimerはAutoHotkey.iniの頭に書いて、
サブルーチンをAutoHotkey.iniの終わりに書いてみては
俺はそれで

IfWinActive,リンク先を探す,指定したリンク先は、デスクト
IfWinExist,ahk_class MSBLPopupMsgWClass

などのウインドウを操作できてる

204:名無しさん@お腹いっぱい。
05/11/20 21:41:56 Gk4qhKIS0
多分常駐させてないだけだろ

205:名無しさん@お腹いっぱい。
05/11/20 21:51:08 0DdRRu/u0
SetTimerの上のほうに、Returnかホットキーの設定が書いてある気がする。


206:名無しさん@お腹いっぱい。
05/11/20 22:49:48 zlspGYDE0
ホットキー指定のないスクリプトは #Persistent入れないと常駐しないから

207:名無しさん@お腹いっぱい。
05/11/20 23:56:30 JR1lWgkn0
>>203-206
ありがとう

>常駐するSetTimerはAutoHotkey.iniの頭に書いて、
>SetTimerの上のほうに、Returnかホットキーの設定が書いてある気がする。
これだった。無事に動きました。ありがとう

208:名無しさん@お腹いっぱい。
05/11/21 00:06:01 FWsdNj/u0
iTunesを操作させるにはどうしたらいいですかね?


209:名無しさん@お腹いっぱい。
05/11/21 00:18:49 5v2PJ0mq0
努力したらいいと思うよ

210:名無しさん@お腹いっぱい。
05/11/21 00:39:50 ZVwQTLlG0
>>208
曖昧すぎ。

211:名無しさん@お腹いっぱい。
05/11/21 02:04:10 Nz+dKwd30
>>210
質問がな

212:名無しさん@お腹いっぱい。
05/11/21 21:26:10 OOnUpq930
AutoHotkeyでiTunesを操作させるにはどうしたらいいですかね?

213:名無しさん@お腹いっぱい。
05/11/21 22:37:36 jfEQAnS10
「:」に対してキーを割り当てたいのですが、うまくいきませんでした。
::: ←ここでエラー
ごにょごにょ

何か他に書き方があるのでしょうか?

214:名無しさん@お腹いっぱい。
05/11/21 23:02:40 Y2LksryB0
URLリンク(lukewarm.s101.xrea.com) の下のほう
仮想キーコードやスキャンコードで何とか対応しる


215:名無しさん@お腹いっぱい。
05/11/23 11:44:06 w4Ag56cD0
NetworkStumblerというアプリを最大化で起動して、
その中のウィンドウをさらに最大化しようとしています。
NetworkStumblerが最大化で起動しても、アクティブになるまで
3秒ほどかかります。
起動してから「ALT+w+t」で中のウィンドウが最大化できますが
AutoHotkey.iniで下のように書いてもうまくいきません。

最初の最大化で起動のみが成功し、中のウィンドウは変化がありません。
"Send, {LALT}wt"の部分は個別に動作確認できていますので、
その間の記述の仕方が問題でしょうか?

#0::
run "D:\apli\netstumbler\Network Stumbler\NetStumbler.exe", , max
WinWaitActive, Network Stumbler
if ErrorLevel <> 0
Send, {LALT}wt
else
return

216:名無しさん@お腹いっぱい。
05/11/23 16:33:51 vpU2R36Y0
If の判定が間違ってるのと、Elseが不要(書くならもう一行returnが必要)

子ウィンドウを枠一杯に広げるので満足なら Send,!wt でもいいけど
SendMessage使えば本当の最大化もできるよ

#0::
run "D:\apli\netstumbler\Network Stumbler\NetStumbler.exe", , max
WinWaitActive, Network Stumbler
if ErrorLevel = 0
{
SendMessage, 0x229, 0,0,MdiClient1,A ;WM_MDIGETACTIVE
SendMessage, 0x225, %ErrorLevel%, 0,MdiClient1,A ;WM_MDIMAXIMIZE
}
return

217:215
05/11/23 21:55:25 w4Ag56cD0
>>216
ご丁寧にありがとうございます!
しかし、<>を=に変更してelse消しても現象は変わらず。
Send, !wtの後にreturn付けても同じでした。
SendMessage使ったやつをコピペでもダメでした。。。orz

とりあえず、子ウィンドウを広げられるだけで満足です。
もしかしてErrorLevelが0になってないのでしょうか?




218:名無しさん@お腹いっぱい。
05/11/23 22:40:29 vpU2R36Y0
大分前に入れた奴なんでバージョン古いけど うちでは上手くいってる

XP SP1
Autohotkey Ver 1.0.38.1
NetStumbler ver 0.3.30

とりあえず MsgboxやOutputDebugでErrorLevelの値見たり
if
msgbox,OK
else
msgbox,NG
とかやって試してみたら?

219:215
05/11/23 23:56:41 w4Ag56cD0
>>218
ちなみに私の環境は
2000 SP4
Autohotkey Ver 1.0.40.06
NetStumbler ver 0.4.0

>とりあえず MsgboxやOutputDebugでErrorLevelの値見たり
そういうやり方があるのですね。

if ErrorLevel = 0
{
msgbox,OK
return
}
else
msgbox,NG
return

↑を試したところ、タイトルバーが青くなる前に
「OK」が出ました。なのでSend, !wtが実行される
のが早過ぎるみたいですね。



220:名無しさん@お腹いっぱい。
05/11/24 01:13:43 YIxfmvQf0
Verupしたね

221:名無しさん@お腹いっぱい。
05/11/24 12:40:50 0jaOpLGO0
>>219
MsgBoxに制御が奪われたからアクティブになれなかったってオチじゃないような?
そこまでつきとめたら Sleepでウェイトいれてやればよろし

222:215
05/11/24 22:05:57 3njavchq0
>>218
>>219
おかげさまで望み通りの動作ができました!
感謝します。

;【NwtStumbler起動】
#7::
IfWinExist, Network Stumbler
{
WinMaximize
WinActivate
return
}
else
run "D:\apli\netstumbler\Network Stumbler\NetStumbler.exe", D:\apli\netstumbler\aplog, max
WinWaitActive, Network Stumbler
if ErrorLevel = 0
{
Sleep, 3000
Send, !wt
return
}
else
return


223:名無しさん@お腹いっぱい。
05/11/26 13:41:58 cSvLT2hD0
LastFoundWindowってWinWaitで機能しないんですか?

224:名無しさん@お腹いっぱい。
05/11/26 20:49:42 ekIkW6EI0
%1%や%2%はコマンドライン引数が分解されて格納されていますが、
コマンドライン引数全体を表す変数はないんでしょうか?

225:名無しさん@お腹いっぱい。
05/11/26 21:01:35 TeG9pCZU0
>>224
引数を「"」で囲めばだいたい解決すると思いますが

Loop, %0%
{
Part := %A_Index%
Unite = %Unite%%Part%%A_Space%
}

MsgBox, "%Unite%"

どうしようもない場面では
「0」に引数の数が入るのでこんなのでどうにかしてます。

226:名無しさん@お腹いっぱい。
05/11/26 21:59:47 m0vUMe840
>FileAppend [, Text, Filename]
>ファイル名の代わりに「*」を指定すると、標準出力にテキストを書き出せる。
URLリンク(lukewarm.s101.xrea.com)

--- test.ahk --------
FileAppend,Hello,*
---------------------
コンパイルしてプロンプトで test と打っても文字は何も表示されない。
test > a.txt とリダイレクトさせるとファイルには正常に出力される、何でだろ?

227:名無しさん@お腹いっぱい。
05/11/26 22:33:10 ekIkW6EI0
A_Indexを1度別の変数に入れちゃえばいいのか。
"でくくられていたかどうかが正確には判断出来ないですけど、
実用上は問題ないですね。
ありがとうございました。

228:名無しさん@お腹いっぱい。
05/11/27 12:34:40 R5M1hxQO0
Send,{LWin Down}やSend,{LWindown}
で押し下げ状態にしたWinキーを元に戻すにはどうすればいいでしょうか?
Send,{LWin Up}やSend,{LWin}とやっても戻りませんでした。

229:名無しさん@お腹いっぱい。
05/11/27 15:26:46 GjCd3Btu0
任意のアプリをタスクバーにボタンを表示しないようにしたいんだけど
Gui,+ToolWindowに相当するものってない?
ウィンドウスタイルを見てもそれらしいのがないっぽい

230:名無しさん@お腹いっぱい。
05/11/27 16:30:10 m61GJs8S0
試してないけど
0x00000080 WS_EX_TOOLWINDOW
あたりは?

231:229
05/11/27 17:10:05 GjCd3Btu0
>>230
見落としてた
しかし、小さいタイトルバーになってAltTabメニューにも表示されなくなるけど
何故かタスクバーには表示されたまま
色んなウィンドウで試してみたけど変わらない

WinSet,ExStyle,^0x00000080,A

232:名無しさん@お腹いっぱい。
05/11/27 20:16:28 RGnUnyxH0
ひらがなカタカナキ-にaltを割り当てたいのですが

*vkF2::Send,{alt Down}
*vkF2 up::Send,{alt Up}

とするとaltが押しっぱなしになってしまいます
仮想キー押し上げにコマンドを割り当てることは出来ないのでしょうか?

233:名無しさん@お腹いっぱい。
05/11/28 08:04:43 QtDqyH5O0
TListViewの情報を取得するにはどうしたらいいでしょうか?
ContrloGetのListはSysListVew32のようですし

234:名無しさん@お腹いっぱい。
05/11/28 20:15:46 S9ZDzThA0
コマンドライン引数の取得の仕方がわかったので書いておきます。

GetArgs()
{
args := DllCall("GetCommandLine", str)
StringGetPos, pos, args, %A_ScriptName%
StringLen, length, A_ScriptName
count := pos + length + 1
StringTrimLeft, args, args, count
return args
}

args := GetArgs()
MsgBox, %args%

235:名無しさん@お腹いっぱい。
05/11/28 20:24:26 bOHdUc5Q0
トンクス
いただいた。

236:名無しさん@お腹いっぱい。
05/12/04 00:40:06 Boevp9qL0
解説サイトの説明が糞だな。
窓使いの憂鬱も分かりづらくて導入しにくいところがあったが
こっちはさらダメダメ。アホか。

流行らせる気全然ね~だろ。ぼけだろ。

237:名無しさん@お腹いっぱい。
05/12/04 00:58:39 vf5AX1eU0
236がアホでぼけで理解力がダメダメなのはわかった

238:名無しさん@お腹いっぱい。
05/12/04 01:06:12 ziZg2yDd0
単に翻訳してるだけだし
その労苦だけでもありがたいと思うけどね

239:233
05/12/04 01:53:09 c5I9hufm0
WinAPIやWindowMessageもできるだけ調べましたが、未だに解決できません

TListViewの情報取得は無理でしょうか?

240:名無しさん@お腹いっぱい。
05/12/04 11:08:29 MlVaVrV10
>239
TListView って SysListView32 のサブクラスっぽいからそのまま使えるんじゃない?

241:233
05/12/04 11:20:41 c5I9hufm0
>>240
もちろん試しました
SysListView32のところでは取得できたので記述が間違っているってことはないと思います

WindowMessageのLVM_xxxxで色々操作できるみたいなんですが、テキストは取得できないみたいで・・・

242:名無しさん@お腹いっぱい。
05/12/04 11:21:34 t+Kdt+4/0
まだ悩んでいたのかよ
ListVewのこたしらんがTEDITもEditコントロールとして認知、制御できるし
ControlGetで取れる名称がSysListVew32だっつうなら
その名を指定してやれば情報は取れるだろ。

243:名無しさん@お腹いっぱい。
05/12/04 11:22:58 t+Kdt+4/0
できないのか、
ならGontrolGetTextでは?

244:233
05/12/04 11:27:01 c5I9hufm0
>>242
Contolの引数のことろにTListViewではなくSysListVew32を指定するってことですか?
もちろんやってみましたが無理のようです

245:233
05/12/04 11:29:30 c5I9hufm0
>>243
それも試しました
いくつかのアプリで試しているので取得したいアプリが特殊という可能性は低いと思います

246:233
05/12/04 19:16:26 c5I9hufm0
VarSetCapacity(LvItem,52,0)
InsertInteger(1,LvItem,0)
InsertInteger(0,LvItem,4)
InsertInteger(0,LvItem,8)
InsertInteger(&pszText,LvItem,20)
InsertInteger(100,LvItem,24)
SendMessage,0x1005,0,&LvItem,TListView1,A
Msgbox,%pszText%

URLリンク(yokohama.cool.ne.jp)
ここを参考にしましたが
これでいけると思ったけど駄目でした
InsertInteger()関数は書いてあります

エラー内容
モジュール 'comctl32.dll' のアドレス 5ABBD830 でアドレス 00D15714 に対する読み込み違反がおきました。

構造体は素人なので見よう見まねで書いてみましたが
どこかおかしいでしょうか?

247:名無しさん@お腹いっぱい。
05/12/04 20:11:58 t+Kdt+4/0
AHKは万能なソフトってわけでもないのでそれだけ努力してダメなら無理なのかもしらんね
とりあえず半端なレスして悪かった。

248:233
05/12/04 20:29:14 c5I9hufm0
>>247
>とりあえず半端なレスして悪かった

いえいえ

>AHKは万能なソフトってわけでもないので

もしどうしても駄目なら他のソフトやスクリプトを通してでも取得したいのですが・・・
どなかたお知恵をお貸しください


249:名無しさん@お腹いっぱい。
05/12/04 20:39:34 LHEUZAAE0
単に別プロセスのメモリー読もうとしてるからエラー出てるのでは?
TListViewはListView用のLVM_~が使えた気がする

250:233
05/12/04 20:47:32 c5I9hufm0
>>249
>TListViewはListView用のLVM_~が使えた気がする

そうです、使えるようです。
実際LVM_GETITEMCOUNTでアイテム数は取得できますし。
>>246のリンク先にもありますが、SendMessageの0x1005はLVM_GETITEMのことです

>単に別プロセスのメモリー読もうとしてるからエラー出てるのでは?

これについては自分にはよくわからないです

251:名無しさん@お腹いっぱい。
05/12/04 21:06:52 OzfEcy140
>>250
VirtualAllocEx MapViewOfFile
を駆使すれば取得できるが面倒

252:名無しさん@お腹いっぱい。
05/12/04 21:09:06 LHEUZAAE0
LVM_GETITEMCOUNTはSendMessageの戻り値がそのままアイテム数だから問題ないけど
LVM_GETITEMはLVITEMのポインタをLPARAMで渡してそこに情報を書き込んでもらう奴だから
LVITEM*が指すメモリーを共有メモリにするか、SendMessageする側でフックをかけてプロセスに割り込まないといけない
共有メモリー使う方法は URLリンク(techtips.belution.com) あたりを参考にすれば出来るかな

253:233
05/12/04 21:10:52 c5I9hufm0
>>251-252
ありがとうございます
とりあえず提示されたものを頑張って調べてみます

254:233
05/12/05 12:27:58 pnvrA0j10
色々やってみたんですが、行き詰っています

URLリンク(techtips.belution.com)
これってメモリアドレスから変数を参照できないと無理なのでは?
まだ調べ始めて1日なので何か勘違いしてるだけのような気もしますが

255:名無しさん@お腹いっぱい。
05/12/05 12:48:04 yS+6IGXX0
gui,add,edit,vtitle R1 W300
gui,show
return

こんな感じでエディットボックスを作ってるんですが、日本語入力すると確定するまで表示されません。
普通に変換中に表示されるようには出来ないのでしょうか?何かオプションがあるのかな?

256:名無しさん@お腹いっぱい。
05/12/05 12:55:38 stKSCaAE0
>>255
うちで使ってる簡単なもの。これで試して駄目だったらなんかIMEとかに問題ありそうな。

#NoTrayIcon
#SingleInstance
Gui, Add, Edit, vSrc X Y W210
Gui, Add, Button, Default gSrc x+6 ys-2, &Search
Gui, Show, , Amazon検索
return
Src:
Gui, Submit
Run, URLリンク(www.amazon.co.jp)
ExitApp
GuiEscape:
GuiClose:
ExitApp


257:名無しさん@お腹いっぱい。
05/12/05 13:30:59 fH9XPvqW0
>>255
うちでは普通にでるけどなぁ・・・
win2ksp4 Atok16 MSIME2k どっちもOK

258:名無しさん@お腹いっぱい。
05/12/05 13:33:22 fH9XPvqW0
いちおう追記、AHK v1.0.40.05

259:255
05/12/05 15:14:33 yS+6IGXX0
>>256
>>257
ありがとうございます。早速試しましたが、やはりうまく表示されません。
例えば  わたしは と打つと w しか表示されないです。
Returnを押すと、わたしは と表示されます
Version 1.0.40.10をいれてみましたが、症状はかわらず。
どーもうちのIMEの不具合か、設定の問題かもしれません。
ちなみにAHK以外の日本語入力は不具合ありません。

260:名無しさん@お腹いっぱい。
05/12/05 15:38:36 N0kdWIqG0
>>259
OSの種類とIMEのバージョンや設定(ナチュラルインプットとか詳細サービスとか)書いたら?
解決したかったら人任せじゃだめだよ

261:255
05/12/05 16:21:24 ONVNYKfr0
情報が足らず申し訳ありませんでした。

Windows Xp pro sp1
AHK Version 1.0.40.10
Microsoft IME Standard 2002 ver. 8.1
詳細なテキスト サービスをオフにするにチェック
IME Watcherを使用
英字を常に半角で変換以外は設定をいじってません。

英語圏のソフトなのでこういう仕様なのかと思っていました。
我が家のPCの問題のようですので自力でがんばります。
皆様のお手を煩わせてほんとに申し訳なかったです。すみませんでした。

262:233
05/12/06 00:06:41 zKABzlSJ0
何度もすみません
やっぱり自分には無理のようです・・・

とういうか、>>252のURLの内容とほぼ同じものが
URLリンク(www.yoshibaworks.com)
に載っているんですが、同じサイトの
URLリンク(www.yoshibaworks.com)
をダウンロードして使ってみたところTListViewは取得できませんでした
下のURLのアプリは上のソースコードとは仕組みが違うのかもしれませんが


自分にとってTListViewが取得できることによってAHKはかなり便利になると思います
ずうずうしいようですが、TListViewを取得できるものが誰かの手によって書かれるのを期待します
もちろん自分でもこれからもチャレンジしていきたいと思います


263:名無しさん@お腹いっぱい。
05/12/06 00:11:30 BfjYx7dY0
TlistViewってそもそも何?


264:260
05/12/06 00:20:18 061B1eK40
>>261
俺も>>256を試したら同じ現象が起きた
XP HOME SP2
IME2002でIME Watcherは使ってない

今さらで悪いけど、むかし同じ現象が出て
InputBoxを使って回避した気がする。忘れてた…
その時は、会社のマシンだったから割と起こりやすい現象みたい

265:名無しさん@お腹いっぱい。
05/12/06 00:28:05 +pinJF560
>>262
ぱっとソースを見た感じクラスがListView32じゃないと動作しないように書いてある
これ→if ( strcmp(szClassName, WC_LISTVIEW) == 0 ) {
確かTListViewはクラス名が違ったと思う


266:233
05/12/06 00:30:50 zKABzlSJ0
>>265
ということは>>262のソースを再現すればAHKでも実現できるわけですね
少し希望が湧いてきました

267:255
05/12/06 20:02:45 BjDsaEX90
exeファイルにして、友達のPCで試してもらいました。
買ったままいじってないWinxp home sp2
やはり同じように入力がおかしかったようです。
これは、エディットボックス自体の不具合かな。あきらめてほかの方法をとることにします。

268:名無しさん@お腹いっぱい。
05/12/06 22:19:27 cuFKTqtn0
InsertInteger(pInteger, ByRef pDest, pOffset = 0, pSize = 4)
; To preserve any existing contents in pDest, only pSize number of bytes starting at pOffset
; are altered in it. The caller must ensure that pDest has sufficient capacity.
{
  mask := 0xFF ; This serves to isolate each byte, one by one.
  Loop %pSize% ; Copy each byte in the integer into the structure as raw binary data.
  {
    DllCall("RtlFillMemory", UInt, &pDest + pOffset + A_Index - 1, UInt, 1 ; Write one byte.
      , UChar, (pInteger & mask) >> 8 * (A_Index - 1)) ; This line is auto-merged with above at load-time.
    mask := mask << 8 ; Set it up for isolation of the next byte.
  }
}

ExtractInteger(ByRef pSource, pOffset = 0, pIsSigned = false, pSize = 4)
{
  SourceAddress := &pSource + pOffset ; Get address and apply the caller's offset.
  result := 0 ; Init prior to accumulation in the loop.
  Loop %pSize% ; For each byte in the integer:
  {
    result := result | (*SourceAddress << 8 * (A_Index - 1)) ; Build the integer from its bytes.
    SourceAddress += 1 ; Move on to the next byte.
  }
  if (!pIsSigned OR pSize > 4 OR result < 0x80000000)
    return result ; Signed vs. unsigned doesn't matter in these cases.
  ; Otherwise, convert the value (now known to be 32-bit) to its signed counterpart:
  return -(0xFFFFFFFF - result + 1)
}

269:名無しさん@お腹いっぱい。
05/12/06 22:21:14 cuFKTqtn0

GetListViewText(hListView, iItem, iSubItem, ByRef lpString, nMaxCount)
{
  ;const
  NULL = 0
  PROCESS_ALL_ACCESS = 0x001F0FFF
  INVALID_HANDLE_VALUE = 0xFFFFFFFF
  PAGE_READWRITE = 4
  FILE_MAP_WRITE = 2
  MEM_COMMIT = 0x1000
  MEM_RELEASE = 0x8000
  LV_ITEM_mask = 0
  LV_ITEM_iItem = 4
  LV_ITEM_iSubItem = 8
  LV_ITEM_state = 12
  LV_ITEM_stateMask = 16
  LV_ITEM_pszText = 20
  LV_ITEM_cchTextMax = 24
  LVIF_TEXT = 1
  LVM_GETITEM = 0x1005
  SIZEOF_LV_ITEM = 0x28
  SIZEOF_TEXT_BUF = 0x104
  SIZEOF_BUF = 0x120
  SIZEOF_INT = 4
  SIZEOF_POINTER = 4

  ;var
  result := 0
  hProcess := NULL
  dwProcessId := 0

270:名無しさん@お腹いっぱい。
05/12/06 22:21:36 cuFKTqtn0
  if lpString <> NULL && nMaxCount > 0
  {
    DllCall("lstrcpy", Str,lpString, Str,"")
    DllCall("GetWindowThreadProcessId", UInt,hListView, UIntP,dwProcessId)
    hProcess := DllCall("OpenProcess", UInt,PROCESS_ALL_ACCESS, Int,false, UInt,dwProcessId)
    if hProcess <> NULL
    {
      ;var
      lpProcessBuf := NULL
      hMap := NULL
      hKernel := DllCall("GetModuleHandle", Str,"kernel32.dll", UInt)
      pVirtualAllocEx := DllCall("GetProcAddress", UInt,hKernel, Str,"VirtualAllocEx", UInt)
  
      if pVirtualAllocEx == NULL
      {
        hMap := DllCall("CreateFileMapping", UInt,INVALID_HANDLE_VALUE, Int,NULL, UInt,PAGE_READWRITE, UInt,0, UInt,SIZEOF_BUF, UInt)
        if hMap <> NULL
          lpProcessBuf := DllCall("MapViewOfFile", UInt,hMap, UInt,FILE_MAP_WRITE, UInt,0, UInt,0, UInt,0, UInt)
      }
      else
      {
        lpProcessBuf := DllCall("VirtualAllocEx", UInt,hProcess, UInt,NULL, UInt,SIZEOF_BUF, UInt,MEM_COMMIT, UInt,PAGE_READWRITE)
      }


271:名無しさん@お腹いっぱい。
05/12/06 22:22:07 cuFKTqtn0
      if lpProcessBuf <> NULL
      {
        ;var
        VarSetCapacity(buf, SIZEOF_BUF, 0)

        InsertInteger(LVIF_TEXT, buf, LV_ITEM_mask, SIZEOF_INT)
        InsertInteger(iItem, buf, LV_ITEM_iItem, SIZEOF_INT)
        InsertInteger(iSubItem, buf, LV_ITEM_iSubItem, SIZEOF_INT)
        InsertInteger(lpProcessBuf + SIZEOF_LV_ITEM, buf, LV_ITEM_pszText, SIZEOF_POINTER)
        InsertInteger(SIZEOF_TEXT_BUF, buf, LV_ITEM_cchTextMax, SIZEOF_INT)
        
        if DllCall("WriteProcessMemory", UInt,hProcess, UInt,lpProcessBuf, UInt,&buf, UInt,SIZEOF_BUF, UInt,NULL) <> 0
          if DllCall("SendMessage", UInt,hListView, UInt,LVM_GETITEM, Int,0, Int,lpProcessBuf) <> 0
            if DllCall("ReadProcessMemory", UInt,hProcess, UInt,lpProcessBuf, UInt,&buf, UInt,SIZEOF_BUF, UInt,NULL) <> 0
            {
              DllCall("lstrcpyn", Str,lpString, UInt,&buf + SIZEOF_LV_ITEM, Int,nMaxCount)
              result := DllCall("lstrlen", Str,lpString)
            }
      }

272:名無しさん@お腹いっぱい。
05/12/06 22:22:41 cuFKTqtn0
      if lpProcessBuf <> NULL
        if pVirtualAllocEx <> NULL
          DllCall("VirtualFreeEx", UInt,lpProcessBuf, UInt,0, UInt,MEM_RELEASE)
        else
          DllCall("UnmapViewOfFile", UInt,lpProcessBuf)
      if hMap <> NULL
        DllCall("CloseHandle", UInt,hMap)
  
      DllCall("CloseHandle", UInt,hProcess)
    }
  }
  return result
}


273:名無しさん@お腹いっぱい。
05/12/06 22:23:18 cuFKTqtn0

;const
MAX_TEXT = 260

;var
iItem := 0
iSubItem := 0
x := 0
y := 0

VarSetCapacity(szText, MAX_TEXT, 0)
VarSetCapacity(szClass, MAX_TEXT, 0)
VarSetCapacity(point, 8, 0)
DllCall("GetCursorPos", Str,point)
x := ExtractInteger(point, 0, true, 4)
y := ExtractInteger(point, 4, true, 4)
hListView := DllCall("WindowFromPoint", Int,x, Int,y)
DllCall("GetClassName", UInt,hListView, Str,szClass, Int,MAX_TEXT)
if DllCall("lstrcmpi", Str,szClass, Str,"SysListView32") == 0 || DllCall("lstrcmpi", Str,szClass, Str,"TListView") == 0
{
  GetListViewText(hListView, iItem, iSubItem, szText, MAX_TEXT)
  Msgbox, %szText%
}
return

274:233
05/12/06 22:52:52 oOmblgWA0
すごい!感動しました!
感謝してもしきれないです
本当にありがとうございます

275:名無しさん@お腹いっぱい。
05/12/07 00:24:52 +IISIZwk0
引数が足りなかった
DllCall("VirtualFreeEx", UInt,hProcess, UInt,lpProcessBuf, UInt,0, UInt,MEM_RELEASE)

276:名無しさん@お腹いっぱい。
05/12/07 00:33:06 WQOB4lVi0
>>233
具体的にどういう使い方をするのかちょっと興味あるんだけど、教えてくんない?

277:233
05/12/07 16:47:00 Fl/Gr8/X0
>>275
普通に動いてたので気づきませんでした
どちらにしても感謝です

>>276
ここまでしてもらってなんですが、ご勘弁を


278:名無しさん@お腹いっぱい。
05/12/07 16:57:01 x7hOLdd40
>>277
エロDVDのタイトルの整理か何かですか?

279:名無しさん@お腹いっぱい。
05/12/07 23:01:34 SL+OhssX0
匿名掲示板で詳しく言えないって事は犯罪絡みか

280:名無しさん@お腹いっぱい。
05/12/07 23:29:33 EMbBN43/0
それか業務がらみとか

281:名無しさん@お腹いっぱい。
05/12/08 01:24:26 kFp6FhOt0
変数一覧のところの一番上に

0[1 of 1]: 0

ってのが必ずあるんだけどこれって何?

282:名無しさん@お腹いっぱい。
05/12/08 19:29:26 tAZLc0Al0
コマンドライン引数の奴

283:281
05/12/08 19:30:54 kFp6FhOt0
>>282
あ、なるほど

284:名無しさん@お腹いっぱい。
05/12/10 23:31:57 8fYJs8aX0
質問なのですが、このソフトでIME起動時に全角文字を入力として挿入することは
比較的楽に出来ますでしょうか?

なにがしたいかと言いますと、自分はIMEは「かな入力」の人間でして、
チャット等の、通常会話に近い文を書いてる時は、!や?が、かな文字と
同じくらいの平易さで出現するのですが、かな入力ですと、入力するのが
ちょっと面倒なのです(かな/英数を切り替えてからShift+1で再びかな/英数など)
そこで、IME(ATOK2005)が起動している時は、かな入力状態でも
[Shift]+[1]で“!”を、[Shift]+[/]で“?”を入力出来るようにしたいのですが、
そう言ったことは可能でしょうか?

自分の程度としましては、DOS3からなのでbatは書けますがvbsは読んで修正するのが精一杯、
サイトの引っ越しでUWSCでIEを半自動実行で転記させる50行×8本くらいのサブルーチンを
書いた程度で、最近は正規表現がなんとか使えてきて楽しいというようなレベルです。

外国産みたいなので、IMEの起動を検知できるのかと、起動したIMEに文字を直接送ることが
出来るのかがネックかなと思っているのですが…

よろしくお願いします。

285:名無しさん@お腹いっぱい。
05/12/11 00:22:31 XJ0qF38r0
> そう言ったことは可能でしょうか?
可能

それと、おまえのレベルなんて知ったこっちゃない
このソフトが使えないレベルなら他を当たれ
使えるなら勝手にしろ
といっても、流行らせるページ見ればこの程度バカでも出来るがな

ソフトに限ったことじゃないが、便利なものを使いたければ
それに応じた実力(知識や技術など)を身につけろってこった

286:名無しさん@お腹いっぱい。
05/12/11 00:39:49 apES3Z+g0
まぁ要望を長々と書いたところで、マジメに読んでもらえる訳が無い。

がんばればアンタでもできるんじゃねーの?としか言いようが無い。

287:名無しさん@お腹いっぱい。
05/12/11 00:59:00 78+mCWVm0
つーか俺なら変換キー連打で解決するね

288:名無しさん@お腹いっぱい。
05/12/11 01:23:09 LXjhHQ7b0
辞書登録で1→! 0→?(テンキーを使っているなら)とか
ぬ→! め→? とでも登録した方が分かりやすい上に
てっとり早いんじゃないか?

289:名無しさん@お腹いっぱい。
05/12/11 01:27:32 78+mCWVm0
>>288
>>287

290:284
05/12/11 13:39:45 OA29yvnX0
お返事ありがとうございます。
ソフトによっては、ユーザー側に有る程度の素養が要求されると思いますので、
現実的に見て、自分のレベルで作業するのに問題が無いか、
取り組む前に確認させて貰いたかったのですが、スレの空気を乱す発言になった
ようで、すみませんでした。

お返事を見る限り、無理な要求という感触では無いようですので、
参考にさせていただいて、検討いたします。

291:名無しさん@お腹いっぱい。
05/12/11 13:46:13 n6eRmNGz0
とりあえずお前が人のアドバイスを試す気がないカスなのは分かった

292:名無しさん@お腹いっぱい。
05/12/11 13:48:53 2lWo/Yh80
プッ

293:名無しさん@お腹いっぱい。
05/12/11 20:13:50 /OTbplQs0
しばらく過疎ってる間にえらく空気悪くなってるな
>>290
IME制御に関しては過去何度か話題に上がってるので調べてみれ
なまず氏が自分とこのブログで最近とりあげてたし

294:名無しさん@お腹いっぱい。
05/12/13 00:21:18 sRReWFce0
URLリンク(www.tamanegi.org)
ここのmigemo-isearchってAHKでできます?
dllのことはよくわからないんですが、これに入ってるのをDllCallすれば可能?

295:名無しさん@お腹いっぱい。
05/12/13 03:10:20 UEU0KJ8o0
もうある

296:名無しさん@お腹いっぱい。
05/12/13 13:57:25 sRReWFce0
>>295
本当ですか?
一応「migemo ahk」「migemo autohotkey」などで検索しても見つかりませんでした

297:名無しさん@お腹いっぱい。
05/12/13 14:41:54 DtKvDaaE0
流行らせるページにある奴じゃないのかな。

298:名無しさん@お腹いっぱい。
05/12/13 14:47:52 sRReWFce0
>>297
ありました
これ昔からありましたっけ?

299:294
05/12/13 17:20:20 sRReWFce0
これをブラウザで使うやり方がさっぱりわからない・・・・

そもそもサンプルが上手く動かないです
例えば「a」と打つと「シリアス」だけがマッチ(他にもaはたくさんあるのに)
どんな文字でも2文字目を打つと何も表示されず
意味がよくわからないです

300:294
05/12/13 17:39:57 sRReWFce0
自分でlist=を作ってやってみましたが
アルファベットだけがマッチ
漢字・ひらがな・カタカナ全滅

私が何かをすごく勘違いしてる気がしますが・・・・

301:294
05/12/13 17:52:44 sRReWFce0
ただ単に辞書パスが違っているというアホな間違いでした
すみません

でもブラウザで使うやり方は未だわからず

302:名無しさん@お腹いっぱい。
05/12/13 18:03:09 DtKvDaaE0
いつから日記スレになったんだ

303:294
05/12/13 18:05:03 sRReWFce0
>>302
本当にスレ汚しすみません

304:名無しさん@お腹いっぱい。
05/12/13 18:05:04 JxXQO2OP0
さっさと消えろよ、うざいなぁ。

305:名無しさん@お腹いっぱい。
05/12/13 18:23:00 McRsgk3+0
なんか最近スレの空気悪いなぁ。

っていうかmigemoの存在を初めて知った。
ちょっと感動。

流行らせるページのスクリプト見てみたけど
>>294と同じ機能をAHKからブラウザで使うのは無理じゃね?

306:名無しさん@お腹いっぱい。
05/12/13 20:54:54 wLsVmh5S0
俺も知識不足でサンプルで何をやっているのか全然わからないので
流用できなかった。
任意のファイラ上でmigemoでファイルを選択したかったんだけどね。

マッチングを行わせたい文字列をリストにしてスクリプトに
読ませるんだというのはなんとなくわかるけど
マッチした内容を任意のソフトに対してどうやって反映させたら
いいのかさっぱり。
誰か使っている人いたら具体的なスクリプトを教えてくれないかな。

307:名無しさん@お腹いっぱい。
05/12/13 22:44:18 tDGCBqUo0
>>304
お前が消えろよ

308:名無しさん@お腹いっぱい。
05/12/13 22:54:36 hY2eSXDW0
ファイラーはMigemizeExplorer
ブラウザは窓使いの憂鬱
2chブラウザはJaneView
エディタはサクラエディタ

ってな具合にmigemoを使ってる。
ただ、繭で使ってるのはmigemoのみだから繭をなくしたいんだよね。
別に不具合はないけど。
ブラウザ乗り換えも何度も検討した結果、今使ってるものになってるし。

309:名無しさん@お腹いっぱい。
05/12/14 12:55:41 RrhosKDn0
今現在、Win用・繭不要でmigemo対応のブラウザは

fub.net
ぶら。  ※拡張機能で。

Bagel
Firefox  ※XUL/Migemo
Sylera2

オレはSylera2だけど他にもあるような…

310:名無しさん@お腹いっぱい。
05/12/14 14:43:44 NCzEYHK/0
Janeのトレース画面を一発で出し入れできるスクリプトって無理かな


311:名無しさん@お腹いっぱい。
05/12/15 09:04:11 Oeo3ug/h0
質問ですけど、スクリプトでMSNメッセンジャーを取り込み中に変えたりオンラインに戻したりするにはどうしたらいいですか?

312:名無しさん@お腹いっぱい。
05/12/15 09:16:32 vmIlAlU20
>>311
AutoHotkey以外での実現方法を知っているなら、そのとおりに実装すればいいのでは。
手始めに "MSN Messenger" Messenger.UIAutomation.1 で検索するとかして。(英語も読もう)

313:311
05/12/15 09:21:36 Oeo3ug/h0
>>312
レスどうもです!
> AutoHotkey以外での実現方法
はタスクトレイのアイコンを右クリックしてやる方法しか知らないです・・・
ちょっとググってみます!
英語は・・・読める限り・・・

314:名無しさん@お腹いっぱい。
05/12/15 12:34:59 quYc50MH0
>>310
出し入れというかマウス系のコマンド使って瞬間的に
ドラッグして消しているように見せるだけの奴なら作ってみた。
結構良い感じでうまく動いたよ。

そういう意味では出来ると答えておきます。

他に方法があるかもしれないけど漏れにはわかりません。

315:名無しさん@お腹いっぱい。
05/12/15 15:12:30 Ro4rZY7t0
>>314
やっぱそれしかないかー
と思ったが、Hideenテキストを取得するスクリプト書いて
MSGBOX出せば、トレース画面出さなくても
デバッグログがみれるかもと思った。

316:名無しさん@お腹いっぱい。
05/12/15 15:21:14 quYc50MH0
あ、トレース画面を別ウィンドウで浮かせたいってことが言いたかったのか。
勘違いしてスマソ。
うーん。Janeのソースいじってしまった方が速いんでないかい?

まぁ、でもText拾ってGuiで別Window作成して表示させれば、できるだろな。

317:名無しさん@お腹いっぱい。
05/12/15 15:28:31 Ro4rZY7t0
>>316
あ、いや、その解釈であってるよ。
最初は外部コマンドからトレース画面をある程度の幅で
ウィンドウ内に出せればいいなと思ってたんだけど。
でも、AU3_Spyで見たらトレース画面のテキストが取得できてたんで
別に本体で見なくてもいいかなと思って。

318:名無しさん@お腹いっぱい。
05/12/15 18:13:10 RHa3zC2W0
Jane作者に要望だせば?

319:名無しさん@お腹いっぱい。
05/12/15 22:56:34 3cBKpG8E0
>>294にあるdll使って

DllCall("dllのパス\migemo-isearch.dll\ie_isearch_fmRi",Int,0)
としてみたが何も起こらず。
返り値はなし、ErrorLevelは-4(DLLは見つかったが、Functionで指定した関数が無かった)

どこが間違っているでしょうか?
そもそも無理?


320:名無しさん@お腹いっぱい。
05/12/19 16:48:21 T6Ojlipz0
CPU使用率を取得するにはどうすればいいでしょうか?

URLリンク(www.vector.co.jp)
これを使って呼び出そうとしましたが、上手くいきません

321:名無しさん@お腹いっぱい。
05/12/19 17:50:39 m4JgEdVJ0
>>320
残念ながら力になれないが (DllCallを今初めて使った)、
どのような記述をして、どのように動かなかったのかの説明は書いておいた方が良いと思うよ。
ちなみに自分が試したのはこんな感じ。

;コード
#O::
Ret := DllCall("getcpust\GetCpuStatus", IntP, rate)
MsgBox, 返値:%Ret%`n使用率:%rate%`nエラーコード:%ErrorLevel%
return

;メッセージボックス
返値:1
使用率:0
エラーコード:A4

引数無しにするとエラーは出なくなるけど、それだと意味ないしなぁ。
以下DLLのReadmeから引用。他の人回答ぷりーず。
>int GetCpuStatus( int *rate )
>をEXPORTします。
>第1引数に引き渡したint型のメモリにCPU使用率が格納されます。
>返値は失敗するとFALSE(0)を、成功した場合はそれ以外を返します。





322:320
05/12/19 17:53:49 T6Ojlipz0
>>321
自分もほぼ同じ記述です

ただ、引数の最後にCdeclを追加するとErrorLevelは0になります(返値1・使用率0は変わらず)

323:名無しさん@お腹いっぱい。
05/12/20 14:08:58 VYjzBC0S0
>>322
調べてみたらその関数の呼び出し規約はcdeclだった(関数を公開するなら明示すべきだが)。
mp3でも再生しながら再計測してみては?

324:320
05/12/20 14:14:45 yg2tqewb0
>>323
ん?つまり記述はあっているけど私のCPU使用率は0だから0を返してるってことですか?
負荷を上げても0のままです

325:名無しさん@お腹いっぱい。
05/12/20 15:28:39 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
05/12/20 15:35:13 yg2tqewb0
>>325
なるほど、そうやるんですね
勉強になりました

ありがとうございます

327:名無しさん@お腹いっぱい。
05/12/20 15:41:31 6fVVhLVx0
これみてピンとキタ━(゚∀゚)━ヨ。
URLリンク(lukewarm.s101.xrea.com)

>DLL確保/開放の手動化
>DLLの処理によっては、処理の途中でDLLが開放してしまうと正常に動作しない場合がある。
>その場合、上記の例のように手動でLoadLibrary/FreeLibraryを行うことで、本来の動作になることがある。


できるだけ、この方法使った方が正常に動作するのかもしれませんね。

328:320
05/12/20 15:44:01 yg2tqewb0
>>327
そこには目を通していたはずなのに実行してみなかった自分が恥ずかしいです

329:名無しさん@お腹いっぱい。
05/12/20 15:45:24 6fVVhLVx0
>>327
URLリンク(lukewarm.s101.xrea.com)
だった・・

>>328案外見落としてしまうですね^^

330:名無しさん@お腹いっぱい。
05/12/20 16:14:40 e8aKpTDx0
平日の真昼間にいきなり活性化してんのな
学生ってもう冬休みに入ってるのかなw

331:名無しさん@お腹いっぱい。
05/12/20 16:19:32 e8aKpTDx0
↑末尾のwは Alt+w(書き込み)の押し間違いだorz

332:名無しさん@お腹いっぱい。
05/12/20 16:59:12 f5Fr+yX00
Ctrl+Alt+Delを無効にしようと思うんだけど

^!Del::return

としても変化なし
何か特別なことをしなければならない?

333:332
05/12/20 17:22:32 f5Fr+yX00
もっとよく調べてから質問すればよかった・・・

URLリンク(nienie.com)
コンパイルする環境にないのでコンパイル済を探しているところ
・・・ってこれはスレ違いか

334:名無しさん@お腹いっぱい。
05/12/21 22:00:44 C94x2s+u0
>>333
俺もそれほしくてコンパイル済みを探したけど見つからんかった。
どなたかお願いします・・

335:名無しさん@お腹いっぱい。
05/12/22 02:31:48 MS28PmO/0
>>333-334
コンパイルだけなら出来ないこともないが、
さすがにそんなシステムの根幹に関わるファイルは試したくないし、
そのまま上げて、うまく動かなくてシステム復旧できなくなっても責任取れないし。
第一、こんな危険度の高いファイルを匿名掲示板の誰とも知れぬヤツに
頼むのはどうかしてるとしか思えない。


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