「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;">?&lt;=</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> --&gt; " 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>  -&gt; " . 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>  -&gt; " .  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>  -&gt; "<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;">;対応する括弧 (&lt;&gt; と " " は↑の無効文字で対応)</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;">?&lt;=</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;">?&lt;=</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;">?&lt;=</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>|;|&lt;|&gt;|/|<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>&lt;sp&gt;(<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) &amp;&amp; (<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) &amp;&amp; (!<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) &amp;&amp; <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>

表示オプション

横に並べて表示:
変化行の前後のみ表示:
記事メニュー
人気記事ランキング
目安箱バナー