2022年5月
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年6月 | トップページ | 2009年8月 »

2009年7月31日 (金)

インターネットエクスプローラの起動スイッチ

IExplore.exeのオプション

-Embedding

COM用、非表示、ホームページを開かない。

保護モード: 無効 -> 有効 のNavigate()でIEウィンドウが家出する。

-nohome

ホームページを開かない。表示、なぜか新プロセスの代用に。

例えば、IExplore.exe URLは新プロセスになるとは限らないが、IExplore.exe -nohome URLは必ず新プロセスになる。

-new

(obsolete) 昔は、新プロセスだったが、今は、逆に既存プロセス同居に。無視なのかも。

-e

(obsolete) 昔は、エクスプーラに化かす、だったが、今は、逆に新プロセスに。ホームページを開く。

2009年7月29日 (水)

Vistaで、IE.Navigate()する。IEオブジェクトを乗り継ぐ。(その2)

(マイコンピュータゾーンや信頼済みサイトから)インターネットゾーンなどに、IE.Navigate()するとき、保護モード: 無効 -> 有効 の場合は、現IEオブジェクトはそのままで、新規に別のIEオブジェクトとウィンドウが生成されるようです。
しかし、GUIでは、そういうことはないので、スクリプトでも可能なはずです。

Set wShell=CreateObject("WScript.Shell")
Path=wShell.RegRead("HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\iexplore.exe\")
Set Shell=CreateObject("Shell.Application")
Randomize
Do
  FullName=UCase(Mid(Path,1,1))
  For k=2 To Len(Path)
    If Fix(Rnd*2) Mod 2 Then
      FullName=FullName & UCase(Mid(Path,k,1))
    Else
      FullName=FullName & LCase(Mid(Path,k,1))
    End If
  Next
  For k = Shell.Windows().Count To 1 Step -1
    If Shell.Windows().Item(k - 1).FullName = FullName Then Exit For
  Next
Loop While k
wShell.Run """" & FullName & """ -nohome",0
Do
  For Each ie In Shell.Windows()
    If ie.Visible Then
    ElseIf ie.ReadyState<>0 Then
    ElseIf ie.LocationURL<>"" Then
    ElseIf ie.FullName=FullName Then
      Exit Do
    End If
  Next
  WScript.Sleep 100
Loop
ie.Visible=True

Navigate URL

Sub Navigate(URL)
hwnd=ie.HWND
LocationURL=ie.LocationURL
ie.Navigate URL
Do
  If TypeName(ie)<>"IWebBrowser2" Then
    For Each ie In Shell.Windows()
      If hwnd=ie.HWND Then Exit For
    Next
  End If
  If ie_LocationURL(ie)<>"" Then If LocationURL<>ie_LocationURL(ie) Then If Not ie.Busy Then If ie.ReadyState=4 Then Exit Do
  WScript.Sleep 100
Loop
MsgBox ie.LocationURL
End Sub

Function ie_LocationURL(ie)
On Error Resume Next
ie_LocationURL=ie.LocationURL
End Function

ie.FullNameは、ドライブ名を除き、文字大小が保存される。ドライブ名は大文字固定。

2009年7月28日 (火)

Vistaで、IE.Navigate()する。IEオブジェクトを乗り継ぐ。

(インターネットゾーンから)インターネットゾーンなどに、IE.Navigate()するとき、保護モード: 有効 -> 有効 の場合は、従来どおり。

Set ie=CreateObject("InternetExplorer.Application")
ie.Visible=True
ie.Navigate URL
Do While ie.Busy Or ie.ReadyState<>4
  WScript.Sleep 100
Loop
MsgBox ie.LocationURL

(インターネットゾーンから)マイコンピュータゾーンや信頼済みサイトなどに、IE.Navigate()するとき、保護モード: 有効 -> 無効 の場合は、IEオブジェクトが勝手に消滅して、別のIEオブジェクトが生成されるようです。
ただし、IEウィンドウは継承されるようなので、それを目印にすれば再発見できます。

Set Shell=CreateObject("Shell.Application")
Set ie=CreateObject("InternetExplorer.Application")
ie.Visible=True
hwnd=ie.HWND
LocationURL=ie.LocationURL
ie.Navigate URL
Do
  If TypeName(ie)<>"IWebBrowser2" Then
    For Each ie In Shell.Windows()
      If hwnd=ie.HWND Then Exit For
    Next
  End If
  If ie_LocationURL(ie)<>"" Then If LocationURL<>ie_LocationURL(ie) Then If Not ie.Busy Then If ie.ReadyState=4 Then Exit Do
  WScript.Sleep 100
Loop
MsgBox ie.LocationURL

Function ie_LocationURL(ie)
On Error Resume Next
ie_LocationURL=ie.LocationURL
End Function

2009年7月26日 (日)

Vistaで制限付きサイトを「Web ページ、HTML のみ (*.htm;*.html)」で保存すると、インターネットゾーンになる。

以前のXP+IE6では、Web ページを保存した場合、
「Web アーカイブ、単一のファイル (*.mht)」なら「Content-Location: URL」
「Web ページ、完全 (*.htm;*.html)」なら、Mark Of The Web の <!-- saved from url=(00nn)URL -->
で、セキュリティゾーンの情報が付きました。
しかし、「Web ページ、HTML のみ (*.htm;*.html)」で保存したときは、何の情報も付かず、マイコンピュータゾーンになりました。

ところが、Vista+IE8では、保護モードで保存すると、ファイルにアクセス制御の「整合性レベル:低」という属性が付きます。
これは「Web ページ、HTML のみ (*.htm;*.html)」の場合に限りません。
そして、IEで「整合性レベル:低」という属性が付いたファイルを開くとインターネットゾーンになります。

2009年7月22日 (水)

お気に入り、お気に入りバー、リンクにスクリプトやショートカットを入れるときは、移動で入れる。

お気に入り、お気に入りバー、リンクにスクリプトやショートカットを新規作成(コピーを含む)すると、起動時に「開いているファイル - セキュリティの警告」が出ます。
なので、他所で作るかコピーしたものを移動します。
そこで作ってしまったものは、他所へコピーして、それを移動します。


これも、アクセス制御の「整合性レベル:低」という属性が付かないようにするためです。

2009年7月21日 (火)

ショートカットの起動で、なぜか「開いているファイル - セキュリティの警告」が出る。

Vista+IE8で、アクセサリの電卓をクイック起動バーに入れたら、警告が出るようになりました。

開いているファイル - セキュリティの警告
このファイルを開きますか?
名前: C:\Users\%username%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\Calculator.lnk
発行元: 不明な発行元
種類: ショートカット
発信元: C:\Users\%username%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\Calculator.lnk

ZoneIDの場合と違って、このケースでは、「□この種類のファイルであれば常に警告する(W)」がありません。

元のショートカットとバイナリ比較しても同じです。代替ストリ-ムもありません。プロパティを見ても変わりません。「ブロックの解除」もありません。
コピーして、コピーのほうを使えば直ります。

原因は、たぶん、アクセサリの電卓をリンクにコピーしてからクイック起動に移動したのではないかと思う。


これも、アクセス制御の「整合性レベル:低」という属性が付いたせいです。
ShellExecute()で、この属性を見て「開いているファイル - セキュリティの警告」を出しているのは、Attachment Execution Service(添付ファイル実行サービスor添付ファイルマネージャ)です。

2009年7月18日 (土)

Vistaでは、ShellWindows.Item()が「現在のシェル」から「デスクトップ シェル」に変更された。

「デスクトップ シェル」が取れるようになったのは朗報ですが、「現在のシェル」が取れなくなったのは、影響大です。

IE7から「現在のIE」が取れなくなりましたが、これはコンテキストメニュー拡張で代替しました。
Vistaからの「現在のシェル」が取れなくなったのは、どう代替するか?

ディレクトリのバックグラウンドのコンテキストメニューで代替します。

[HKEY_CLASSES_ROOT\Directory\Background\shell\メニュー名\command]
@="wscript.exe \"C:\\どこか\\現在のシェル.VBS\" %V"

%Vでディレクトリパスが取れるので、それを目印に探します。

For Each ie In CreateObject("Shell.Application").Windows()
  If InStr(LCase(ie.FullName),"explorer.exe") Then If ie_Document_Folder_Self_Path=WScript.Arguments.Item(0) Then Exit For
Next
If IsEmpty(ie) Then
  MsgBox "Not Found"
Else
  MsgBox ie.Document.Folder.Self.Path
End If

Function ie_Document_Folder_Self_Path
On Error Resume Next
ie_Document_Folder_Self_Path=ie.Document.Folder.Self.Path
End Function

同じディレクトリパスで複数のエクスプローラを開いていると、最初のが取れちゃいます。

2009年7月17日 (金)

Vistaではショートカットへのドロップが使えない!が修正された。

Vistaではショートカットへのドロップが使えない!
http://scripting.cocolog-nifty.com/blog/2008/12/vista-7deb.html

はその後、障害と認めて修正したようですね。(SP2)

Windows Vista ベースのコンピューター上のショートカットに複数のファイルをドラッグするときに実行可能ファイルを開始できないことがあります。
http://support.microsoft.com/kb/943059/ja

2009年7月16日 (木)

Vistaで、任意のフォルダやファイルをインターネットゾーンにする。

XPでは、「shell:cache」以下のフォルダやファイルだけがインターネットゾーンになりました。

Vistaでは、任意のフォルダやファイルをインターネットゾーンにできます。

「お気に入り」以下のフォルダで、ファイルやフォルダを作成するとインターネットゾーンになります。それを他の場所へ移動しても変わりません。

この属性は、フォルダやvbsファイルの場合は、移動では消えませんが、コピーでは消えます。

この属性の有無は、ファイルの場合、プロパティでは分かりません。フォルダの場合、エクスプローラのステータスバーでは分かりません。そのフォルダに新規作成で、テキストファイルを作って、拡張子をvbsに変えて、起動してみれば分かります。「開いているファイル - セキュリティの警告」でブロックされます。あるいは、拡張子をhtmに変えて、開いてみれば、IEのステータスバーで分かります。


これは、アクセス制御の「整合性レベル:低」という属性です。

表示は、

icacls フォルダorファイル

 Mandatory Label\Low Mandatory Level:(I)(NW)

設定は、

icacls フォルダ /setintegritylevel (OI)(CI)low

icacls ファイル /setintegritylevel low

解除は、?

2009年7月15日 (水)

Vistaの「コマンド ウィンドウをここで開く」をシフトキー抜きに変える。

Shift + 右クリック は面倒なので、シフトキー抜きに変えましょう。

Extended値を削除するか、名前を変えて無効化します。

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmd]
"Extended"=-

[HKEY_CLASSES_ROOT\Directory\shell\cmd]
"Extended"=-

一方、「パスとしてコピー」もシフトキーが面倒なので、できれば変えたいところですが、こちらはできそうにない。。。

2009年7月14日 (火)

Vistaのエクスプローラで、旧リンクバーの代替に、「お気に入りリンク」を使う。

C:\Users\%username%\Links
shell:Links

エクスプローラの「お気に入りリンク」にアプリのショートカットを入れると、「詳細 >>」から起動することができます。
フォルダへのショートカット以外のものを入れても、「お気に入りリンク」に現れません。
しかし、項目が溢れたときの「詳細 >>」をクリックすると、フォルダへのショートカット以外のものも現れます。
これを利用します。

2009年7月13日 (月)

Vistaのエクスプローラで、旧リンクバーの代替に、ディレクトリのバックグラウンドのコンテキストメニューを使う。

VistaのIEの旧リンクバーの代替には、お気に入りバーがありますが、エクスプローラにはありません。

そんなとき、ディレクトリのバックグラウンドのコンテキストメニューが使えます。

HKCR\directory\background\shell\

commandのパラメタは、%Vでディレクトリパスが取れます。

「コマンドウィンドウをここで開く」を参考にするとよいでしょう。

2009年7月12日 (日)

コマンドラインから「デスクトップの表示」。

start shell:::{3080F90D-D7AD-11D9-BD98-0000947B0257}

デスクトップを開く、のとはちがいますYO!

昔の「デスクトップの表示.SCF」の後継です。ToggleDesktopです。

コマンドラインから「ウィンドウを切り替える」。

start shell:::{3080F90E-D7AD-11D9-BD98-0000947B0257}

2009年7月11日 (土)

Vistaの「ファイル名を指定して実行」の代わりに、エクスプローラの「アドレスバー」を使う。

IEの「アドレスバー」は使えませんが、エクスプローラの「アドレスバー」は使えます。
ファイルが見つからないときは、IEが開くのがちょっと。。。

タスクバーに「アドレスバー」を置いても、代用できますが、場所を取るので、お好みで。

2009年7月 9日 (木)

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

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

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

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

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

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

2009年7月 8日 (水)

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

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

2009年7月 7日 (火)

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

C:\Users\%username%\Links
shell:Links

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

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

2009年7月 6日 (月)

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

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

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

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

2009年7月 5日 (日)

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

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

« 2009年6月 | トップページ | 2009年8月 »