VistaのIEの「お気に入りセンタ」の選択項目が薄い。
運用で代替するしかないようです。
「お気に入りセンタ」にフォーカスを移動すれば、濃くなります。
なので「お気に入りセンタ」を固定しない。
あるいは「お気に入りセンタ」を固定する場合は、
バックグラウンドをクリックする。なければ、
どこかを右クリックする。
フィードや履歴と切り替える。
ショートカットキーの Alt+C か Ctrl+I を使う。
運用で代替するしかないようです。
「お気に入りセンタ」にフォーカスを移動すれば、濃くなります。
なので「お気に入りセンタ」を固定しない。
あるいは「お気に入りセンタ」を固定する場合は、
バックグラウンドをクリックする。なければ、
どこかを右クリックする。
フィードや履歴と切り替える。
ショートカットキーの Alt+C か Ctrl+I を使う。
分けて使うと。狭くて、使いにくいので、境界を上端に移動し、「お気に入りリンク」と「フォルダ」を切り替えて使う。
「開く」ダイアログや「名前をつけて保存」ダイアログでも同様です。
C:\Users\ユーザ\Links
shell:Links
フォルダへのショートカット以外のものを入れても、エクスプローラの「お気に入りリンク」に現れません。
「お気に入りリンク」は「開く」ダイアログや「名前をつけて保存」ダイアログでも使われます。
つまり、プレースバー(Places Bar)の後継でもあるようですが、プレースバー(Places Bar)も、まだ使われるケースがあるようです。
ツールバーの「リンク」は、「お気に入り」の中の「リンク」です。
C:\Users\ユーザ\Favorites\リンク
shell:Favorites\リンク
実行ファイルへのショートカットを入れます。
IEの「お気に入りバー」は、「お気に入り」の中の「お気に入りバー」です。
C:\Users\ユーザ\Favorites\Links
shell:Favorites\Links
インターネットショートカットを入れます。
エクスプローラの「お気に入りリンク」は、これまた別です。
C:\Users\ユーザ\Links
shell:Links
フォルダへのショートカットを入れます。
Vistaのタスクバーのツールバーは最初、タスクバーの左端にあるので、これは閉じます。
何かのフォルダを画面の左側面にドロップすると、ツールバーになります。
Adobe Readerはサーバなんですね。だから、1プロセスが基本形。
なので、AcroRD32.exeを複数、起動しても、1プロセスになります。
2番手以降はクライアント、1番手のサーバに処理を依頼して、完了を待たず、即終了。
逆に印刷が完了しても、1プロセスの場合は終了しないで、サーバとして居座ります。
これらの特性に逆らうには、/nで別プロセスにする。
印刷完了でプロセスを終了させるには、先にプロセスを1個起こしておいて、/n /tで印刷する。
印刷完了でプロセスが終了した後に、先に起こしたプロセスを終了させる。
もし、/nがないと、1番手のサーバに処理を依頼して、即終了するため、印刷完了の待ち合わせができません。
そのため、複数ファイルを連続印刷すると、印刷処理が集中してパンクしたり、順番が不定になったりします。
もし、先にプロセスを1個起こしておかないと、印刷が完了しても、そのプロセスが終了しないため、永久に待ちが解けません。
ところで、Adobe Reader 9からインプロセスサーバに変わりました。
Adobe Reader 8までは、アウトプロセスサーバだったので、IEでPDFファイルを開くと、AcroRD32.exeのプロセスができましたが、Adobe Reader 9からはインプロセスサーバに変わったので、AcroRD32.exeのプロセスはできません。
例えば、GetObject(PDFファイル)で、AcroRD32.exeのプロセスができることを期待していると、外れます。
XP Home Editionの場合は、WSHでやるのが素直ですが、無理矢理バッチでやると。
PdfPrintHE.CMD PDFファイル...(複数可、ワイルドカード可)
@echo off
setlocal
set ACTIVE=
for /f %%I in ('start /min /wait /b mshta.exe vbscript:execute("createobject(""scripting.filesystemobject"").getstandardstream(1).write createobject(""wscript.shell"").appactivate(""adobe reader""):close:"^)') do set ACTIVE=%%I
if /i %ACTIVE%==true goto :STARTED
START ACRORD32.EXE /n /h
:STARTING
for /f %%I in ('start /min /wait /b mshta.exe vbscript:execute("createobject(""scripting.filesystemobject"").getstandardstream(1).write createobject(""wscript.shell"").appactivate(""adobe reade""):close:"^)') do if /i %%I==false goto :STARTING
:STARTED
for %%I in (%*) do START /WAIT ACRORD32.EXE /n /t %%I
if /i %ACTIVE%==false start /min /wait /b mshta.exe vbscript:execute("set wshell=createobject(""wscript.shell""):if wshell.appactivate(""adobe reade"") then wshell.sendkeys ""^q"":close:")
ここで、
appactivate("adobe reader")
と
appactivate("adobe reade")
の微妙な違いには意味があります。後者は前方一致です。
XP Pro以上なら、
PdfPrintXP.CMD PDFファイル...(複数可、ワイルドカード可)
@echo off
setlocal
set /a n=0
for /f "delims=" %%I in ('tasklist /nh /fi "imagename eq acrord32.exe"') do set /a n+=1
if not %n%==0 goto :STARTED
START ACRORD32.EXE
:STARTING
ping -n 2 localhost >NUL
for /f "delims=" %%I in ('tasklist /nh /fi "windowtitle eq Adobe Reader" /fi "imagename eq acrord32.exe"') do goto :STARTED
goto :STARTING
:STARTED
for %%I in (%*) do START /WAIT ACRORD32.EXE /n /t %%I
if %n%==0 taskkill /im ACRORD32.EXE
アプリがしっかり立ち上がるのを待ち合わせる必要があります。
/pの場合は、コマンドで印刷完了の待ち合わせができないので、1コマンドで複数ファイルを指定しちゃいます。
START ACRORD32.EXE /p /h "ファイル1" "ファイル2" ...
/tの場合は、1ファイル1コマンドで待ち合わせします。
START ACRORD32.EXE
START /WAIT ACRORD32.EXE /n /t "ファイル1"
START /WAIT ACRORD32.EXE /n /t "ファイル2"
...
最終的にアプリが1個残ります。
XP Pro以上なら、
setlocal
set /a n=0
for /f "delims=" %%I in ('tasklist /nh /fi "imagename eq acrord32.exe"') do set /a n+=1
if %n%==0 START ACRORD32.EXE & ping -n 2 localhost >NUL
START /WAIT ACRORD32.EXE /n /t "ファイル1"
START /WAIT ACRORD32.EXE /n /t "ファイル2"
...
if %n%==0 taskkill /im ACRORD32.EXE
XP Home Editionの場合は、TLIST.EXEとKILL.EXEを入手して代替するか、WSHで。
例えば、fso.GetFile("長いパス名").ShortPath で簡単に短いパス名に変えられそうですが、fso.GetFile("260文字以上の長いパス名").ShortPath はエラーになって使えません。
そこで、ディレクトリ階層を上に遡って、上から順に短くして行きます。
Set fso=CreateObject("Scripting.FileSystemObject")
MsgBox GetShortPathName("長~いパス名")
Function GetShortPathName(Path)
GetShortPathName=Path
If Len(Path)>259 Then
GetShortPathName=fso.BuildPath(GetShortPathName(fso.GetParentFolderName(Path)),fso.GetFileName(Path))
If Len(GetShortPathName)>259 Then Exit Function
End If
If fso.FileExists(GetShortPathName) Then
GetShortPathName=fso.GetFile(GetShortPathName).ShortPath
Else
GetShortPathName=fso.GetFolder(GetShortPathName).ShortPath
End If
End Function
最近のコメント