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
196 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/19(土) 14:33:46 ID:q++McXD/0] お礼言う前に途中で送信してしまった・・・・ >>192-193 ありがとうございます
197 名前:189 mailto:sage [2005/11/20(日) 05:00:08 ID:zlspGYDE0] >>194 フォローサンクス ええかげんなレスしてスマンカッタ
198 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/20(日) 06:10:35 ID:i5sKQ9wq0] タスクトレイの項目をメニューで表示させることはできるでしょうか? フリーソフトでもこういった感じのソフトは自分で探した限り見つからなかったので 知っている方がいたら教えていただきたいのです
199 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/20(日) 10:52:17 ID:u5r0IAMMO] >>198 >>193
200 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/20(日) 17:09:08 ID:9waBFH8F0] SetTimerってAutoHotkey.iniに書いても動かないの?
201 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/20(日) 19:14:54 ID:zlspGYDE0] 動くよ
202 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/20(日) 20:09:01 ID:9waBFH8F0] >>201 動くのか・・・ 特定のウインドウが表示されたらOKボタンをクリックしたいんだけど .ahkに書くと動くんだけど、AutoHotkey.iniに書いても動かない これじゃだめなの? SetTimer,b,250 return b: IfWinActive,Aterm WARPSTAR { ControlClick,OK,Aterm WARPSTAR return } return
203 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/20(日) 21:37:35 ID:MfpEbr860] 常駐するSetTimerはAutoHotkey.iniの頭に書いて、 サブルーチンをAutoHotkey.iniの終わりに書いてみては 俺はそれで IfWinActive,リンク先を探す,指定したリンク先は、デスクト IfWinExist,ahk_class MSBLPopupMsgWClass などのウインドウを操作できてる
204 名前:名無しさん@お腹いっぱい。 [2005/11/20(日) 21:41:56 ID:Gk4qhKIS0] 多分常駐させてないだけだろ
205 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/20(日) 21:51:08 ID:0DdRRu/u0] SetTimerの上のほうに、Returnかホットキーの設定が書いてある気がする。
206 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/20(日) 22:49:48 ID:zlspGYDE0] ホットキー指定のないスクリプトは #Persistent入れないと常駐しないから
207 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/20(日) 23:56:30 ID:JR1lWgkn0] >>203-206 ありがとう >常駐するSetTimerはAutoHotkey.iniの頭に書いて、 >SetTimerの上のほうに、Returnかホットキーの設定が書いてある気がする。 これだった。無事に動きました。ありがとう
208 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/21(月) 00:06:01 ID:FWsdNj/u0] iTunesを操作させるにはどうしたらいいですかね?
209 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/21(月) 00:18:49 ID:5v2PJ0mq0] 努力したらいいと思うよ
210 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/21(月) 00:39:50 ID:ZVwQTLlG0] >>208 曖昧すぎ。
211 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/21(月) 02:04:10 ID:Nz+dKwd30] >>210 質問がな
212 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/21(月) 21:26:10 ID:OOnUpq930] AutoHotkeyでiTunesを操作させるにはどうしたらいいですかね?
213 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/21(月) 22:37:36 ID:jfEQAnS10] 「:」に対してキーを割り当てたいのですが、うまくいきませんでした。 ::: ←ここでエラー ごにょごにょ 何か他に書き方があるのでしょうか?
214 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/21(月) 23:02:40 ID:Y2LksryB0] lukewarm.s101.xrea.com/KeyList.htm の下のほう 仮想キーコードやスキャンコードで何とか対応しる
215 名前:名無しさん@お腹いっぱい。 mailto:meanbloke777@yahoo.co.jp [2005/11/23(水) 11:44:06 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/23(水) 16:33:51 ID: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 mailto:meanbloke777@yahoo.co.jp [2005/11/23(水) 21:55:25 ID:w4Ag56cD0] >>216 ご丁寧にありがとうございます! しかし、<>を=に変更してelse消しても現象は変わらず。 Send, !wtの後にreturn付けても同じでした。 SendMessage使ったやつをコピペでもダメでした。。。orz とりあえず、子ウィンドウを広げられるだけで満足です。 もしかしてErrorLevelが0になってないのでしょうか?
218 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/23(水) 22:40:29 ID: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 mailto:meanbloke777@yahoo.co.jp [2005/11/23(水) 23:56:41 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/24(木) 01:13:43 ID:YIxfmvQf0] Verupしたね
221 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/24(木) 12:40:50 ID:0jaOpLGO0] >>219 MsgBoxに制御が奪われたからアクティブになれなかったってオチじゃないような? そこまでつきとめたら Sleepでウェイトいれてやればよろし
222 名前:215 mailto:meanbloke777@yahoo.co.jp [2005/11/24(木) 22:05:57 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/26(土) 13:41:58 ID:cSvLT2hD0] LastFoundWindowってWinWaitで機能しないんですか?
224 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/26(土) 20:49:42 ID:ekIkW6EI0] %1%や%2%はコマンドライン引数が分解されて格納されていますが、 コマンドライン引数全体を表す変数はないんでしょうか?
225 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/26(土) 21:01:35 ID:TeG9pCZU0] >>224 引数を「"」で囲めばだいたい解決すると思いますが Loop, %0% { Part := %A_Index% Unite = %Unite%%Part%%A_Space% } MsgBox, "%Unite%" どうしようもない場面では 「0」に引数の数が入るのでこんなのでどうにかしてます。
226 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/26(土) 21:59:47 ID:m0vUMe840] >FileAppend [, Text, Filename] >ファイル名の代わりに「*」を指定すると、標準出力にテキストを書き出せる。 lukewarm.s101.xrea.com/commands/FileAppend.htm --- test.ahk -------- FileAppend,Hello,* --------------------- コンパイルしてプロンプトで test と打っても文字は何も表示されない。 test > a.txt とリダイレクトさせるとファイルには正常に出力される、何でだろ?
227 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/26(土) 22:33:10 ID:ekIkW6EI0] A_Indexを1度別の変数に入れちゃえばいいのか。 "でくくられていたかどうかが正確には判断出来ないですけど、 実用上は問題ないですね。 ありがとうございました。
228 名前:名無しさん@お腹いっぱい。 [2005/11/27(日) 12:34:40 ID:R5M1hxQO0] Send,{LWin Down}やSend,{LWindown} で押し下げ状態にしたWinキーを元に戻すにはどうすればいいでしょうか? Send,{LWin Up}やSend,{LWin}とやっても戻りませんでした。
229 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/27(日) 15:26:46 ID:GjCd3Btu0] 任意のアプリをタスクバーにボタンを表示しないようにしたいんだけど Gui,+ToolWindowに相当するものってない? ウィンドウスタイルを見てもそれらしいのがないっぽい
230 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/27(日) 16:30:10 ID:m61GJs8S0] 試してないけど 0x00000080 WS_EX_TOOLWINDOW あたりは?
231 名前:229 mailto:sage [2005/11/27(日) 17:10:05 ID:GjCd3Btu0] >>230 見落としてた しかし、小さいタイトルバーになってAltTabメニューにも表示されなくなるけど 何故かタスクバーには表示されたまま 色んなウィンドウで試してみたけど変わらない WinSet,ExStyle,^0x00000080,A
232 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/27(日) 20:16:28 ID:RGnUnyxH0] ひらがなカタカナキ-にaltを割り当てたいのですが *vkF2::Send,{alt Down} *vkF2 up::Send,{alt Up} とするとaltが押しっぱなしになってしまいます 仮想キー押し上げにコマンドを割り当てることは出来ないのでしょうか?
233 名前:名無しさん@お腹いっぱい。 [2005/11/28(月) 08:04:43 ID:QtDqyH5O0] TListViewの情報を取得するにはどうしたらいいでしょうか? ContrloGetのListはSysListVew32のようですし
234 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/28(月) 20:15:46 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/28(月) 20:24:26 ID:bOHdUc5Q0] トンクス いただいた。
236 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/04(日) 00:40:06 ID:Boevp9qL0] 解説サイトの説明が糞だな。 窓使いの憂鬱も分かりづらくて導入しにくいところがあったが こっちはさらダメダメ。アホか。 流行らせる気全然ね〜だろ。ぼけだろ。
237 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/04(日) 00:58:39 ID:vf5AX1eU0] 236がアホでぼけで理解力がダメダメなのはわかった
238 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/04(日) 01:06:12 ID:ziZg2yDd0] 単に翻訳してるだけだし その労苦だけでもありがたいと思うけどね
239 名前:233 mailto:sage [2005/12/04(日) 01:53:09 ID:c5I9hufm0] WinAPIやWindowMessageもできるだけ調べましたが、未だに解決できません TListViewの情報取得は無理でしょうか?
240 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/04(日) 11:08:29 ID:MlVaVrV10] >239 TListView って SysListView32 のサブクラスっぽいからそのまま使えるんじゃない?
241 名前:233 mailto:sage [2005/12/04(日) 11:20:41 ID:c5I9hufm0] >>240 もちろん試しました SysListView32のところでは取得できたので記述が間違っているってことはないと思います WindowMessageのLVM_xxxxで色々操作できるみたいなんですが、テキストは取得できないみたいで・・・
242 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/04(日) 11:21:34 ID:t+Kdt+4/0] まだ悩んでいたのかよ ListVewのこたしらんがTEDITもEditコントロールとして認知、制御できるし ControlGetで取れる名称がSysListVew32だっつうなら その名を指定してやれば情報は取れるだろ。
243 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/04(日) 11:22:58 ID:t+Kdt+4/0] できないのか、 ならGontrolGetTextでは?
244 名前:233 mailto:sage [2005/12/04(日) 11:27:01 ID:c5I9hufm0] >>242 Contolの引数のことろにTListViewではなくSysListVew32を指定するってことですか? もちろんやってみましたが無理のようです
245 名前:233 mailto:sage [2005/12/04(日) 11:29:30 ID:c5I9hufm0] >>243 それも試しました いくつかのアプリで試しているので取得したいアプリが特殊という可能性は低いと思います
246 名前:233 mailto:sage [2005/12/04(日) 19:16:26 ID: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% ttp://yokohama.cool.ne.jp/chokuto/urawaza/listview2.html ここを参考にしましたが これでいけると思ったけど駄目でした InsertInteger()関数は書いてあります エラー内容 モジュール 'comctl32.dll' のアドレス 5ABBD830 でアドレス 00D15714 に対する読み込み違反がおきました。 構造体は素人なので見よう見まねで書いてみましたが どこかおかしいでしょうか?
247 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/04(日) 20:11:58 ID:t+Kdt+4/0] AHKは万能なソフトってわけでもないのでそれだけ努力してダメなら無理なのかもしらんね とりあえず半端なレスして悪かった。
248 名前:233 mailto:sage [2005/12/04(日) 20:29:14 ID:c5I9hufm0] >>247 >とりあえず半端なレスして悪かった いえいえ >AHKは万能なソフトってわけでもないので もしどうしても駄目なら他のソフトやスクリプトを通してでも取得したいのですが・・・ どなかたお知恵をお貸しください
249 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/04(日) 20:39:34 ID:LHEUZAAE0] 単に別プロセスのメモリー読もうとしてるからエラー出てるのでは? TListViewはListView用のLVM_〜が使えた気がする
250 名前:233 mailto:sage [2005/12/04(日) 20:47:32 ID:c5I9hufm0] >>249 >TListViewはListView用のLVM_〜が使えた気がする そうです、使えるようです。 実際LVM_GETITEMCOUNTでアイテム数は取得できますし。 >>246 のリンク先にもありますが、SendMessageの0x1005はLVM_GETITEMのことです >単に別プロセスのメモリー読もうとしてるからエラー出てるのでは? これについては自分にはよくわからないです
251 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/04(日) 21:06:52 ID:OzfEcy140] >>250 VirtualAllocEx MapViewOfFile を駆使すれば取得できるが面倒
252 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/04(日) 21:09:06 ID:LHEUZAAE0] LVM_GETITEMCOUNTはSendMessageの戻り値がそのままアイテム数だから問題ないけど LVM_GETITEMはLVITEMのポインタをLPARAMで渡してそこに情報を書き込んでもらう奴だから LVITEM*が指すメモリーを共有メモリにするか、SendMessageする側でフックをかけてプロセスに割り込まないといけない 共有メモリー使う方法は ttp://techtips.belution.com/ja/vc/0001/ あたりを参考にすれば出来るかな
253 名前:233 mailto:sage [2005/12/04(日) 21:10:52 ID:c5I9hufm0] >>251-252 ありがとうございます とりあえず提示されたものを頑張って調べてみます
254 名前:233 mailto:sage [2005/12/05(月) 12:27:58 ID:pnvrA0j10] 色々やってみたんですが、行き詰っています ttp://techtips.belution.com/ja/vc/0001/ これってメモリアドレスから変数を参照できないと無理なのでは? まだ調べ始めて1日なので何か勘違いしてるだけのような気もしますが
255 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/05(月) 12:48:04 ID:yS+6IGXX0] gui,add,edit,vtitle R1 W300 gui,show return こんな感じでエディットボックスを作ってるんですが、日本語入力すると確定するまで表示されません。 普通に変換中に表示されるようには出来ないのでしょうか?何かオプションがあるのかな?
256 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/05(月) 12:55:38 ID: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, www.amazon.co.jp/exec/obidos/search-handle-url/index=blended&field-keywords=%Src% ExitApp GuiEscape: GuiClose: ExitApp
257 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/05(月) 13:30:59 ID:fH9XPvqW0] >>255 うちでは普通にでるけどなぁ・・・ win2ksp4 Atok16 MSIME2k どっちもOK
258 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/05(月) 13:33:22 ID:fH9XPvqW0] いちおう追記、AHK v1.0.40.05
259 名前:255 mailto:sage [2005/12/05(月) 15:14:33 ID:yS+6IGXX0] >>256 >>257 ありがとうございます。早速試しましたが、やはりうまく表示されません。 例えば わたしは と打つと w しか表示されないです。 Returnを押すと、わたしは と表示されます Version 1.0.40.10をいれてみましたが、症状はかわらず。 どーもうちのIMEの不具合か、設定の問題かもしれません。 ちなみにAHK以外の日本語入力は不具合ありません。
260 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/05(月) 15:38:36 ID:N0kdWIqG0] >>259 OSの種類とIMEのバージョンや設定(ナチュラルインプットとか詳細サービスとか)書いたら? 解決したかったら人任せじゃだめだよ
261 名前:255 mailto:sage [2005/12/05(月) 16:21:24 ID:ONVNYKfr0] 情報が足らず申し訳ありませんでした。 Windows Xp pro sp1 AHK Version 1.0.40.10 Microsoft IME Standard 2002 ver. 8.1 詳細なテキスト サービスをオフにするにチェック IME Watcherを使用 英字を常に半角で変換以外は設定をいじってません。 英語圏のソフトなのでこういう仕様なのかと思っていました。 我が家のPCの問題のようですので自力でがんばります。 皆様のお手を煩わせてほんとに申し訳なかったです。すみませんでした。
262 名前:233 mailto:sage [2005/12/06(火) 00:06:41 ID:zKABzlSJ0] 何度もすみません やっぱり自分には無理のようです・・・ とういうか、>>252 のURLの内容とほぼ同じものが ttp://www.yoshibaworks.com/ayacy/inasoft/lv2csv/lvcsvcom/chapter3.html に載っているんですが、同じサイトの ttp://www.yoshibaworks.com/ayacy/inasoft/lv2csv/index.html をダウンロードして使ってみたところTListViewは取得できませんでした 下のURLのアプリは上のソースコードとは仕組みが違うのかもしれませんが 自分にとってTListViewが取得できることによってAHKはかなり便利になると思います ずうずうしいようですが、TListViewを取得できるものが誰かの手によって書かれるのを期待します もちろん自分でもこれからもチャレンジしていきたいと思います
263 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/06(火) 00:11:30 ID:BfjYx7dY0] TlistViewってそもそも何?
264 名前:260 [2005/12/06(火) 00:20:18 ID:061B1eK40] >>261 俺も>>256 を試したら同じ現象が起きた XP HOME SP2 IME2002でIME Watcherは使ってない 今さらで悪いけど、むかし同じ現象が出て InputBoxを使って回避した気がする。忘れてた… その時は、会社のマシンだったから割と起こりやすい現象みたい
265 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/06(火) 00:28:05 ID:+pinJF560] >>262 ぱっとソースを見た感じクラスがListView32じゃないと動作しないように書いてある これ→if ( strcmp(szClassName, WC_LISTVIEW) == 0 ) { 確かTListViewはクラス名が違ったと思う
266 名前:233 mailto:sage [2005/12/06(火) 00:30:50 ID:zKABzlSJ0] >>265 ということは>>262 のソースを再現すればAHKでも実現できるわけですね 少し希望が湧いてきました
267 名前:255 mailto:sage [2005/12/06(火) 20:02:45 ID:BjDsaEX90] exeファイルにして、友達のPCで試してもらいました。 買ったままいじってないWinxp home sp2 やはり同じように入力がおかしかったようです。 これは、エディットボックス自体の不具合かな。あきらめてほかの方法をとることにします。
268 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/06(火) 22:19:27 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/06(火) 22:21:14 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/06(火) 22:21:36 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/06(火) 22:22:07 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/06(火) 22:22:41 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/06(火) 22:23:18 ID: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 mailto:sage [2005/12/06(火) 22:52:52 ID:oOmblgWA0] すごい!感動しました! 感謝してもしきれないです 本当にありがとうございます
275 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/07(水) 00:24:52 ID:+IISIZwk0] 引数が足りなかった DllCall("VirtualFreeEx", UInt,hProcess, UInt,lpProcessBuf, UInt,0, UInt,MEM_RELEASE)
276 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/07(水) 00:33:06 ID:WQOB4lVi0] >>233 具体的にどういう使い方をするのかちょっと興味あるんだけど、教えてくんない?
277 名前:233 mailto:sage [2005/12/07(水) 16:47:00 ID:Fl/Gr8/X0] >>275 普通に動いてたので気づきませんでした どちらにしても感謝です >>276 ここまでしてもらってなんですが、ご勘弁を
278 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/07(水) 16:57:01 ID:x7hOLdd40] >>277 エロDVDのタイトルの整理か何かですか?
279 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/07(水) 23:01:34 ID:SL+OhssX0] 匿名掲示板で詳しく言えないって事は犯罪絡みか
280 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/07(水) 23:29:33 ID:EMbBN43/0] それか業務がらみとか
281 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/08(木) 01:24:26 ID:kFp6FhOt0] 変数一覧のところの一番上に 0[1 of 1]: 0 ってのが必ずあるんだけどこれって何?
282 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/08(木) 19:29:26 ID:tAZLc0Al0] コマンドライン引数の奴
283 名前:281 mailto:sage [2005/12/08(木) 19:30:54 ID:kFp6FhOt0] >>282 あ、なるほど
284 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/10(土) 23:31:57 ID:8fYJs8aX0] 質問なのですが、このソフトでIME起動時に全角文字を入力として挿入することは 比較的楽に出来ますでしょうか? なにがしたいかと言いますと、自分はIMEは「かな入力」の人間でして、 チャット等の、通常会話に近い文を書いてる時は、!や?が、かな文字と 同じくらいの平易さで出現するのですが、かな入力ですと、入力するのが ちょっと面倒なのです(かな/英数を切り替えてからShift+1で再びかな/英数など) そこで、IME(ATOK2005)が起動している時は、かな入力状態でも [Shift]+[1]で“!”を、[Shift]+[/]で“?”を入力出来るようにしたいのですが、 そう言ったことは可能でしょうか? 自分の程度としましては、DOS3からなのでbatは書けますがvbsは読んで修正するのが精一杯、 サイトの引っ越しでUWSCでIEを半自動実行で転記させる50行×8本くらいのサブルーチンを 書いた程度で、最近は正規表現がなんとか使えてきて楽しいというようなレベルです。 外国産みたいなので、IMEの起動を検知できるのかと、起動したIMEに文字を直接送ることが 出来るのかがネックかなと思っているのですが… よろしくお願いします。
285 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/11(日) 00:22:31 ID:XJ0qF38r0] > そう言ったことは可能でしょうか? 可能 それと、おまえのレベルなんて知ったこっちゃない このソフトが使えないレベルなら他を当たれ 使えるなら勝手にしろ といっても、流行らせるページ見ればこの程度バカでも出来るがな ソフトに限ったことじゃないが、便利なものを使いたければ それに応じた実力(知識や技術など)を身につけろってこった
286 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/11(日) 00:39:49 ID:apES3Z+g0] まぁ要望を長々と書いたところで、マジメに読んでもらえる訳が無い。 がんばればアンタでもできるんじゃねーの?としか言いようが無い。
287 名前:名無しさん@お腹いっぱい。 [2005/12/11(日) 00:59:00 ID:78+mCWVm0] つーか俺なら変換キー連打で解決するね
288 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/11(日) 01:23:09 ID:LXjhHQ7b0] 辞書登録で1→! 0→?(テンキーを使っているなら)とか ぬ→! め→? とでも登録した方が分かりやすい上に てっとり早いんじゃないか?
289 名前:名無しさん@お腹いっぱい。 [2005/12/11(日) 01:27:32 ID:78+mCWVm0] >>288 >>287
290 名前:284 mailto:sage [2005/12/11(日) 13:39:45 ID:OA29yvnX0] お返事ありがとうございます。 ソフトによっては、ユーザー側に有る程度の素養が要求されると思いますので、 現実的に見て、自分のレベルで作業するのに問題が無いか、 取り組む前に確認させて貰いたかったのですが、スレの空気を乱す発言になった ようで、すみませんでした。 お返事を見る限り、無理な要求という感触では無いようですので、 参考にさせていただいて、検討いたします。
291 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/11(日) 13:46:13 ID:n6eRmNGz0] とりあえずお前が人のアドバイスを試す気がないカスなのは分かった
292 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/11(日) 13:48:53 ID:2lWo/Yh80] プッ
293 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/11(日) 20:13:50 ID:/OTbplQs0] しばらく過疎ってる間にえらく空気悪くなってるな >>290 IME制御に関しては過去何度か話題に上がってるので調べてみれ なまず氏が自分とこのブログで最近とりあげてたし
294 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/13(火) 00:21:18 ID:sRReWFce0] ttp://www.tamanegi.org/prog/mayu-plugins/ ここのmigemo-isearchってAHKでできます? dllのことはよくわからないんですが、これに入ってるのをDllCallすれば可能?
295 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/13(火) 03:10:20 ID:UEU0KJ8o0] もうある
296 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/13(火) 13:57:25 ID:sRReWFce0] >>295 本当ですか? 一応「migemo ahk」「migemo autohotkey」などで検索しても見つかりませんでした