2009年7月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

最近のコメント

最近のトラックバック

無料ブログはココログ

2009年7月 9日 (木)

VistaのIEの「お気に入りセンタ」の選択項目が薄い。

運用で代替するしかないようです。

「お気に入りセンタ」にフォーカスを移動すれば、濃くなります。

なので「お気に入りセンタ」を固定しない。

あるいは「お気に入りセンタ」を固定する場合は、
バックグラウンドをクリックする。なければ、
どこかを右クリックする。
フィードや履歴と切り替える。

ショートカットキーの Alt+C か Ctrl+I を使う。

2009年7月 8日 (水)

Vistaのエクスプローラの「お気に入りリンク」と「フォルダ」の境界は上端に移動する。

分けて使うと。狭くて、使いにくいので、境界を上端に移動し、「お気に入りリンク」と「フォルダ」を切り替えて使う。
「開く」ダイアログや「名前をつけて保存」ダイアログでも同様です。

2009年7月 7日 (火)

Vistaのエクスプローラの「お気に入りリンク」には、フォルダへのショートカットを入れる。

C:\Users\ユーザ\Links
shell:Links

フォルダへのショートカット以外のものを入れても、エクスプローラの「お気に入りリンク」に現れません。

「お気に入りリンク」は「開く」ダイアログや「名前をつけて保存」ダイアログでも使われます。
つまり、プレースバー(Places Bar)の後継でもあるようですが、プレースバー(Places Bar)も、まだ使われるケースがあるようです。

2009年7月 6日 (月)

Vistaの「リンク」は、用途別に3分割されました。

ツールバーの「リンク」は、「お気に入り」の中の「リンク」です。
C:\Users\ユーザ\Favorites\リンク
shell:Favorites\リンク
実行ファイルへのショートカットを入れます。

IEの「お気に入りバー」は、「お気に入り」の中の「お気に入りバー」です。
C:\Users\ユーザ\Favorites\Links
shell:Favorites\Links
インターネットショートカットを入れます。

エクスプローラの「お気に入りリンク」は、これまた別です。
C:\Users\ユーザ\Links
shell:Links
フォルダへのショートカットを入れます。

2009年7月 5日 (日)

Vistaのタスクバーのツールバーは、画面の左側面に置く。

Vistaのタスクバーのツールバーは最初、タスクバーの左端にあるので、これは閉じます。
何かのフォルダを画面の左側面にドロップすると、ツールバーになります。

2009年6月19日 (金)

Adobe Readerはマルチインスタンスサーバです。

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のプロセスができることを期待していると、外れます。

2009年6月18日 (木)

バッチファイルで複数のPDFファイルを連続印刷する。(その3)

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")
の微妙な違いには意味があります。後者は前方一致です。

2009年6月17日 (水)

バッチファイルで複数のPDFファイルを連続印刷する。(その2)

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

アプリがしっかり立ち上がるのを待ち合わせる必要があります。

2009年6月16日 (火)

バッチファイルで複数のPDFファイルを連続印刷する。

/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で。

2009年6月11日 (木)

260文字以上の長いパス名を短いパス名に変える。

例えば、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

«「名前を付けて画像を保存」するコンテキストメニュー拡張(その2)