2009年06月10日


デスクトップのショートカットのアイコン情報を取得する


ブラウザでダウンロード

目的とは直接関係ありませんが、処理結果を容易に確認できるように、
Cscript.exe で強制的に実行するようになっています。

※ この後、dll/exe等からアイコンを画像化 を使用する予定になっています

Crun が実行されると、自分自身を実行しているのが Wscript.exe か
Cscript.exe か判断して、Cscript.exe で無い場合は Cscript.exe で
再度実行し、自分自身は終了します
' **********************************************************
' 1) デスクトップ一覧
' 2) 一覧中のショートカットからアイコン情報を取得
' **********************************************************
Call Crun()

Set Shell = WScript.CreateObject( "Shell.Application" )
Set WshShell = WScript.CreateObject( "WScript.Shell" )

' デスクトップ
Set objFolder = Shell.NameSpace( 0 )

Set objFolderItems = objFolder.Items()
' 一覧の数
nCount = objFolderItems.Count

' デスクトップ一覧の列挙
For i = 0 to nCount - 1

	strPath = objFolderItems.Item(i).Path
	' パスをピリオドで分解
	aData  = Split( strPath, "." )
	' 配列の上限値より、一番左端にある拡張子を取得
	strTarget = aData( Ubound( aData ) )
	' 大文字に変換
	strTarget = Ucase( strTarget )

	if strTarget = "LNK" then
		Set oShellLink = WshShell.CreateShortcut(strPath)
		strTarget = oShellLink.IconLocation
		strTarget = WshShell.ExpandEnvironmentStrings(strTarget)
		if strTarget = ",0" then
			' アイコンは、TargetPath の 0 番目のアイコンを使用
			Wscript.Echo oShellLink.TargetPath
		else
			' アイコンは、strTarget を , で分解して抽出
			Wscript.Echo strTarget
		end if
	end if

Next

' **********************************************************
' Cscript.exe で実行を強制
' ウィンドウをアクティブにし、最大化ウィンドウとして表示(3)
' Cscript.exe の実行終了後 pause で一時停止
' **********************************************************
Function Crun( )

	Dim str,WshShell

	str = WScript.FullName
	str = Right( str, 11 )
	str = Ucase( str )
	if str <> "CSCRIPT.EXE" then
		str = WScript.ScriptFullName

		Set WshShell = CreateObject( "WScript.Shell" )

		strParam = " "
		For I = 0 to Wscript.Arguments.Count - 1
			if instr(Wscript.Arguments(I), " ") < 1 then
				strParam = strParam & Wscript.Arguments(I) & " "
			else
				strParam = strParam & Dd(Wscript.Arguments(I)) & " "
			end if
		Next
		Call WshShell.Run( "cmd.exe /c cscript.exe " & Dd(str) & strParam & " & pause", 3 )
		WScript.Quit
	end if

End Function
' **********************************************************
' 文字列を " で囲む関数
' **********************************************************
Function Dd( strValue )

	Dd = """" & strValue & """"

End function

■ 関連する記事
Cscript.exe で実行を強制


タグ:WSH
posted by at 2009-06-10 16:01 | VBScript | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します