To: むたぐちさん
>えっと、そうでしたっけ。
>US-ASCIIな文字も全部2バイトになっているので、互換性がないと言ってもいいんじゃないでしょうか。
Unicode と、UTF-8 や UTF-16 や UTF-32 などは、別の基準のことを指しています。
第○水準漢字と、JISやEUCやSJISを比べるようなこと、と言えば分かりやすいでしょうか。
(たぶん、文字集合規格と、符号化規格の違いだと思うのですが、…間違ってたらすみません)
http://www-6.ibm.com/jp/developerworks/unicode/unicode.html
>月刊ASCIIにXMLに関する連載記事があったのですが、その中で時々UNICODEの話が触れられていて、
>文字の符号化にいろいろな問題があることがわかりました。どちらかというと感情的な
>議論があったりするみたいですね。
INTERNET WATCH に気長に連載してある文字コード(JIS2000)の記事は、どれほどの読者が
まともについて来れているんだろう(^-^;;;)。筆者自身も溺れかけているような気もしますが(苦笑)。
>せっかくUNICODEなんだから、そこは「漢字」と表記してもらいたい。
NHKで「韓国語講座」とも「朝鮮語講座」とも言えずに
「ハングル講座」という恐ろしい折衝案のネーミングに落ち着いたのは有名な話。
http://www.asahi.com/paper/special/jk/text/010109.html
なんとなく、それと似たものを感じます(^^;)。>「CJK文字」
>これって、Popupオブジェクトじゃなくて、ActiveXコントロールと見受けられますが。
あれ、どこだろう。タネが見抜けない…(^^;
>でもアクセスログにはきっちりと残ります(怖)。
相手サーバに残っていいから社内プロクシサーバに残らないようにする方法…。
なんか発想が普通の匿名化と逆の気がする(笑)。
>コーヒーは必需品ですよね。
ホントに眠気に効くのは、コーヒーなんかより「会話」だったりするんですけどね(^^;)。
ウトウト病は難病です。
>あ、職場での「萌え」なページ閲覧中にもどうぞ(笑)
普通のテキストブラウザだと「文字ばかり」なので、ソースの情報を表示したまま
それっぽく整形して見せるテキストブラウザなんてないかなー、なんて。(極悪)
だってほら、視覚的に整形するプロセスで失われる情報って多いし〜。(言い訳)
>DOM(ドキュメントオブジェクトモデル)がCOMで定義されているから、WSH等からの
>アクセスが楽なんですよね。
ドムとかザクとかグフとか…はいいとして。
HTMLのパーサはXMLと比べものにならないほど強力な誤り修正/省略補完機能が必要なんですよね(^^;)。
そのIEのDOMに、簡単にアクセスできるのは、ホントに魅力です。
サーバ内でDOMをうまく処理しようとしたら、…さてどうしよう(^-^;)。
管理人むたぐちさん Wrote:
> > キー名は、
> > HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
> > 名前は、Display Inline Images です。
>
> このキー、IEを再起動しないと反映されないので厄介ですよね。
そうなんですか。たまたま、IEの起動と終了をはさんでRegWriteを実行してたんで成功してたんですね。
To: 松島 さん
> UTF-8は0-127の範囲でUS-ASCIIと互換になっているのですが、
> 「あえて」非互換になっていた方がネイティブで国際化対応する環境が増えるきっかけに
> なっていたのではとひねくれた見方をしてみたり(^^;)。
えっと、そうでしたっけ。
US-ASCIIな文字も全部2バイトになっているので、互換性がないと言ってもいいんじゃないでしょうか。
むしろ、今まで1バイトですべてを表現できていたのに、なんで2バイトも使って一文字を表現しないと
いけないんだ、という反発があるのではないかとも思ってますが…。
> 文字の符号化にまつわる問題は難しいです。歴史的な経緯や民族的な云々、文化的なゴニョゴニョ
> が絡んでいたりすると、もう頭パニック状態です。同じ字形で異なる意味がある文字をどう扱うかとか、
> 同じ意味で異なる字形をどう扱うかとか、文字(字形/意味)集合をどう定めるかとか。
月刊ASCIIにXMLに関する連載記事があったのですが、その中で時々UNICODEの話が触れられていて、
文字の符号化にいろいろな問題があることがわかりました。どちらかというと感情的な
議論があったりするみたいですね。
> IMEパッドの文字コード表でUnicodeの文字コードが出せますけど、例えばそこに出てくる
> 「CJK」っていうのは「China,Japan,Korea」のことなんですよ。要は漢字のことなんですが、
> これが一くくりでいいものかどうかと思うと夜も眠れなかったり。(^^;
せっかくUNICODEなんだから、そこは「漢字」と表記してもらいたい。
> メニューバーもどきネタ。
> 見るからにPopupオブジェクトで動いていそうなのですが、なんだかとっても嫌そうなソースしてます(^^;
> http://www.msnbc.com/news/affiliates_front.asp (左側メニュー)
これって、Popupオブジェクトじゃなくて、ActiveXコントロールと見受けられますが。
> HTMLの内容を取得するだけでしたら、telnetだけでも出来ました。
てことは、Winsockでもできるわけでして。
あっているかどうかわからないですが、こんな感じでOKなのかな?
Set wsck=WScript.CreateObject("MSWinsock.Winsock","wsck_")
wsck.RemotePort=80
wsck.RemoteHost="www.ca.sakura.ne.jp"
wsck.Protocol=0
wsck.Connect
WScript.Sleep 2000
Sub wsck_Connect()
wsck.SendData "GET http://www.ca.sakura.ne.jp/~patent/pa/bbs/wforum1/wforum.cgi HTTP/1.0" & vbCrLf & _
"Referer: http://www.ca.sakura.ne.jp/~patent/pa/" & vbCrLf & _
"Cookie: $Version=""1""; EatCookie=""on""; expire=""Wednesday, 19-Sep-2001 14:26:07 GMT""; $Path=""http://www.ca.sakura.ne.jp/~patent/pa""; $Domain=""www.ca.sakura.ne.jp"" & vbCrLf & vbCrLf
End Sub
Sub wsck_DataArrival (ByVal bytesTotal)
wsck.GetData s,vbString
msgbox s
End Sub
# fj.os.ms-windows.programmingで、WinsockのサンプルスクリプトとしてSSTPクライアントスクリプトを
# 投稿してしまった(^^;
HTMLを取ってくるなら、microsoft.xmlhttpを使うのでもいいですね。
15-31 管理人むたぐち 2000/06/02 23:28
28-14 Lib30 さん 2001/01/13 17:20
> >いや、真面目な話、「技術習得のテキスト代わり」として使うとすごい
> >威力を発揮しますよね。それこそ世界中の知識に触れることが出来るの
> >ですから。
>
> 時々、検索エンジンで狙った情報になかなかたどり着けないことがありますよね。
> どこにでもあるはずなのに、例えばC言語での日本語文字コード変換ソースとか。(間違ってるものもよくある…)
とりあえずGoogleは必須ですよね(^^;
でも最近Googleバーで日本語が化けて使えない…。2ちゃんねるのどこかで解決策が
出ていたような気もしますが、めんどくさくてやってません。
To: 高橋 さん
スクリプトのご投稿、ありがとうございます。
> Call objIE.ExecWB(6, 2)
なるほど、ExecWBという手がありましたか。
私は、IE.document.parentWindow.print
という方法を考えていました。これでも一応印刷はできるみたいです。
> >たまに「萌え萌え〜♪」なページだったりして、「キャー、今のは目の錯覚よ〜っ!」
> >
> 良くやりますよね。お互い職場では気を付けましょう。(笑)
でもアクセスログにはきっちりと残ります(怖)。
> インターネット解禁で遊んでしまうような人は、他の事全てで同じ結果を残すでしょうし、
> 反対にインターネットを有効活用できる人なら、遊んだりもしないでしょうし。
ぎく。
まだ有効活用しているとは言いがたいです…。
> # 今の職場は席での飲食禁止なので、コーヒーが飲める職場なら尚良し>自分
コーヒーは必需品ですよね。
私の職場、じゃなくて研究室は、別の理由で飲食禁止です。(薬品がまわりにいっぱいあるから)
が、守られていなかったりする。
To: 松尾 さん
> キー名は、
> HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
> 名前は、Display Inline Images です。
このキー、IEを再起動しないと反映されないので厄介ですよね。
Toggle Imagesとかを使ったほうが便利かもしれません。
21-06 Lib30 さん 2000/08/27 20:57
あ、職場での「萌え」なページ閲覧中にもどうぞ(笑)
> アドバイスありがとうございます。InternetExplorerオブジェクトのNavigateメソッドを使ってDocumentオブジェクトを取得するようにすると(←この言い方にあまり自信がありませんが)、HTMLタグの認識やタグの階層構造の認識までしてくれるので、プログラミングがとても楽なんです。
DOM(ドキュメントオブジェクトモデル)がCOMで定義されているから、WSH等からの
アクセスが楽なんですよね。
To: のぶ さん
> WindowsNT4.0では、マイクロソフト配布のWSHをインストール
> しただけでは、WScript.Shellクラスは使えないようですが、
> IEのどのバージョンが必要なのでしょうか?
使えないという状況がいまいちわからないのですが、WSH自体は実行できるんでしょうか。
WScript.Shellクラスを呼び出しているホストは何でしょうか。
あとは高橋さんに挙げていただいた過去記事が参考になるかもしれません。
To: 梨 さん
> フォルダの中のファイルを全て印刷する処理をしているのですが、
> 印刷中にIEをQiutするためか、途中で印刷処理が終わり
> 5ファイルあっても、3ファイルの途中で終わった利してしまいます。
> なので一ファイルずつ印刷が完了するまで、
> WSHの方の処理はとめておきたいのですがゥ・
>
WSH-MLの方でも同様の質問をなさっていたんですね。
ネットニュースみたいに「クロスポスト」できたらいいんですけどねえ…。
(あ、別に非難しているわけではないので誤解なきよう… > 梨さん)
で、WSH-MLの方では、IE.QueryStateWBでチェックしてみたら、という回答が
ありましたね。QueryStateWBの使い方は私もあまりチェックしていないんですが、
メソッド名から考えるに、ExecWBで実行するコマンドに関する情報を得るための
メソッドではないかと思います。
QueryStateWBメソッドの仕様は、「オブジェクトの解説」-「InternetExplorerオブジェクト」
に載せていますので、参考にしてください。
IE.QueryStatusWBの返り値は、OLECMDFという定数で定義される数値になります。
(その定数の一覧も載せています)
しかし、印刷前後でQueryStateWB(OLECMDID_PRINT)の返り値を比較してみたんですが、どちらも3
(つまり、OLECMDF_SUPPORTED+OLECMDF_ENABLED)となり、印刷中であることを判別できないことが
わかりました。
高橋さんのおっしゃるように、Sleepして待つのもいいですが、ExecWBを使うのをやめて、
「右クリックメニューの実行」を試してみるのはいかがでしょうか。
といっても、別に右クリックメニューを実行させると考えなくても、単に
WshShell.Run "rundll32.exe C:\Windows\System\mshtml.dll,PrintHTML ""C:\test.htm""",1,True
を実行してやるだけです。
ただし、これだと印刷のダイアログが出てしまうので、SendKeysを併用して、自動的に
印刷させるなどの工夫が必要です。
>>>>>>"高橋"さん Wrote:
> おお、良かったですね。(^^)
> レジストリの場所はどこになるのでしょう?
> # 出来ればOS等も教えていただけると参考になります。
キー名は、
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
名前は、Display Inline Images です。
OSは Win98ES+IE5.5SP1 です。
>>>>>>"松島"さん Wrote:
> HTMLの内容を取得するだけでしたら、telnetだけでも出来ました。
アドバイスありがとうございます。InternetExplorerオブジェクトのNavigateメソッドを使ってDocumentオブジェクトを取得するようにすると(←この言い方にあまり自信がありませんが)、HTMLタグの認識やタグの階層構造の認識までしてくれるので、プログラミングがとても楽なんです。
To: 松尾さん
HTMLの内容を取得するだけでしたら、telnetだけでも出来ました。
DOS窓などから次のように打ち込んでみてください。
telnet www.ca.sakura.ne.jp 80
(ちょっと待つ)
GET http://www.ca.sakura.ne.jp/~patent/pa/bbs/wforum1/wforum.cgi HTTP/1.0
Referer: http://www.ca.sakura.ne.jp/~patent/pa/
Cookie: $Version="1"; EatCookie="on"; expire="Wednesday, 19-Sep-2001 14:26:07 GMT"; $Path="http://www.ca.sakura.ne.jp/~patent/pa"; $Domain="www.ca.sakura.ne.jp"
(空行を入力)
To: 高橋さん
>あれ、そういえば印刷終了って検出できましたっけ?>ALL
>普通にVBとかCの場合…
スプールに溜まった後のジョブが全部吐けていたら、…という検出方法は、
物理的な印刷終了まで待たなきゃいけない上に、他の印刷物が混ざっていたらアウトですね(^^;)。
#自己完結(汗)。
>いや、真面目な話、「技術習得のテキスト代わり」として使うとすごい
>威力を発揮しますよね。それこそ世界中の知識に触れることが出来るの
>ですから。
時々、検索エンジンで狙った情報になかなかたどり着けないことがありますよね。
どこにでもあるはずなのに、例えばC言語での日本語文字コード変換ソースとか。(間違ってるものもよくある…)
高橋です。
>松尾さん
こんばんは。
>これのレジストリの場所を見つけ出しまして、ちょっと強引かもしれませんが、
>Navigateを実行する前にRegWriteで"no"に変更し、終わったら戻すようにしました。
>時間がだいぶ短縮されました(^。^)
>
おお、良かったですね。(^^)
レジストリの場所はどこになるのでしょう?
# 出来ればOS等も教えていただけると参考になります。
>のぶさん
初めまして。
>WindowsNT4.0では、マイクロソフト配布のWSHをインストール
>しただけでは、WScript.Shellクラスは使えないようですが、
>IEのどのバージョンが必要なのでしょうか?
>
M$によると、
"Windows NT 4.0 上でこれらのファイルを使用する場合、IE3.02 か
IE4.0 がインストールされている必要があります。"
だそうです。
http://www.microsoft.com/msdownload/vbscript/scripting.asp?id=25
こちらも一読されることをお勧めします。
いまいち状況が把握できていませんが…
30-50 管理人むたぐち さん 2001/02/13 00:00
30-48 yyama さん 2001/02/10 01:23
30-45 管理人むたぐち さん 2001/02/09 09:42
30-44 yyama さん 2001/02/09 06:09
30-43 管理人むたぐち さん 2001/02/09 04:07
30-42 yyama さん 2001/02/09 03:47
こちらにははじめての投稿です。よろしくお願いします。
もしかしたらFAQなのかもしれませんが、過去記事を
検索している余裕がないので、教えて下さい。
WindowsNT4.0では、マイクロソフト配布のWSHをインストール
しただけでは、WScript.Shellクラスは使えないようですが、
IEのどのバージョンが必要なのでしょうか?
どうかよろしくお願い致します。
高橋さん、どうもありがとうございました。
>Internet Explorer から「ツール」->「インターネットオプション」->「詳細設定」->
>「画像を表示する」のチェックをはずせば良いのでは?
これのレジストリの場所を見つけ出しまして、ちょっと強引かもしれませんが、Navigateを実行する前にRegWriteで"no"に変更し、終わったら戻すようにしました。時間がだいぶ短縮されました(^。^)
高橋@これから酔っ払いを迎えに…です。
>梨 さん
こんにちは。
>印刷中にIEをQiutするためか、途中で印刷処理が終わり
>5ファイルあっても、3ファイルの途中で終わった利してしまいます。
>
このへんが(私が)理解できていないのですが、
>なので一ファイルずつ印刷が完了するまで、
>WSHの方の処理はとめておきたいのですがゥ・
>
とりあえず
Call WScript.Sleep(10000)
等でごまかしておきましょう。(^^;
あれ、そういえば印刷終了って検出できましたっけ?>ALL
普通にVBとかCの場合…
たびたびたびすみません!!m(_"_)m
フォルダの中のファイルを全て印刷する処理をしているのですが、
印刷中にIEをQiutするためか、途中で印刷処理が終わり
5ファイルあっても、3ファイルの途中で終わった利してしまいます。
なので一ファイルずつ印刷が完了するまで、
WSHの方の処理はとめておきたいのですがゥ・
あるサイトで
『Do While IE.readyState <> 4
'印刷待ち
Loop』
と有ったので、試してみたのですが効果は無く印刷処理が途中で終わってしまいました。
何か有効な手段があれば教えてください。
よろしくお願いします。
ありがとうございました。
印刷は出来るのですが、エラーNoが500になってしまいました。
これから原因を探したいと思います。
後補足質問なのですが、画像ファイルが印刷されないのですが
これは良くあることなのでしょうか?
とにもかくにもありがとうございました。
またよろしくお願いします。
高橋@順序の後先が逆になりましたが…
>松島さん
こんにちは。
>調べ事をしたり、技術習得のテキスト代わりにしたり、時事情報を
>追ってみたり、眠気覚ましをしてみたり。
>
眠気覚まし…良いですねぇ。
いや、真面目な話、「技術習得のテキスト代わり」として使うとすごい
威力を発揮しますよね。それこそ世界中の知識に触れることが出来るの
ですから。
>たまに「萌え萌え〜♪」なページだったりして、「キャー、今のは目の錯覚よ〜っ!」
>
良くやりますよね。お互い職場では気を付けましょう。(笑)
>やっぱり仕事場からは「画像を自動的に読み込まない」設定にしておくのが
>セオリーでしょうか。もしくは、テキストブラウザを使ったりとか。(^-^;;)
>
ですね。
# 同感です。
>>「職場でのインターネット禁止」等という会社では絶対に働きたくないですね。
>「周囲に悪影響を及ぼす」と判断されたらNGですけど、そうでないものは
>なるべく自由にしていてもらいたいですよね。
>音楽聴きながらの方がトータルの効率が確実に上がる人もいますし。#でも鼻歌はNG(爆)
>
そうそう。
インターネット解禁で遊んでしまうような人は、他の事全てで同じ結果を残すでしょうし、
反対にインターネットを有効活用できる人なら、遊んだりもしないでしょうし。
# 今の職場は席での飲食禁止なので、コーヒーが飲める職場なら尚良し>自分
>松尾さん
こんにちは。
>IE.navigateなどで、画像ファイルをダウンロードしないようにするにはどうすればいいんで
>しょうか。よろしくお願いします。
>
Internet Explorer から「ツール」->「インターネットオプション」->「詳細設定」->
「画像を表示する」のチェックをはずせば良いのでは?
# はずしてますか??
高橋@あぁぁ〜またしても、です。
「デスクトップ」を半角で書き込んでしまったー!!
むたぐちさん、および皆様、大変失礼しました。m(_ _)m
# 「筑集眺餅」となっているところですね…
スクリプト部分だけ投稿してしまいました。
>梨さん
>はじめまして。
>
初めまして。
>VBSで、指定したフォルダの中のHTMLファイルをすべて印刷する
>というような処理をしたいのですが、
>
html はレンダリングした形で印刷したいのですよね? という前提で以下
を書きます。
1番簡単なのは、むたぐちさんの書かれた「WSHテクニック集 - 右クリッ
クメニューの実行」だと思います。一読をオススメします。
別の方法を下記に示します。例によって、エラー処理等はほとんど行って
いないので、活用される場合はテコ入れが必要ですが。
--<<print.vbs>>
Option Explicit
Dim sblnDocumentComplete ' ページ読み込み完了フラグ(True:完了, False:未了)
Call Main()
Sub Main()
On Error Resume Next
Dim objIE
'
' 読み込み完了フラグ
'
sblnDocumentComplete = False
Set objIE = WScript.CreateObject("InternetExplorer.Application", "IE_")
objIE.Visible = True
objIE.Silent = True
Call objIE.Navigate("c:\windows\筑集眺餅\print.html")
Call WaitForLoad(1000)
Call objIE.ExecWB(6, 2)
If Err.Number <> 0 Then
WScript.Echo "印刷処理に失敗しました。"
End If
objIE.Quit
Set objIE = Nothing
End Sub
Sub WaitForLoad(ByVal intWaitInterval)
Do While sblnDocumentComplete = False
Call WScript.Sleep(intWaitInterval)
Loop
End Sub
Sub IE_DocumentComplete(ByVal pDisp, ByVal strURL)
sblnDocumentComplete = True
End Sub
はじめまして。
WSHで検索して、ココにたどり着きました。
いきなり質問で申し訳ないのですが、
VBSで、指定したフォルダの中のHTMLファイルをすべて印刷する
というような処理をしたいのですが、
同じ処理をWordではしたことがあるのですが、
IEとなるとどのように記述して良いのか解りません。
もしお分かりのようでしたら、ご教授願います。
よろしくお願いします。m(_"_)m
またまた質問です。
IE.navigateなどで、画像ファイルをダウンロードしないようにするにはどうすればいいんでしょうか。よろしくお願いします。
To: 高橋 さん
>私は職場であっても、インターネットをガンガン利用しています。
私も利用しまくっています。
調べ事をしたり、技術習得のテキスト代わりにしたり、時事情報を追ってみたり、眠気覚ましをしてみたり。
技術情報を検索していると、個人の掲示板にぶち当たったりすることが多いです。
そんな時、掲示板以外のコーナーにいい情報ないかなー、と思ってURLをさかのぼると、
たまに「萌え萌え〜♪」なページだったりして、「キャー、今のは目の錯覚よ〜っ!」
と慌ててウィンドウを閉じることが週に数度はあったりなかったり。(笑)
やっぱり仕事場からは「画像を自動的に読み込まない」設定にしておくのが
セオリーでしょうか。もしくは、テキストブラウザを使ったりとか。(^-^;;)
>「職場でのインターネット禁止」等という会社では絶対に働きたくないですね。
「周囲に悪影響を及ぼす」と判断されたらNGですけど、そうでないものは
なるべく自由にしていてもらいたいですよね。
音楽聴きながらの方がトータルの効率が確実に上がる人もいますし。#でも鼻歌はNG(爆)
To: むたぐち さん
>ええ、問題は"何に利用しているか"、ですね(^^;
そう言う意味では、電話と同じですよね。
「どこにでも繋がるコミュニケーションツール」という観点ではかなり似てますし。
>UNICODEって何かと頭を悩ませますねえ。
>これも過渡期の混乱だと思いたいのですが。
UTF-8は0-127の範囲でUS-ASCIIと互換になっているのですが、
「あえて」非互換になっていた方がネイティブで国際化対応する環境が増えるきっかけに
なっていたのではとひねくれた見方をしてみたり(^^;)。
文字の符号化にまつわる問題は難しいです。歴史的な経緯や民族的な云々、文化的なゴニョゴニョ
が絡んでいたりすると、もう頭パニック状態です。同じ字形で異なる意味がある文字をどう扱うかとか、
同じ意味で異なる字形をどう扱うかとか、文字(字形/意味)集合をどう定めるかとか。
IMEパッドの文字コード表でUnicodeの文字コードが出せますけど、例えばそこに出てくる
「CJK」っていうのは「China,Japan,Korea」のことなんですよ。要は漢字のことなんですが、
これが一くくりでいいものかどうかと思うと夜も眠れなかったり。(^^;
メニューバーもどきネタ。
見るからにPopupオブジェクトで動いていそうなのですが、なんだかとっても嫌そうなソースしてます(^^;
http://www.msnbc.com/news/affiliates_front.asp (左側メニュー)
To: 松島 さん
> 以下のHTML+JavaScriptで可能なのですが、IE4以降ではUnicode扱いになるらしくて
> 日本語の文字化けが発生してしまいます。NN4/6ならOK(^^;;)。
JScript5.5のヘルプには、URLのデコードにはunescapeじゃなくてdecodeURIを使え、
とあります。
が、decodeURIを使ってもやっぱりUNICODE扱いされるみたいで、文字化けします(^^;
HTMLの文字コード指定をUNICODEにしておき、全体をUNICODEにしておけば解決するかも
知れません。やってませんけど。
> US-ASCIIなゲイツ人にはこの苦労が分からぬのであろう(泣)。
UNICODEって何かと頭を悩ませますねえ。
これも過渡期の混乱だと思いたいのですが。
To: 高橋 さん
> 高橋@休日だというのに障害対応、ようやく帰宅です。
ご苦労様です。
> で、少し試してみましたが、結論から書くと、ユーザ名(ログオン名)の変更はできて
> いません。SamAccountNameを変更すれば良さそうなものなのですが…
oUser.SamAccountName="NewName"
oUser.SetInfo
のかわりに、
oUser.Put "SamAccountName","NewName"
oUser.SetInfo
で動いたりしませんでしょうか。
そういえば、SetInfoするタイミングにも注意が必要で、SamAccountNameを
設定した直後にSetInfoしないと、setPasswordなどができないとかの
制約があったと思います。
SamAccountNameをキーワードに、microsoft.public.scripting.wshを検索すると、
やはりそういう例がありましたが、どれもユーザー新規登録のものでした。
> 私も今回調べていて感じたのですが、「ユーザの新規登録」「ユーザプロパティの
> 変更」はサンプルも多いのですが、「ユーザ名(ログオン名)の変更」というものが
> 全くないということです。
ということは、できないのでしょうかねえ。
ここは一つ、世界中のプロフェッショナルが集まる、microsoft.public.scripting.wsh
で質問してみるのもいいかもしれません。 > TAKさん
> ひとつ、新規にプロジェクトを立ち上げるのも良いかもしれませんね。>むたぐちさん
> # ADSI総本山、とか…
いやです(^^;
私にWin2000Serverをくれたら考えますけど(横柄)。
ADSIに関しては、チャブーンさんの時限公開VPNサーバーにアクセスして、ActiveDirectoryで
構築されたドメインに参加することで、いろいろな試験をさせていただきました。
私がWin2000Serverを持っていないにもかかわらず、ADSIを使ったスクリプトを試せたのも、
チャブーンさんのおかげであります。
今の私にできるのは、WMI総本山かな?
総本山とまではいかなくても、ちょっとまとめたいなあという気はあるんですが、
ま、いろいろと。
> >inputbox 画面で表示されるコマンドボタンの”OK”か”キャンセル”
> >かを取得する方法って無いんですか?
> >以下の過去記事をご参照下さい。
> 解決策が示されています。
どうもありがとうございます。
こんだけ記事数が増えると、過去記事をあたるのもなかなか大変ですが、
質問される方はなるべく検索して同じ質問がないか、確認していただけると
ありがたいです。
> 私は職場であっても、インターネットをガンガン利用しています。
> なぜなら、情報の宝庫ですから。(^^)
ええ、問題は"何に利用しているか"、ですね(^^;
> 「職場でのインターネット禁止」等という会社では絶対に働きたくないですね。
> # 経験則ですが、こういう会社は絶対にヤバイです。(^^;
まあ、いまどきそんなことを言っているようでは、まずいですね。
To: Sam さん
> 非常に分かりやすくて,特にVBスクリプトを勉強している人にとってすごく役に立つと思いますけど,何だかVBスクリプトで作った活用サンプル無さそうなので,説明はいくら詳しくても実際のプログラム(VBスクリプト)を見ないと多分根本的に理解できないと思います。これからもっとダウンロードできるVBスクリプトのプログラムを載ってほしいです。
…ほんとにうちのページを全部見てらっしゃいます?
私は、基本的に、あるサンプルスクリプトを挙げて、その解説を書くというスタイルで
Lessonを書いています。取り上げるサンプルは、なるべく"実際に使っても
それなりの意味がある"サンプルを目指しています。"サンプルのためのサンプル"は
なるべく避けるようにしています。
また、それとは別に、「ダウンロード」のコーナーで、実際に使える、さまざまな
実用スクリプトをダウンロードできるようにしています。
これらはサンプルというには複雑すぎるかもしれませんが、なるべくサンプルとしても
使えるよう、可読性のあるスクリプトを書くようにしています。
というわけで、現時点で「活用サンプルがない」ということはないですし、この方針を
変えるつもりはありません。
非常に分かりやすくて,特にVBスクリプトを勉強している人にとってすごく役に立つと思いますけど,何だかVBスクリプトで作った活用サンプル無さそうなので,説明はいくら詳しくても実際のプログラム(VBスクリプト)を見ないと多分根本的に理解できないと思います。これからもっとダウンロードできるVBスクリプトのプログラムを載ってほしいです。
私は悪意ぜんぜん持っていないので,ただVBスクリプト初心者としての愚見です。このホームページはとてもいいホームページです。よろしかったら,ぜひ考えていただきたいです。お願いいたします。
高橋@休日だというのに障害対応、ようやく帰宅です。
>TAKさん
こんにちは。
>NT4.0でユーザ名の変更ってできましたっけ?
>ユーザマネージャからも変更できませんよね。
>
等と書いてしまいましたが、Windows2000では出来るんですね。
失礼しました。
で、少し試してみましたが、結論から書くと、ユーザ名(ログオン名)の変更はできて
いません。SamAccountNameを変更すれば良さそうなものなのですが…
お役に立てなくて申し訳ありません。
# ちょっと環境を作るほどのパワーがないので…
>>ユーザ名ってやっぱり手動変更しかないのだろか?
>>うー、1000人のユーザ名を手動変更なんす。。(泣)
>
これは大変ですよね…ACLの問題もありますし。
やるとしたら、ユーザ全削除→ユーザ新規登録→ACL張り直しですかね。
って、あまりにも危険ですが…
私も今回調べていて感じたのですが、「ユーザの新規登録」「ユーザプロパティの
変更」はサンプルも多いのですが、「ユーザ名(ログオン名)の変更」というものが
全くないということです。
ひとつ、新規にプロジェクトを立ち上げるのも良いかもしれませんね。>むたぐちさん
# ADSI総本山、とか…
>pooさん
こんにちは。
>inputbox 画面で表示されるコマンドボタンの”OK”か”キャンセル”
>かを取得する方法って無いんですか?
>以下の過去記事をご参照下さい。
解決策が示されています。
30-24 管理人むたぐち さん 2001/02/06 18:39
30-23 管理人むたぐち さん 2001/02/06 18:27
30-22 FreeMail さん 2001/02/06 15:33
# WSH Lab. 掲示板記事検索スクリプト、本当に便利です。
# AKiOSさん、むたぐちさん、感謝しています。
>松島さん
>> そのうちのトップが http://www.jnc.go.jp/ からだったり(^^;)。
>> #gw.kantei.go.jp から若干あったことにも驚きましたが。
>まあ、お昼休みの息抜きなんでしょう。税金の無駄づかいだとかは言わないでおき
>ましょう(^^;私は人のことを言えないもんですから(爆)
>
私は職場であっても、インターネットをガンガン利用しています。
なぜなら、情報の宝庫ですから。(^^)
「職場でのインターネット禁止」等という会社では絶対に働きたくないですね。
# 経験則ですが、こういう会社は絶対にヤバイです。(^^;
> とにかく、最新版のWSHがあれば、一行のスクリプトでデコードが可能なはずです。
以下のHTML+JavaScriptで可能なのですが、IE4以降ではUnicode扱いになるらしくて
日本語の文字化けが発生してしまいます。NN4/6ならOK(^^;;)。
US-ASCIIなゲイツ人にはこの苦労が分からぬのであろう(泣)。
<script>
function trans(){
document.forms.t.trn.value=unescape(document.forms.t.url.value);
document.forms.t.url.focus();
return(false);
}
</script>
<form name="t" onsubmit="return trans();">
<input type="text" size="80" name="url" value="(変換元)">
<input type="submit" value="変換">
<input type="text" size="80" name="trn" value="(変換後)">
</form>
> そういえば、Mac OS XのGUIって結局OpenStep(NextStep)を継承するんでしたっけ。
中身はかなり「UNIXみたい」らしいですね。
inputbox 画面で表示されるコマンドボタンの”OK”か”キャンセル”
かを取得する方法って無いんですか?
msgbox ならOKかキャンセルか?とか判別できるじゃないですか。
簡単な質問かとは思いますが教えていただきますか?
To: 松島 さん
> %xx の羅列(xxは16進数)になるやつのことですよね。
>
> RFC1738(URLの規格)に沿った標準仕様です。
> http://www.geocities.co.jp/SiliconValley-PaloAlto/5694/rfc/rfc1738-ja.txt
> (「2.2. URL 文字エンコーディングの問題」の辺り等に書いてあります)
なるほど、RFCに書いてあるやつなんですね。
ところで、
WScript.Echo (decodeURI("エンコードされたURL"));
これ、なんで動かないかなあ?
他のGlobalオブジェクトのメソッド(parseIntとか)は、この記述方法で動作するんですが、
デコード・エンコード関係のメソッドはなぜか「オブジェクトを指定してください」という
エラーが出ます。
この件について、何かご存知の方、いらっしゃいませんか?
…と、ここまで書いてちょっと気になり、インストールされているJScriptのスクリプトエンジンの
バージョンを調べてみると、なんと5.1でした(ScriptEngine*関数およびjscript.dllのバージョンで確認)。
えっ、なんで5.6じゃないの!?
decodeURIメソッドはJS5.5で追加されたものですから、使えないのは当然なわけです。
# ただし気になるのは、オブジェクトブラウザでMicrosoft_Jscriptを調べると、このメソッドが
# ちゃんと定義されている点。これも解せんなあ。
それにしても、私は、Win2000にIE5.5とWSH5.5→WSH5.6βをインストールしており、とうぜんJScript5.6が
入っているものとばかり思っていたのですが、JScript5.5ですらなく、5.1なのは
いったいどういうわけなんでしょう?
みなさんのところではどうなっていますでしょうか。
もし5.5以上のバージョンがインストールされている方、インストール方法を教えてください(^^;
…とここまで書いて、真相に突き当たりました。
Win2000sp1が上書きしただけのようです(^^;
5.6はちゃんとキャッシュされていました。
じゃあなんでVBSは上書きされなかったのかな? ま、いいか。
すいません、脱線してしまいました。
とにかく、最新版のWSHがあれば、一行のスクリプトでデコードが可能なはずです。
> #ちなみに、RFCはW3Cの「勧告」よりも格上のようです。
W3Cの勧告とRFCをごっちゃにしてました(^^;
> ああ、よかったです。反響がないとひょっとして外してたかも…、なんて思ってしまう性格なもので(^^;)。
> 3月分のログにニューフェイスの珍ユーザエージェントが迷い込んで来ないか、密かに楽しみにしてます(笑)。
Just View2.0でならお邪魔できますが(笑)
> 1月分のアクセスにもOmniWebが入っていたのですが、もしかしたら、
> Mac OS X 向けのOmniWebだったのかもしれません(?)。
Mac OS XのデフォルトブラウザはOmniWebですか? いや、IEだろう…。
そういえば、Mac OS XのGUIって結局OpenStep(NextStep)を継承するんでしたっけ。
# 英和を引いたんですが、Omniって深い意味があるんですね。ところでOmni社…どっかで聞いたような
> 私のところでは、co.jp からのアクセスが、興味深い結果になっていました。
> 別の意味で興味深かったのは、go.jp の政府系で、どれも総数は少数だったのですが
> そのうちのトップが http://www.jnc.go.jp/ からだったり(^^;)。
> #gw.kantei.go.jp から若干あったことにも驚きましたが。
まあ、お昼休みの息抜きなんでしょう。税金の無駄づかいだとかは言わないでおきましょう(^^;
私は人のことを言えないもんですから(爆)
> 興味深い情報ほど「ズバリ公開するとよくなさそう」だったので、大っぴらに出来ません(苦笑)。
RemoteHostに大学名と研究室名が…(汗)
To: むたぐち さん
「ファイルコピーの進行状況の表示方法」のご回答ありがとうございます。
ログを一通り検索したのですが、キーワードが悪かった…失礼しました(^^;ゞ
で、結局、NT4.0+IE5.5の環境ですが、IE4.0を統合していないためShellオブジ
ェクト(Shell.Application)の利用ができないことがわかり、とりあえずログ
No.12-11の「次元ダイアログ法」で妥協してしまいました (:_;)トホホ
さらに修行を積んで、また挑戦します。ありがとうございました。<m(_ _)m>
ニュースに投稿したスクリプト転載。
何をするスクリプトかは読めばわかると思います(^^;
後で気づいたんですが、こんなことをしなくても、データバインドを使えばよかった
わけです。
Dim sCSVFile,sHTMLFile
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set Ie = WScript.CreateObject("InternetExplorer.Application")
Ie.Visible=True
For Each sArgument In WScript.Arguments
If Fs.FileExists(sArgument) Then
If LCase(Fs.GetExtensionName(sArgument))="csv" Then
sCSVFile=sArgument
sHTMLFile=Fs.BuildPath(Fs.GetParentFolderName(sArgument), _
Fs.GetBaseName(sArgument) & ".htm")
Set tsCSV=Fs.OpenTextFile(sCSVFile)
Set tsHTML=Fs.CreateTextFile(sHTMLFile)
tsHTML.WriteLine "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01//EN"">"
tsHTML.WriteLine "<html lang=""ja"">"
tsHTML.WriteLine "<head><title>converted from csv</title></head><body>"
tsHTML.WriteLine "<table summary=""converted from csv"" border=""2"">"
Do Until tsCSV.AtEndOfStream
tsHTML.WriteLine "<tr>"
sLine=tsCSV.ReadLine
aWord=Split(sLine,",")
For Each sWord In aWord
tsHTML.WriteLine "<td>" & sWord & "</td>"
Next
tsHTML.WriteLine "</tr>"
Loop
tsHTML.WriteLine "</table></body></html>"
tsHTML.close
tsCSV.close
Ie.Navigate sHTMLFile
Ie.Document.parentWindow.Print
End If
End If
Next
To: TAK さん
microsoft.public.jp.win2000とのクロスポストですね(笑)
> ◎ドメインに登録されているユーザアカウント名の一括変更をWSHでやる
> 方法ってないのでしょうか?
あれ、ADSI2.5のヘルプがどっかいってしまった…。
ともかく、ADSI2.5のヘルプを読んでみてください。
> なんだかMSのWindowsScriptingHostのサイトからDLした
> Addusers.vbsを使って一括新規登録できる方法
> は分かるのですが、後、W2KReskit付属のModifyusers.VBS
> でユーザプロパティ値の変更もわかるんですが。
> ユーザ名ってやっぱり手動変更しかないのだろか?
> うー、1000人のユーザ名を手動変更なんす。。(泣)
ユーザープロパティにアカウント名は含まれないわけですか。
まあ、ヘルプを見ないと確実なことはわかりませんが…。
現存のユーザーアカウントのすべてのプロパティを記録してから、
ユーザーを削除し、新規に追加しなおし、記録しておいたプロパティを反映させる、
とかはどうでしょうか。…いろいろ問題がありそうですね。駄目かも。
> Server管理の事だからちょっと場所違いかな?はー。。。。
私は詳しくないですが、詳しい方に答えていただけることを期待してます(^^;
To: 松尾 さん
> Do Until Document.all(I).innertext = "法文/判例/試験問題" And Document.all(I).tagname="A"
>
> とするか、
>
> Do Until Document.links(I).innertext = "法文/判例/試験問題"
>
> でうまくいきました。どうもありがとうございました。
うまくいってよかったです。
これは好みかもしれませんが、hrefプロパティの値を見て判別してやると
いいかもしれません。
さて、私もcmt2mbxをつくらなきゃなりませんね。
そういえば某所で復活が間近と思われる何かを動かすスクリプトも作るといって
おきながら放置したままですね。
というか、ToDoが飽和状態なんですけど(^^;
.NET全盛期になる前にかたをつけたいものです。
ぜんぜん関係ないですけど、XPのデスクトップのデザイン、私は少なくとも嫌だ(笑)
あのどっちつかずなところがね。
でも使われている技術には興味があります。あのスタートパネル(だっけ?)のインターフェースは
何で記述されているのでしょう。HTMLじゃないよな。
To: 高橋 さん
ADSIの件、よろしくお願いします。
> 私も***.co.jpのカウントを増やしている一人ですね。(^^;
*.co.jp > *.ne.jp > *.ac.jpその他
って感じでしょうか。
このページを立ち上げた当初は、こんなに現場(?)からの質問が多いとは思ってなかったです。
To: 今井 さん
> ファイルコピーの進行状況の表示方法を教えてください。
これはこの掲示板的にはFAQだったりします。
その割に、なかなか該当記事を見つけられなかった…。
↓とりあえず、これとかを参考にしてみてください。
12-13 管理人むたぐち 2000/04/16 03:39
> VBSでWin32APIのSHFileOperation()を使うことはできるのでしょうか。
> 可能であれば、そのためには、どのように記述したらいいのでしょうか。
VBSは基本的にはWin32APIをそのまま呼び出すことはできませんが、APIの機能を呼び出す
COMコンポーネントを使えば可能になります。
shell32.dllの機能のうち、ごく一部はCOMコンポーネントのメソッドとして実装されているので、
VBSからも使えるわけです。
To: むたぐちさん
>?以降の文字列は、なんかエンコードされちゃいますが、簡単にデコードできるものなんでしょうか?
%xx の羅列(xxは16進数)になるやつのことですよね。
RFC1738(URLの規格)に沿った標準仕様です。
http://www.geocities.co.jp/SiliconValley-PaloAlto/5694/rfc/rfc1738-ja.txt
(「2.2. URL 文字エンコーディングの問題」の辺り等に書いてあります)
#ちなみに、RFCはW3Cの「勧告」よりも格上のようです。
「貴重な情報」と書きつつもあまり調べて居なかったりするのですが(^^;)、
デコードするのが面倒なので、見るときにはRefererのURLをブラウザで開いたりしています。
大抵、検索キーワードはページ内に書いてありますし、どういう位置で表示されて
いたのかも分かりますので(笑)。
>よくわからないユーザーエージェント、なかなか楽しませてもらいました(^^;
ああ、よかったです。反響がないとひょっとして外してたかも…、なんて思ってしまう性格なもので(^^;)。
3月分のログにニューフェイスの珍ユーザエージェントが迷い込んで来ないか、密かに楽しみにしてます(笑)。
>去年までなら、OmniWebでアクセスしてリストに彩りを添えられたのに、残念。
># NextStepのWebブラウザです。
1月分のアクセスにもOmniWebが入っていたのですが、もしかしたら、
Mac OS X 向けのOmniWebだったのかもしれません(?)。
>うちのページではぜんぜんアクセス解析とかやってないですが、co.jpからのアクセスが多そう(笑)
私のところでは、co.jp からのアクセスが、興味深い結果になっていました。
別の意味で興味深かったのは、go.jp の政府系で、どれも総数は少数だったのですが
そのうちのトップが http://www.jnc.go.jp/ からだったり(^^;)。
#gw.kantei.go.jp から若干あったことにも驚きましたが。
興味深い情報ほど「ズバリ公開するとよくなさそう」だったので、大っぴらに出来ません(苦笑)。
>なるほど、「こーゆーやつクレクレー」がGETで、「オレの愛を受け取ってくれー(違)」がPOST
>なんですね。すごくよくわかりました(笑)
本筋を見失わない程度にうまく茶化すのは難しいですね。
それだけに、分かりやすい・インパクトがある・笑えそう、の3拍子が揃った例えが思い浮かぶと嬉しいです(笑)。
#それでいて外してしまうと凄く悲しいですけども(^^;;
>IEの仕様ではなく、HTMLx.xの仕様というわけですね。
そのとおりです。
でも、仕様を通りの挙動を実装してくれるかどうかは、メーカー次第です。(^^;)
ファイルコピーの進行状況の表示方法を教えてください。
はじめまして。DOSのバッチからVBSに乗り換え、貴HPで勉強をさせていただい
ております。大変にありがとうございます。
VBSでネットワークドライブに大きなファイルをコピーする際、コピー中の数
分間、動いているのかどうかわからなくて困っています。
VBSでWin32APIのSHFileOperation()を使うことはできるのでしょうか。
可能であれば、そのためには、どのように記述したらいいのでしょうか。
アドバイスをよろしくお願いいたします。
>TAKさん
初めまして。
>◎ドメインに登録されているユーザアカウント名の一括変更をWSHでやる
>方法ってないのでしょうか?
>
NT4.0でユーザ名の変更ってできましたっけ?
ユーザマネージャからも変更できませんよね。
AD環境だとどうなるのか気になりますが、環境がないので検証できません。
ちょっと調べてみますね。
# NTはユーザ名ではなくUIDでユーザ管理しているはずなのに、なんで変
# 更できないのだろうか…
>むたぐちさん
私も***.co.jpのカウントを増やしている一人ですね。(^^;
解決しました。
Aオブジェクトを探すのに、
Do Until Document.all(I).innertext = "法文/判例/試験問題
とやっていましたが、これだとその外側の別のタグが先に引っ掛るんですね。
Do Until Document.all(I).innertext = "法文/判例/試験問題" And Document.all(I).tagname="A"
とするか、
Do Until Document.links(I).innertext = "法文/判例/試験問題"
でうまくいきました。どうもありがとうございました。
はじめまして、こちらのサイトではWSHについて詳しい方がいらっしゃる
と思うので投稿させてもらいました。
WinNT40ServerPDC+Win2KServerBDC+ExchangeServer5.5の環境なんですが
◎ドメインに登録されているユーザアカウント名の一括変更をWSHでやる
方法ってないのでしょうか?
なんだかMSのWindowsScriptingHostのサイトからDLした
Addusers.vbsを使って一括新規登録できる方法
は分かるのですが、後、W2KReskit付属のModifyusers.VBS
でユーザプロパティ値の変更もわかるんですが。
ユーザ名ってやっぱり手動変更しかないのだろか?
うー、1000人のユーザ名を手動変更なんす。。(泣)
Server管理の事だからちょっと場所違いかな?はー。。。。
さっそくのご教示ありがとうございます。
お教え頂いた方法を試してみましたが、うまく開きません。
2番目の方法でのスクリプトは次のようになっています。
IE.Navigate "http://www.ca.sakura.ne.jp/~patent/pa/"
WaitForLoad(2000)
Set Document = IE.document
I=0
Do Until Document.all(I).innertext = "法文/判例/試験問題"
I=I+1
Loop
Document.all(I).click
WaitForLoad(2000)
Set Document = IE.document
(途中省略)
function WaitForLoad(msec)
Wscript.Sleep(msec)
do while IE.busy
Loop
do while IE.document.readyState <> "complete"
Loop
End Function
上記のスクリプトで、問題点をご指摘頂ければ幸いです。
ADSLとCATVどっちがいい? の話について、レスありがとうございました。>高橋さん、松島さん
参考にさせていただきます。
Dive-Masterさんの掲示板を私物化してしまった(^^; どうもご迷惑をおかけしました。
To: FreeMail さん
> 下記の件解決しました。
> インクルードファイルの名前に & が入ってたのがいけなかったようです。
> 名称変更したらうまくいきました。
ありゃ、そこが問題だったわけですか。
ぜんぜんはずしてましたね(^^;
To: 松島 さん
> (余談ですが、RefererがGETな検索エンジンだと、どんな検索語に引っかかって飛んで
> 来たのかが分かります。けっこう貴重な情報かもしれません)
?以降の文字列は、なんかエンコードされちゃいますが、簡単にデコードできるものなんでしょうか?
あれって、検索エンジン独自のエンコード方法というわけではないのかな?
あ、JSでいうところのdecodeURLメソッドでデコードできるわけですか。
そういえば、松島さんのページで、アクセス解析をやっておられますよね。
よくわからないユーザーエージェント、なかなか楽しませてもらいました(^^;
去年までなら、OmniWebでアクセスしてリストに彩りを添えられたのに、残念。
# NextStepのWebブラウザです。
うちのページではぜんぜんアクセス解析とかやってないですが、co.jpからのアクセスが多そう(笑)
> したがって、どちらもデータを送る手段には変わり無いのですけども、
> GETは何かを得るため、POSTは情報を送るため、というわけで、
> データ量よりも、目的によって使い分けるのが適切だと思います。
なるほど、「こーゆーやつクレクレー」がGETで、「オレの愛を受け取ってくれー(違)」がPOST
なんですね。すごくよくわかりました(笑)
> HTAでPOSTと書いたはずがGETとして送信している現象は、セキュリティがらみの
> 仕掛けが効いてしまっているんでしょうか(まさかねぇ^^;)。一部のIEのバグ
> という可能性もあるのかもしれませんね。
MSに聞いたら「仕様」で片付けられそうな気配ですね。
> ちなみに、FORM要素のMETHOD属性のデフォルト値はGETのようです。
> http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/interact/forms.html#h-17.3
IEの仕様ではなく、HTMLx.xの仕様というわけですね。
To: 高橋 さん
> 河端さんのところでASP版のコンポーネントが公開されていますね。
> 少しいじれば色々なことに使えそうですね。
>
> http://www.kawabata.com/com/kawabataCom_Url.asp
ASPですか。
私も常時接続になったら、こっそり時限Webサーバーを立てて、ASPで遊びたいなあ。
IPアドレスの変更を検知して、各ページのリンクを動的に変更するスクリプトを
書いておく。
で、トップページだけはプロバイダのWebサーバーを使い、WSH+FTPで動的に自分のWebサーバーへの
リンクを書き換えるようにすれば、時限にもかかわらずそこそこまともに運用できそうな気がします。
が、技術的には可能でもやっちゃいけないことっぽい。
To: 松尾 さん
> IE.Navigate("http://www.ca.sakura.ne.jp/~patent/pa/bbs/wforum1/wforum.cgi")
>
> で掲示板を開いてdocumentプロパティで内容を取得しようとしていますが、
> http://www.ca.sakura.ne.jp/~patent/pa/
> が開いてしまってうまくいきません。
これって、http://www.ca.sakura.ne.jp/~patent/pa/から直接リンクで飛ばないと
アクセスできないみたいですね。
おそらく、Refererを見ているんでしょう。(知ったかモード…)
ならば、その手順をスクリプトで再現してやればいいと思います。
つまり、
IE.Navigate "http://www.ca.sakura.ne.jp/~patent/pa/"
IE.Navigate "http://www.ca.sakura.ne.jp/~patent/pa/bbs/wforum1/wforum.cgi"
としてやるわけです。適当にウェイトを入れる必要があるかもしれません。
もし、これでだめなら、さらに人間っぽい処理に変えてやります。
IE.Navigate "http://www.ca.sakura.ne.jp/~patent/pa/"
Set document=IE.document
で、とりあえずそこのdocumentオブジェクトを取得しておきます。
で、http://www.ca.sakura.ne.jp/~patent/pa/のページにある、
http://www.ca.sakura.ne.jp/~patent/pa/bbs/wforum1/wforum.cgiへのリンク(Aオブジェクト)の
clickメソッドを実行します。
そのあと、http://www.ca.sakura.ne.jp/~patent/pa/bbs/wforum1/wforum.cgiのナビゲートが
完了した時点で、ふたたび
Set document=IE.document
を実行して、処理してやると良いでしょう。
> 目的は、掲示板の内容をメーラのWinbiffで読めるように加工することです。アドバイスよろしくお願いします。
この掲示板で使われているWeb Forumは、(バージョンにもよるらしいが)いわゆるCMTフォーマット対応
なので、記事を簡単に取ってくる方法があります。
あるパラメータをCGIに渡すのです(たいむりーな話だ)。
詳しくは、
27-36 管理人むたぐち 2001/01/08 02:00
をどうぞ。この記事のリンク先をたどれば情報があります。
で、作るといっておきながら放置していますけど(^^;
はじめまして。ごく初歩的な質問になるかと思いますが、よろしくお願いします。
IE.Navigate("http://www.ca.sakura.ne.jp/~patent/pa/bbs/wforum1/wforum.cgi")
で掲示板を開いてdocumentプロパティで内容を取得しようとしていますが、
http://www.ca.sakura.ne.jp/~patent/pa/
が開いてしまってうまくいきません。
一度、手動で開いた後、スクリプトを実行し、ダイアルアップネットワークのダイアログでオフラインにして開くとちゃんと開いて内容の取得も出来ます。IEのバージョンは5.5SP1です。
目的は、掲示板の内容をメーラのWinbiffで読めるように加工することです。アドバイスよろしくお願いします。
RefererがGETな検索エンジン?
高橋です。
>松島さん
>ものです。QUERYの部分もURLの一部なので、サーバのアクセスログにも残り
>ます。
>(余談ですが、RefererがGETな検索エンジンだと、どんな検索語に引っかかっ
>て飛んで来たのかが分かります。けっこう貴重な情報かもしれません)
>
河端さんのところでASP版のコンポーネントが公開されていますね。
少しいじれば色々なことに使えそうですね。
http://www.kawabata.com/com/kawabataCom_Url.asp
久しぶりになってしまって、話題に乗り遅れた気もするのですが(^^;;)。
> Web検索エンジンなんかはmethod=getが多いみたいですね。
> getとpostの使い分けって、データ量で決めるのかな?
どちらも、HTTPのリクエストメソッドのことを指しています。
GETメソッドは、普段htmlや画像などをサーバから取得するのと同じメソッドです。
サーバに対して、「こーゆーやつクレクレー」と言って、文字通り何かをGETするための
ものです。QUERYの部分もURLの一部なので、サーバのアクセスログにも残ります。
(余談ですが、RefererがGETな検索エンジンだと、どんな検索語に引っかかって飛んで
来たのかが分かります。けっこう貴重な情報かもしれません)
一方、POSTメソッドは、URLにデータをPOST=送りつけることを目的としています(たぶん)。
URLの一部としては扱われませんので、「こーゆーの頂戴っ」というパラメータ用途より
「オレの愛を受け取ってくれー(違)」といった投稿系の目的に向いています。
http://www.geocities.co.jp/SiliconValley-PaloAlto/5694/rfc/rfc2068-ja.html#9.5
したがって、どちらもデータを送る手段には変わり無いのですけども、
GETは何かを得るため、POSTは情報を送るため、というわけで、
データ量よりも、目的によって使い分けるのが適切だと思います。
HTAでPOSTと書いたはずがGETとして送信している現象は、セキュリティがらみの
仕掛けが効いてしまっているんでしょうか(まさかねぇ^^;)。一部のIEのバグ
という可能性もあるのかもしれませんね。
ちなみに、FORM要素のMETHOD属性のデフォルト値はGETのようです。
http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/interact/forms.html#h-17.3
下記の件解決しました。
インクルードファイルの名前に & が入ってたのがいけなかったようです。
名称変更したらうまくいきました。
アドバイスありがとうございました。
To:管理人さん
> もしかして、<script>タグの外でVBS表記のコメントを入れていませんか?
> もしくは、<? xml?>宣言したwsfファイルにもかかわらず、<script>タグ内を
> <![CDATA[ ... ]]>のように、CDATAセクションでXMLのキーワードを隠蔽するのを
> 忘れていませんか?
<script> の外ではコメントは入れていません。
<? xml?> 宣言はしていません。
<job> と <script> タグのみの使用です。
他に何か原因がありそうでしたら教えてください。
個人的な用件で申し訳ないんですけど(^^;
常時接続なら、ADSLとケーブルテレビ回線、どっちがいいと思われますか?
Dive-Masterさんのところの掲示板に、状況を詳しく書いたので、
もし相談に乗ってくださる方がおられましたら、そちらのほうで
レスをつけていただけるとうれしいです。
(この掲示板でも結構です)
Dive-Masterさんのページはこちら↓
http://www.people.or.jp/~Dive-Master/
実際に導入されている方のご意見、お待ちしております。
To: RiffRaff さん
> GET メソッドを使うときは URL の ? 以降にパラメータ(環境変数QUERY_STRING)として付加し
> POST メソッドを使うときは標準入力経由でデータを送信します。
ご解説、どうもありがとうございます。
Web検索エンジンなんかはmethod=getが多いみたいですね。
getとpostの使い分けって、データ量で決めるのかな?
そういえば、IEの右クリックメニュー組み込み時には、?以降の文字列をexternalオブジェクトで
取得したりしますね。たしか。
To: 土屋 さん
> 本当は、タイプ ライブラリに定義された定数を使えるようになります、ということなんですね。
ええ、そういうことです。
> そうそう人生バラ色ではないものかなぁ。
VB.NETになれば、バラ色になるかも。
> 罪ほろぼしに(実際は、上塗り)、ドラッグ&ドロップでワードファイルをテキストファイルに変換するスクリプトをば。
どうもありがとうございます。
無駄にワードのファイルになってるテキストを、本来のテキストに変換するときに
重宝するかも。
> あっ。切り貼りしたらデスクトップの文字が化けてしまった。
筑集眺餅はおなじみです(^^;
…中国あたりのお菓子でしょうか。
To: 【おじさま】 さん
> そうなんですね。Array ではどうやっても一次元配列にしかならないということ
> ですか(確かにそういう仕様の関数という気もします)。
スクリプトから多次元の配列に値を入れるのは結構面倒ですから、Arrayが使えたら
うれしかったんですが…。
規則性のあるデータだったら、こんなふうに処理もできるのでしょうけど。
Dim A(5,5)
For I=0 To 5
For J=0 To 5
A(I,J)=I*J
Next
Next
To: ゆうさん さん
> WshEnvironmentオブジェクト
> WshSpecialFoldersオブジェクト
> 例えばWSHSfolder.Item("Desktop")という風に
> Itemに引数を渡せば取得できるのですが、引数自体を
> 取得したい場合はどのようにすれば良いのでしょうか?
WshSpecialFoldersオブジェクトに関しては、
引数に対応する値(この場合であれば、フォルダのパス)を列挙するなら、For Each...Next
でOKですが、引数自体を調べる方法は、私にもわかりません。
ただ、引数の一覧は、レジストリの
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
とほぼ対応しているので、WMIなどを使って列挙することはできそうです。
(My DocumentがPersonalになっているなど、一部異なる点はある)
ちなみに、WshSpecialFolderオブジェクトのItemメソッドは、数値を引数に取ることも
可能です。
For I=0 To WshSpecialFolder.Count-1
MsgBox WshSpecialFolder(I)
Next
WshEnvironmentオブジェクトに関しては、For Each...Nextで各値を参照すると、
"環境変数名=環境変数"という文字列を返すので、=より左を抜き出せば、環境変数名を
列挙することが可能です。
Dim WSHShell,WSHEnv,strList,strEnv
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set WSHEnv = WshShell.Environment("PROCESS")
strList="環境変数名一覧は以下の通りです。" & vbCrLf
For Each strEnv In WSHEnv
strList=strList & Left(strEnv,InStr(strEnv,"=")-1) & vbCrLf
Next
MsgBox strList
ちなみに、
WSHEnv.Item("windir")
とした場合は、"windir="という文字列は含まれず、Windowsフォルダのパスのみを返します。
よく考えるとこれ、不思議な仕様な気もします。
To: FreeMail さん
> また,wsf ファイル内でのコメントは VBS のコメントを使えば
> 良いのでしょうか?
comment要素を使います。
<comment>これはコメントです。</comment>
(undocumentedなんですが…)
<script>タグ内では、各スクリプト言語のコメントが使えます。
VBSなら'です。
> 【エラー内容】
> エンティティの参照に問題がありますー対応する '.' が見つかりません
> Line 50 Char 2
もしかして、<script>タグの外でVBS表記のコメントを入れていませんか?
もしくは、<? xml?>宣言したwsfファイルにもかかわらず、<script>タグ内を
<![CDATA[ ... ]]>のように、CDATAセクションでXMLのキーワードを隠蔽するのを
忘れていませんか?
To: 高橋 さん
> インクルードしたファイルで定義してある関数をコールする場合も、同様の
> 規則に従います。
> <script language="foo">...(略)...</script>
> であれば、
> &subfunc;
> のようになると思います。
# &subfunc;で呼び出すスクリプト言語ってありましたっけ?
補足ですが、
ActiveX Scripting準拠のスクリプトファイルなら、異なった言語で書かれた
ファイルでも、同時にインクルードできます。
で、各ファイルで宣言された関数は、言語依存性がありません。
つまり、VBS中で宣言した関数を、JSから呼び出したりすることも可能です。
呼び出し方法は、呼び出す側の言語仕様に従います。
VBSなら Call subfunc()ですね。Callは省略できますが。
おはようございます。
高橋さん,毎度毎度ありがとうございます。
wsf ファイルで WSH エラーが出てしまうのですが,
なぜ出るかが分かりません。
【エラー内容】
エンティティの参照に問題がありますー対応する '.' が見つかりません
Line 50 Char 2
と出ます。
50行目は EOF になっているんですが,これは EOF が認識されて
いないということなんでしょうか。それとも,他の原因なのでしょうか。
(このファイルで VBS ファイルをインクルードして,その関数を
CALLするしています)
分かりましたら教えてください。
お願いします。
高橋さん
>"引数自体"の意味が良くわからないのですが、例えば上記の場合なら
>"Desktop"を取得したいということでしょうか?
>そういうことであれば、無理のように思います。引数を返す仕様になっ
>ている関数なら別ですが…
そうですか。ありがとうございました。
ASPで下記のようにして変数名と値をチェックしていたので
同じようにできないかなぁと思いチャレンジしていました。
まだ、理解が進んでいません。
Response.Write "<table border=1 cellspacing=0 heigh=1>" & vbcrlf
for each name in Request.Form
Response.Write "<tr>" & vbcrlf
Response.Write "<td>& name & "</font>" & vbcrlf
Response.Write "<td>" & Request.Form(name) "</font>" & vbcrlf
Response.Write "</tr>" & vbcrlf
next
Response.Write "</table>" & vbcrlf
高橋@昼休みです。
>ゆうさん
>例えばWSHSfolder.Item("Desktop")という風に
>Itemに引数を渡せば取得できるのですが、引数自体を
>取得したい場合はどのようにすれば良いのでしょうか?
>
"引数自体"の意味が良くわからないのですが、例えば上記の場合なら
"Desktop"を取得したいということでしょうか?
そういうことであれば、無理のように思います。引数を返す仕様になっ
ている関数なら別ですが…
定数を取得したいということであれば、タイプライブラリを参照すれば
良いと思います。但し、上記例の場合は、タイプライブラリには登録さ
れていない感じですが。
>FreeMailさん
>こんにちは。
>
こんにちは、ごぶさたしてます。(^^)
>wsf ファイルについて質問なのですが,wsf ファイルから vbs ファイルの
>関数を使いたいのですが,使い方がよく分かりません。
>まず,wsf ファイルから Sub 関数を呼ぶ時は Call(関数名)
>でいいんでしょうか?
>また,wsf ファイル内でのコメントは VBS のコメントを使えば
>良いのでしょうか?
>教えてください。
>
.wsfファイルで、
<script language="foo">...(略)...</script>
と、スクリプト言語(エンジン?)を指定しますよね。
ここの「foo」がVBScriptになっている場合は、VBSのコメントが使えます。
また、JScriptになっている場合は、JSのコメントが使えます。
PerlScriptになっていれば、Perlのコメントが使えます(ハズ、未検証)。
インクルードしたファイルで定義してある関数をコールする場合も、同様の
規則に従います。
<script language="foo">...(略)...</script>
であれば、
&subfunc;
のようになると思います。
こんにちは。
wsf ファイルについて質問なのですが,wsf ファイルから vbs ファイルの
関数を使いたいのですが,使い方がよく分かりません。
まず,wsf ファイルから Sub 関数を呼ぶ時は Call(関数名)
でいいんでしょうか?
また,wsf ファイル内でのコメントは VBS のコメントを使えば
良いのでしょうか?
教えてください。
いつも参考にさせてもらっています。
ところで
WshEnvironmentオブジェクト
WshSpecialFoldersオブジェクト
例えばWSHSfolder.Item("Desktop")という風に
Itemに引数を渡せば取得できるのですが、引数自体を
取得したい場合はどのようにすれば良いのでしょうか?
過去の物やいろいろ調べましたがよくわかりません。
もしFAQならばお許しください
>RiffRaff さん
私はCGIについての知識はほとんどないのでサンプルを作成してテストすることは出来ませんが、
初めて聞くケースですね。
HTAではフレームやexternalオブジェクトに制限が加わることはMSDNに書いてありましたが
フォームについてはまったく分かりません。
>高橋さん
>いえいえ、私の理解力が足りないのが原因です。
>お気を悪くされたのでしたらお詫びいたします。ご容赦下さい。
そんなことは全くないです。こちらこそ余計な気を使わせてしまって。
レスして頂けたことを嬉しく思っていたぐらいですし、説明不足は
明らかに私の怠慢でした。ただ文章というのは感情が伝わりにくいですね。
たまに顔文字を使ったほうがいいかななんて思うこともあります(あんまり
若くないので使うのがちょっと恥ずかしいのですが)。
>IISのログを確認したところ、いずれもPOSTでリクエストが飛んでいました。
高橋さんの環境ではPOSTされていますか。何故なんでしょう???
でも環境が原因らしいということがわかっただけでも投稿した甲斐がありました。
わざわざ試して頂いて本当に有難うございます。
何かわかりましたらご報告させていただきます。
高橋です。
>RiffRaffさん
こんにちは。
>私の説明不足から色々と誤解(と思うのですが)があるようで
>申し訳ありません。
>
いえいえ、私の理解力が足りないのが原因です。
お気を悪くされたのでしたらお詫びいたします。ご容赦下さい。
>例えば次のスクリプトを test.hta と test.htm いうファイル名で
>それぞれ保存します。ローカルにサーバを立ててこれらを実行しました。
>
当方環境
クライアント:Win95 OSR2.0 IE5
サーバー:NT4.0 SP6a IIS4.0 IE5
copy & past して試してみました。
IISのログを確認したところ、いずれもPOSTでリクエストが飛んでいました。
なんででしょうね。。。
ちょっとお力になれないかもしれません。
<<変更点>>
送信先マシンを職場の開発用マシンに、送信先ファイル名を「xxx.cgi」、
「yyy.cgi」に変更しました。
で、test.htmlとtest.htaのそれぞれを開き、「送信」ボタン押下しました。
(当方環境では.cgiをハンドルしておりませんので、ブラウザにはhttp405エラー
が表示)
>これはフレーム内に読み込んだページにフォームが記述されていると
>いうことでしょうか?フレーム内(IFRAMEを含む)のページから正常に
>POST メソッドとして送信されることはこちらでも確認しています。
>
ですね。
>私の書いたこの部分に付きましては WshLab.hta 自身に送信フォーム
>すなわちFORMタグが記述されてないということが言いたかったのです。
>例えば「検索」ボタンも submit では無かったのでこう書きました
>(説明不足でした)。
>
いえ、私の理解力不足もありますから。(^^;
気になさらないで下さい。
> 高橋さん
私の説明不足から色々と誤解(と思うのですが)があるようで
申し訳ありません。もう少し詳しく説明させていただきます。
例えば次のスクリプトを test.hta と test.htm いうファイル名で
それぞれ保存します。ローカルにサーバを立ててこれらを実行しました。
<HTML>
<BODY>
<FORM action="http://localhost/xxx.cgi" method="POST">
<INPUT type="submit" name="submit" value="送信">
</FORM>
</BODY>
</HTML>
この場合、送信ボタンを押すと test.htm は POST で送られるが
test.hta は GET になってしまうということです。
※ これはクライアントとサーバの間にローカルプロキシを立てて
HTTPリクエストヘッダを確認しました。
(xxx.cgi を書くのが面倒だったので手抜きです)
>AKiOSさんのスクリプトは、index.htmから書き込みFORMを読み込んで表示しています。
>ですから、当然<FORM>タグもあります(ちなみにPOSTです)。
これはフレーム内に読み込んだページにフォームが記述されていると
いうことでしょうか?フレーム内(IFRAMEを含む)のページから正常に
POST メソッドとして送信されることはこちらでも確認しています。
>>拝見させて頂いたところ送信ボタンとしてではなくクリックイベントの取得用の通常ボタン
>>として使われているようです。FORM タグ自体もありませんでした。
私の書いたこの部分に付きましては WshLab.hta 自身に送信フォーム
すなわちFORMタグが記述されてないということが言いたかったのです。
例えば「検索」ボタンも submit では無かったのでこう書きました
(説明不足でした)。
よろしくお願いします。
P.S. また何か説明不足の箇所がございましたらご指摘願います。
管理人むたぐちさん
>検証してみましたが、単に一次元配列の一次元配列になるだけでした。
そうなんですね。Array ではどうやっても一次元配列にしかならないということ
ですか(確かにそういう仕様の関数という気もします)。
a = array(array(0, 1), array(2, 3, 4), array(5, 6, 7, 8))
こういうことしたい場合もあるかもしれませんし。