SQLの窓

2011年08月14日


文字列を指定してその名前の変数でオブジェクトを作成する : WEB に VBScript ライブラリ

WEB に VBScript ライブラリ

Dim で定義するのと同等の処理となります。
この処理は、関数内でグローバルスコープの変数を作成する事が可能な事を示しています。

※ 拡張子を .vbs にして実行してみて下さい。
' 関数のソースコードを読みだして、関数として定義
strResult = HTTPGet( "http://toolbox.winofsql.jp/vbs/createobject.php" )
' エラー処理は省略しています
ExecuteGlobal strResult 

' 実行中のスクリプトのタイプ
Call GetObj( "WshShell", "WScript.Shell" )
print WshShell.CurrentDirectory

Function HTTPGet( strUrl )

	Dim http

	Set http = CreateObject( "Msxml2.ServerXMLHTTP" )

	on error resume next
	Call http.Open("GET", strUrl, False )
	if Err.Number <> 0 then
		HTTPGet = Empty
		Exit Function
	end if
	on error goto 0

	Call http.Send()

	HTTPGet = http.responseText

End Function

PHP でホスティングされた関数
( ScriptType 関数が別途必要です ) 
<?
header( "Content-Type: text/plain; Charset=shift_jis" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );
?>
REM **********************************************************
REM 実行中のスクリプト別簡易表示
REM **********************************************************
Sub print( strData )

	Dim strType

	strType = ScriptType( )

	Select Case strType
		Case 1
			Wscript.Echo strData
		Case 2
			alert( strData )
		Case 3
			Response.Write strData
	End Select

End Sub

REM **********************************************************
REM 文字列を指定して、変数にオブシェクトを作成させる
REM **********************************************************
Function GetObj( strTarget, strObjectName )

	Dim ExecuteString

	ExecuteString = "Dim " & strTarget & " : "
	ExecuteString = ExecuteString & "Set " & strTarget & " = "

	Select Case ScriptType
		Case 1
			ExecuteString = ExecuteString & _
			"WScript.CreateObject("
		Case 2
			ExecuteString = ExecuteString & _
			"CreateObject("
		Case 3
			ExecuteString = ExecuteString & _
			"Server.CreateObject("
		Case Else
			ExecuteString = ExecuteString & _
			"CreateObject("
	End Select

	ExecuteString = ExecuteString & """" & strObjectName & """" & ")"

	ExecuteGlobal ExecuteString

End Function

関連する記事

実行中のスクリプトのタイプを知る : WEB に VBScript ライブラリ


posted by lightbox at 2011-08-14 17:36 | VBScript | このブログの読者になる | 更新情報をチェックする

実行中のスクリプトのタイプを知る : WEB に VBScript ライブラリ

WEB に VBScript ライブラリ

特に実用的なコードではありませんし、タイプと言っても WSH か HTA か ASP
なので、使い方が相当違うのでライブラリ側を完全の共用する場合にのみ必要
になって来ます。

Msxml2.ServerXMLHTTP の作成として CreateObject を使っていますが、単純な
スクリプトの場合の場合は必ず最初にこの関数だけはクライアントに必要なので
スクリプトのタイプは無視してどれでも一応実行可能な CreateObject で作成し
ています。
( 本来は、WSH は、WScript.CreateObject で、ASP は、Server.CreateObject )
' 関数のソースコードを読みだして、関数として定義
strResult = HTTPGet( "http://toolbox.winofsql.jp/vbs/createobject.php" )
if not IsEmpty( strResult ) and Left( strResult, 3 ) = "REM" then
	' 関数定義の実行
	ExecuteGlobal strResult
else
	if IsEmpty( strResult ) then
		MsgBox(Err.Description)
	else
		MsgBox(strResult)
	end if
	Wscript.Quit
end if

' 実行中のスクリプトのタイプ
MsgBox( ScriptType() )

Function HTTPGet( strUrl )

	Dim http

	Set http = CreateObject( "Msxml2.ServerXMLHTTP" )

	on error resume next
	Call http.Open("GET", strUrl, False )
	if Err.Number <> 0 then
		HTTPGet = Empty
		Exit Function
	end if
	on error goto 0

	Call http.Send()

	HTTPGet = http.responseText

End Function

以下は、php でホスティングしている VBScript の関数です
<?
header( "Content-Type: text/plain; Charset=shift_jis" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );
?>
REM **********************************************************
REM 実行中のスクリプトのタイプの取得
REM 1:WSH, 2:HTA, 3:ASP, 0:不明
REM **********************************************************
Function ScriptType( )

	Dim nType

	nType = 0

	if IsObject( Wscript ) then
		nType = 1
	else
		if IsObject( window ) then
			nType = 2
		else
			if IsObject( Server ) then
				nType = 3
			end if
		end if
	end if

	ScriptType = nType

End Function

関連する記事

VBScriptの関数定義をWEB上に置いて、Msxml2.ServerXMLHTTP で読みだして PCで使用する



posted by lightbox at 2011-08-14 17:12 | VBScript | このブログの読者になる | 更新情報をチェックする

2011年08月12日


VBS : My Documents フォルダのような、特殊フォルダのサイズを取得する

以下のリンク先は英文ですが、Shell オブジェクトで利用する特殊フォルダのコード一覧です。
ShellSpecialFolderConstants Enumeration (Windows)

通常のファイルでは、Shell オブジェクトは必要ありません。FileSystemObject
に直接パスを渡してサイズを取得する事ができます。
Const MY_DOCUMENTS = &H5
 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objShell = CreateObject("Shell.Application") 
 
Set objFolder = objShell.Namespace(MY_DOCUMENTS) 
Set objFolderItem = objFolder.Self 
strPath = objFolderItem.Path 
 
Set objFolder = objFSO.GetFolder(strPath) 
Wscript.Echo objFolder.Size 
Hey, Scripting Guy!
My Documents フォルダのサイズを判断する方法はありますか


posted by lightbox at 2011-08-12 09:23 | VBS + オブジェクト | このブログの読者になる | 更新情報をチェックする

VBS : コンピュータから c$ 共有を一時的に削除

まず、共有名の一覧は以下で取得します
( 削除後の確認に使用します )
strComputer = "."  
  
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")  
Set colItems = objWMIService.ExecQuery("Select * From Win32_Share")  
  
For Each objItem in colItems  
    Wscript.Echo objItem.Name  
Next 

以下の解説にもありますが、C$ は一時的に削除され、再起動すると復活します

Hey, Scripting Guy! コンピュータから C$ 共有を削除する方法はありますか
strComputer = "." 
 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 
 
Set colShares = objWMIService.ExecQuery _ 
    ("Select * from Win32_Share Where Name = 'C$'") 
 
For Each objShare in colShares 
    objShare.Delete 
Next





posted by lightbox at 2011-08-12 08:57 | VBS + WMI | このブログの読者になる | 更新情報をチェックする

2011年08月11日


「フリーフォントでキーボード画像作成」にキーを強調する機能を追加しました

フリーフォントでキーボード画像作成

以下は、「I LOVE YOU」をタイプする場合のキーを強調しています



もともと、パソコン初心者向けの解説用画像が欲しくて作ったアプリケーションです。ですが、いままでキーボード配置内の文字のみをいろいろなフリーフォントで作成する「素材ツール」でしかなかったのと、昨日また本来の目的がさらに必要になったたので、タイプした文字列に○を付ける機能を追加しました



ご自由にお使い下さい。


※ いずれパージョンアップしますが、○を表すフォントが元のフォントを使っている為、○文字が無いフォントでは利用できません。あと、色も現在青固定です。
バージョンアップしました



posted by lightbox at 2011-08-11 23:31 | 記録 | このブログの読者になる | 更新情報をチェックする

2011年08月10日


Microsoft Office WORD 2007 の気になるショートカット

プロジェクタでデータを見せる時に、CTRL + F1 は必須ですね。
あと、フリーフォントで簡単ロゴ作成 | キーボード画像作成 | はんこ画像作成 から
貼り付ける時に、「形式を選択して貼り付け」が必要です。

Office

■ CTRL + F1 : リボンの表示・非表示
■ CTRL + ALT + V : 形式を選択して貼り付け
■ F12 : 名前を付けて保存
■ CTRL + F2 : プリントプレビュー
( WORD では スイッチする )
■ CTRL + SHIFT + F12 : 印刷

WORD

■ CTRL + SHIFT + < : 選択したフォントを小さく
■ CTRL + SHIFT + > : 選択したフォントを大きく
■ CTRL + ALT + I : プリントプレビュー( 表示・非表示スイッチ )
■ CTRL + ALT + PERIOD : … を表示


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

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

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

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

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


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

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

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

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

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



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり