「Path2.ahk(旧)」の編集履歴(バックアップ)一覧はこちら
「Path2.ahk(旧)」(2012/11/13 (火) 22:51:39) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
<div style="font-family:'MS Gothic', monospace;margin-left:1em;line-height:130%;">
<table style="border-collapse:collapse;border-width:0;"><tr><td style="border-style:solid;border-width:0px 1px 0px 0px;padding:3pt;text-align:right;color:#5A4F25;background-color:#FFFCF2;">
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25<br />
26<br />
27<br />
28<br />
29<br />
30<br />
31<br />
32<br />
33<br />
34<br />
35<br />
36<br />
37<br />
38<br />
39<br />
40<br />
41<br />
42<br />
43<br />
44<br />
45<br />
46<br />
47<br />
48<br />
49<br />
50<br />
51<br />
52<br />
53<br />
54<br />
55<br />
56<br />
57<br />
58<br />
59<br />
60<br />
61<br />
62<br />
63<br />
64<br />
65<br />
66<br />
67<br />
68<br />
69<br />
70<br />
71<br />
72<br />
73<br />
74<br />
75<br />
76<br />
77<br />
78<br />
79<br />
80<br />
81<br />
82<br />
83<br />
84<br />
85<br />
86<br />
87<br />
88<br />
89<br />
90<br />
91<br />
92<br />
93<br />
94<br />
95<br />
96<br />
97<br />
98<br />
99<br />
100<br />
101<br />
102<br />
103<br />
104<br />
105<br />
106<br />
107<br />
108<br />
109<br />
110<br />
111<br />
112<br />
113<br />
114<br />
115<br />
116<br />
117<br />
118<br />
119<br />
120<br />
121<br />
122<br />
123<br />
124<br />
125<br />
126<br />
127<br />
128<br />
129<br />
130<br />
131<br />
132<br />
133<br />
134<br />
135<br />
136<br />
137<br />
138<br />
139<br />
140<br />
141<br />
142<br />
143<br />
144<br />
145<br />
146<br />
147<br />
148<br />
149<br />
150<br />
151<br />
152<br />
153<br />
154<br />
155<br />
156<br />
157<br />
158<br />
159<br />
160<br />
161<br />
162<br />
163<br />
164<br />
165<br />
166<br />
167<br />
168<br />
169<br />
170<br />
171<br />
172<br />
173<br />
174<br />
175<br />
176<br />
177<br />
178<br />
179<br />
180<br />
181<br />
182<br />
183<br />
184<br />
185<br />
186<br />
187<br />
188<br />
189<br />
190<br />
191<br />
192<br />
193<br />
194<br />
195<br />
196<br />
197<br />
198<br />
199<br />
200<br />
201<br />
202<br />
203<br />
204<br />
205<br />
206<br />
207<br />
208<br />
209<br />
210<br />
211<br />
212<br />
213<br />
214<br />
215<br />
216<br />
217<br />
218<br />
219<br />
220<br />
221<br />
222<br />
223<br />
224<br />
225<br />
226<br />
227<br />
228<br />
229<br />
230<br />
231<br />
232<br />
233<br />
234<br />
235<br />
236<br />
237<br />
238<br />
239<br />
240<br />
241<br />
242<br />
243<br />
244<br />
245<br />
246<br />
247<br />
248<br />
249<br />
250<br />
251<br />
252<br />
253<br />
254<br />
255<br />
256<br />
257<br />
258<br />
259<br />
260<br />
261<br />
262<br />
263<br />
264<br />
265<br />
266<br />
267<br />
268<br />
269<br />
270<br />
271<br />
272<br />
273<br />
274<br />
275<br />
276<br />
277<br />
278<br />
279<br />
280<br />
281<br />
282<br />
283<br />
284<br />
285<br />
286<br />
287<br />
288<br />
289<br />
290<br />
291<br />
292<br />
293<br />
294<br />
295<br />
296<br />
297<br />
298<br />
299<br />
300<br />
301<br />
302<br />
303<br />
304<br />
305<br /></td>
<td style="white-space:nowrap;padding:5pt;color:#373737;background-color:#FFFCF2;">
<div style="color:#373737;background-color:#FFFCF2;"><span style="color:#008000;background-color:#FFFCF2;">/************************************************************************</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ファイルパス関数群
2</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 実在のパスを探す系
(全角ダメ文字問題も一応考慮)</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ※ AHKでのダメ文字問題は
Loop(files) などの 文字列切出し関係で起こる。</span><br /><span style="color:#008000;background-color:#FFFCF2;"> IfExist /
FileExist()での判定自体は問題ない。</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;"> グローバル変数 :
なし</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 各関数の依存性 :
なし(必要関数だけ切出してコピペでも使えます)</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;"> A</span><span style="color:#FF0000;background-color:#FFFF00;">utoHotkey Version:
1.0.48.03</span><br /><span style="color:#008000;background-color:#FFFCF2;"> Language:
Japanease</span><br /><span style="color:#008000;background-color:#FFFCF2;"> Platform: Win
NT (psapi.DLL使用)</span><br /><span style="color:#008000;background-color:#FFFCF2;"> Author:
eamat.</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">************************************************************************</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 2009.01.23
Path2_ExtractPath()</span><br /><span style="color:#008000;background-color:#FFFCF2;"> "c:\program
files\hoge.txt - メモ帳" のような場合の取得対応</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 2009.01.18
Path2_GetTempFileName()</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 2009.07.01
Path2_ExtractPath() RegEx調整他</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 2009.07.26
Path2_GetTempFileName() コメント修正他</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 2009.10.23
_Path2_sample() 追加</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 2012.11.11
Path2_ProcessExeNameNT() → Path2_GetExecutablePath() 名称変更</span><br /><span style="color:#008000;background-color:#FFFCF2;">*/</span><br /><span style="color:#008000;background-color:#FFFCF2;">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</span><br /><span style="color:#008000;background-color:#FFFCF2;">;</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 動作確認用 内部ルーチン</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
単体起動時のテスト用なので削除しても問題なし</span><br /><div style="color:#000080;background-color:#EEEEEE;">
_Path2_AutoExecute_Sample:</div>
_Path2_sample()<br /><span style="color:#008000;background-color:#FFFCF2;">;
_Path2_test()</span><br /><span style="color:#5353FF;background-color:#FFFCF2;">return</span><br /><br /><div style="color:#FF0000;background-color:#FFE6EE;">_Path2_sample() {</div>
buf := "c:\予定表\予\予定表.xls"<br /><br />
<span style="color:#008000;background-color:#FFFCF2;">;APIやRegExチェックが面倒な時は、</span><br />
<span style="color:#008000;background-color:#FFFCF2;">;ファイルパスにもSJISにも被らない記号に一旦変換する</span><br />
buf := <span style="color:#4A0095;background-color:#FFFCF2;">RegExReplace</span>(buf,"(<span style="color:#800080;background-color:#FFF4FF;">?<=</span>[^<span style="color:#800080;background-color:#FFF4FF;">\x80</span>-<span style="color:#800080;background-color:#FFF4FF;">\x9F\xE0</span>-<span style="color:#800080;background-color:#FFF4FF;">\xFC</span>])<span style="color:#800080;background-color:#FFF4FF;">\\</span>","|")
<span style="color:#008000;background-color:#FFFCF2;">;\ を | に変更</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">Loop</span>,<span style="color:#9425A7;background-color:#FFFCF2;">parse</span>,buf,|<br />
{<br />
<span style="color:#5353FF;background-color:#FFFCF2;">msgbox</span>,<span style="color:#EE7264;background-color:#FFFCF2;">%A_LoopField%</span><br />
}<br />
}<br /><br /><div style="color:#FF0000;background-color:#FFE6EE;">_Path2_test() {</div>
<span style="color:#008000;background-color:#FFFCF2;">;--- 有効パスサーチ関数 のテスト
---</span><br />
p := <span style="color:#EE7264;background-color:#FFFCF2;">A_WinDir</span>
" <span style="color:#EE7264;background-color:#FFFCF2;">"""</span> <span style="color:#EE7264;background-color:#FFFCF2;">A_ProgramFiles</span> <span style="color:#EE7264;background-color:#FFFCF2;">"""</span> [" <span style="color:#EE7264;background-color:#FFFCF2;">A_Temp</span> "] " <span style="color:#EE7264;background-color:#FFFCF2;">A_WinDir</span> " " <span style="color:#EE7264;background-color:#FFFCF2;">A_WinDir</span><br />
. "<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>
" . <span style="color:#EE7264;background-color:#FFFCF2;">A_AppDataCommon</span> " - メモ帳"<br />
. "<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>
Notepad - " . <span style="color:#EE7264;background-color:#FFFCF2;">A_AppData</span><br />
a := Path2_ExtractPath(p)<br />
b := Path2_ExtractPath(p,<span style="color:#0000FF;background-color:#FFFCF2;">2</span>)<br />
c := Path2_ExtractPath(p,"<span style="color:#9425A7;background-color:#FFFCF2;">ALL</span>")<br />
msg := "Path2_ExtractPath(Target=<span style="color:#EE7264;background-color:#FFFCF2;">""</span>,<span style="color:#9425A7;background-color:#FFFCF2;">Multi</span>=<span style="color:#0000FF;background-color:#FFFCF2;">0</span>)<span style="color:#EE7264;background-color:#FFFCF2;">`n`n</span>"<br />
. "対象文字列<span style="color:#EE7264;background-color:#FFFCF2;">`n</span> --> " p "<span style="color:#EE7264;background-color:#FFFCF2;">`n`n</span>"<br />
. "通常は最初に見つかったパスを返します。<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>'" a "'<span style="color:#EE7264;background-color:#FFFCF2;">`n`n</span>"<br />
. "<span style="color:#9425A7;background-color:#FFFCF2;">Multi</span>=nでn番目に見つかったパスを返します。<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>(<span style="color:#9425A7;background-color:#FFFCF2;">Multi</span>=<span style="color:#0000FF;background-color:#FFFCF2;">2</span>の場合)
: " b "<span style="color:#EE7264;background-color:#FFFCF2;">`n`n</span>"<br />
. "<span style="color:#9425A7;background-color:#FFFCF2;">Multi</span>=<span style="color:#9425A7;background-color:#FFFCF2;">ALL</span>指定時は
改行区切りで列挙して返します。<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"
c "<span style="color:#EE7264;background-color:#FFFCF2;">`n`n</span>"<br />
<span style="color:#5353FF;background-color:#FFFCF2;">msgbox</span>,<span style="color:#0000FF;background-color:#FFFCF2;">1</span>,有効パスサーチ`関数 のテスト,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>msg<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">IfMsgBox</span>,<span style="color:#9425A7;background-color:#FFFCF2;">Cancel</span>, <span style="color:#5353FF;background-color:#FFFCF2;">return</span><br /><br />
<span style="color:#008000;background-color:#FFFCF2;">;--- 起動中プロセスの取得関数のテスト
---</span><br />
p := Path2_<span style="color:#FF0000;background-color:#FFFF00;">ProcessExeNameNT()</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> msg :=
"Path2_ProcessExeNameNT</span>(pid=<span style="color:#0000FF;background-color:#FFFCF2;">0</span>,WinTitle=<span style="color:#EE7264;background-color:#FFFCF2;">""</span>A<span style="color:#EE7264;background-color:#FFFCF2;">""</span>)<span style="color:#EE7264;background-color:#FFFCF2;">`n`n</span>"<br />
. "PID指定なしでアクティブウィンドウのパスを返します。<span style="color:#EE7264;background-color:#FFFCF2;">`n</span> -> " . p .
"<span style="color:#EE7264;background-color:#FFFCF2;">`n`n`n</span>"<br />
p2 := Path2_GetCommandLine()<br />
msg .= "Path2_GetCommandLine(pid=<span style="color:#0000FF;background-color:#FFFCF2;">0</span>,WinTitle=<span style="color:#EE7264;background-color:#FFFCF2;">""</span>A<span style="color:#EE7264;background-color:#FFFCF2;">""</span>)<span style="color:#EE7264;background-color:#FFFCF2;">`n`n</span>"<br />
. "PID指定なしでアクティブウィンドウのコマンドラインを返します。<span style="color:#EE7264;background-color:#FFFCF2;">`n</span> -> " . p2<br />
<span style="color:#5353FF;background-color:#FFFCF2;">msgbox</span>,<span style="color:#0000FF;background-color:#FFFCF2;">1</span>,起動中プロセスの取得関数のテスト,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>msg<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">IfMsgBox</span>,<span style="color:#9425A7;background-color:#FFFCF2;">Cancel</span>, <span style="color:#5353FF;background-color:#FFFCF2;">return</span><br /><br />
<span style="color:#008000;background-color:#FFFCF2;">;--- テンポラリファイル作成のテスト
---</span><br />
p := Path2_GetTempFileName()<br />
msg := "Path2_GetTempFileName(TargetDir=<span style="color:#EE7264;background-color:#FFFCF2;">""""</span>,PrefixString=<span style="color:#EE7264;background-color:#FFFCF2;">""</span>ahk<span style="color:#EE7264;background-color:#FFFCF2;">""</span>)<span style="color:#EE7264;background-color:#FFFCF2;">`n`n</span>"<br />
. "指定のディレクトリにテンポラリファイルを作成します。<span style="color:#EE7264;background-color:#FFFCF2;">`n</span> -> "<br />
. p "<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br />
<span style="color:#5353FF;background-color:#FFFCF2;">msgbox</span>,<span style="color:#0000FF;background-color:#FFFCF2;">1</span>,テンポラリファイル作成のテスト,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>msg<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">IfMsgBox</span>,<span style="color:#9425A7;background-color:#FFFCF2;">Cancel</span>, <span style="color:#5353FF;background-color:#FFFCF2;">return</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">if</span> (p)<br />
<span style="color:#5353FF;background-color:#FFFCF2;">FileDelete</span>,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>p<span style="color:#EE7264;background-color:#FFFCF2;">%</span> <span style="color:#008000;background-color:#FFFCF2;">;一応後始末</span><br /><br />
<span style="color:#008000;background-color:#FFFCF2;">;--- ファイルドロップ関数のテスト
---</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">Run</span>,notepad,,,pid<br />
msg := "Path2_DropFiles(hwnd,fnames)<span style="color:#EE7264;background-color:#FFFCF2;">`n`n</span>"<br />
. "指定されたハンドルのウィンドウにファイルをドロップします<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br />
. "とりあえずメモ帳にこのファイルをドロップしてみます<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br />
<span style="color:#5353FF;background-color:#FFFCF2;">msgbox</span>,<span style="color:#0000FF;background-color:#FFFCF2;">4096</span>,ファイルドロップ関数のテスト,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>msg<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">WinActivate</span>,<span style="color:#9425A7;background-color:#FFFCF2;">ahk_pid</span> <span style="color:#EE7264;background-color:#FFFCF2;">%</span>pid<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">WinWaitActive</span>,<span style="color:#9425A7;background-color:#FFFCF2;">ahk_class</span> Notepad<br />
Path2_DropFiles(<span style="color:#EE7264;background-color:#FFFCF2;">""</span>,<span style="color:#EE7264;background-color:#FFFCF2;">A_LineFile</span>)<br />
}<br /><span style="color:#008000;background-color:#FFFCF2;">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">;---------------------------------------------------------------------------</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 汎用関数</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
テンポラリファイルを作成し名前を返す。(winAPI GetTempFileName使用)</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 対象: AHK
v1.0.34以降</span><br /><span style="color:#008000;background-color:#FFFCF2;">; TargetDir :
ファイルを作成するディレクトリ (省略時 A_temp)</span><br /><span style="color:#008000;background-color:#FFFCF2;">; PrefixString :
ファイル接頭語(3文字以内) (省略時 ahk)</span><br /><span style="color:#008000;background-color:#FFFCF2;">; リターン値
テンポラリフォルダパス(エラー時:0)</span><br /><span style="color:#008000;background-color:#FFFCF2;">;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</span><br /><div style="color:#FF0000;background-color:#FFE6EE;">
Path2_GetTempFileName(TargetDir="",PrefixString="ahk") {</div>
TargetDir := (!TargetDir) ? <span style="color:#EE7264;background-color:#FFFCF2;">A_temp</span> : TargetDir<br />
<span style="color:#5353FF;background-color:#FFFCF2;">if</span>
(<span style="color:#4A0095;background-color:#FFFCF2;">Instr</span>(<span style="color:#4A0095;background-color:#FFFCF2;">FileExist</span>(TargetDir),"D"))<br />
<span style="color:#5353FF;background-color:#FFFCF2;">FileCreateDir</span>,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>TargetDir<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#4A0095;background-color:#FFFCF2;">VarSetCapacity</span>(TempFileName ,
<span style="color:#0000FF;background-color:#FFFCF2;">260</span>)<br />
ret := <span style="color:#4A0095;background-color:#FFFCF2;">Dllcall</span>("GetTempFileName",Str
,TargetDir<br />
,Str ,<span style="color:#4A0095;background-color:#FFFCF2;">SubStr</span>(PrefixString,<span style="color:#0000FF;background-color:#FFFCF2;">1</span>,<span style="color:#0000FF;background-color:#FFFCF2;">3</span>)<br />
,UInt,<span style="color:#0000FF;background-color:#FFFCF2;">0</span><br />
,Str ,TempFileName, Uint)<br />
<span style="color:#5353FF;background-color:#FFFCF2;">return</span> (!ret)
? ret : TempFileName<br />
}<br /><br /><span style="color:#008000;background-color:#FFFCF2;">;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</span><br /><span style="color:#008000;background-color:#FFFCF2;">; プロセスID or WinTitle
を指定して実行ファイルパスを得る</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 対象:</span>
<span style="color:#FF0000;background-color:#FFFF00;">NT系 / AHK
v1.0.34以降</span><br /><span style="color:#008000;background-color:#FFFCF2;">; in pid :
プロセスID(省略時 WinTitleが対象となる)</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WinTitle :
対象Window(pid未設定時に適用、省略時アクティブウィンドウ)</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 戻り値 :
実行ファイルパス</span><br /><span style="color:#008000;background-color:#FFFCF2;">;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</span><br /><span style="color:#FF0000;background-color:#FFFF00;">;Path2_ProcessExeNameNT(pid=0,WinTitle="A")
{</span><br /><div style="color:#FF0000;background-color:#FFE6EE;">
Path2_GetExecutablePath(pid=0,WinTitle="A"){</div>
<span style="color:#FF0000;background-color:#FFFF00;">; 参考:
http://cgi19.plala.or.jp/lukewarm/news/2005_05.html#14</span><br /><span style="color:#FF0000;background-color:#FFFF00;">; by 流行らせるページ管理人
(ほぼそのまま)</span><br /><br />
<span style="color:#5353FF;background-color:#FFFCF2;">if</span> (!pid)<br />
<span style="color:#5353FF;background-color:#FFFCF2;">WinGet</span>,pid,PID,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>WinTitle<span style="color:#EE7264;background-color:#FFFCF2;">%</span><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">;2008.12.10 追加</span><br /><br /><span style="color:#FF0000;background-color:#FFFF00;"> hModule := dwNeed :=
l :=</span> <span style="color:#FF0000;background-color:#FFFF00;">0</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">max</span><span style="color:#FF0000;background-color:#FFFF00;">:=</span><span style="color:#FF0000;background-color:#FFFF00;">VarSetCapacity</span><span style="color:#FF0000;background-color:#FFFF00;">(s,</span><span style="color:#FF0000;background-color:#FFFF00;">256</span><span style="color:#FF0000;background-color:#FFFF00;">)</span><br /><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">; プロセスのハンドルを取り出す
PROCESS_ALL_ACCESS:=0x001F0FFF</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> hProcess :=</span>
<span style="color:#FF0000;background-color:#FFFF00;">DllCall</span><span style="color:#FF0000;background-color:#FFFF00;">("OpenProcess",
UInt,</span><span style="color:#FF0000;background-color:#FFFF00;">0x001F0FFF</span><span style="color:#FF0000;background-color:#FFFF00;">, Int,</span><span style="color:#FF0000;background-color:#FFFF00;">0</span><span style="color:#FF0000;background-color:#FFFF00;">, UInt,pid, Int)</span><br /><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">;
このプロセスの全てのモジュールのリストの最初の1個を取得する</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">; BOOL EnumProcessModules(HANDLE
hProcess, MODULE *lphModule, DWORD cb,</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">; LPDWORD
lpcbNeeded);</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">if</span> <span style="color:#FF0000;background-color:#FFFF00;">(</span><span style="color:#FF0000;background-color:#FFFF00;">DllCall</span><span style="color:#FF0000;background-color:#FFFF00;">("psapi\EnumProcessModules",Int
,hProcess</span><br /><span style="color:#FF0000;background-color:#FFFF00;">
,IntP ,hModule</span><br /><span style="color:#FF0000;background-color:#FFFF00;">
,Int ,</span><span style="color:#FF0000;background-color:#FFFF00;">4</span><br /><span style="color:#FF0000;background-color:#FFFF00;">
,UIntP,dwNeed, Int)) {</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span>
<span style="color:#FF0000;background-color:#FFFF00;">; DWORD
GetModuleFileNameEx(HANDLE hProcess, HMODULE hModule, LPTSTR FileName, DWORD
FileNameSize);</span><br /><span style="color:#FF0000;background-color:#FFFF00;">
l:=</span><span style="color:#FF0000;background-color:#FFFF00;">DllCall</span><span style="color:#FF0000;background-color:#FFFF00;">("psapi</span><span style="color:#FF0000;background-color:#FFFF00;">\G</span><span style="color:#FF0000;background-color:#FFFF00;">etModuleFileNameExA",Int,hProcess</span><br /><span style="color:#FF0000;background-color:#FFFF00;">
,Int,hModule</span><br /><span style="color:#FF0000;background-color:#FFFF00;">
,Str,s</span><br /><span style="color:#FF0000;background-color:#FFFF00;">
,Int,</span><span style="color:#FF0000;background-color:#FFFF00;">max</span><span style="color:#FF0000;background-color:#FFFF00;">, Int)</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> }</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">DllCall</span><span style="color:#FF0000;background-color:#FFFF00;">("psapi</span><span style="color:#FF0000;background-color:#FFFF00;">\C</span><span style="color:#FF0000;background-color:#FFFF00;">loseProcess", Int,hProcess) </span>
<span style="color:#FF0000;background-color:#FFFF00;">;開けたら閉める</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">return</span> <span style="color:#FF0000;background-color:#FFFF00;">SubStr</span><span style="color:#FF0000;background-color:#FFFF00;">(s,</span><span style="color:#FF0000;background-color:#FFFF00;">1</span><span style="color:#FF0000;background-color:#FFFF00;">,l)</span><br /><span style="color:#FF0000;background-color:#FFFF00;">}</span><br /><span style="color:#008000;background-color:#FFFCF2;">;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</span><br /><span style="color:#008000;background-color:#FFFCF2;">; プロセスID or WinTitle
を指定してコマンドラインを取得</span><br /><span style="color:#008000;background-color:#FFFCF2;">; in pid :
プロセスID(省略時 WinTitleが対象となる)</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WinTitle :
対象Window(pid未設定時に適用、省略時アクティブウィンドウ)</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 戻り値 :
実行ファイルパス</span><br /><span style="color:#008000;background-color:#FFFCF2;">;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</span><br /><div style="color:#FF0000;background-color:#FFE6EE;">
Path2_GetCommandLine(pid=0,WinTitle="A"){</div>
<br /><span style="color:#FF0000;background-color:#FFFF00;">; 参考:流行らせるページ管理人氏 の
MouseGesture2 スクリプト内</span><br /><span style="color:#FF0000;background-color:#FFFF00;">;
MG_CommandLine()より (ほぼそのまま)</span><br /><span style="color:#FF0000;background-color:#FFFF00;">;
http://lukewarm.s101.xrea.com/myscripts/mousegesture/index.html</span><br /><br />
<span style="color:#5353FF;background-color:#FFFCF2;">if</span> (!pid)<br />
<span style="color:#5353FF;background-color:#FFFCF2;">WinGet</span>,pid,PID,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>WinTitle<span style="color:#EE7264;background-color:#FFFCF2;">%</span><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">;2008.12.14 追加</span><br /><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">; kernel32\GetCommandLineA
のアドレスへのポインタを設定?</span><br /><span style="color:#FF0000;background-color:#FFFF00;">
ptr:=(</span><span style="color:#FF0000;background-color:#FFFF00;">NumGet</span><span style="color:#FF0000;background-color:#FFFF00;">(</span><span style="color:#FF0000;background-color:#FFFF00;">DllCall</span><span style="color:#FF0000;background-color:#FFFF00;">("kernel32.dll</span><span style="color:#FF0000;background-color:#FFFF00;">\G</span><span style="color:#FF0000;background-color:#FFFF00;">etProcAddress"</span><br /><span style="color:#FF0000;background-color:#FFFF00;">
,UInt,</span><span style="color:#FF0000;background-color:#FFFF00;">DllCall</span><span style="color:#FF0000;background-color:#FFFF00;">("kernel32.dll</span><span style="color:#FF0000;background-color:#FFFF00;">\G</span><span style="color:#FF0000;background-color:#FFFF00;">etModuleHandle",Str,"Kernel32")</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> ,Str
,"GetCommandLineA",UInt)+</span><span style="color:#FF0000;background-color:#FFFF00;">1</span><span style="color:#FF0000;background-color:#FFFF00;">))</span><br /><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">; プロセスのハンドルを取り出す</span><br /><span style="color:#FF0000;background-color:#FFFF00;">
hp:=</span><span style="color:#FF0000;background-color:#FFFF00;">DllCall</span><span style="color:#FF0000;background-color:#FFFF00;">("kernel32.dll\OpenProcess",UInt,</span><span style="color:#FF0000;background-color:#FFFF00;">0x001F0FFF</span><span style="color:#FF0000;background-color:#FFFF00;">,UInt,</span><span style="color:#FF0000;background-color:#FFFF00;">0</span><span style="color:#FF0000;background-color:#FFFF00;">,UInt,pid,UInt)</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">VarSetCapacity</span><span style="color:#FF0000;background-color:#FFFF00;">(res,</span><span style="color:#FF0000;background-color:#FFFF00;">1024</span><span style="color:#FF0000;background-color:#FFFF00;">)</span><br /><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">;
GetCommandLineのメモリアドレスを取得してからコマンドライン文字列を取得</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">DllCall</span><span style="color:#FF0000;background-color:#FFFF00;">("kernel32.dll\ReadProcessMemory"
,UInt ,hp</span><br /><span style="color:#FF0000;background-color:#FFFF00;">
,UInt ,ptr</span><br /><span style="color:#FF0000;background-color:#FFFF00;">
,UIntP,addr</span><br /><span style="color:#FF0000;background-color:#FFFF00;">
,UInt ,</span><span style="color:#FF0000;background-color:#FFFF00;">4</span><br /><span style="color:#FF0000;background-color:#FFFF00;">
,UInt ,</span><span style="color:#FF0000;background-color:#FFFF00;">0</span><span style="color:#FF0000;background-color:#FFFF00;">)</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">DllCall</span><span style="color:#FF0000;background-color:#FFFF00;">("kernel32.dll\ReadProcessMemory"
,UInt,hp</span><br /><span style="color:#FF0000;background-color:#FFFF00;">
,UInt,addr</span><br /><span style="color:#FF0000;background-color:#FFFF00;">
,Str,res</span><br /><span style="color:#FF0000;background-color:#FFFF00;">
,UInt,</span><span style="color:#FF0000;background-color:#FFFF00;">1024</span><br /><span style="color:#FF0000;background-color:#FFFF00;">
,UInt,</span><span style="color:#FF0000;background-color:#FFFF00;">0</span><span style="color:#FF0000;background-color:#FFFF00;">)</span><br /><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">DllCall</span><span style="color:#FF0000;background-color:#FFFF00;">("psapi</span><span style="color:#FF0000;background-color:#FFFF00;">\C</span><span style="color:#FF0000;background-color:#FFFF00;">loseProcess", UInt,hp)</span>
<span style="color:#FF0000;background-color:#FFFF00;">;開けたら閉める</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">return</span> <span style="color:#FF0000;background-color:#FFFF00;">res</span><br />
}<br /><br /><span style="color:#008000;background-color:#FFFCF2;">;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</span><br /><span style="color:#008000;background-color:#FFFCF2;">; ファイルドロップ関数 by
流行らせるページ管理人</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
指定ウィンドウへのファイルドロップを発生させる</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 引数</span><br /><span style="color:#008000;background-color:#FFFCF2;">; hwnd :
指定されたウィンドウに</span><br /><span style="color:#008000;background-color:#FFFCF2;">; fnames :
ファイルをドロップする(複数対応:改行区切り)</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WinTitle :
対象Window(hwnd未設定時に適用、省略時アクティブウィンドウ)</span><br /><span style="color:#008000;background-color:#FFFCF2;">;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</span><br /><div style="color:#FF0000;background-color:#FFE6EE;">
Path2_DropFiles(hwnd="",fnames="", WinTitle="A") {</div>
<span style="color:#008000;background-color:#FFFCF2;">; 参考:
http://lukewarm.s101.xrea.com/myscripts/index.html</span><br /><span style="color:#008000;background-color:#FFFCF2;">; </span> <span style="color:#FF0000;background-color:#FFFF00;">by 流行らせるページ管理人 (ほぼそのまま)</span><br /><br />
hwnd := (!hwnd) ? <span style="color:#4A0095;background-color:#FFFCF2;">WinExist</span>(WinTitle) : hwnd<br /><br /><span style="color:#FF0000;background-color:#FFFF00;">
fns:=</span><span style="color:#FF0000;background-color:#FFFF00;">RegExReplace</span><span style="color:#FF0000;background-color:#FFFF00;">(fnames,"</span><span style="color:#FF0000;background-color:#FFFF00;">\n</span><span style="color:#FF0000;background-color:#FFFF00;">$</span><span style="color:#FF0000;background-color:#FFFF00;">",</span><span style="color:#FF0000;background-color:#FFFF00;">""</span><span style="color:#FF0000;background-color:#FFFF00;">)</span><br /><span style="color:#FF0000;background-color:#FFFF00;">
hDrop:=</span><span style="color:#FF0000;background-color:#FFFF00;">DllCall</span><span style="color:#FF0000;background-color:#FFFF00;">("GlobalAlloc",
UInt,</span><span style="color:#FF0000;background-color:#FFFF00;">0x42</span><span style="color:#FF0000;background-color:#FFFF00;">, UInt,</span><span style="color:#FF0000;background-color:#FFFF00;">20</span><span style="color:#FF0000;background-color:#FFFF00;">+</span><span style="color:#FF0000;background-color:#FFFF00;">StrLen</span><span style="color:#FF0000;background-color:#FFFF00;">(fns)+</span><span style="color:#FF0000;background-color:#FFFF00;">2</span><span style="color:#FF0000;background-color:#FFFF00;">, UInt)</span><br /><span style="color:#FF0000;background-color:#FFFF00;">
p:=</span><span style="color:#FF0000;background-color:#FFFF00;">DllCall</span><span style="color:#FF0000;background-color:#FFFF00;">("GlobalLock","UInt",hDrop)</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">NumPut</span><span style="color:#FF0000;background-color:#FFFF00;">(</span><span style="color:#FF0000;background-color:#FFFF00;">20</span><span style="color:#FF0000;background-color:#FFFF00;"> ,p+</span><span style="color:#FF0000;background-color:#FFFF00;">0</span><span style="color:#FF0000;background-color:#FFFF00;">) </span> <span style="color:#FF0000;background-color:#FFFF00;">;offset</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">NumPut</span><span style="color:#FF0000;background-color:#FFFF00;">(</span><span style="color:#FF0000;background-color:#FFFF00;">0</span><span style="color:#FF0000;background-color:#FFFF00;"> ,p+</span><span style="color:#FF0000;background-color:#FFFF00;">4</span><span style="color:#FF0000;background-color:#FFFF00;">) </span> <span style="color:#FF0000;background-color:#FFFF00;">;pt.x</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">NumPut</span><span style="color:#FF0000;background-color:#FFFF00;">(</span><span style="color:#FF0000;background-color:#FFFF00;">0</span><span style="color:#FF0000;background-color:#FFFF00;"> ,p+</span><span style="color:#FF0000;background-color:#FFFF00;">8</span><span style="color:#FF0000;background-color:#FFFF00;">) </span> <span style="color:#FF0000;background-color:#FFFF00;">;pt.y</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">NumPut</span><span style="color:#FF0000;background-color:#FFFF00;">(</span><span style="color:#FF0000;background-color:#FFFF00;">0</span><span style="color:#FF0000;background-color:#FFFF00;"> ,p+</span><span style="color:#FF0000;background-color:#FFFF00;">12</span><span style="color:#FF0000;background-color:#FFFF00;">)</span> <span style="color:#FF0000;background-color:#FFFF00;">;fNC</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">NumPut</span><span style="color:#FF0000;background-color:#FFFF00;">(</span><span style="color:#FF0000;background-color:#FFFF00;">0</span><span style="color:#FF0000;background-color:#FFFF00;"> ,p+</span><span style="color:#FF0000;background-color:#FFFF00;">16</span><span style="color:#FF0000;background-color:#FFFF00;">)</span> <span style="color:#FF0000;background-color:#FFFF00;">;fWide</span><br /><span style="color:#FF0000;background-color:#FFFF00;">
p2:=p+</span><span style="color:#FF0000;background-color:#FFFF00;">20</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">Loop</span><span style="color:#FF0000;background-color:#FFFF00;">,</span><span style="color:#FF0000;background-color:#FFFF00;">Parse</span><span style="color:#FF0000;background-color:#FFFF00;">,fns,</span><span style="color:#FF0000;background-color:#FFFF00;">`n</span><span style="color:#FF0000;background-color:#FFFF00;">,</span><span style="color:#FF0000;background-color:#FFFF00;">`r</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> {</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span>
<span style="color:#FF0000;background-color:#FFFF00;">DllCall</span><span style="color:#FF0000;background-color:#FFFF00;">("RtlMoveMemory",
"UInt",p2,"Str",</span><span style="color:#FF0000;background-color:#FFFF00;">A_LoopField</span><span style="color:#FF0000;background-color:#FFFF00;">,"UInt",</span><span style="color:#FF0000;background-color:#FFFF00;">StrLen</span><span style="color:#FF0000;background-color:#FFFF00;">(</span><span style="color:#FF0000;background-color:#FFFF00;">A_LoopField</span><span style="color:#FF0000;background-color:#FFFF00;">))</span><br /><span style="color:#FF0000;background-color:#FFFF00;">
p2+=</span><span style="color:#FF0000;background-color:#FFFF00;">StrLen</span><span style="color:#FF0000;background-color:#FFFF00;">(</span><span style="color:#FF0000;background-color:#FFFF00;">A_LoopField</span><span style="color:#FF0000;background-color:#FFFF00;">)+</span><span style="color:#FF0000;background-color:#FFFF00;">1</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> }</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#FF0000;background-color:#FFFF00;">DllCall</span><span style="color:#FF0000;background-color:#FFFF00;">("GlobalUnlock",UInt,hDrop)</span><br /><span style="color:#FF0000;background-color:#FFFF00;"> </span> <span style="color:#5353FF;background-color:#FFFCF2;">PostMessage</span>,<span style="color:#0000FF;background-color:#FFFCF2;">0x233</span>,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>hDrop<span style="color:#EE7264;background-color:#FFFCF2;">%</span>,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>,,<span style="color:#9425A7;background-color:#FFFCF2;">ahk_id</span> <span style="color:#EE7264;background-color:#FFFCF2;">%</span>hwnd<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
}<br /><br /><br /><span style="color:#008000;background-color:#FFFCF2;">;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 有効パスを抽出して返す
(ダメ文字考慮改訂版) 2009.07.01</span><br /><span style="color:#008000;background-color:#FFFCF2;">;</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 対象: AHK
v1.0.48以降(While-loop使用)</span><br /><span style="color:#008000;background-color:#FFFCF2;">; in Target :
対象文字列(省略時:アクティブウィンドウタイトル)</span><br /><span style="color:#008000;background-color:#FFFCF2;">; Multi :
n(数値)= n個に見つかったパスを返す(デフォルト:1)</span><br /><span style="color:#008000;background-color:#FFFCF2;">; ALL
= 有効パスが複数あるとき改行区切りで全部返す</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 戻り値
パス情報</span><br /><span style="color:#008000;background-color:#FFFCF2;">;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</span><br /><div style="color:#FF0000;background-color:#FFE6EE;">
Path2_ExtractPath(Target="",Multi=1) {</div>
<span style="color:#5353FF;background-color:#FFFCF2;">ifEqual</span>
Target,, <span style="color:#5353FF;background-color:#FFFCF2;">WinGetTitle</span>,Target,A<br /><br />
<span style="color:#008000;background-color:#FFFCF2;">;--- RegEx判定用定義
---</span><br />
<span style="color:#008000;background-color:#FFFCF2;">;対応する括弧 (<> と "
" は↑の無効文字で対応)</span><br />
<span style="color:#008000;background-color:#FFFCF2;">;
[]{}の全角誤爆問題は対策できてるはず</span><br />
reg := "<span style="color:#800080;background-color:#FFF4FF;">\(</span>(.*?)<span style="color:#800080;background-color:#FFF4FF;">\)</span>|'(.*?)'"<br />
. "|(<span style="color:#800080;background-color:#FFF4FF;">?<=</span>^|[^<span style="color:#800080;background-color:#FFF4FF;">\x80</span>-<span style="color:#800080;background-color:#FFF4FF;">\x9F\xE0</span>-<span style="color:#800080;background-color:#FFF4FF;">\xFC</span>])<span style="color:#800080;background-color:#FFF4FF;">\[</span>(.*?[^<span style="color:#800080;background-color:#FFF4FF;">\x80</span>-<span style="color:#800080;background-color:#FFF4FF;">\x9F\xE0</span>-<span style="color:#800080;background-color:#FFF4FF;">\xFC</span>])<span style="color:#800080;background-color:#FFF4FF;">\]</span>"<br />
. "|(<span style="color:#800080;background-color:#FFF4FF;">?<=</span>^|[^<span style="color:#800080;background-color:#FFF4FF;">\x80</span>-<span style="color:#800080;background-color:#FFF4FF;">\x9F\xE0</span>-<span style="color:#800080;background-color:#FFF4FF;">\xFC</span>])<span style="color:#800080;background-color:#FFF4FF;">\{</span>(.*?[^<span style="color:#800080;background-color:#FFF4FF;">\x80</span>-<span style="color:#800080;background-color:#FFF4FF;">\x9F\xE0</span>-<span style="color:#800080;background-color:#FFF4FF;">\xFC</span>])<span style="color:#800080;background-color:#FFF4FF;">\}</span>"<br />
. "|((.*?))|「(.*?)」|{(.*?)}|『(.*?)』|【(.*?)】|[(.*?)]"<br />
. "|‘(.*?)’|“(.*?)”|〔(.*?)〕|〈(.*?)〉|《(.*?)》|<(.*?)>"<br />
. "|`(.*?)´|「(.*?)」"<br />
<span style="color:#008000;background-color:#FFFCF2;">;空白Trim用</span><br />
Trim := "im)^(<span style="color:#800080;background-color:#FFF4FF;">?:</span> | )*(.*?)(<span style="color:#800080;background-color:#FFF4FF;">?:</span> | )*<span style="color:#EE7264;background-color:#FFFCF2;">$</span>"<br /><br />
<span style="color:#008000;background-color:#FFFCF2;">;--- パスとして無効な文字列で分割
---</span><br />
Target := <span style="color:#4A0095;background-color:#FFFCF2;">RegExReplace</span>(Target, "im)"<br />
. "(<span style="color:#800080;background-color:#FFF4FF;">\x22</span>|<span style="color:#800080;background-color:#FFF4FF;">\x2C</span>|(<span style="color:#800080;background-color:#FFF4FF;">?<=</span>^|[^<span style="color:#800080;background-color:#FFF4FF;">\x80</span>-<span style="color:#800080;background-color:#FFF4FF;">\x9F\xE0</span>-<span style="color:#800080;background-color:#FFF4FF;">\xFC</span>])<span style="color:#800080;background-color:#FFF4FF;">\|</span>|;|<|>|/|<span style="color:#800080;background-color:#FFF4FF;">\*</span>|<span style="color:#800080;background-color:#FFF4FF;">\?</span>|<span style="color:#800080;background-color:#FFF4FF;">\t</span>|<span style="color:#EE7264;background-color:#FFFCF2;">`r</span>|<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>)"<br />
, "<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>")<br />
<span style="color:#5353FF;background-color:#FFFCF2;">Loop</span>,<span style="color:#9425A7;background-color:#FFFCF2;">Parse</span>,Target,<span style="color:#EE7264;background-color:#FFFCF2;">`n</span><br />
{ <span style="color:#008000;background-color:#FFFCF2;">;--- パス判定
---</span><br />
str := !<span style="color:#4A0095;background-color:#FFFCF2;">FileExist</span>(<span style="color:#EE7264;background-color:#FFFCF2;">A_LoopField</span>) ? <span style="color:#4A0095;background-color:#FFFCF2;">RegExReplace</span>(<span style="color:#EE7264;background-color:#FFFCF2;">A_LoopField</span>,
Trim,"<span style="color:#EE7264;background-color:#FFFCF2;">$</span><span style="color:#0000FF;background-color:#FFFCF2;">1</span>")<br />
: <span style="color:#EE7264;background-color:#FFFCF2;">A_LoopField</span><br />
found := <span style="color:#4A0095;background-color:#FFFCF2;">FileExist</span>(str) ? str
"<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>" :
<span style="color:#EE7264;background-color:#FFFCF2;">""</span> , str_sav :=
str<br /><br />
<span style="color:#008000;background-color:#FFFCF2;">;空白区切り or
対応する括弧でチェック 例) [c:\hoge.txt] - AppName</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">If</span>
(!found) {<br />
p="dmy"<br />
<span style="color:#5353FF;background-color:#FFFCF2;">While</span>
(p) { <span style="color:#008000;background-color:#FFFCF2;">;抽出</span><br />
ss := (!p:=<span style="color:#4A0095;background-color:#FFFCF2;">RegExMatch</span>(str,"im)" reg
"|(<span style="color:#800080;background-color:#FFF4FF;">?P</span><sp>(<span style="color:#800080;background-color:#FFF4FF;">?:</span> | )+)", <span style="color:#EE7264;background-color:#FFFCF2;">$</span>))<br />
? str : <span style="color:#EE7264;background-color:#FFFCF2;">""</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">if</span>
(p) && (<span style="color:#EE7264;background-color:#FFFCF2;">$</span>sp) { <span style="color:#008000;background-color:#FFFCF2;">;空白が先に見つかった時</span><br />
ss := <span style="color:#4A0095;background-color:#FFFCF2;">SubStr</span>(str,<span style="color:#0000FF;background-color:#FFFCF2;">1</span>,p<span style="color:#0000FF;background-color:#FFFCF2;">-1</span>)<br />
str := <span style="color:#4A0095;background-color:#FFFCF2;">SubStr</span>(str,p+<span style="color:#4A0095;background-color:#FFFCF2;">strlen</span>(<span style="color:#EE7264;background-color:#FFFCF2;">$</span>sp),<span style="color:#4A0095;background-color:#FFFCF2;">strlen</span>(str)-p)<br />
}<span style="color:#5353FF;background-color:#FFFCF2;">else</span> <span style="color:#5353FF;background-color:#FFFCF2;">if</span> (p) &&
(!<span style="color:#EE7264;background-color:#FFFCF2;">$</span>sp) {
<span style="color:#008000;background-color:#FFFCF2;">;対応する括弧が見つかった時</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">While</span> !ss<br />
ss:=<span style="color:#EE7264;background-color:#FFFCF2;">$%A_Index%</span><br />
str := <span style="color:#4A0095;background-color:#FFFCF2;">SubStr</span>(str,p+<span style="color:#4A0095;background-color:#FFFCF2;">strlen</span>(<span style="color:#EE7264;background-color:#FFFCF2;">$</span>),<span style="color:#4A0095;background-color:#FFFCF2;">strlen</span>(str)-p)<br />
}<br />
<span style="color:#008000;background-color:#FFFCF2;">;パス判定</span><br />
found .= <span style="color:#4A0095;background-color:#FFFCF2;">FileExist</span>(ss) ? ss
"<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br />
: <span style="color:#4A0095;background-color:#FFFCF2;">FileExist</span>(ss:=<span style="color:#4A0095;background-color:#FFFCF2;">RegExReplace</span>(ss,
Trim,"<span style="color:#EE7264;background-color:#FFFCF2;">$</span><span style="color:#0000FF;background-color:#FFFCF2;">1</span>"))
? ss "<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br />
: <span style="color:#EE7264;background-color:#FFFCF2;">""</span><br />
}<br />
}<br /><br />
<span style="color:#008000;background-color:#FFFCF2;">;見つからなかったら空白区切りで左右から削ってってみる。2009.01.23</span><br />
<span style="color:#008000;background-color:#FFFCF2;">; 例1) c:\program
files\hoge.txt - メモ帳</span><br />
<span style="color:#008000;background-color:#FFFCF2;">; 例2) Notepad -
c:\program files\hoge.txt</span><br />
<span style="color:#008000;background-color:#FFFCF2;">; × aaa -
c:\program files\hoge - bbb みたいなのは対応できない。</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">If</span>
(!found) && <span style="color:#4A0095;background-color:#FFFCF2;">Instr</span>(str_sav," "){<br />
<span style="color:#5353FF;background-color:#FFFCF2;">Loop</span>,<span style="color:#0000FF;background-color:#FFFCF2;">2</span> {<br />
<span style="color:#5353FF;background-color:#FFFCF2;">ifNotEqual</span>,found,,
<span style="color:#5353FF;background-color:#FFFCF2;">break</span><br />
str := str_sav<br />
ph := <span style="color:#EE7264;background-color:#FFFCF2;">A_Index</span> <span style="color:#008000;background-color:#FFFCF2;">; ph1:右から削る ph2:左から削る</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">While</span> (<span style="color:#9425A7;background-color:#FFFCF2;">pos</span>:=(ph=<span style="color:#0000FF;background-color:#FFFCF2;">1</span>) ? <span style="color:#4A0095;background-color:#FFFCF2;">Instr</span>(str," ",<span style="color:#EE7264;background-color:#FFFCF2;">False</span>, <span style="color:#0000FF;background-color:#FFFCF2;">0</span>) : <span style="color:#4A0095;background-color:#FFFCF2;">Instr</span>(str," ")){<br />
str := <span style="color:#4A0095;background-color:#FFFCF2;">RegExReplace</span>((ph=<span style="color:#0000FF;background-color:#FFFCF2;">1</span>) ? <span style="color:#4A0095;background-color:#FFFCF2;">SubStr</span>(str,<span style="color:#0000FF;background-color:#FFFCF2;">1</span>,<span style="color:#9425A7;background-color:#FFFCF2;">pos</span><span style="color:#0000FF;background-color:#FFFCF2;">-1</span>)<br />
: <span style="color:#4A0095;background-color:#FFFCF2;">SubStr</span>(str,<span style="color:#9425A7;background-color:#FFFCF2;">pos</span>+<span style="color:#0000FF;background-color:#FFFCF2;">1</span>),"^<span style="color:#800080;background-color:#FFF4FF;">\s</span>*(.+?)<span style="color:#800080;background-color:#FFF4FF;">\s</span>*<span style="color:#EE7264;background-color:#FFFCF2;">$</span>","<span style="color:#EE7264;background-color:#FFFCF2;">$</span><span style="color:#0000FF;background-color:#FFFCF2;">1</span>")<br />
found .= <span style="color:#4A0095;background-color:#FFFCF2;">FileExist</span>(str) ? str .
"<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>" :
<span style="color:#EE7264;background-color:#FFFCF2;">""</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">ifNotEqual</span>,found,,
<span style="color:#5353FF;background-color:#FFFCF2;">break</span><br />
}<br />
}<br />
}<br />
foundAll .= found<br />
}<br /><br />
<span style="color:#5353FF;background-color:#FFFCF2;">if</span>
(<span style="color:#9425A7;background-color:#FFFCF2;">Multi</span> =
"<span style="color:#9425A7;background-color:#FFFCF2;">ALL</span>")<br />
<span style="color:#5353FF;background-color:#FFFCF2;">return</span>
<span style="color:#4A0095;background-color:#FFFCF2;">SubStr</span>(foundAll,<span style="color:#0000FF;background-color:#FFFCF2;">1</span>,<span style="color:#4A0095;background-color:#FFFCF2;">StrLen</span>(foundAll)-<span style="color:#0000FF;background-color:#FFFCF2;">1</span>)<br />
<span style="color:#5353FF;background-color:#FFFCF2;">return</span>
<span style="color:#4A0095;background-color:#FFFCF2;">RegExReplace</span>(foundAll,"m<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>)(<span style="color:#800080;background-color:#FFF4FF;">?:</span>.*<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>){"
<span style="color:#9425A7;background-color:#FFFCF2;">Multi</span><span style="color:#0000FF;background-color:#FFFCF2;">-1</span> "}(.*<span style="color:#EE7264;background-color:#FFFCF2;">$</span>)(<span style="color:#800080;background-color:#FFF4FF;">?:</span>.*<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>)*","<span style="color:#EE7264;background-color:#FFFCF2;">$</span><span style="color:#0000FF;background-color:#FFFCF2;">1</span>")<br />
}<br /><br /><br /></div>
</td>
</tr></table></div>
表示オプション
横に並べて表示:
変化行の前後のみ表示: