windows server2003です。
ActiveDirectoryのユーザ一括登録をする為に
ユーザデータ(csvファイル)の自動化が出来ないか
検討しています。
何か良い案はありませんでしょうか?
a3さん ありがとうございます。
教えていただいた様に、環境変数%TMP%のさす場所に一時ディレクトリが残っていました。これを削除することによりコピーすることが出来るようになりました。
吉岡 照雄さん作のZIP.VBSは実はもう参考にさせて貰っていました。今回ZIPファイルの中の個別のファイルを指定して解凍コピーしたくて色々試しているうちに、壁にぶち当たっていました。
もう少し勉強して、VBSで一時ディレクトリを削除できるようにがんばってみます。
> はてな さん 2007年 01月 27日 11時 06分 31秒
ZIPフォルダの件
そもそも、ZIPファイルがフォルダのように見えるのは
zipfldr.dll(Compressed (zipped) Folders Shell Extension)という
シェル拡張プログラムの機能です。XPには標準ですかね。
こいつの動きを調べてみると、以下のような感じ。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
1.ZIPファイルがクリックされる。
ZIPファイルをフォルダに見せかけて、圧縮されている情報を
見せかけフォルダ内にあるように見せる。
2.ZIPフォルダ内のファイルがクリックなどで操作されようとした時点で
ユーザプロファイルのLocal Settings\Tempフォルダに
一時フォルダを作成して、その中にZIPファイルの中身を展開。
※もしかすると、環境変数%TMP%のさす位置かもしれません。(未確認)
多分、「C:\Documents and Settings\ユーザ名\Local Settings\
Temp\test.zip の一時ディレクトリ 1」ができており、
その中にZIPファイルが展開されているはず。
3.ZIPフォルダ内の仮想的なファイルの代わりに
一時フォルダの内容を表示する。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
大雑把に言えばこのような仕組みです。
この一時フォルダは削除されないため、スクリプトを複数回動かすと
2の処理をするときに
「ファイルの上書きの確認」が出てしまうのですね。
なので、VBSで毎回一時フォルダを削除してしまえば
「ファイルの上書きの確認」の問い合わせは来なくなるとおもいます。
※該当の一時フォルダは「隠しファイル」属性がついていることに注意。
ご参考まで。
・・・と書き込んでいて、
はてな さん の目的のためには、もっと参考になるもの
(というかそのものずばり)があるのを思い出しちゃいました。
吉岡 照雄さん作のZIP.VBSです。
Vectorで「ZIP.VBS」で検索すれば出てくると思います。
付属の資料はとっても勉強になりますよ。
HTAとvbsとbatを使って、結構なスクリプトを作ってしまったあとで、
これをネットワーク共有で使おうとしたら、
vbs・・・このファイルを開きますか?
bat&HTA・・・発行元を確認できませんでした・・・
というセキュリティの警告が出ます。
googleってみましたが、ダウンロードしたファイルの云々 と
いったものばかりで、ヒットしません。
この症状は、ダウンロードしたファイルへの保護とは似て非なる
機構だと思うのですが、回避する方法をご存知ありませんか?
cscrit \\cpu\share\test.vbs
cmd.exe \\cpu\share\test.bat
ではOKなのですが、これではソース改変が膨大なことに
なってしまいます。
ちなみにXP−SP2です。 よろしくお願いします
Genesis さん、
適材適所、もし UWSC がフィットするようならぜひ :)
> koike さん 2007年 01月 29日 12時 45分 03秒
Windows2000Server環境で以下のようなスクリプトで
情報を取得したことがあります。
WMIではなくて、ADSIスクリプトですが。
ーーーーーーーーーーーーーーーーーーーーーー
Dim objDomain
Dim strDomainName
strDomainName = "your_domain_name"
Set objDomain = GetObject("WinNT://" & strDomainName)
With objDomain
WScript.Echo "[MinpasswordAge] " & .MinpasswordAge / 86400
WScript.Echo "[MaxpasswordAge] " & .MaxpasswordAge / 86400
WScript.Echo "[MaxBadPasswordAllowed] " & .MaxBadPasswordsAllowed
WScript.Echo "[MinpasswordLength] " & .MinpasswordLength
End With
Set objDomain = Nothing
ーーーーーーーーーーーーーーーーーーーーーー
いりやさん、レスありがとうございました。
WSHではやはり不可能なんですかね。
umiumiの存在は全く知らなかったので、勉強してみます。
palazzo さん ありがとうございます。
とりあえず、次の処理に進む前に、待ち時間を入れて見ます。
それにしても、一度コピー出来なくなったZIPファイルをコピー出来るようにする方法は無いものでしょうか。スクリプト上だけでなく、エクスプローラで手動コピーも出来ないんです。少し困っています。
Der Aufstellungsort s sehr Fachmann! Mach weiter so! OH- ja, eine Extraanmerkung - mネlicherweise kマntest du mehr Abbildungen auch addieren! So gutes Glトk zu deiner Mannschaft!
Der Aufstellungsort s sehr Fachmann! Mach weiter so! OH- ja, eine Extraanmerkung - mネlicherweise kマntest du mehr Abbildungen auch addieren! So gutes Glトk zu deiner Mannschaft!
むたぐちさん、ありがとうございます。
レジストリについてなんですが、紹介していただいたサイト(虎の巻)の情報は既にチェック済みです。
サイトの情報は XP HOMEなどの場合で、2003 server には当てはまらないようです。
レジストリが見つからないのです。
レジストリ内を"password"等で検索してもそれらしいものはありません。
とりあえず "net accouts" & "secedit"コマンドを利用して情報を引っ張ってくるつもりです。
はてな さん 2007年 01月 27日 11時 06分 31秒
一時フォルダの件はShell.Applicationが非同期で動作することが関係あるのではないでしょうか。スクリプトのロジックが全部流れていても、COMのコピー処理の実体は動き続けている場合もありますし。COM側の処理終了の判定は私では分かりません。申し訳ないです。
To: koike さん
> 管理ツール − ローカルセキュリティポリシー − パスワードのポリシー の設定内容を読み込みたいのですが、どうような方法があるでしょう?
対応するレジストリキーを読み込めばよいと思います。
XPレジストリ虎の巻:パスワードポリシーの変更
http://blog.livedoor.jp/tricube/archives/51069244.html
Reg_Binaryな値があるので、WMIの\root\default:StdRegProvを使う必要があるかも?
Microsoft Windows 2000 Scripting Guide - Reading a Binary-valued Entry
http://www.microsoft.com/technet/scriptcenter/guide/sas_reg_overview.mspx?mfr=true
# WshShell.RegReadでも読み込みは大丈夫だったかな?
To: YamaKen さん
> 特定のサイト、特定のページからの一定のパターンを持ったリンクをダウンロードしたいと思います。
基本は
Windows Script Wiki - FAQ
http://winscript.s41.xrea.com/wiki/index.php?%5B%5BFAQ%5D%5D
の、「Webからファイルをダウンロードするには?」と
「Webからテキストファイルを取得し、文字列に代入するには?」の組み合わせだと思います。
AJAXでもおなじみ、Msxml2.XMLHTTPを使います。
まず、サイトのHTMLを取ってきて、リンクを抽出します。
リンクを抽出するのは正規表現(RegExp)を使うと良いです。
正規表現のパターンは、たとえばこんなもんでいけるんじゃないでしょうか。
RegEx.Pattern = "<a href\=\""(.+?)"".*?>(.+?)<\/a>"
そのあと、抽出したリンク先のアドレスに対してMsxml2.XMLHTTP+Adodb.Streamの組み合わせで
ファイルに落とします。
デフォルトでは重複ファイル名に対しては上書きになるので、
先にFileSystemObjectでファイルの存在確認をすることになるでしょう。
特定のサイト、特定のページからの一定のパターンを持ったリンクをダウンロードしたいと思います。
VBScript にて実現するとしたら、どのようなコンポーネントを使えばいいのでしょう? 同一ファイル名のものは上書きを想定していますが、既存ファイルに同一名のものがあればスキップすることをオプションで選べればベターですかね。
コードが出来上がったらタスクにでも登録して、定期巡回させようと考えています。
で。目的なのですが、RSS 対応していないが日次更新の mp3 ファイルを入手しようとしてます。次のサイトの MP3 ファイルですね。
http://www.un.org/radio/
Genesis さん、
ダイアログも中身は HTML document だと思って InternetExplorer.Application
オブジェクトの document 属性を通じて document オブジェクトを掴める
か試してみたのですができませんでした。
関連する投稿
http://www3.bigcosmic.com/board/s/board.cgi?id=umiumi&mode=all&no=472
palazzoさんアドバイスありがとうございます。
一応
If newfolder <> i Then
で第1引数を処理しないようにしていたのですが、うまくないですね。
あと気になることがあるのですが、
コピーの処理が終わる前に、次の処理に進むと良くないのでしょうか。
また、
ZIPフォルダからコピーが出来ない件について、いろいろ調べましたが
コピーの際に一時フォルダが作成されるようなのですが、それが残っていて
コピーできないなんてことあるでしょうか。一時フォルダの情報をクリア
する方法は無いのでしょうか。
よろしくお願いします。
IEで開いたページ中のボタンを押すと現れるダイアログウィンドウ
を操作したいと思っています。
ダイアログウィンドウのIDめいたものを取得、これを通じてウィン
ドウ内のボタンを操作するような方法はありませんか?
具体的には、下記1.〜3.のうちの3.が目的です。
1.既にオープンされているIEのオブジェクトを探し出し、それを
通じて、ページのHTMLソースを取得。
2.1.により、目的とするボタンを見つけてこれをクリック
3.(おそらくshowModalDialogによる)ダイアログウィンドウ上の
ボタン(OK,キャンセルの2つ)のうち、OKを押したい。
また可能ならば、ウィンドウ上の表示文字列もあわせて取得したい。
やむをえず、ダイアログウィンドウのタイトル文字列を手がかりに、
AppActivateおよびSendkeyで妥協していますが、ウィンドウ出現ま
での時間差等もあり、本質的な解決策を探しています。
http://www.microsoft.com/japan/msdn/columns/dude/dialog2.htm
を例に解説戴けると幸いです。皆様よろしくお願いします。
windows server 2003 です。
VBScriptを使用しております。
管理ツール − ローカルセキュリティポリシー − パスワードのポリシー の設定内容を読み込みたいのですが、どうような方法があるでしょう?
WMIを使用して読み込むことなどはできないのでしょうか?
自分でも探していますが、なかなか見つかりません。
>はてな さん 2007年 01月 23日 22時 30分 40秒
For Eachで列挙するのはマズいのではないでしょうか。第1引数の値まで取ってきてしまいますよ。やるならば、
For idx = 1 To WshArg.Count - 1
Next
のように、通常のFor文で開始インデックスを指定してあげるといいです。
はじめまして、ZIPファイルの解凍をVBSで行おうとして困っております。お助けください。
以下のスクリプトを作成しました。
第1引数に解凍したファイルのコピー先のパスを指定します。
第2引数以降に解凍したいZIPフォルダー内のファイルのパスを指定します。
例;c:\terget c:\test\test.zip\test1.txt c:\test\test.zip\test2.txt
Option Explicit
Dim ObjShell, ObjTerget, ObjFso, FolderItm, ObjFolder
Dim newfolder, ipasu
Dim WshArg
Dim i, j
Set WshArg = WScript.Arguments
Set ObjShell = WScript.CreateObject("Shell.Application")
Set ObjFso = WScript.CreateObject("Scripting.FileSystemObject")
newfolder = WshArg.Item(0)
Set ObjTerget = ObjShell.NameSpace(newfolder)
For Each i In WshArg
If newfolder <> i Then
ipasu = ObjFso.GetParentFolderName(i)
Set ObjFolder = ObjShell.NameSpace(ipasu)
Set FolderItm = ObjFolder.Items
For Each j In FolderItm
If ObjFso.GetFileName(i) = j Then
ObjTerget.CopyHere j
Exit For
End If
Next
End If
Next
Set ObjShell = Nothing
Set ObjFso = Nothing
Set ObjTerget = Nothing
Set WshArg = Nothing
Set ObjFolder = Nothing
Set FolderItm = Nothing
これで、実際にZIPフォルダー内の指定のファイルがコピーされたのですが、何度か行っているうちに「ファイルがあります。」のメッセージが出るようになり、コピー出来なくなりました。(コピー先にファイルがあるわけではありません。その場合は上書きの確認が出てコピー出来ます。)
ZIPフォルダの名前を変更すると、またコピー出来ます。
コピーの出来なくなったZIPフォルダーは、エクスプローラーで開いてコピーしようとしても出来ません。(解凍してからのコピーは出来ます。)
ZIPフォルダー内から直接コピーが出来ません。
上記スクリプトで問題となるのはどこでしょうか。
また、コピーできなくなったZIPフォルダーをコピー出来るように戻す方法はないでしょうか。(パソコン再起動してもだめでした。)
わかりにくい説明で長文申し訳ありません。よろしくお願いいたします。
To: 初心者。。 さん
遅くなりましたが、すぐ下のとむさんのコードがそのまま使えるんじゃないでしょうか。テキストファイルをテキストストリームで読み込むのがポイントです。
テストです
管理人むたぐちさん
ご教授ありがとうございました。なんだか結果的にプログラマ1年生のような失敗でした。(恥)コーディング以前の問題ですね。しかしそれを見抜くたむぐちさんは素晴らしい推察力の持ち主ですね。助かりました。
複数テキストファイルをひとつにまとめたいと思い、以下のようにやってみたのですが、個々にコピーされてしまいます…
どなたかご指導よろしくお願いします。
Option Explicit
On Error Resume Next
Dim objFSO
Dim strCopyFile1
Dim strCopyFile2
strCopyFile1 = "d:\Henkan\*.txt"
strCopyFile2 = "a:\"
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
If Err.Number = 0 Then
objFSO.CopyFile strCopyFile1, strCopyFile2, True
If Err.Number = 0 Then
WScript.echo "■□ 処理が終了しました。□■"
Else
WScript.echo "Err " & Err.Description
End If
Else
WScript.echo "Err " & Err.Description
End If
Set objFSO = Nothing
To: とむさん
不思議な現象ですが、よ〜く考えると分かりました。
ファイル名 : ファイルの内容(改行略)
a.txt : a
b.txt : b
とします。
まず一回目はa.txtとb.txtが結合されてresult.txtに書き出されます。
a.txt : a
b.txt : b
result.txt : ab
さて、二回目はa.txt、b.txt、result.txtが結合されて変数txtに保存されます。
したがって
変数txtの中身 : abab
です。
その後、result.txtが削除され、result.txtに変数txtの中身が書き出されます。
結果、こうなります。
a.txt : a
b.txt : b
result.txt : abab
結果的に追記と同じことになってしまうわけです。
対策としては、削除の部分をファイル結合の前に持ってくるか、
ファイル結合の際result.txtを除外するかですね。
WSHのファイルの入出力で質問があります。
以下コードにて任意のフォルダに存在する全てのファイルを1つに統合することを試みています。概ね良好なのですが1点、ファイルが存在すれば削除してからファイルを生成するという箇所がうまく動作しません。具体的には削除する前の内容にたいして追記になってしまいます。削除したつもりが削除できていないイメージです。しかし削除の箇所のみ切り出して実行すると正常動作します。
そのような事象でご教授いただける方よろしくお願いいたします。
↓以下コード↓
' フォルダ内のファイルを全て統合する。
Const Source = "C:\A\B\"
Dim txt
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
txt = ""
' 指定フォルダ内のファイルの内容を変数に追記格納
Set oTarget=Fs.GetFolder(Source)
For Each oFile In oTarget.Files
Set ts=Fs.OpenTextFile(Source & oFile.Name,1,0)
txt=txt & ts.ReadAll
ts.Close
Set ts=Nothing
'MsgBox oFile.Name & " ** " & txt
Next
' ファイルの存在チェック
If Fs.FileExists(Source & "result.txt")=TRUE Then
Fs.DeleteFile Source & "result.txt"
End If
' 変数の内容を一括ファイル出力
Set oTs = Fs.CreateTextFile(Source & "result.txt")
oTs.Write txt
oTs.Close
VBSで機器制御者さん、
わたしも自分の PC に Subversion と TortoiseSVN を入れました。
a3さん、いりやさん
返信ありがとうございます。
WSFを利用して、作成してみようと思います。
VBSばかりが先にいってしまい、WSFまで気が回りませんでした。
ありがとうございます。
以下、駄文。
趣味でプログラミングを作成していたときは、目的が
シンプルなのでバージョン管理とかに気を遣わないでも
よかったんですけどね...。工数とかもあまり気になりませんし。
仕事となると、ちょっと動かないだけだけで腹がたって、
いらいらしてしまいます。
> VBSで機器制御者さん
WSF 形式で開発作業を進められるのがよいと思います。
スクリプトエンジン側で持っている機能です。
ちなみに昔に同じ話題を議論したときのメモがこちらに
あります。
http://iriyak.adam.ne.jp/wiliki/uwsc.cgi?iriyak%3aJScript%3a%a5%d5%a5%a1%a5%a4%a5%eb%a4%f2%a5%ed%a1%bc%a5%c9
ご参考まで
> VBSで機器制御者 さん 2006年 12月 26日 09時 22分 18秒
WSH2.0以降にあるWSFを使えば、
別ファイルをIncludeするようなことはできます。
Windows Scripting Host Laboratory
http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/ の
「WSH2.0の新機能」
4.WSFファイルタイプの追加
・<script>要素
が参考になるのではないでしょうか?
大変ためになるページありがとうございます。
現在、VBSで実験装置の制御バッチを作製し、使用しています。
制御条件を頻繁に変更しなければならないため、コンパイラ言語ではない、スクリプト言語のありがたさを痛感しています。
ところで、質問なのですがVBSで簡単なライブラリを作成する事は可能なのでしょうか?
Perlでいうrequireメソッドのようなもの、ちょっと異なりますがC言語でいうincludeメソッドのようなものをVBSで使用したいです。
ネットで調べるとCOMコンポーネントの作製はできるようなのですが、そこまで凝る必要もありません。手軽さがVBSのメリットだと思っていますので...。
どなたか、ご存知の方がおられたら教えていただけたらと思います。
To: VBScriptを楽しむ者 さん
このサイトの情報はたしかに古いものも多く、現在の主流の環境でおいては役に立たない記述も散見されるのが現状です。
ですが、これを一つ一つ直していく時間(と気力…)が取れないのが現状です。
ただ、XPなどの新しい環境に置いて動作しない、などの問題は、指摘があればフォローを加えています。というわけで、逐一指摘していただければ加筆訂正を加えていくということは現在でもやっております。
しかしながら、新しいテクニック等はWikiに移行していますし、VBScriptの講座に関しては@ITさんのところでまた一から書かせてもらっています。
そういう意味では旧記事に存在価値はあまりないので消してしまうというのも一つの考え方ですが、私は、一度ネットに公開された情報はたとえ情報価値が薄れようとも情報は情報、ということで残しておく派です。
そんな感じでこれからもやっていこうと思っていますので、なにかとご不便をおかけしますがよろしくお願いします。
ご意見ありがとうございました。
> nat さん 2006年 12月 21日 13時 44分 50秒
特定のセキュリティグループに所属するユーザだけが、
このコマンドを実行できるという意味でしょうか?
※質問の意図とちがっていたら、ごめんなさい。
もしそうなら、「このコマンド」に対して
ACL(アクセス制御リスト)を設定するだけでよいのでは?
・「このコマンド」を右クリックープロパティ選択
・プロパティダイアログが表示されるので、「セキュリティ」タブ選択。
そこから、対象グループを追加して「読み取り」「読み取りと実行」を許可すればよいかと思います。
※対象グループ以外が実行できないようにするなら
他のユーザ・グループの実行権限をはずす必要があるかと。
コマンドでやるなら、caclsコマンドをヘルプで調べてみてください。
WSH勉強始めました。
実現したいこと---
Active Directoryで定義されている自身のセキュリティグループを
検索し、対象のグループであればこのコマンドを実行する。
上記のような事は可能でしょうか。
どうぞ宜しくお願い致します。
>>管理人さんへ
はじめまして。いつも本サイトの情報を一部活用させてもらっており、
管理人さんには感謝してしております。
さて、一つ質問があります。WSH Lab さんのサイト情報の一部はかな
り古いのですが、今後現段階における情報に切り替えていくことはない
のでしょうか?Windows 98系の情報はあっても、Windows XP系の情報が
あまり見当たらないようにも思うのですが。特に、WSHテクニック集の
項目の一部は情報として古く、Windows XPを使用している者にとっては、
全く利用できないものもあります。(Microsoftさんがコロコロ仕様を変更
してしまうので、余計に厄介なのかもしれません。)
色々書き込みましたが、できればご返答お願い致します。
> vbs勉強中 さん 2006年 12月 17日 21時 49分 18秒
以下の方法で判定できます。
-------------------------------------------------------------------
msg = InputBox("メッセージを入力してください。")
If IsEmpty(msg) Then
Msgbox "キャンセルが押されました。"
Else
Msgbox "入力されたメッセージは[" & msg & "]です。"
End If
-------------------------------------------------------------------
キャンセルしたときに代入されるのは""ではなく、Empty値。
ただ、Empty値は文字列として取り扱われた場合、""に変換されてしまうので
『If msg = Empty Then』 とかやってしまうと、だめですね。
IsEmpty()関数で判定する必要があります。
inputboxでブランクのままOKを押すと
""が返され
キャンセルでも""返される場合は
どのように処理をわければいいのでしょうか?
>suzuki さん (suzuki100-100@infoseek.jp) 2006年 12月 15日 15時 47分 38秒
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/aug05/hey0816.mspx
イベント ログで特定のイベントの発生を監視する方法はありますか
これのことでしょうか?
はじめまして、勉強しながら拝見させていただいております。さて、イベントビュアーに発生した特定のイベントについてWSHで指定すると、画面のポップアップに表示されると知り合いに伺いました。(例えば イベントID28が発生したら、サーバ管理者の使用するPC画面に イベントID28が発生しました)
これに該当するソースがMSにもないように思われます。もし、ご存知でしたら教えていただけませんでしょうか?
>ぱたぱた さん (hata@alvo.co.jp) 2006年 12月 10日 17時 45分 49秒
VBScriptを使用しなくても、net localgroupというコマンドで、ご希望の操作は可能です。
書式も簡単ですから、使い方はヘルプを見てください。
しかし折角VBScriptで調べていらっしゃいますので、VBScriptで。
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/oct05/hey1024.mspx
Hey, Scripting Guy! - ローカル Administrators グループからグループを削除する方法はありますか
ここに詳しい解説があります。
というか、追加のときのADDをREMOVEに変えるだけなんですけどね。
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/local.mspx
Hey, Scripting Guy! ‐ ローカル アカウント
このあたりも参考になるでしょう。
初めて投稿します。
ユーザ管理で、グループからメンバを特定のメンバを削除、追加をしたいスクリプトを考察しています。
例
Domain:test
GROUP :Group_A,Group_B,Group_C
Group_C に Group_A と Group_B がメンバとして存在しています。
このGroup_C から Group_B をメンバから削除と追加をスクリプトで
記載したいのですが、?部分をどのように書いてよいか判らずにいます。
Set objUser = GetObject("WinNT://" & "TEST")
if objUser.Name="Group_C" then
?
End if
新規にユーザ追加するscriptはMicrosoftなどのWEBで書かれておりますが
Groupのメンバから外したり、追加する場合は、どのように記載したらよいか
教えて頂けないでしょうか。もしくは、このWEBに記載されているなどのような
情報でも構いません。
よろしくお願いします。
実行するとテキストボックスがある画面を表示し、常にどのウィンドウよりも最全面にする方法を知りたいです。
テキストボックスの無いダイアログボックスであればvbscriptで実装できたんですが。。。(msgboxの引数を使って)
むたぐちさんへ
ご解答ありがとうございました。
>セキュリティ上の制約
やはりそうでしたか・・・あれからいろいろ探して、かなり厳しいことだけはわかってたんですが・・。
他の方法を検討してみます。
ありがとうございました。
ブログの方に近況を上げておきました〜。
http://blogs.wankuma.com/mutaguchi/archive/2006/11/28/47454.aspx
To: ゆゆ さん
> vbスクリプトでdocument.forms[i].elements[i].click でダウンロードボタンにクリックイベントをおこさせると「ファイルの保存」ダイアログが開くのですが、このダイアログのファイル名のデフォルト値を取得し、そこにダウンロード先のフルパスを設定したいのですが、どうすれば取得できるのでしょうか??
これはセキュリティ上の制約で、できなかったと思います。
というわけでほかの手段を検討してみてください。
To: マクベの壺 さん
> 以下のようにしてIEを起動させているのですが、検索(ctrl + f)を
> して文字列検索を行い、ヒットした場所まで画面をスクロール
> させたいと思っております。
いろいろ探したんですがこんな方法で出来るようです。
http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200408_04080093.html
VBScriptに書き直してみました。
Set objIE = CreateObject("InternetExplorer.Application")
strSearchWord="牟田口大介" '検索する文字列
objIE.Visible = True
objIE.Navigate("http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/wshtop.htm")
Do While objIE.Busy Or objIE.ReadyState <> 4
WScript.Sleep 100
Loop
Set Document = objIE.Document
Set Window = Document.parentWindow
Set objRange = Document.body.createTextRange
strBMK = ""
Do While objRange.findText(strSearchWord)
If strBMK = "" Then
strBMK = objRange.getBookmark
objRange.execCommand "selectAll"
End If
objRange.collapse False
Loop
If Len(strBMK)>0 Then
objRange.moveToBookmark strBMK
objRange.scrollIntoView
End If
To: Katsumi さん
> それで、私自身で一から同様のツールを開発し、幾つかのβバージョンを経て、先日 ver 1.0 の公表になりましたので、お知らせいたします。
ご紹介ありがとうございます。
後ほど、リンクのページからリンクさせていただきたいと思います。
およよさん、
ポインタ情報ありがとうございます! 助かりました。
# ファイルの更新日付が 1998 年 2 月とか 4 月とか・・・八年くらい前のものなんですね・・・。
ここから。
http://download.microsoft.com/download/winscript56/Install/1.00/W98NT42KMe/JA/sct10jp.exe
ヘルプがあるけど、見るほどの内容はないと思う。
お久しぶりです。
最近 ScriptControl を利用するプログラムに遭遇するのですがこの COM オブジェクトの外部仕様を説明した文書はどこかにありますでしょうか。。msdn を散策したのですが見つからず Object Browser で IDL を出力させるも分からない所が多く。そもそも WSH に元々バンドルされているものかどうかさえ分かっていない、そんな状況です。
ご存知の方いらっしゃいましたらご教授いただけると幸いです。
こんにちは、以前(もう一年ほど前になりますが)DynaWrap のライセンスについてお伺いしたものです。その節は、お返事いただいて有難うございました。結局、DynaWrap を現在供給している方(Gunter Bornさん)でも、原作者の方とも連絡が取れないらしく、ライセンスが何なのか不明ということでした。
それで、私自身で一から同様のツールを開発し、幾つかのβバージョンを経て、先日 ver 1.0 の公表になりましたので、お知らせいたします。
DynaWrap と同様に WSH から Win32API の使用ができます。加えて、構造体を引数としてAPIに渡すことも出来ますし、EnumWindows などのコールバック関数を用いる API も使用可能です。加えて、ウィンドウプロシージャも使えますので、簡単なGUIを構築することも出来ます。詳しくは、
http://kandk.cafe.coocan.jp/sfcmini/
をご覧ください。このページからダウンロードも出来ます。ライセンスは、LGPLです。
IEの操作について教えてください。
以下のようにしてIEを起動させているのですが、検索(ctrl + f)を
して文字列検索を行い、ヒットした場所まで画面をスクロール
させたいと思っております。ExecWBのOLECMDID_SHOWFINDなども
試しているのですが、上手くできません。ExecWBを使わない方法
でも構いませんので、ご教授お願いいたします。
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.Navigate("URL")
はじめまして。スクリプト超初心者のためできることとできないことの区別すらつかなくて困っています。どなたかご教授ください。
とあるWEBページにアクセスしてweb上のダウンロードボタンをクリックして規定のパスにファイルを保存したいのです。
vbスクリプトでdocument.forms[i].elements[i].click でダウンロードボタンにクリックイベントをおこさせると「ファイルの保存」ダイアログが開くのですが、このダイアログのファイル名のデフォルト値を取得し、そこにダウンロード先のフルパスを設定したいのですが、どうすれば取得できるのでしょうか??
ファイルの選択ダイアログが表示されるときは、必ずカーソルはファイル名のとこにいるものなのでしょうか??
素人質問ですがよろしくお願いします。