まあいいじゃないですか さん 2002年 11月 25日 17時 48分 55秒

>>小林さん

<popup>.document.body.style.overflow = "scroll";
はどうですか?

さか さん 2002年 11月 22日 23時 14分 54秒


1つ問題が解決しないうちに、また問題が発生してしまったのですが。。。

下記のような関数でフォルダ選択ダイアログで、
ファイル、フォルダのどちらでも選択できるようにしたいのですが
「c:\abc.lzh」などドライブ直下のファイルを選択すると
「プロシージャの呼び出し、または引数が不正です。」と
エラー発生してしまいます。
ところが同じドライブ直下でも
「c:\abc.doc」や「c:\abc.xml」などは
エラーが発生しません。
エラーが発生せずにドライブ直下のファイルも選択できる方法を
ご存知の方がいらっしゃれば、アドバイスいただけないでしょうか。


function fdl()
 Dim WShell
 Dim d

 Set WShell=CreateObject("Shell.Application")
 Set d=WShell.BrowseForFolder(0,"ファイルを選んでください",16384,0)
 msgbox d.Items.Item.Path
 Set WShell = Nothing
end function

test さん (mail) 2002年 11月 22日 19時 03分 12秒
URL:null

dささあああ

champ さん 2002年 11月 22日 18時 18分 27秒

初心者で大変申し訳ございませんが

起動している アプリケーションを終了させるには
どのようにすれば 良いでしょうか?

実際には 起動しているウィルスバスタを終了。を実施したいです。

過去LOGを検索したのですが
見当たりませんでした。
申し訳ございませんが よろしくお願いします。


小林 さん (koba11@d1.dion.ne.jp) 2002年 11月 22日 17時 20分 32秒

はじめまして、私はJavaScriptでHPを作成しています。
現在CreatePopup()メソッドで悩んでおります。
CreatePopup()で生成したポップアップウインドウにはスクロールバー
は付加できないのでしょうか?いろいろ調べていろいろやってみましたが
どうやってもできません。どなたかわかる方がいらっしゃったら
教えてくださいよろしくお願いいたします。

WSH初心者 さん 2002年 11月 22日 16時 53分 13秒

初めまして、私は WindowsXPを使っています。
WindowsXPの終了のWSHは当ホームページで記載されていますが、
WindowsXPの終了時にFTPでファイル転送した後、終了するような
WSHでのスクリプトの記述の仕方が分かりません。
どなたか分かる方、教えて下さい。
よろしく、お願いします。

省吾 さん 2002年 11月 22日 13時 03分 38秒

[フォルダオプション]−[表示タブ]にある
"すべての隠しファイルを表示する、しない"
の選択の動作をWSHに提供されている機能で実現可能でしょうか?

頻繁にその動作を繰り返しているので、WSHファイルの
Double Click等で実現できれば嬉しいのですが。

宜しくお願い致します。

省吾

さか さん 2002年 11月 22日 12時 58分 48秒

To:たる さん

> > 実際のコピー終了前にmsgboxが表示されてしまうという事
> > だったのですが...
> > 説明不足で済みませんでした。
> じゃぁ、あってたんだ。
> 煽りまがいのことを言って申し訳ないです。
> 機種依存問題は答えにくいので答えられる人がいればバトンタッチしたいんだけど、
> 時期的に難しそうなので、ならば全ての判断情報が欲しい。
> 感じからするとおそらく未決で終了する話題ではないと思いましたので。
> 関数docopy内でDo Until WshShell.AppActivate("コピーしています"):WScript.Sleep 100:Loop
> のようなループをかます事を言っていたんです。
なるほど、ダイアログが表示されるまでループするのですね。
しかし、アドバイス頂いたAppCtivateでタイトルをチェックする方法ですが、
CopyHereを使った場合にコピーの対象となるフォルダのサイズが
小さい場合に、コピー中のダイアログが表示されない場合があると思います。
ダイアログのタイトルをチェックと上記のような場合に無限ループに陥ってしま
います。
折角アドバイス頂いたのですがAppActivateを使用する方法では
解決できませんでした。
その様なわけで、現在も解決策は掴めていません。。。

> 説明不足はこっちの方です。こちらこそすいません。
いえいえ、再三アドバイス頂きありがとうございます。

たる さん 2002年 11月 21日 22時 27分 01秒

To: さか さん

> 実際のコピー終了前にmsgboxが表示されてしまうという事
> だったのですが...
> 説明不足で済みませんでした。
じゃぁ、あってたんだ。
煽りまがいのことを言って申し訳ないです。
機種依存問題は答えにくいので答えられる人がいればバトンタッチしたいんだけど、
時期的に難しそうなので、ならば全ての判断情報が欲しい。
感じからするとおそらく未決で終了する話題ではないと思いましたので。
関数docopy内でDo Until WshShell.AppActivate("コピーしています"):WScript.Sleep 100:Loop
のようなループをかます事を言っていたんです。
説明不足はこっちの方です。こちらこそすいません。

さか さん 2002年 11月 21日 10時 55分 32秒

To:たるさん
>> コピーダイアログより、終了ダイアログの方が
>> 早く表示されるため上記の方法ではダメでした。
>> 他の方法を模索中です。
>??CopyHereメソッドに終了ダイアログなんか出てきたっけ?
>ダイアログと同期させるように関数内で待つという事のどこに問題点があるのかが>分からない。
>それとも自分が考え違いをしているのか?
前にVBSのソースを書き込ませていただきましたが、
終了ダイアログはmsgboxで表示させたダイアログです。
CopyHereの後にmsgbox"終了"とすると、
実際のコピー終了前にmsgboxが表示されてしまうという事
だったのですが...
説明不足で済みませんでした。

さざなみ さん 2002年 11月 21日 10時 06分 44秒

さざなみです。

たる さん、レスありがとうございます。

> たる さん
> クラスを利用するだけなので、フルコントロールじゃなければさらさらっと
> 書けそうです。

ご紹介ありがとうございます。
早速、勉強させていただきます。

> Frameworkで標準に用意されているクラスがあまりにも多いんで、
> 目移りしちゃって困り物。

そうですね。
ついつい、凝った機能を追加したくなります。

たる さん 2002年 11月 19日 23時 07分 02秒

To: さざなみ さん

> > そのクラスを使ったプログラムでDLLを作ってから、RegAsm.exeで登録してCOMで使います。
> ということは自前で処理ですか?
クラスを利用するだけなので、フルコントロールじゃなければさらさらっと書けそうです。
http://msdn.microsoft.com/library/default.asp?URL=/library/en-us/dnclinic/html/scripting01162001.asp

> 自分は、やっと標準のオブジェクトの使い方がわかってきた程度です。
自分だって理解が足りません。
Frameworkで標準に用意されているクラスがあまりにも多いんで、目移りしちゃって困り物。
System.IOなんかほとんどFSOじゃないかーとか言って思わずニヤリとしたり。
それはそれで楽しいんですけれどね。

To: やまもとだいすけ さん

>  1. テンポラリファイル作成
>  2. テンポラリファイル Open
>  3. テンポラリファイル削除
>
> という感じです。2 の処理は
上記は不明だけど、これってコメントの1,2,3に対応してるんですよね。

> oFSO.CopyFile PATH_A, LOCALDIR, False '1
> oWSHShell.Run LOCALDIR & FILENAME, 5, True '2
> oFSO.DeleteFile LOCALDIR & FILENAME, False '3
>
> この流れを「単独」で行うときはよいのですが(2 でファイルを開いた後、スクリプトの動作がとまる)、似たような HTA を起動する途中でとまらず、2 でファイルを開いているのに 3 の処理で削除を実行してしまいエラーになります。

それはおかしいですね。
ランチャーみたいに他のプログラムに受け渡すようなプログラムならそういう動作も考えられなくはないけど
FILENAMEに書いてあるプログラムの内容が分からないのでこれ以上はなんとも答えられないです。

To: さか さん

> コピーダイアログより、終了ダイアログの方が
> 早く表示されるため上記の方法ではダメでした。
> 他の方法を模索中です。
??CopyHereメソッドに終了ダイアログなんか出てきたっけ?
ダイアログと同期させるように関数内で待つという事のどこに問題点があるのかが分からない。
それとも自分が考え違いをしているのか?

To: tau さん

> WSHのJscriptで、文字を数値に変換する方法をご存知の方
> 教えてください
リファレンスを文字列 数字 変換で検索かけると、該当メソッドがランク1位に出てきます。

tau さん 2002年 11月 19日 21時 56分 18秒

WSHのJscriptで、文字を数値に変換する方法をご存知の方
教えてください
CSVをリードした値を演算に使いたいのですが、出来ません
よろしく、お願いします

さか さん 2002年 11月 18日 20時 04分 53秒

To:たるさん
> > コピー中のダイアログが表示されているか。というのは
> > どのように判定できるのでしょうか?
>
> WshShell.AppActivate(sTitle)の戻り値は 成功:True/失敗:False です。
教えていただいた方法で試してみましたが、
コピーダイアログより、終了ダイアログの方が
早く表示されるため上記の方法ではダメでした。
他の方法を模索中です。
アドバイス頂き、ありがとうございました。




やまもとだいすけ さん (d-yama@remus.dti.ne.jp) 2002年 11月 18日 17時 45分 40秒

現在以下のような内容の処理を HTA で作っています。なお、スクリプト部は VBScript です。

 1. テンポラリファイル作成
 2. テンポラリファイル Open
 3. テンポラリファイル削除

という感じです。2 の処理は

oFSO.CopyFile PATH_A, LOCALDIR, False '1
oWSHShell.Run LOCALDIR & FILENAME, 5, True '2
oFSO.DeleteFile LOCALDIR & FILENAME, False '3

と記述しました。

この流れを「単独」で行うときはよいのですが(2 でファイルを開いた後、スクリプトの動作がとまる)、似たような HTA を起動する途中でとまらず、2 でファイルを開いているのに 3 の処理で削除を実行してしまいエラーになります。

これを回避するような方法はあるのでしょうか ?

さざなみ さん 2002年 11月 18日 13時 07分 46秒

さざなみです。

たるさん、
お答えいただき、ありがとうございます。

> たるさん
> Microsoft.Vsa 名前空間というのを使うはずです。(→MSDN)
Googleで検索すると確かにでてきますね。

> そのクラスを使ったプログラムでDLLを作ってから、RegAsm.exeで登録してCOMで使います。
ということは自前で処理ですか?


> ちょっと別件で
> Script for the .NET Framework スクリプト エンジン
> というのに興味を持ったので、そのホストを作ろうかなとか試している最中なので
> でも、abstractってなんじゃーとか言ってるレベル。道は遠い…。
自分は、やっと標準のオブジェクトの使い方がわかってきた程度です。
そこまでは、とても、とても、、、、

HP010 さん 2002年 11月 17日 21時 11分 28秒

To:たるさん

おねだりしてすいません.
こういうの見ると勉強になるんだなぁ.
ありがとうございますぅ.

たる さん 2002年 11月 17日 20時 45分 11秒

To: HP010 さん

>  考え方を替えたらとりあえずうまく行った.
>  実行速度なんて考えてないけど…
>  たるさんだったらどう書くんだろうか?!

リライトはしない様にしてるんだけど(拡張とかはしてる)、リクエストなので特別同じ物を。

Dim Fs, Drv, i, Ax, Bx
Set Fs = CreateObject("Scripting.FileSystemObject")

Drv = "H:\"
For i=0 To 999 - 1
If Not(Fs.FolderExists(Drv & Right("000" & i, 3))) Then Exit For
Next

Bx = Drv & Right("000" & i, 3)
Fs.CreateFolder(Bx)

For Each Ax In WScript.Arguments
If Fs.FolderExists(Ax) Then
Fs.CopyFolder Ax, Bx & "\"
Else
Fs.CopyFile Ax, Bx & "\"
End If
Next

HP010 さん 2002年 11月 17日 13時 21分 28秒

To:たるさん

>あくまで数字回してFolderExistsで聞く時だけRight("000" & i, 3)

 ヒントありがとう.
 考え方を替えたらとりあえずうまく行った.
 実行速度なんて考えてないけど…
 たるさんだったらどう書くんだろうか?!


Dim Ws, Fs
Set Ws = CreateObject("WScript.Shell")
Set Fs = CreateObject("Scripting.FileSystemObject")

Drv = "H:\"
For i=0 To 99
Ax = Drv & sNum(i)
If Fs.FolderExists(Ax) Then
Bx = Drv & sNum(Right(Ax, 3)+1) & "\"
End If
Next
Fs.CreateFolder(Bx)
Do Until Fs.FolderExists(Bx)
WScript.Sleep 100
Loop
For Each Ax In WScript.Arguments
If Fs.FolderExists(Ax) Then
Fs.CopyFolder Ax, Bx
Else
Fs.CopyFile Ax, Bx
End If
Next

Function sNum(n)
If n < 10 Then
sNum = "00" & n
ElseIf n <= 99 Then
sNum = "0" & n
End If
End Function

昨日やったこれ
'====================================
'  For Each Bx In Ax.SubFolders
'  Set Matches = Re.Execute(Bx)
'  Next
'  For Each Match In Matches
'  i = i+1
'  Cx(i) = Match.Value
'  Next
'====================================
Matches の中身がソート順になってるとおいしいんだけどねっ。

たる さん 2002年 11月 17日 00時 39分 35秒

To: HP010 さん

>  ドライブに3桁連番のフォルダを作って、右クリック送るで
>  選択したファイルとか、フォルダを中に納めようとしてい
>  ます.

えっへっへ。ファイナルアンサーはしないよ。
あくまで数字回してFolderExistsで聞く時だけRight("000" & i, 3)

To: さか さん

> コピー中のダイアログが表示されているか。というのは
> どのように判定できるのでしょうか?

WshShell.AppActivate(sTitle)の戻り値は 成功:True/失敗:False です。

さか さん 2002年 11月 16日 23時 18分 28秒

To:たるさん
> > WinXPではコピー処理終了前にメッセージボックスが表示されてしまいます。
> > Win2000ではコピー終了までメッセージボックスが表示されません。
> > コピー終了までスクリプトを実行せずに同期を取る方法をご存知ないでしょうか?
> > よろしくおねがいします。
>
> キャッシュの問題っぽいです。
> XP調子が悪いので、試していないんですけれど、コピーしていますというタイトルダイアログがある間Sleepするというのはどうでしょうか?
アドバイスありがとうございます。
更に質問させていただきたいのですが、
コピー中のダイアログが表示されているか。というのは
どのように判定できるのでしょうか?
申し訳ありませんが、ご教授いただけないでしょうか。

HP010 さん 2002年 11月 16日 20時 40分 44秒

 お邪魔させて頂きます.

 ドライブに3桁連番のフォルダを作って、右クリック送るで
 選択したファイルとか、フォルダを中に納めようとしてい
 ます.

 001 というフォルダが既にあった場合は、番号を 1UP して
 002 というフォルダを作成して送ろう…001、010 というフ
 ォルダがあったなら、番号を 1UP して011 というフォルダ
 を作成して送ろうと思っとるんですが、うーん、煮詰まっ
 てしまいました. どなたかファイナルアンサー願います.

・デバッグ中

 Dim Ws, Fs, Re, Cx(99)
  Set Ws = CreateObject("WScript.Shell")
  Set Fs = CreateObject("Scripting.FileSystemObject")
 
  Set Re = New RegExp
  Re.Pattern = "(\d)(\d)(\d$)"
 Re.IgnoreCase = True

 Drv="F:\"
 Search(Fs.GetFolder(Drv))
 MsgBox Re.Replace(Cx(1),"$1" & "$2" & Cx(1)+1)
 'Fs.CreateFolder(Cx(1))

 Sub Search(Ax)
  For Each Bx In Ax.SubFolders
  Set Matches = Re.Execute(Bx)
  Next
  For Each Match In Matches
  i = i+1
  Cx(i) = Match.Value
  Next
 MsgBox i
End Sub

たる さん 2002年 11月 16日 11時 42分 06秒

To: さざなみ さん

> Visual C++を起動するときは
> Set cpp = CreateObject("MSDEV.Application")
> cpp.Visible = True
へー、これで出来るんですか。面白いですね。

> VB.netは、どうすればいいでしょうか?
> また、操作用のヘルプがあれば、その場所もお教え
> ねがいます。
Microsoft.Vsa 名前空間というのを使うはずです。(→MSDN)

そのクラスを使ったプログラムでDLLを作ってから、RegAsm.exeで登録してCOMで使います。

ちょっと別件で
Script for the .NET Framework スクリプト エンジン
というのに興味を持ったので、そのホストを作ろうかなとか試している最中なので
でも、abstractってなんじゃーとか言ってるレベル。道は遠い…。

To: ぷりこ さん

> 排他をかけてオープン・書き込み、
> その後の解除を待って別のバッチがオープン・・・

ありがちな解決策としては、ロックファイル(命名規則は事前に設けておく)を作って、そのありなしで判定
優先順とかを考えると、難しいんでパス。


To: ヨッシ さん

> ここにはお世話になりっぱなしなので勉強のため作ってみました。
> ただ削除は何回も使用したあとに行うので省きました。

お、よいですね。ちょこっとテンポラリで動くように改造して利用させてもらいます。

To: さか さん

> WinXPではコピー処理終了前にメッセージボックスが表示されてしまいます。
> Win2000ではコピー終了までメッセージボックスが表示されません。
> コピー終了までスクリプトを実行せずに同期を取る方法をご存知ないでしょうか?
> よろしくおねがいします。

キャッシュの問題っぽいです。
XP調子が悪いので、試していないんですけれど、コピーしていますというタイトルダイアログがある間Sleepするというのはどうでしょうか?

さか さん 2002年 11月 15日 21時 09分 17秒

とつぜんですが、CopyHere について質問させてください。
以下の様にファイルコピーを行い、
コピー終了後、メッセージボックスでメッセージを表示したいのですが、
WinXPではコピー処理終了前にメッセージボックスが表示されてしまいます。
Win2000ではコピー終了までメッセージボックスが表示されません。
コピー終了までスクリプトを実行せずに同期を取る方法をご存知ないでしょうか?
よろしくおねがいします。

' コピー
Function docopy(motoDir, sakiDir)
Dim oFolder
Dim Shell
Dim ErrNumber

Const FOF_FILESONLY = &H80
docopy = true
On Error Resume Next
Err.Clear

Set Shell = CreateObject("Shell.Application")
Set oFolder=Shell.NameSpace(sakiDir)
oFolder.CopyHere motoDir, FOF_FILESONLY
If Err.Number <> 0 Then
docopy = false
End If
On Error GoTo 0
Err.Clear

End Function

' 呼び元
If false = docopy(motoDir, sakiDir) Then
Msgbox "error"
Else
msgbox "end"
End If

ヨッシ さん 2002年 11月 15日 19時 57分 45秒


たるさん どうもです。

>ちょっと思ったんだけど、これを関数化したらよくないかな?
>VBSをテキストとして出力して実行して後で自分自身を消すみたいなの。
>引数を監視タイトル名とタイムアウト値ぐらいで。

ここにはお世話になりっぱなしなので勉強のため作ってみました。
ただ削除は何回も使用したあとに行うので省きました。

Set objWsh = WScript.CreateObject("WScript.Shell")
Set objFs = WScript.CreateObject("Scripting.FileSystemObject")

'*******Enter.VBSの作成*******************************
'作成ファイル名と監視タイトルとタイムアウト秒数を指定
CreateEnterVbs "c:\Enter.VBS","VBScript","10"

'*******Enter.VBSの作成*******************************
sub CreateEnterVbs(strCreateFileName,strTitle,strTimeOut)
Dim stream

Set stream = objFs.CreateTextFile(strCreateFileName,ForWriting)

stream.WriteLine " Option Explicit"
stream.WriteLine
stream.WriteLine " Dim objWsh,intKaisuu,strWindowTitle"
stream.WriteLine
stream.WriteLine " Set objWsh = WScript.CreateObject(" & chr(34) & "WScript.Shell" & chr(34) & ")"
stream.WriteLine
stream.WriteLine " intKaisuu=0"
stream.WriteLine " strWindowTitle=" & chr(34) & strTitle & chr(34)
stream.WriteLine " Do Until objWsh.AppActivate(strWindowTitle)"
stream.WriteLine " WScript.Sleep 200"
stream.WriteLine " intKaisuu=intKaisuu+1"
stream.WriteLine " If intKaisuu > 5 * " & strTimeOut & " Then"
stream.WriteLine " MSGBOX " & chr(34) & strCreateFileName &"で異常発生!終了します。" & chr(34)
stream.WriteLine " WScript.Quit (1)"
stream.WriteLine " End If"
stream.WriteLine " Loop"
stream.WriteLine
stream.WriteLine " objWsh.SendKeys(" & chr(34) & "{ENTER}" & chr(34) & ")"
stream.WriteLine " Set objWsh=nothing"
stream.WriteLine " WScript.Quit (1)"

stream.close
Set stream=Nothing
End sub


ぷりこ さん 2002年 11月 15日 16時 10分 56秒

またまた質問させてください。

処理結果を書き込むログファイルが、全PGとも同一のファイルで
同時実行の可能性も十分あり、20〜30のバッチを同時に実行した場合、
書き込みエラーとなります。

ログファイルを分けることは決定事項のため、おそらくできません。

排他をかけてオープン・書き込み、
その後の解除を待って別のバッチがオープン・・・

といったようなことはVBSで可能なのでしょうか?
どなたかご存知のかた、教えてくださいませ。
よろしくお願いします。

ぷりこ さん 2002年 11月 15日 15時 58分 59秒

たるさん。

ありがとうございます。
一度、その方法でやってみます。。。

さざなみ さん 2002年 11月 15日 10時 15分 55秒

さざなみです。

Visual C++を起動するときは

Set cpp = CreateObject("MSDEV.Application")
cpp.Visible = True

でできますが、
VB.netは、どうすればいいでしょうか?
また、操作用のヘルプがあれば、その場所もお教え
ねがいます。

たる さん 2002年 11月 14日 23時 27分 35秒

To: ヨッシ さん

> 教えて頂いた方法でバッチリOKでした。
よかったっすね。
ちょっと思ったんだけど、これを関数化したらよくないかな?
VBSをテキストとして出力して実行して後で自分自身を消すみたいなの。
引数を監視タイトル名とタイムアウト値ぐらいで。

To: たか さん

> Windowsスクリプティングホストースクリプト実行エラー
> スクリプト:C:¥WINDOWS¥FONTS¥Arial.vbs
> さらに、インターネットに接続時に最初に表示されるHPを何度設定しても、エロサイトになっています。泣きそうです。

VBS.Sorry.AかB・Cの症状ですね。Arial.vbsを探すというのは亜種だと思います。
http://www.symantec.com/region/jp/sarcj/data/v/vbs.sorry.b.html
このくらいならレジストリを書き換えれば何とかなりそうだけど、ノートン先生入れたほうが手間がなくて良いかも。

たか さん (biker69taka@yahoo.co.jp) 2002年 11月 14日 20時 49分 25秒

どなたか教えてください。かなりの素人ですけど、海外のサイトに迷い込んだせいなのか、パソコンを起動時に、
Windowsスクリプティングホストースクリプト実行エラー
スクリプト:C:¥WINDOWS¥FONTS¥Arial.vbs
行番号3  カラム0
説明  指定されたファイルが見つかりません
と出てきます。
さらに、インターネットに接続時に最初に表示されるHPを何度設定しても、エロサイトになっています。泣きそうです。

ヨッシ さん 2002年 11月 14日 16時 55分 07秒

たるさん どうもです。

> これ以降を別スレッドで、監視したらうまくいけました

教えて頂いた方法でバッチリOKでした。
ありがとうございました。

たる さん 2002年 11月 14日 00時 09分 25秒

To: ぷりこ さん

> この読み込み文の前に、ファイルがコピー中とか、書き込み中とか
> 判断する方法ってありますか?
WSHでやる分には、ないと思います。

> On Error Resume Nextで、
> 次行にIf Err then・・・とエラー処理をする方法以外に
> 何かよい方法をご存知の方がいらっしゃいましたら、
> どうか教えてください。
バッチBでファイルAを他の場所にコピーしてそれを読み込むのはダメですか?

To: hide さん

> VBでの
> 「dim ***** as ADODB.RecordSet」
> の形式をVBSの方で使用できないでしょうか?
dim xxxxx
Set xxxxx = WScript.CreateObject("ADODB.Recordset")

> 出来ないことを理由に上司にセクハラされそう困っています
( ´_ゝ`)< 質問には答えますよ

To: ヨッシ さん

> Set objWsh = WScript.CreateObject("WScript.Shell")
> Set objIE =WScript.CreateObject("InternetExplorer.Application")
> strURL="test.html"
> objIE.Navigate strURL
> objIE.Visible = true
これ以降を別スレッドで、監視したらうまくいけました。

objWsh.Run "wscript b.vbs", 0, False
Do While objIE.Busy: WScript.Sleep 100:Loop

objIE.document.all.btn1.click

【b.vbs】
Set objWsh = WScript.CreateObject("WScript.Shell")
Do Until objWsh.AppActivate("VBScript"):WScript.Sleep 100 : Loop
objWsh.SendKeys("{ENTER}")

To: 教えてお願い さん

> なんか初心者で海外のアダルトサイトに入ってしまって困ってます。なんかスクリプトホストのエラーになるんですけど誰か教えてくれませんか?まじ泣きそうです。どんな細かい事でもいいんで分かる人は携帯なんですけどぜひメールください

エラーメッセージは何ですか?まさか「syashin3.vbsが見つかりません」じゃないでしょうね?
あれ聞いてきた人過去に2人いたけど、ほとんど解決同然のような未決。はたしてどうなったんだろう?

それはさておき、エラーメッセージをぐぐって見ると案外解決に近づきますよ。

To: つの さん

> win98でフォーマットを起動させるvbsを教えてください。
事前にフロッピー入れといてね。
WScript.CreateObject("WScript.Shell").Run "COMMAND /C ECHO " & vbCr & "|FORMAT A:", 0, True

つの さん (peace_2@mail.goo.ne.jp) 2002年 11月 13日 17時 44分 08秒

どなたか教えてください。

win98でフォーマットを起動させるvbsを教えてください。

初心者ですが返事よろしくお願いいたします。


lovebird さん (lovebird@hi-ho.ne.jp) 2002年 11月 13日 16時 26分 53秒

初めての書き込みです。(長くてすみません)

通常使うプリンタの切り替えについての質問です。
Win98では問題なかったので、OSをWinXPに変更してからの問題だと思います。
(wscript.exeのバージョンは5.6.0.6626です)

下記の2行で「通常使うプリンタの設定」はできます。

Set objWshNetwork = WScript.CreateObject("WScript.Network")
objWshNetwork.SetDefaultPrinter "\\server\lp8700r"

確かに、[プリンタとFAX]を観察していると、「通常使うプリンタ」
のマークもちゃんと付いています。
また、レジストリの
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows
も切り替わっています。
しかし、何か変・・

再現する具体的な症状を1つ上げると、
何かEXCELファイル(SAMPLE.XLS)を開いて、
[ファイル]→[印刷]とやると印刷ダイアログが開きます。
このダイアログのプリンタの欄には、
名前(M)というComboBoxと状態:、種類:、場所:、コメント:
などが表記されます。
しかし、上記のスクリプトで選択されたプリンタの場合は、
状態:〜コメント:まで正しく表示されているにもかかわらず、名前(M)
のComboBoxは「空白」のままなのです。

ちなみに、[プリンタとFAX]で対象のプリンタを右クリックして、
[通常使うプリンタに設定(F)]をした場合には、「空白」ではなく正しく
表示されます(当然ですが)。
EXCELの場合は、(ネットワーク上のプリンタを捜しているのだと思いま
すが)しばらく時間が経つと印刷してくれますので、致命的ではないので
すが、アプリケーションによっては(たとえば一太郎)、「プリンターが
選択されていません・・・」などとエラーを出して、それ以上進んでくれ
ません。
こういった場合は、結局手動設定を余儀なくされます。

結構、プリンタを切り替えながらアプリを呼び出すことが多いので、
WinXPに変えてから困っています。

長文になり申し訳なかったですが、ご理解いただけたでしょうか?
どなたかご教授お願いします。

さざなみ さん 2002年 11月 12日 13時 01分 20秒

さざなみです。

>筑集眺餅 さん
>VBAのエディタがあったら、オブジェクトブラウザで
>Assistant を調べたら設定値名のリストが出てきまっせ。

その通りでした。

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

筑集眺餅 さん 2002年 11月 12日 12時 42分 25秒

To:さざなみはん

>XL.Assistant.Animation = num
>でできますが、これの動作一覧を、どこか
>のサイトで解説されていないでしょうか。

VBAのエディタがあったら、オブジェクトブラウザで
Assistant を調べたら設定値名のリストが出てきまっせ。
(Enum MsoAnimationType)

教えてお願い さん (smile-for-me.0822@docomo.ne.jp) 2002年 11月 12日 10時 19分 30秒

なんか初心者で海外のアダルトサイトに入ってしまって困ってます。なんかスクリプトホストのエラーになるんですけど誰か教えてくれませんか?まじ泣きそうです。どんな細かい事でもいいんで分かる人は携帯なんですけどぜひメールください

さざなみ さん 2002年 11月 12日 09時 46分 20秒

さざなみです。
アシスタントに特定の動作をさせるときは

XL.Assistant.Animation = num

でできますが、これの動作一覧を、どこか
のサイトで解説されていないでしょうか。

ヨッシ さん 2002年 11月 11日 16時 35分 56秒

またまた質問させてください。

下記のような test.html のボタンをクリックしてさらに表示される
ダイアログボックスのOKボタンをクリックしたいのですが可能でしょうか?

<HTML>
<input type="button" name="btn1" value="ボタン" onClick="MSG()">

<script type="text/Vbscript">
SUB MSG()
MyVar = MSGBOX ("よろしいですか",vbOKCancel)
END SUB
</script>
</HTML>

Set objWsh = WScript.CreateObject("WScript.Shell")
Set objIE =WScript.CreateObject("InternetExplorer.Application")
strURL="test.html"
objIE.Navigate strURL
objIE.Visible = true
Do While objIE.Busy: WScript.Sleep 100:Loop

objIE.document.all.btn1.click
objWsh.SendKeys("{ENTER}")

これだとbtn1.clickで止まって次のSendKeysが実行されません。

objIE.document.all.btn1.click の変わりに

objIE.document.all.btn1.focus
objWsh.SendKeys("{ENTER}")
WScript.Sleep 1000
objWsh.SendKeys("{ENTER}")

とすればとりあえずは動いたのですがSendKeysを使っているため
PCの状態によっては誤動作しそうで心配です。

よろしくお願いします。


hide さん 2002年 11月 11日 14時 43分 48秒

VBScriptに関する質問です。(ど素人ですのであしからず・・・)

VBでの
「dim ***** as ADODB.RecordSet」
の形式をVBSの方で使用できないでしょうか?
出来ないことを理由に上司にセクハラされそう困っています
お願いします。

hide さん 2002年 11月 11日 14時 40分 57秒

VBScriptに関する質問です。(ど素人ですのであしからず・・・)

VBでの
「dim ***** as ADODB.RecordSet」
の形式をVBSの方で使用できないでしょうか?
出来ないことを理由に上司にセクハラされそう困っています
お願いします。

ぷりこ さん 2002年 11月 11日 14時 08分 32秒

バッチAで、ファイルAをコピーするという処理(サーバーからクライアントへ)と、
バッチBで、ファイルAの存在を確認し、存在すれば、VBSでファイルAを読み込んで、ファイルBに書き込むという処理があり、
5分間隔でバッチが起動するような仕組みになっています。
(このあたりの処理方法については、決定事項のため変更できません。)
バッチ起動のタイミングによっては、ファイルAのコピー中にバッチBが起動し、
VBSで読み込めずにエラーになります。

ファイルの読み込みはこのように書いてます。
この行で落ちることを確認してます。
'元ファイルオープン
Set Fs = Fso.OpenTextFile("ファイル名", 1)

この読み込み文の前に、ファイルがコピー中とか、書き込み中とか
判断する方法ってありますか?

On Error Resume Nextで、
次行にIf Err then・・・とエラー処理をする方法以外に
何かよい方法をご存知の方がいらっしゃいましたら、
どうか教えてください。

よろしくお願いします。

ヨッシ さん 2002年 11月 07日 23時 59分 12秒

30wさん ありがとうございます。

all ってこういう使い方ができるんですね。勉強になります。

>nameの値が3つとも同じって、意味があるのでしょうか?(笑)
これってやっぱり手抜きですかね〜。

30w さん 2002年 11月 07日 21時 55分 00秒

僕の環境では、

msgbox objIE.document.all.btn1(1).value

で、bbbbと表示されました。


nameの値が3つとも同じって、意味があるのでしょうか?(笑)

ヨッシ さん 2002年 11月 07日 20時 48分 27秒

また質問させてください。

下記のようなFormタグがない test.html の"bbbb"のボタンをクリック
したいのですがどのようにすればいいでしょうか?

<HTML>
<INPUT type="button" name="btn1" value="aaaa" ><P>
<INPUT type="button" name="btn1" value="bbbb" ><P>
<INPUT type="button" name="btn1" value="cccc" ><P>
</HTML>

Set objIE =WScript.CreateObject"InternetExplorer.Application")
strURL="test.html"
objIE.Navigate strURL
objIE.Visible = true
Do While objIE.Busy: WScript.Sleep 100:Loop

objIE.document.ここの記述の仕方がわかりません.click

XE75 さん (py5y-mtmt@asahi-net.or.jp) 2002年 11月 07日 16時 53分 13秒
URL:http://www.asahi-net.or.jp/~py5y-mtmt

JUN さんへ
>PCのセットアップを自動化しようとしています
プログラムを、ただ単純にPCにコピーをしたいのでしょうか?
それとも、setup.exe があるのでしょうか?

JUN さん (jun@bamss.co.jp) 2002年 11月 07日 11時 50分 09秒

初めましてJUNともうします。
すみません、機能WSHの存在を知った、かなりの初心者です。
宜しくお願い致します。

WSHにてPCのセットアップを自動化しようとしています。
サンプルなどをみていて疑問なのですが、操作したいオブジェクトを
CreateObjectでどういうIDで呼び出すのかだとか、
そのオブジェクトの持っているプロパティだとか、
メソッドをどこを見て調べたら良いのかが、
解りません、WSH関連のオブジェクトの説明はMicrosoftのページにも
載ってましたが、サンプルに出てくる、ユーザー情報取得のスクリプトだと

Set objDomain = GetObject("WinNT://" & Domain【ドメイン名】)
Set User = objDomain.Create("user", strName【ユーザー名】)
User.SetInfo
Set User = Nothing
Set User = GetObject("WinNT://" & objDomain.Name & "/" & strName)
User.FullName = strFullName

とかあり、ユーザー情報を操作するオブジェクトの説明を、何処を見て探したり
調べたりしたら良いのか解りません。

サンプルでいくと、
@GetObjectでの "WinNT://" & Domain【ドメイン名】の指定方法はどういう意 味なのか?
AobjDomainオブジェクトのCreateというメソッドの存在とそのパラメータは
 何処を見て知る事ができるのか?
BobjDomainオブジェクトのCreateメソッドで作成したUserオブジェクトに
 どのようなプロパティやメソッドが存在するのか、このサンプルを作った
 人は何処を見て調べたのか?(FullName等)
疑問です、みなさん何処をみて自分の操作したいオブジェクトを探し出して
そのオブジェクトの機能を調べて居られるのでしょうか?

うえぞう さん 2002年 11月 06日 23時 43分 28秒

はじめまして。

VBScriptで、スクリプトファイル自身を書き換えるような処理を記述した
ところ、私の環境では問題なく書き換えられました。

しかしながら実行中のファイルを書き換えるというのはやはり抵抗感が
あります。
おそらく、WSホストのほうで読み込んでからはファイルが閉じられている
ためなのでしょうが、このような処理はエラーを招きがちでしょうか??

皆様の見解を教えてください。
抽象的な質問で申し訳ございません・・・。

Set TxtStrm = fs.CreateTextFile(スクリプトファイルのパス)
TxtStrm.Close

Set TxtStrm = fs.OpenTextFile(スクリプトファイルのパス,8)
TxtStrm.Write 書き込む文字列
TxtStrm.Close

筑集眺餅 さん 2002年 10月 30日 13時 08分 25秒

To:ヨッシはん

よろしおしたな。

To:chakoはん

>まず、WSHでパスを追加したいのですが、そのようなメソッドが見つかりません。
>無理なのでしょうか?

ようは知りまへんねんけど、PATH とかの環境変数やったら、
WshEnvironmentオブジェクトゆうのがありまんので、
WshEnvironment.Removeメソッドあたりのサンプルが
なんか関係あるかもしれまへん。

ヨッシ さん 2002年 10月 29日 22時 59分 35秒

筑集眺餅さん ありがとうございます。

実行してみたところ 
4.0 (compatible; MSIE 6.0; Windows NT 5.1)
と見事に表示されました。
実は昼間ずっとあちこち彷徨って navigator.appVersion
まではたどり着いていたのですが oIE.Document.parentWindow
の書き方がわかっていなかったようです。
これで安心して眠れます。

Return