管理人により削除 さん 2005年 05月 06日 12時 58分 45秒
URL:管理人により削除

管理人により削除

ばんのしゃーによかばんた さん 2005年 05月 05日 15時 52分 05秒

>AKA さん 2004年 12月 05日 04時 39分 36秒
>2. いくつかの選択肢から選択するようなテキストボックスはどんなオブジェクトを使うのでしょ>うか?
>ワードパッドでフォントを選択する時のようなものがやりたいのですが・・・

HTAで、MS Formsを使う例。

――――――――――――――――――――――――――――――――――――――
<HTML><HEAD>
<SCRIPT language=vbscript>
Sub bdy_onload()
ComboBox.AddItem "11111"
ComboBox.AddItem "22222"
End Sub
</SCRIPT>

<SCRIPT language=vbscript event=change for=ComboBox>
MsgBox ComboBox.Value
</SCRIPT>
</HEAD>
<BODY id=bdy onload=bdy_onload>
<OBJECT id=ComboBox classid=CLSID:8BD21D30-EC42-11CE-9E0D-00AA006002F3>
<PARAM NAME="VariousPropertyBits" VALUE="746604571">
<PARAM NAME="BackColor" VALUE="2147483653">
<PARAM NAME="ForeColor" VALUE="2147483656">
<PARAM NAME="MaxLength" VALUE="0">
<PARAM NAME="BorderStyle" VALUE="0">
<PARAM NAME="ScrollBars" VALUE="0">
<PARAM NAME="DisplayStyle" VALUE="3">
<PARAM NAME="MousePointer" VALUE="0">
<PARAM NAME="Size" VALUE="2540;635">
<PARAM NAME="PasswordChar" VALUE="0">
<PARAM NAME="ListWidth" VALUE="0">
<PARAM NAME="BoundColumn" VALUE="1">
<PARAM NAME="TextColumn" VALUE="65535">
<PARAM NAME="ColumnCount" VALUE="1">
<PARAM NAME="ListRows" VALUE="8">
<PARAM NAME="cColumnInfo" VALUE="0">
<PARAM NAME="MatchEntry" VALUE="1">
<PARAM NAME="ListStyle" VALUE="0">
<PARAM NAME="ShowDropButtonWhen" VALUE="2">
<PARAM NAME="ShowListWhen" VALUE="1">
<PARAM NAME="DropButtonStyle" VALUE="1">
<PARAM NAME="MultiSelect" VALUE="0">
<PARAM NAME="Value" VALUE="">
<PARAM NAME="Caption" VALUE="">
<PARAM NAME="PicturePosition" VALUE="458753">
<PARAM NAME="BorderColor" VALUE="2147483654">
<PARAM NAME="SpecialEffect" VALUE="2">
<PARAM NAME="Accelerator" VALUE="0">
<PARAM NAME="GroupName" VALUE="">
<PARAM NAME="FontName" VALUE="MS Pゴシック">
<PARAM NAME="FontEffects" VALUE="1073741824">
<PARAM NAME="FontHeight" VALUE="240">
<PARAM NAME="FontOffset" VALUE="0">
<PARAM NAME="FontCharSet" VALUE="128">
<PARAM NAME="FontPitchAndFamily" VALUE="2">
<PARAM NAME="ParagraphAlign" VALUE="1">
<PARAM NAME="FontWeight" VALUE="400">
</OBJECT></BODY></HTML>
――――――――――――――――――――――――――――――――――――――
<PARAM>群は、最初、記述せずに、起動、表示させてから、

>ばんのしゃーによかばんた さん 2004年 08月 14日 17時 22分 01秒
>サンプル
>アクティブな(i.e.メモリ上の)HTMLソースを表示するコンテクストメニュー拡張です。

を使って、取り出します。

後は、Excelのヘルプを参照。

※まぁ、こんなの使わなくても、<SELECT><OPTION>を使ったほうが簡単ですけど。


ばんのしゃーによかばんた さん 2005年 05月 05日 15時 51分 34秒

>魔界の仮面弁士 さん 2005年 05月 04日 09時 19分 27秒
>WinXPなど、最近のメモ帳(NOTEPAD.EXE)であれば、
>行番号の表示が可能ですね。([表示]-[ステータスバー])
>Ctrl + G で指定行への移動もできます。
>http://www.atmarkit.co.jp/fwin2k/win2ktips/449texteditor/texteditor.html

知らなかった。使ってなかった。あー勿体無い。
というか、あのヘルプからは絶対に分からないと思う。:-<

管理人により削除 さん 2005年 05月 05日 09時 31分 42秒
URL:管理人により削除

管理人により削除

ばんのしゃーによかばんた さん 2005年 05月 04日 14時 55分 43秒

>AKA さん 2004年 12月 05日 04時 39分 36秒
>2. いくつかの選択肢から選択するようなテキストボックスはどんなオブジェクトを使うのでしょ>うか?
>ワードパッドでフォントを選択する時のようなものがやりたいのですが・・・

選択メニューの豪華版?です。Office Assistantを使用します。
詳細はExcelのヘルプを参照。

Set xl=CreateObject("Excel.Application")
Set Assistant=xl.Assistant
IsAssistantOn=Assistant.On
Assistant.On=True
Assistant.Visible=True
Assistant.Sounds=True
'Assistant.FileName="merlin.acs"

Const msoAnimationIdle = 1
Const msoAnimationGreeting = 2
Const msoAnimationGoodbye = 3
Const msoAnimationBeginSpeaking = 4
Const msoAnimationRestPose = 5
Const msoAnimationCharacterSuccessMajor = 6
Const msoAnimationGetAttentionMajor = 11
Const msoAnimationGetAttentionMinor = 12
     Const msoAnimationSearching = 13
Const msoAnimationPrinting = 18 '(&H12)
Const msoAnimationGestureRight = 19 '(&H13)
     Const msoAnimationWritingNotingSomething = 22 '(&H16)
     Const msoAnimationWorkingAtSomething = 23 '(&H17)
     Const msoAnimationThinking = 24 '(&H18)
Const msoAnimationSendingMail = 25 '(&H19)
     Const msoAnimationListensToComputer = 26 '(&H1A)
Const msoAnimationDisappear = 31 '(&H1F)
Const msoAnimationAppear = 32 '(&H20)
Const msoAnimationGetArtsy = 100 '(&H64)
     Const msoAnimationGetTechy = 101 '(&H65)
Const msoAnimationGetWizardy = 102 '(&H66)
     Const msoAnimationCheckingSomething = 103 '(&H67)
Const msoAnimationLookDown = 104 '(&H68)
Const msoAnimationLookDownLeft = 105 '(&H69)
Const msoAnimationLookDownRight = 106 '(&H6A)
Const msoAnimationLookLeft = 107 '(&H6B)
Const msoAnimationLookRight = 108 '(&H6C)
Const msoAnimationLookUp = 109 '(&H6D)
Const msoAnimationLookUpLeft = 110 '(&H6E)
Const msoAnimationLookUpRight = 111 '(&H6F)
Const msoAnimationSaving = 112 '(&H70)
Const msoAnimationGestureDown = 113 '(&H71)
Const msoAnimationGestureLeft = 114 '(&H72)
Const msoAnimationGestureUp = 115 '(&H73)
Const msoAnimationEmptyTrash = 116 '(&H74)
Assistant.Animation=103

Set Balloon=Assistant.NewBalloon

Const msoBalloonTypeButtons = 0
Const msoBalloonTypeBullets = 1
Const msoBalloonTypeNumbers = 2
'Balloon.BalloonType=2

Const msoButtonSetNone = 0
Const msoButtonSetOK = 1
Const msoButtonSetCancel = 2
Const msoButtonSetOkCancel = 3
Const msoButtonSetYesNo = 4
Const msoButtonSetYesNoCancel = 5
Const msoButtonSetBackClose = 6
Const msoButtonSetNextClose = 7
Const msoButtonSetBackNextClose = 8
Const msoButtonSetRetryCancel = 9
Const msoButtonSetAbortRetryIgnore = 10
Const msoButtonSetSearchClose = 11
Const msoButtonSetBackNextSnooze = 12
Const msoButtonSetTipsOptionsClose = 13
Const msoButtonSetYesAllNoCancel = 14
Balloon.Button=3

Const msoModeModal = 0
Const msoModeAutoDown = 1
Const msoModeModeless = 2
Balloon.Mode=0

Const msoIconNone = 0
Const msoIconAlert = 2
Const msoIconTip = 3
Const msoIconAlertInfo = 4
Const msoIconAlertWarning = 5
Const msoIconAlertQuery = 6
Const msoIconAlertCritical = 7
Balloon.Icon=4

Balloon.Heading="ヘッディング"

Balloon.Text="テキスト"&Assistant.FileName

Balloon.Labels(1).Text="ラベル#1"
Balloon.Labels(2).Text="ラベル#2"

Balloon.CheckBoxes(1).Text="チェックボックス#1"
Balloon.CheckBoxes(2).Text="チェックボックス#2"

Reply=Balloon.Show
'1 label#1
'2 label#2
'-1 ok
'-2 cancel
MsgBox Reply&vbLf&Balloon.CheckBoxes(1).Checked&vbLf&Balloon.CheckBoxes(2).Checked

Assistant.Visible=False
Assistant.On=IsAssistantOn
WScript.Quit



ばんのしゃーによかばんた さん 2005年 05月 04日 14時 55分 15秒

>ばんのしゃーによかばんた さん 2005年 02月 08日 17時 15分 11秒
>フォルダへのリンクをクィック起動に置いてエクスプローラを開くと、
>通常は、フォルダバーの該当フォルダが展開されますが、
>サブフォルダの数が100を超えていると、展開されないばかりか、
>「+」も付きません。これでは展開できません。ぶつぶつ。。。

新「逃げ手」です。

リンク先を該当フォルダの子フォルダにしておきます。
開いたところで、親フォルダに戻れば、「+」が付いてます。


魔界の仮面弁士 さん 2005年 05月 04日 09時 39分 16秒

》やまざき さん 2005年 04月 28日 18時 32分 44秒
> Session_OnEnd()内で
> ログをファイルに書き出すという事をしたいのですが、どうにも出力されません。

最初に疑うのはコードの記述ミス。続いては実行権限です。

まずは、OnEndイベント以外に記述を行い、それが動作するのかどうかを
確認しておいてください。また、下記も確認しておきましょう。
http://support.microsoft.com/kb/277329/en-us

そして、OnEndイベントでは Server.MapPath 等が使えない点や、
Session変数の値が使えない可能性がある(Abandon)点についても、
ソースをよく確認しておいてください。

それと、イベントログに何か問題が記録されていないかも忘れずに。

魔界の仮面弁士 さん 2005年 05月 04日 09時 19分 27秒

》ばんのしゃーによかばんた さん 2005年 05月 03日 15時 25分 26秒
> Windows標準のNotePadやWordPadには、行番号がありませんね。
WinXPなど、最近のメモ帳(NOTEPAD.EXE)であれば、
行番号の表示が可能ですね。([表示]-[ステータスバー])
Ctrl + G で指定行への移動もできます。
http://www.atmarkit.co.jp/fwin2k/win2ktips/449texteditor/texteditor.html

ばんのしゃーによかばんた さん 2005年 05月 03日 15時 25分 26秒

テキストファイルの行番号を知りたいときは、どうしてますか?
一般のエディタは行番号が表示できるのが当たり前ですが、
Windows標準のNotePadやWordPadには、行番号がありませんね。
コンソールコマンドのTYPEやMOREにも行番号がありません。

そこで、代替方法を考えてみました。

コンソールコマンドでは、3案。

FIND /N /V "" <ファイル

(
ECHO L
ECHO Q
ECHO Y
) | EDLIN ファイル | FIND ":"

ECHO. 2>X
FC /N ファイル X | FIND ":"

GUIでは、
――――――――――――――――――――――――――――――――――――――
Set ie=CreateObject("InternetExplorer.Application")
ie.Visible=True
ie.Navigate "about:blank"
Do While ie.Busy Or ie.ReadyState<>4
 WScript.Sleep 1000
Loop
ie.Document.title=WScript.Arguments(0)
Set fso=CreateObject("Scripting.FileSystemObject")
Set File=fso.OpenTextFile(WScript.Arguments(0))
k=0
Rows=Array()
Do While Not File.AtEndOfStream
 k=k+1
 ReDim Preserve Rows(UBound(Rows)+1)
 Rows(UBound(Rows))=k&": "&File.ReadLine()
Loop
File.Close
ie.Document.body.innerText=Join(Rows,vbCrLf)


ばんのしゃーによかばんた さん 2005年 05月 03日 15時 24分 58秒

>ばんのしゃーによかばんた さん 2005年 05月 02日 15時 06分 45秒
>Raise Err.Number

訂正です。
Err.Raise Err.Number

序でに、Err.Raiseを最前面にのさばるMsgBox代わりに使う。

Err.Raise 1,"なんとかかんとか、なんとかかんとか","なんとかかんとか、なんとかかんとか"

無茶苦茶長いメッセージも書けます。処理結果/コードを表示するのにぴったりかも?



シロウト さん 2005年 05月 02日 17時 58分 29秒

こんにちわ。
global.asa内の記述方法について疑問があります。

global.asa内には関数定義ファイルをインクルードするといったような
記述はできるんでしょうか?

何か良い手段をご存知の方は教えて下さい。
よろしくお願いします。

ばんのしゃーによかばんた さん 2005年 05月 02日 15時 06分 45秒

>ばんのしゃーによかばんた さん 2005年 03月 28日 19時 28分 25秒
>>メモ帳さんには自動でバックアップを取って欲しいものです。
>バックアップファイルが残るのはやっぱ鬱陶しいので、ごみ箱に送ります。
>NotePad.VBS
> Call wShell.Run(NotePad&" "&Path,,True)
> Set nFile=fso.GetFile(Path)
> nFile.Name=Name&"."&Right(Int(1000*Rnd+1000),3)

ここで、
|エラー:     書き込みできません。
|コード:     800A0046
が発生しました!

これで、以下の謎が解けました。

>管理人むたぐち さん 2004年 11月 11日 22時 09分 29秒
>To: オズ さん
>> スケジューラで実行しているスクリプト中でFileSystemObjectを用いてファイルを削除する処理があるのですが、そこでたびたびエラーが出て困っております。
>実は私も困っています。
>この件について、何か良い案をお持ちの方は、フォロー願います。

予想では、このエラーの発生条件は、
(1) 主にWord,ExcelなどのOLE文書ファイルを更新後すぐに削除かリネームしようとした。
かつ、
(2) そのファイルがデスクトップにあるか、そのフォルダをエクスプローラ/Shellで開いている。

如何でしょうか?

(2)は、それが証拠に、

>オズ さん 2004年 11月 12日 09時 48分 33秒
>ただ、全く同じ処理をASPでもやっている(ブラウザからリアルタイムででやるのと
>夜間バッチでやるのとの2通りのやり方を用意しています)のですが、そちらでは
>殆ど出ません。そうすると上の推論は的外れなのでしょうか・・・。

もう、お分かりだと思いますが、改めて、エラー発生メカニズムを説明すると、
エクスプローラは、詳細表示の項目を取得するために、OLE StorageやNTFS Stream
を勝手にオープンします。その間にユーザがファイルを削除やリネームしょうとすると、
「書き込みできません」のエラーになります。
ユーザがファイルを更新すると、エクスプローラも、詳細表示を更新しようとオープン
するので、ユーザが更新後すぐに削除やリネームしょうとすると、高い確率で衝突します。

つまり、Windowsでは、
「一般に、ファイルの削除やリネームはタイミングにより失敗することがある。」
というのが「仕様」なのです。

したがって、対処方法は以下の3択です。
第1選択、他のプラットホームに変える。
第2選択、GUI(エクスプローラ)を使用しない。
第3選択、時限リトライする。

パーマネントエラーもあるので、無限リトライは不可。

汎用リネーム関数(Fileオブジェクト,新名)
Sub Rename(File,Name)
Dim k
For k=1 To 10
 Call Rename_TRY(File,Name)
 If Err=0 Then Exit Sub
 If Err<>70 Then Exit For
 WScript.Sleep 100
Next
Raise Err.Number
End Sub

Sub Rename_TRY(File,Name)
On Error Resume Next
File.Name=Name
End Sub

汎用削除関数(Fileオブジェクト)
Sub Delete(File)
Dim k
For k=1 To 10
 Call Delete_TRY(File)
 If Err=0 Then Exit Sub
 If Err<>70 Then Exit For
 WScript.Sleep 100
Next
Raise Err.Number
End Sub

Sub Delete_TRY(File)
On Error Resume Next
File.Delete
End Sub

汎用削除関数(fso,パス名)
Sub DeleteFile(fso,Path)
Dim k
For k=1 To 10
 Call DeleteFile_TRY(fso,Path)
 If Err=0 Then Exit Sub
 If Err<>70 Then Exit For
 WScript.Sleep 100
Next
Raise Err.Number
End Sub

Sub DeleteFile_TRY(fso,Path)
On Error Resume Next
fso.DeleteFile Path
End Sub


ばんのしゃーによかばんた さん 2005年 05月 02日 15時 06分 19秒

>ばんのしゃーによかばんた さん 2005年 05月 01日 15時 46分 29秒
>ファイルをドロップすると、ファイルの1行目をファイルのプロパティページの
>概要タブのコメント欄に設定します。

HTMファイルにコメントを付けようとしたら、概要タブがありません!
なんででしょうね。
一旦、拡張子を変えて、コメントを付けて、拡張子を戻すと、popupは出ます。
概要タブは出ません。不思議です。

標準のプロパティシートハンドラがhtmlfileを嫌っているのでしょうか?

ところで、エクスプローラでファイルを選択すると、ステータスバーにも
コメントなどが出ますね。まぁ考えてみれば当然なんでしょうが、
見たときは、なんだこりゃ!と思いました。

ところで2、昔は、待ち合わせのために、
 FolderItem.InvokeVerb "プロパティ(&R)"
 Do While wShell.AppActivate("のプロパティ")
  WScript.Sleep 100
 Loop
なんてやると、フォーカスを他に移しても、すぐに戻って、使えなかったですよね?
それが、今やると、普通に使えます。なんでかなぁ。不思議です。
なら、これからは、汎用的に待ち合わせに使えるのかなぁ。
XPだけ?


管理人により削除 さん (管理人により削除) 2005年 05月 02日 14時 54分 18秒
URL:管理人により削除

管理人により削除

ばんのしゃーによかばんた さん 2005年 05月 01日 15時 48分 42秒

>たる さん 2001年 10月 26日 00時 33分 17秒
>突然、WshLab.htaが起動できなくなってしまった。1003行 終了していない文字型の定数です。>と怒られ緑の画面がでた。
>何でかなとか思ったけど、
>EUCの表示テストをしてたからデフォルトのエンコードが移ってしまったんですね。ちょっとびっくり。

と同じようです。

ばんのしゃーによかばんた さん 2005年 05月 01日 15時 46分 29秒

ファイルをドロップすると、ファイルの1行目をファイルのプロパティページの
概要タブのコメント欄に設定します。
その結果、エクスプローラでファイルにマウスポインタを当てると、
ファイルの1行目がポップアップされるようになります。
――――――――――――――――――――――――――――――――――――――
Set wShell=CreateObject("WScript.Shell")
Set fso=CreateObject("Scripting.FileSystemObject")
Set Shell=CreateObject("Shell.Application")
For Each arg In WScript.Arguments
 Set Folder=Shell.NameSpace(fso.GetParentFolderName(arg))
 Set FolderItem=Folder.Items.Item(fso.GetFileName(arg))
 FolderItem.InvokeVerb "プロパティ(&R)"
 Do While Not wShell.AppActivate("のプロパティ")
  WScript.Sleep 100
 Loop
 wShell.SendKeys "^+{Tab}"
 wShell.SendKeys "%m"
 wShell.SendKeys fso.OpenTextFile(arg).ReadLine()
 wShell.SendKeys "%a"
 wShell.SendKeys "{Enter}"
 WScript.Sleep 500
Next
――――――――――――――――――――――――――――――――――――――
SendKeysなので日本語は化けるか、エラーになります。
必要ならクリップボード経由に変えてください。

これを
>ばんのしゃーによかばんた さん 2005年 03月 28日 19時 28分 25秒
>>メモ帳さんには自動でバックアップを取って欲しいものです。
>NotePad.VBS
に組み込むとよいかも。

また、複数行を入れることも可能です。
wShell.SendKeys "^j" または "^{Enter}"
で、改行。

――――――――――――――――――――――――――――――――――――――
SendKeysでなく、SummaryInfoを更新する方法はないものでしょうか?
\005SummaryInformationのバイナリをADO Streamでアクセスするのは、鬱。
ProgID="WindowsInstaller.Installer"で出来るかなと思ったのですが、駄目みたい。


管理人むたぐち さん 2005年 04月 30日 22時 38分 19秒

To: ばんのしゃーによかばんた さん 2005年 04月 30日 16時 43分 40秒

> タイトル行が文字化けし、ウィンドウが緑色になりました。
> デバッガでソースを見ると文字化けしていました。

こちら(WinXP pro)では特に問題は発生していません。
もしかしてばんのしゃーによかばんたさんverですか?

ばんのしゃーによかばんた さん 2005年 04月 30日 19時 35分 53秒

>ばんのしゃーによかばんた さん 2005年 04月 11日 15時 17分 09秒
>CMD.EXEが16ビットアプリを相手にするときの擬似パイプは、
> C:\Windows\Temp\scs14B7.tmp
>のような名前です。
>もし、この擬似パイプのファイル名が、なんらかの方法で、分かれば、
> Echo スクリプト | Command.com /cCScript.EXE -E:VBS C:\Windows\Temp\scs14B7.tmp
>みたいなことが出来るかも知れません。

echo a | command/cdir /od %windir%\temp\*.*
の最終行に、
SCS1A  TMP     0 05-04-30  17:52
があれば、次が分かるので、
echo msgbox 1 | command/c cscript -e:vbs %windir%\temp\scs1c.tmp
とできました。
しかし、
CScript エラー: スクリプト "C:\WINDOWS\temp\scs1c.tmp" の読み込みに失敗しました
(プロセスはファイルにアクセスできません。別のプロセスが使用中です。 )。
というエラーになります。
なんか、CScript.EXEは変なチェックをしているようです。
残念!

>Command.comの擬似パイプは、
> C:\Windows\Temp\ABCDEFGH
>のような名前ですが、

こっちのほうは、まず、

command /c echo 1 ^| dir /od %windir%\temp\*.

BCBDAEEJ       5 05-04-30  18:19
BCBDAEEK       0 05-04-30  18:19

で、先頭文字のあたりを付けてます。他にマッチがなければ不要。
ごみがあれば削除したほうがよいかも。

command /c echo msgbox 1 ^| cmd/cfor %0 in ( %windir%\temp\bc*. ) do cscript -e:vbs %0

成功!

ただ、これがどういう役に立つのかは?
まぁ、これも無意味良品ですね。


ばんのしゃーによかばんた さん 2005年 04月 30日 16時 44分 14秒

>AKA さん 2004年 12月 05日 04時 39分 36秒
>2. いくつかの選択肢から選択するようなテキストボックスはどんなオブジェクトを使うのでしょ>うか?
>ワードパッドでフォントを選択する時のようなものがやりたいのですが・・・
>3. Shell.Applicationの、BrowseForFolder()で、
>set F = SA.BrowseForFolder(...)
>などとした場合、キャンセルを選択すると、エラーになってしまいます。キャンセルされたこと>を正しくキャッチするにはどうしたらよいですか?

選択メニューの簡易版です。

メニュー用フォルダの中のフォルダ名を選択肢として、

Const BIF_NONEWFOLDERBUTTON = &H200          'No New Folder Button
Const BIF_EDITBOX = &H10          'With Edit Box
Set Shell=CreateObject("Shell.Application")
Set Folder=Shell.BrowseForFolder(0,"選択してください",BIF_NONEWFOLDERBUTTON+BIF_EDITBOX,"c:\vbs\shell\browse\選択してください")
If Folder Is Nothing Then
 WScript.Echo "Canceled."
Else
 WScript.Echo Folder.Title
End If


ばんのしゃーによかばんた さん 2005年 04月 30日 16時 43分 40秒

なぜか突然、WSHLab.HTAで以下のエラーが発生するようになりました。
――――――――――――――――――――――――――――――――――――――
行: 996    
     hitlist.current = i;
エラー: 終了していない文字列型の定数です。
――――――――――――――――――――――――――――――――――――――
タイトル行が文字化けし、ウィンドウが緑色になりました。
デバッガでソースを見ると文字化けしていました。

charsetの指定を日本語より前に持って行くと直りました。

<meta http-equiv="content-type" content="text/html; charset=shift_jis">
<title>WSH Lab. 掲示板 記事検索</title>


ちょいと一言 さん 2005年 04月 30日 13時 15分 02秒

>私はもう他の掲示板に行っていますので、
>ここで質問をすることもないでしょうが
そうなら、こんな書き込みをせずに、黙って消えてればいいんですよ。

>人に親切にして決して嫌な気持ちにはなりませんから
こんな横柄な考え方をする質問者に
誰が気持ちよく教えることができるのでしょうか?

答えてもらえればありがたい。答えてもらえなくて当然という、
謙虚な気持ちは持たないのですか?

あおり返しは好きではありませんが、
質問者としての立場を理解していないようなので、
私の意見を述べさせて頂きました。

AKA さん 2005年 04月 30日 09時 33分 00秒

>>2005年 04月 23日 16時 40分 59秒
>ここはMicrosoftの公式サポートサイトではないので、すべての質問に
>回答が得られるとは限りません。
>その点はご了承ください。

バカにしてるんですか?
そんなこと思うわけないでしょ?

プログラマとしての腕はどうだか知らんが、人間性はペケですな。
私はペケがプログラミングにも表れる、と信じていますが。

誤解のないように言っておきますが、別に私の知りたいことがわからないから怒ったわけではありません。もうわかりましたし。

明らかに質問に答える余力のある人達が、弱いものの存在を、自分には興味ない、という感じで無視していると感じました。

プログラミングに励むのも結構ですが、掲示板には「人間」が書きこんでいるのを忘れないで下さい。無視したのか、答えあぐねたのかはすぐにわかります。

力がある人こそ弱いものの助けにならなくちゃダメじゃないですか?

私はもう他の掲示板に行っていますので、ここで質問をすることもないでしょうが、もし、初心者らしき人の書きこみを見たら、このレスを思い出して見てください。人に親切にして決して嫌な気持ちにはなりませんから。

やまざき さん 2005年 04月 28日 18時 32分 44秒

>>魔界の仮面弁士 さん

先ほどはありがとうございました。

ちょっと質問があります。
ご存知であればご教授して頂ければと思います。

・Session_OnEndイベントに関しての質問です。
Session_OnEnd()内で
ログをファイルに書き出すという事をしたいのですが、どうにも出力されません。
ちゃんとSession_OnEndが呼び出されているのかさえ確認できない始末です(-_-;)...

下記ステートメントは使用できないんでしょうか?
 Server.CreateObject("Scripting.FileSystemObject")

魔界の仮面弁士さん以外の皆様もこの件について
良い対処方法をご存知であればご教授頂ければと思います。
よろしくお願いします。

ばんのしゃーによかばんた さん 2005年 04月 28日 18時 25分 48秒

VBSファイルの「コマンドプロンプトで開く」って使ってます?
なんか使い難いと思いません?

コンソール入力には、使えても、コンソール出力には、使えないではありませんか。
ウィンドウが閉じてコンソール出力が見えない。
なので、ほとんど使わない。使えない。

そこで、関連付けを以下のように変更したほうが、使い易いし、使えると思います。

%SystemRoot%\System32\Cmd.exe /k %SystemRoot%\System32\CScript.exe "%1" %*
または、
%SystemRoot%\System32\Cmd.exe /c %SystemRoot%\System32\CScript.exe "%1" %* & Pause


やまざき さん 2005年 04月 28日 11時 07分 40秒

>>魔界の仮面弁士 さん 2005年 04月 28日 10時 00分 53秒

>> 他にも質問があるんですが、よろしいですか?
># ここで、No! とか答えてみたらどうなるのだろう…。(^-^;)
(^_^;)ゥゥゥ
ご返事ありがとうございました。

シロウト質問を連発してしまい恥ずかしい限りです。
でもなんとかセッションの動作は把握できました。

ちなみに、
>> 以下の1,3の両方で呼び出されるんですよね?
> いえ、1, 4ですよ。3で呼ばれるのは OnEnd だけです。
↑これは1,4の書き間違いです。すみません^^;

ありがとうございました。

魔界の仮面弁士 さん 2005年 04月 28日 10時 00分 53秒

》やまざき さん 2005年 04月 28日 00時 48分 40秒
> 他にも質問があるんですが、よろしいですか?
# ここで、No! とか答えてみたらどうなるのだろう…。(^-^;)


> Session_OnStart()はいつ呼び出されるのかが分かりません。
「セッションが開始された時」です。
セッション、という用語の意味はわかりますよね。
(Session.SessionID を記録してみると、動きがわかるかも)

セッションが維持されている間は、再度 Session_OnStart が
発行されることはありません。もし、明示的に Session.Abandon を
呼び出したり、セッションタイムアウトが発生した場合には、
そこで Session_OnEnd が発生し、セッションが終了します。

セッションが終了した後で、同じブラウザから要求を行うと、
別のセッションが開始され、また Session_OnStart が呼ばれます。


> 以下の1,3の両方で呼び出されるんですよね?
いえ、1, 4ですよ。3で呼ばれるのは OnEnd だけです。

やまざき さん 2005年 04月 28日 00時 48分 40秒

>>魔界の仮面弁士 さん 2005年 04月 27日 20時 07分 42秒

ご返事ありがとうございます。
検証結果拝見させて頂きました。
なるほどぉっといった感じですねぇ。
Session.Timrout=1〜2分と捉えておく方が良いですね。

他にも質問があるんですが、よろしいですか?
Session_OnStart()はいつ呼び出されるのかが分かりません。
以下の1,3の両方で呼び出されるんですよね?
>>1. 1.asp を開く。
>>2. 『[hahaha](1){70536.03:70536.03}』と表示される。
>>3. さしあたり、2分程待機。
>>4. 同画面から、2.asp を開く。
>>5. 『[](1){70659.39:70659.39}』と表示される。

はち さん 2005年 04月 27日 21時 06分 54秒

数日前から突然
For Each Process In GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_Process where Name='nnn.exe'")
を含むスクリプトが動作しなくなってしまいました。ウイルスバスターのアップデートと関係があるのでしょうか。Nortonが入っているPCでは問題ないのですが。

魔界の仮面弁士 さん 2005年 04月 27日 20時 07分 42秒

》やまざき さん 2005年 04月 27日 18時 14分 42秒
既定のセッションタイムアウトを20分にして実験してみました。
IISのバージョンは5.1です。

==== global.asa ====
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Session_OnStart()
 Session.TimeOut = 1
 Session("START") = Timer
End Sub
</SCRIPT>
============

==== 1.asp ====
<%
Session("test") = "hahaha"
Response.Write "[" & Session("test") & "]"
Response.Write "(" & CStr(Session.TimeOut) & ")"
Response.Write "{" & CStr(Session("Start")) & ":" & CStr(Timer) & "}"
%>
============

==== 2.asp ====
<%
Response.Write "[" & Session("test") & "]"
Response.Write "(" & CStr(Session.TimeOut) & ")"
Response.Write "{" & CStr(Session("Start")) & ":" & CStr(Timer) & "}"
%>
============


-----------------------------------
【実験開始】
-----------------------------------
1. 1.asp を開く。
2. 『[hahaha](1){70536.03:70536.03}』と表示される。
3. さしあたり、2分程待機。
4. 同画面から、2.asp を開く。
5. 『[](1){70659.39:70659.39}』と表示される。

6. つまり、「実際には123秒経過していた」事になるが、
  20分経過せずにタイムアウトしていた事は明らか。
→ ★ 2.asp の実行前に、Session_OnStart が実行されている。

7. 再実験のため、サービスを再起動 & ブラウザ全終了。
8. 1.asp を開く。『[hahaha](1){71328.83:71328.83}』
9. 今度は、少し減らして 90秒程度待機。
10. 2.asp で『[](1){71421.06:71421.06}』と表示される。

11. 「92秒経過」した場合も、タイムアウトしている。
→ ★ 少なくとも、(規定値の20分ではなく)2分以内に
 セッションがタイムアウトしている事が判明。

12. 再々実験のため、サービスを再起動 & ブラウザ全終了。
13. 1.asp 『[hahaha](1){71526.66:71526.66}』
14. さらに減らして、70秒程度待機。
15. 2.asp を開く。『[](1){71600.31:71600.31}』
→ ★ 73秒経過させた場合でもタイムアウトした。

18. 再々々実験開始。
19. 1.asp。『[hahaha](1){71733.5:71733.5}』
20. 2.asp。『[hahaha](1){71733.5:71795.2}』
→ ★ 61秒経過させたが、今度はタイムアウトしていない。


-----------------------------------
【以上の実験結果からの考察】
-----------------------------------
Session.TimeOut = 1 というのは、「60秒」ではなく、
「1分以上2分未満」の無通信時間経過後……なのでは?

ばんのしゃーによかばんた さん 2005年 04月 27日 19時 27分 45秒

>ばんのしゃーによかばんた さん 2005年 04月 01日 12時 29分 51秒
>pipeout.vbs x N

言い忘れてました。
ここで、pipein側の終了監視を止めて、無限ループに変えると、
Unixで謂う所のtail -f相当(ログの新規書き出しの監視)になります。

tail-f.VBS
――――――――――――――――――――――――――――――――――――――
Set fso=CreateObject("Scripting.FileSystemObject")
Set File=fso.OpenTextFile("log",1,False)
Do
 If File.AtEndOfStream Then
  WScript.Sleep 1000
 Else
  Line=File.ReadLine
  WScript.Echo Line
 End If
Loop
――――――――――――――――――――――――――――――――――――――
終了はkillで。
コンソール実行のほうがよいかも。その場合は^cかbreakで。


やまざき さん 2005年 04月 27日 18時 14分 42秒

》魔界の仮面弁士 さん 2005年 04月 27日 17時 47分 16秒

ご返事ありがとうございます。
そういう事ですかぁ。分かりました。
これで問題解決しそうです。。。
っと思ったら、そうでもないようです。
やっぱりSession_OnStart、Session_OnEndが処理されません。

今回の確認方法
*****************************
==Global.asa==
Sub Session_OnStart
     Session.Timeout=1
End Sub
=========

==1.asp ==
Session("test") = "hahaha"
Response.Write Session("test")
=======

==2.asp ==
Response.Write Session("test")
=======

@1.aspの実行(新規窓)
A"hahaha"表示確認
B1分待ち
C2.aspの実行(@と同じ窓)
D"hahaha"非表示確認
*****************************

といった流れになるかなぁと思っていましたが、
Dで"hahaha"が表示されちゃいました。

やっぱりSession_OnStartが処理されていないとしか思えません。
IISの設定方法が間違っているんでしょうか??

魔界の仮面弁士 さん 2005年 04月 27日 17時 47分 16秒

》 やまざき さん 2005年 04月 27日 17時 23分 01秒

明示的に Session.Abandon しているわけではないのですよね。
であればセッションが破棄されるまで、2回目の Session_OnStart は
実行されませんので、「10分のまま」だと思いますが……。

1. 該当Webサイトを開く → 新規セッションが作成される。
2. Session_OnStart → このセッションのタイムアウトは1分。

3. asp呼び出し → IsEmpty(Session("test")) = True の状態
 → つまり、Len(Session("test")) は 0 → ゆえに、If条件は「真」
4. Session("test") = "hehehe" に変更され、タイムアウトも10分に変更。
5. "hehehe<br>"が表示される。

6. 数分待機(セッションは維持されたまま)

7. asp呼び出し → Session("test") = "hehehe" の状態
 → つmり、Len(Session("test")) は 6 → ゆえに、If条件は「偽」
8. Session("test") = "" に変更される。(タイムアウトは10分のまま)
9. 空データの"<br>"が表示される。

やまざき さん 2005年 04月 27日 17時 23分 01秒

Session_OnEndイベントを使用してログをファイルに書き出すということを実現したいんですが、
どうにもSession_OnEnd,Session_OnStartイベントが呼び出されず困っています。

イベント処理関数を定義しているファイル名が間違っている訳でもなく、
定義している関数名が間違っている訳でもなく...
一体何が間違っているのか分かりません。

以下に私が行った確認方法を記します。
何がいけないのかお分かりの方はご教授お願いします。
******************
-----Global.asaの中身------
     <SCRIPT LANGUAGE=VBScript RUNAT=Server>
     Sub Session_OnStart
          Session.Timeout=1
     End Sub

     Sub Session_OnEnd
     End Sub

     </SCRIPT>
     <% ' $Header: $ %>
---//Global.asaの中身------

@:以下の内容が記述された.aspを実行。
 :想定ではSession_OnStart()が呼び出されて
 :Session.Timeoutが1分に書き替えられるはず。
     if Len(Session("test")) = 0 then
          Session("test") = "hehehe"
          Session.Timeout=10
     else
          Session("test") = ""
     end if
     Response.Write Session("test")&"<br>"
A:"hehehe"が表示されることを確認。
B:1分〜2分何もせずに待つ。
C:@を再度実行。(同じウィンドウで)
D:Session.Timeoutが1分に設定されているので、
 :Session("test")が空状態になり
 :画面上には"hehehe"が再び表示されるはず。
以上

といった流れで確認をしたんですが、
Dの時点で画面上には何も表示されません。
 ということは↓↓↓↓
Session.Timeout=10のままである。
 ということは↓↓↓↓
Session_OnStartが呼び出されていない。
******************

何がいけないのかお分かりの方はご教授お願いします。

シーズー大好き さん 2005年 04月 27日 17時 09分 52秒

ちゃっぴ様

ストライクでした!アドバイスありがとうございます!

ちゃっぴ さん 2005年 04月 27日 15時 58分 54秒

To シーズー大好き さん 2005年 04月 26日 12時 00分 40秒

> SQL serverのDBの使用率を取得する方法を模索しています。

「sp_spaceused」 Stored Procedure 使えばいいでしょう。

魔界の仮面弁士 さん 2005年 04月 27日 09時 59分 29秒

》 魔界の仮面弁士 2005年 04月 26日 17時 12分 53秒
> 'これは実行可能。
> 'IE.Navigate V
あ。変数名が違う。V→Xですね。


訂正だけでは何なので、JScriptでのコードも書いておきます。

var IE = new ActiveXObject('InternetExplorer.Application');
IE.Visible = true;

var X = new ActiveXObject('ADODB.Connection');
X.ConnectionString = 'http://www.google.co.jp/';

//これは、実行すらできない。
//IE.Navigate2(X);
//IE.Navigate2(new String(X));

//これは実行可能。
//IE.Navigate(X);
//IE.Navigate2(String(X));
//IE.Navigate2(new String(X).toString());
//IE.Navigate2(X.ConnectionString);

魔界の仮面弁士 さん 2005年 04月 26日 17時 12分 53秒

》ばんのしゃーによかばんた さん 2005年 04月 26日 16時 21分 28秒
> ×IE.Navigate 20
> ○IE.Navigate2 20
> ○IE.Navigate "shell:fonts"
> ○IE.Navigate "c:\windows\fonts"
『文字列型』を渡す場合は、意識する必要は殆ど無いと思います。
整数を渡した場合に、結果が変わってくるという事ですね。

> 通常は、IE.Navigateは忘れて、IE.Navigate2だけを使えばよい。?
どちらが適切かわからない時は、Navigate2を使えば問題無いでしょう。

> ○IE.Navigate
> ×IE.Navigate2
> のようなケースもあるということですよね?
あるにはあります。が、通常の利用範囲で見た場合は、
レアなケースだと思います。

'----------------
Set X = CreateObject("ADODB.Connection")
X.ConnectionString = "http://www.google.co.jp/"

'これは、実行すらできない。
'IE.Navigate2 X

'これは実行可能。
'IE.Navigate V
'IE.Navigate2 CStr(X)
'IE.Navigate2 X.ConnectionString

ばんのしゃーによかばんた さん 2005年 04月 26日 16時 22分 47秒

>faith さん 2005年 04月 21日 03時 22分 53秒
>VBSでプログレスバーを表示させることはできますか?

HTAで作るか、HTAと連携すれば出来ます。

<object id="ProgressBar1" classid="CLSID:35053A22-8589-11D1-B16A-00C0F0283628"></object>

HTA/WSH連携方法はいろいろ。研究所内検索で過去記事参照。


ばんのしゃーによかばんた さん 2005年 04月 26日 16時 22分 13秒

>管理人むたぐち さん 2004年 08月 02日 16時 52分 50秒
>view-source:した場合、エディタの引数にキャッシュのパスが渡される
>ところがポイントですね。
>他にもっと簡単にキャッシュのパスを取得する方法があれば、
>レジストリを弄る必要はなくなるわけですが、何かありませんかね。

「簡単に」ではないのですが、力尽くで、なんとか、取れそうです。ふーっ。

リンクなどから起動します。
――――――――――――――――――――――――――――――――――――――
' CachePath.VBS shows HTML source file path in IE Cache folder.
' Usage: Start CachePath.VBS

Option Explicit
Dim Shell
Dim ie
Dim Location

Set Shell=CreateObject("Shell.Application")
Set ie=Shell.Windows.Item
If Not ie Is Nothing Then
 If TypeName(ie.Document)="HTMLDocument" Then
  On Error Resume Next
  Location=ie.Document.parentWindow.location
  If IsEmpty(Location) Then Location=ie.Document.location
  If IsEmpty(Location) Then Location=ie.LocationURL
  On Error GoTo 0
 End If
End If
If IsEmpty(Location) Then
 WScript.Echo "IE not found."
 WScript.Quit
End If
MsgBox Location,,"Location"

Const ssfINTERNETCACHE = 32     'shell:Cache
Dim fso
Dim wShell
Dim n
Dim sFolder
Dim Folder
Dim FolderItem

Set fso=CreateObject("Scripting.FileSystemObject")
Set wShell=CreateObject("WScript.Shell")
For n=0 To 9
 For Each ie In Shell.Windows
  If Not ie.Busy Then
   If ie.ReadyState=4 Then
    If InStr(TypeName(ie.Document),"IShellFolderViewDual")=1 Then
     Exit For
    End If
   End If
  End If
 Next
 If Not IsEmpty(ie) Then Exit For
 If n=0 Then CreateObject("WScript.Shell").Run "Explorer.exe",0,True
 WScript.Sleep 100
Next
If IsEmpty(ie) Then
 WScript.Echo "Failed"
 WScript.Quit
End If
Set Shell=ie.Document.Application
ie=Empty

Set sFolder=Shell.NameSpace(ssfINTERNETCACHE)
Set Folder=fso.GetFolder(sFolder.Items.Item.Path)
Dim Loc
Dim fFound
For Each FolderItem In sFolder.Items
 Loc=sFolder.GetDetailsOf(FolderItem,1)
 If Loc=Location Or Loc="view-source:"&Location Then
  MsgBox Loc,,"FolderItem" '&vbLf&FolderItem.Name
  FScan
  fFound=fFound+1
 End If
Next
If fFound Then WScript.Quit
For Each FolderItem In sFolder.Items
 Loc=sFolder.GetDetailsOf(FolderItem,0)
 If Loc=Right(Location,Len(Loc)) Then
  MsgBox Loc,,"FolderItem" '&vbLf&FolderItem.Name
  FScan
  fFound=fFound+1
 End If
Next
If fFound=0 Then WScript.Echo "FolderItem not found."

Sub FScan()
Dim SubFolder
Dim SubSubFolder
Dim File
Dim ModifyDate7
Dim ModifyDate6
Dim BaseName
Dim Extname
Dim fFound

ModifyDate7=sFolder.GetDetailsOf(FolderItem,7)
ModifyDate6=sFolder.GetDetailsOf(FolderItem,6)
BaseName=fso.GetBaseName(FolderItem.Name) '&"["
Extname=fso.GetExtensionName(FolderItem.Name)
If InStr(BaseName,"view-source:") Then
 BaseName=Replace(Mid(BaseName,13),":","_")
End If
Dim re
Set re=New RegExp
If Extname<>"" Then Extname="\."&Extname
re.Pattern="^"&BaseName&"(\[\d+\])?"&ExtName&"$"
'MsgBox re.Pattern

For Each SubFolder In Folder.SubFolders
 For Each SubSubFolder In SubFolder.SubFolders
  For Each File In SubSubFolder.Files
   If DateDiff("n",File.DateLastModified,ModifyDate7)=0 Or _
     DateDiff("n",File.DateLastModified,ModifyDate6)=0 Then
'    MsgBox File.Name
    If re.Test(File.Name) Then
     MsgBox File.Path,,"File.Path" '&vbLf&File.DateLastModified&vbLf&ModifyDate7&vbLf&ModifyDate6
     fFound=fFound+1
    End If
   End If
  Next
 Next
Next
If fFound=0 Then WScript.Echo "File not found."
End Sub
――――――――――――――――――――――――――――――――――――――
変則パターンが色々あって大変。。。

プロパティページにはキャシュ名なんてあるので、
これがExtendedPropertyとかで見れると楽なんですが。。。


ばんのしゃーによかばんた さん 2005年 04月 26日 16時 21分 48秒

>ばんのしゃーによかばんた さん 2005年 04月 24日 16時 39分 29秒
>ie.Document.designMode="On"

これは、なんか、特別ですね。
普通、documentやwindowはページ移動でリセットされますが、
これは、継続します。

なので、
普通、documentやwindowはWScript.CreateObjectを使って、
Event DocumentComplete()で再設定しないといけないのですが、
これは、その必要がありません。

一旦"about:blank"で、document.designMode="On"してから、
Navigate 本来の対象、してやればよいわけです。


ばんのしゃーによかばんた さん 2005年 04月 26日 16時 21分 28秒

>魔界の仮面弁士 さん 2005年 04月 25日 09時 44分 26秒

×IE.Navigate 20
○IE.Navigate2 20

ですね。

でも、
○IE.Navigate "shell:fonts"
○IE.Navigate "c:\windows\fonts"

なので、通常はあまり気にしなくてよい。?

でも、まぁ、概略、IE.Navigate ⊂ IE.Navigate2 なので、
通常は、IE.Navigateは忘れて、IE.Navigate2だけを使えばよい。?

でも、IE.Navigateがobsoleteでない、ということは、
○IE.Navigate
×IE.Navigate2
のようなケースもあるということですよね?
ちょっと気になる。


シーズー大好き さん 2005年 04月 26日 12時 00分 40秒

SQL serverのDBの使用率を取得する方法を模索しています。
現在、SQL server Enterprise Managerからデータベース->対象DBを右クリックしてタスクパッドを指定し、容量を目視確認していますが、これをVBSで自動取得しようとしています。
osqlコマンドでサーバにコネクトしたあとDBの空き容量を取得するクエリを探しましたが、見つけられずにいます。
良い方法はないでしょうか…。

シーズー大好き さん 2005年 04月 26日 10時 26分 21秒

ある環境でスクリプトの正常動作を確認し、別の環境で実行すると予期せぬエラーが発生するのはWHSの仕様でしょうか?"予期せぬエラーが発生しました ソース(null)"とのエラーを起こし、スクリプトが停止します。
(local.vbs)------------------------------------------------
'リモート端末上で点検プログラムを走らせる
strComputer = "172.16.1.200"
strScript = "remote.vbs"

set objController = WScript.CreateObject("WshController")
set objRemote = objController.CreateScript(strScript, strComputer)
WScript.Echo "点検を開始します"
objRemote.Execute
Do Until objRemote.Status = 2
WScript.Sleep 100
Loop
WScript.Echo "点検を完了しました"
wscript.sleep 1000
-----------------------------------------------------------

上記スクリプトをローカルマシンで実行し、remote.vbsをリモート側で
キックさせたいのですが、

set objRemote = objController.CreateScript(strScript, strComputer)

で、予期せぬエラー(null)を起こします。リモート端末はISDNを介した遠地にあります。このスクリプトをLAN環境でテストすると正常に実行されます。
OSは全てWindows2000 SP4、IEは6です。

似た経験をお持ちの方がいらっしゃいましたらアドバイス願えませんでしょうか。

ばんのしゃーによかばんた さん 2005年 04月 25日 16時 49分 37秒

WSHの以下のようなエラーメッセージが出たとき、ソースの該当行を表示します。

---------------------------
Windows Script Host
---------------------------
スクリプト:     C:\VBS\A.VBS
行:     3
文字:     1
エラー:     オブジェクトがありません。: 'o'
コード:     800A01A8
ソース:      Microsoft VBScript 実行時エラー

---------------------------
OK 
---------------------------

――――――――――――――――――――――――――――――――――――――
Set wShell=CreateObject("WScript.Shell")
If wShell.AppActivate("Windows Script Host")=False Then WScript.Quit
wShell.SendKeys "^c"
WScript.Sleep 100
Msgs=GetCLipByMsIE
Msgs=Split(Msgs,vbCrLf)
ScriptFile=Split(Filter(msgs,"スクリプト:")(0),vbTab)(1)
LineNo=CLng(Split(Filter(msgs,"行:")(0),vbTab)(1))
Column=Split(Filter(msgs,"文字:")(0),vbTab)(1)
Description=Filter(msgs,"エラー:")(0)
Code=Filter(msgs,"コード:")(0)
Source=Filter(msgs,"ソース:")(0)
Set fso=CreateObject("Scripting.FileSystemObject")
Set File=fso.OpenTextFile(ScriptFile)
Do While Not File.AtEndOfStream
 k=k+1
 Line=File.ReadLine
 If k=LineNo Then
  MsgBox Join(Array(ScriptFile,LineNo&"行",Column&"桁",Line,Description,Code,Source),vbLf)
  Exit Do
 End If
Loop

Function GetCLipByMsIE()
Const OLECMDID_PASTE = 13
Const OLECMDEXECOPT_DODEFAULT = 0
Dim ie
Set ie=CreateObject("InternetExplorer.Application")
ie.Navigate "about:blank"
Do While ie.Busy Or ie.ReadyState<>4
 WScript.Sleep 100
Loop
ie.Document.write "<html><body><textarea id=txt></textarea></body></html>"
ie.Document.all.txt.focus
Call ie.ExecWB(OLECMDID_PASTE,OLECMDEXECOPT_DODEFAULT)
GetCLipByMsIE=ie.Document.all.txt.value
ie.Quit
End Function


シーズー大好き さん 2005年 04月 25日 16時 19分 38秒

一応解決しました。
mhtで保存する方法が過去の記事にありましたので参考にさせて頂きました。
※specialfoldersを使うとフルパスを取得できず、ファイル名に文字列"デスクトップ"をいれてしまうため変数に直接代入。なぜだろうか不明…--;
---------------------------------------------------------------
NowTime=Now
Set objShell = WScript.CreateObject("WScript.Shell")

LogPath = "C:\Documents and Settings\xxxxxxx\デスクトップ\"
LogName = "T-3000" & Year(NowTime) & Month(NowTime) & Day(NowTime)

Set CDOMsg=WScript.CreateObject("CDO.Message")
Const adSaveCreateOverWrite = 2
CDOMsg.CreateMHTMLBody "http://xxx.xxx.xxx.xxx/admin"
CDOMsg.GetStream.SaveToFile LogPath & LogName & ".mht",adSaveCreateOverWrite
---------------------------------------------------------------
上記のソースでカレントユーザーのデスクトップに"T-3000_2005425.mht"が
保存されました。

シーズー大好き さん 2005年 04月 25日 11時 17分 24秒

お世話になります。

IEで生成したhtmlファイルに、名前を付けて保存したいのですが、うまい方法が思いつきません。
今のところ、保存までの一連のキーストロークをひたすら送信していますが、任意の名前にリネームして、なおかつ保存先を指定できる方法を探しております。
SaveAsメソッドについて検索しましたが、ExcelやWordばかりで悩んでいます。

現在のソース
--------------------------------------------
str = "http://xxx.xxx.xxx.xxx/admin"
set ieobj = createobject("internetexplorer.application.1")
ieobj.navigate(str)
ieobj.visible = true
Set objShell = WScript.CreateObject("WScript.Shell")
WScript.Sleep 10000
objShell.SendKeys "%f"
WScript.Sleep 1000
objShell.SendKeys "a" 
objShell.SendKeys "~"
WScript.Sleep 1000
objShell.SendKeys "%{F4}" 
WScript.Sleep 1000
--------------------------------------------

ご教授いただけると幸いです。

魔界の仮面弁士 さん 2005年 04月 25日 09時 44分 26秒

》ばんのしゃーによかばんた さん 2005年 04月 24日 16時 39分 29秒
> ところで、ie.Navigateとie.Navigate2の違いは、何でしょう?
> 仕様を見比べてもどこが違うのかよく分からなかったです。

http://msdn.microsoft.com/workshop/browser/webbrowser/reference/methods/navigate.asp
http://msdn.microsoft.com/workshop/browser/webbrowser/reference/methods/navigate2.asp

とりあえずは、
 IE.Navigate 20
 IE.Navigate2 20
この二つを比べてみると、違いが見えてくるかも。

ばんのしゃーによかばんた さん 2005年 04月 24日 16時 39分 55秒

LongFileNameに空白が使えると言っても、自由に、ではないようです。

例えば、
CreateObject("Scripting.FileSystemObject").GetFile(WScript.ScriptFullName).Name=" "
や" . "は既に同名のファイルがあると言って怒られます。

何でしょうね?同名のファイルって。

先行空白" x"はよいようですが、後続空白"x "は指定しても消えます。

Notepad.exeは空白を含むLFNを""なしで指定できますが、流石に、
Notepad x
は駄目で、
Notepad .\ x
なら読めました。

このように、
筋の悪い仕様を作ると、後々苦労します。そして、これからも延々と続きます。

なので、
次版からでも、仕様変更すると言えば、世界中から歓迎する声が上がると思います。?


ばんのしゃーによかばんた さん 2005年 04月 24日 16時 39分 29秒

>ばんのしゃーによかばんた さん 2005年 04月 20日 16時 35分 52秒
>'ie.Visible=Trueを生かして、
>ie.ExecWBとie.Quitをコメントアウトすると、HTMLエディタ?になります。

試してみました。過去ログなどの編集程度なら十分使えそうです。軽快だし。
――――――――――――――――――――――――――――――――――――――
Option Explicit
Dim ie

Set ie=WScript.CreateObject("InternetExplorer.Application","IE_")
ie.Visible=True
ie.Navigate2 WScript.Arguments(0)
Do While ie.Busy Or ie.ReadyState<>4
 WScript.Sleep 100
Loop

Sub IE_DocumentComplete(pDisp, URL)
ie.Document.designMode="On"
End Sub
――――――――――――――――――――――――――――――――――――――
ところで、ie.Navigateとie.Navigate2の違いは、何でしょう?
仕様を見比べてもどこが違うのかよく分からなかったです。
あまり気にすることはないのでしょうか?


管理人むたぐち さん 2005年 04月 23日 21時 49分 49秒

To: ばんのしゃーによかばんた さん

ご指摘ありがとうございます。
検索フォームを復活させてみました。
たしかにこれでエラーが出なくなりました。

# あとはURLの自動リンク問題か…

Return