ばんのしゃーによかばんた さん 2005年 10月 28日 16時 37分 56秒

DExploreの「お気に入り」はExplore/IEと共通です。

DExploreから「お気に入り」に登録して、
Explore/IEから「お気に入り」の項目を開くと、Explore/IEで開きます。
DExploreから「お気に入り」の項目を開くと、DExploreで開きます。

Explore/IEから「お気に入り」の項目を、DExploreで開く方法はないものか?

DExploreのコマンドラインにURLを指定しても駄目みたい。

>魔界の仮面弁士 さん 2005年 09月 07日 20時 34分 43秒
>DExplore.exeは、ActiveXコンポーネントではありませんしね。
>参照設定するなら、vshelp.tlb の方です。

これでなんとかならないものか、と。

Set DE=CreateObject("DExplore.AppObj")
DE.DisplayTopicFromURL url
MsgBox 1
で開きますが、待ち合わせる方法がありません。MsgBoxは不細工だし。

Set DE=GetObject(,"DExplore.AppObj")
DE.DisplayTopicFromURL url
なら、待ち合わせる必要がありません。

.URLをドロップします。
――――――――――――――――――――――――――――――――――――――
Set wShell=CreateObject("WScript.Shell")
Set Link=wShell.CreateShortCut(WScript.Arguments.Item(0))
Dim DE
GetDE
If IsEmpty(DE) Then
 wShell.Run "DExplore.EXE"
 Do While IsEmpty(DE)
  WScript.Sleep 100
  GetDE
 Loop
End If
DE.DisplayTopicFromURL Link.TargetPath

Sub GetDE()
On Error Resume Next
Set DE=GetObject(,"DExplore.AppObj")
End Sub
――――――――――――――――――――――――――――――――――――――

ところで、ヘルプとサポートの「お気に入り」はどこにあるのでしょう?


ばんのしゃーによかばんた さん 2005年 10月 28日 16時 37分 32秒

>ばんのしゃーによかばんた さん 2005年 10月 27日 21時 29分 17秒
>「リンクが効きません」が「(正常)」てなぜでしょう。

トラブル時のページを保存しているので、ローカルで試してみますと、
※こういうときはMark of th Webは便利ですね。
インターネット中
イントラネット高
では、確かにリンクが効きませんね。
インターネット中
イントラネット中
にすると、リンクが効いてスクリプトも効きます。

すると、やっぱり、https://からhttp://への切り替わりのときに、
※これはローカルで試せない。
イントラネット高

イントラネット中

インターネット中
に誤解するルートがあるのではないでしょうか。多分後者かな。

ステータスバーの表示までは保存できないのではっきりしませんが、
インターネットだったような気がします。

スクリプトファイルを調べると、
その後ページ内の表示をdisplay="none"と"block"で切り替えているようなのですが、
それでなんで別ウィンドウが開いてスクリプトが効かなくなるのか、不思議です。
再描画しようとして、あっ私はイントラネット高だったんだと気付いて、慌てて
別ウィンドウを開いた。?そんな感じです。



ばんのしゃーによかばんた さん 2005年 10月 28日 16時 37分 07秒

ローカルのHTMLファイルなのですが、ダブルクリックで開くと、
「オフライン中に利用できない Web ページ」になることがあります。
何度かやると、開けるのですが、これは、どういう仕様なんでしょう?

中にひとつ、<IMG SRC="http://...>があったので、これを削除すると、
毎回開けるようになりました。そういうもの(仕様)なのでしょうか。

同じHTMLファイルを開いて、開けたり、開けなかったり、不定なのは、
やっぱり「障害」ですよね?


門外漢 さん 2005年 10月 28日 11時 34分 15秒

脆弱性関連を発見し福利のため対策が求められる場合には
http://www.ipa.go.jp/security/vuln/report/index.html
を利用される手段もあります。報告が日本語でOKなのも嬉しいですし、なにより返事が届く(黙殺されることが無い)ということも利点です。
#これは脆弱性ではなく仕様であると返事が返って来たものもたまにはありますが、総じて修正はなされる模様です。

>ばんのしゃーによかばんた さん 2005年 10月 27日 21時 29分 17秒
当方の理解不足で申し訳なく思っております。

各ゾーンごとの、インターネットオプションのセキュリティの設定において、項目、「より権限の少ないWebコンテンツゾーンのWebサイトがこのゾーンに移動できる」の3つの選択肢「ダイアログ〜」「無効〜」「有効〜」の設定に関連しての疑問表明でした。「移動できる」というのはリンクをクリックした時にジャンプできるかどうかのことです。この設定は、「権限の多い方のゾーン」側での設定となります。「このゾーンに移動できる」という表現からもそのことがわかります。……ひとつ例題を考えます。XPSP2上のIE6では、インターネットゾーンのWebコンテンツから信頼済みサイトゾーンのWebコンテンツに移動できる条件を考えますと、「より権限の少ない」インターネットゾーンから「権限が多い」信頼済みサイトゾーンに移動することを許可しなくてはいけません。すなわち、信頼済みサイトゾーンのセキュリティの設定では、項目、「より権限の少ないWebコンテンツゾーンのWebサイトがこのゾーンに移動できる」を「有効にする」選択をしておくことが必要です。
さて、以下の件です。

>そういうのって、私こそ門外漢なので分からないのですが、
>「リンクが効きません」が「(正常)」てなぜでしょう。

ばんのしゃーによかばんた さんのセキュリティの設定がいかなるものであったのか、私なりに推測していたのですが、
>ばんのしゃーによかばんた さん 2005年 10月 26日 16時 27分 43秒
>https://インターネットゾーン(セキュリティレベル中)のサイト
の中から、
<a href=http://イントラネットゾーン(セキュリティレベル高)のサイト target="_blank">
へ行くと、スクリプトが動いたのですが、いいのでしょうか?

この場合、インターネットゾーンのほうが「より権限が少なく」、イントラネットゾーンが「より権限が多い」ものと考えられます。今、https://なインターネットゾーンから、リンクで、http://なイントラネットゾーンのサイトに移動しようとしているのですから、イントラネットゾーンにおいて、項目、「より権限の少ないWebコンテンツゾーンのWebサイトがこのゾーンに移動できる」がどのようになっているのかが興味が持たれるわけです。ばんのしゃーによかばんた さんの設定ではイントラネットゾーンは「高」なのですから、「より権限の少ないWebコンテンツゾーンのWebサイトがこのゾーンに移動できる」は「無効」のはずなのです。すなわち、インターネットゾーンからイントラネットゾーンへのリンクは有効でなくクリックしても作動しないはずなのですね。この意味で(正常)と申し上げました。
また、私の手元でも再現しようとしましたがうまく行きませんでした。
仮に現象が再現出来たときに、「スクリプトが動いたのですが、いいのでしょうか?」とするとこれは非常にまずい事態だと考えられます。ゾーンごとのセキュリティの設定値をバイパスする手段が見つかっているということになりますので。ばんのしゃーによかばんた さんの疑念はごもっともと思います。もう少し調べたかったのですが、いかんせん、手元で再現できませんのでなんともなりません。

魔界の仮面弁士 さん 2005年 10月 28日 06時 35分 25秒

》ばんのしゃーによかばんた さん 2005年 10月 27日 21時 28分 55秒
> で、どれくらいの割合でor数が実際に製品に反映されました?

そもそも、何を母数とした割合の事を聞いておられるのかが不明でしたので、その問いに
答えるのは難しいですが……私が伝えた範囲内の話に限れば、報告が新規バグとして
登録されたケースが 1割強、問題点が修正検討予定(or 既に修正済み)のケースが 1割弱、
検討課題となったケースが 2割程度、対応見送りのケースが 1割〜3割弱 ぐらい…かな?
(きちんとカウントしたわけではないので、実際の割合とは異なるでしょうけれども)


> Product Feedbackは「ヘルプとサポート」の中から

あ、すみません。分かりにくかったみたいですね。(^^;
この場合の "Product Feedback" とは、MSDN Produce Feedback Center や、
MVP 製品フィードバック、あるいは脆弱性報告窓口などの事を指したつもりです。

http://lab.msdn.microsoft.com/productfeedback
http://www.microsoft.com/japan/technet/security/bulletin/alertus.mspx


# 広義で言うならば、各部門の有償 / 無償サポート窓口への問い合わせや、
# あるいは、担当社員への直接メールなどを含めても良いかも。


> インターネットに接続するって言い出すやつでしょうか?そういうのはとんでもないですね。

?? この件は何の話だか良くわからなかったのですが(すみません…)、少なくとも、
今まさに、インターネットに接続しておられる状況だと思うのですが……?

もしかして、オフラインにてフィードバックさせるべきだ、という事でしょうか。


> eXConnもトラブりそうで、あまり行きたくないな。
まぁ、eXConn は単に MS に意見が届きやすいコミュニティの一例として
挙げただけなので、行きたくないなら、無理して利用する必要も無いとは
思いますよ。(^^;)


> それに一般ユーザに開放してないところ(でしょ?)ってのも抵抗がありますね。
念のために eXConn について補足しておきますと、数段階の権限レベルが設けられていて、
フォーラムによって、誰もが閲覧可能な場所と、一部のユーザーしか参加できない
場所とに分かれている……という形態になっていますね。


ところでその「抵抗がある」という発言の真意としては、誰もが参照可能な場所での
発言を望んでいる、という事なのでしょうか? それとも、一般ユーザーが利用可能な
場所でさえあれば、当事者本人のみが参照可能な仕組みでも良い、という意味でしょうか?

前者だとすれば、答えてねっとや Public Newsgroup などであれば OK、という意図に
なるのでしょうか?

後者だとすれば、サポートセンターへのメールや電話という意図でしょうか。
(今回はメールされたとの事なので……後者の意味なのかな?)


> どうも、ここで騒いでいるほうが、反映されるような気がします。
おっ。それはつまり、幾らかは反映されたという事ですか?

掲示板等での発言の場合、正式にフィードバックした時と違って、意見が
伝わったのかどうか把握できない事が多いのですが、反映されるように
思えるような状況があったのだとすれば、騒いだ甲斐がありましたね。

何にせよ、気づいた事を黙っているというのも勿体無いですので、
一般公開できるような WSH 関連の情報をお持ちの際には、是非とも引き続き、
ここの掲示板にも投稿してもらえると、一掲示板利用者としてはありがたいです。(^^;



> この2件については、「メール」で意見を送付しました。聞くかどうか様子見です。
jpsecure@ あたりに送ったのでしょうか? 「聴」いてもらえると良いですね。


> もし、聞かないようなら、騒ぐだけにして、もう何も言ってやるまい。と思ってます。
そんな、勿体無い! もしそうなったとしても、騒ぐだけの元気が残っているならば、
そこで諦めず、別のルートも試してみては如何でしょう。MS に限った話では無いですが、
大きな企業だと、受け付けた部署によって対応が違うというのも、ありえる話でしょうからね。

あ、騒ぐ事自体を止めはしませんよ。むしろ、有効/重要な情報なのであれば、
掲示板等でも併せて騒いでもらった方が、個人的にはありがたかったりしますので。

ばんのしゃーによかばんた さん 2005年 10月 27日 21時 29分 17秒

>門外漢 さん 2005年 10月 26日 18時 08分 16秒
>応報ではスクリプトは動きませんでした。その前にリンクが効きません(正常)セキュリティレベルの微妙なカスタマイズがはいっていますでしょうか。はて?

そういうのって、私こそ門外漢なので分からないのですが、
「リンクが効きません」が「(正常)」てなぜでしょう。

セキュリティレベルの中/高は標準のままです。

門外漢なので的外れかも知れませんが、httpsからhttpへ変わるときのダイアログが
干渉しているのではないかな、と想像してます。大体、複合条件で発生する障害が
しぶとく生き残りますから。

それにタイミング等の不確定要素により、動作が変わるのが仕様のようですから。
これは別途。


ばんのしゃーによかばんた さん 2005年 10月 27日 21時 28分 55秒

>魔界の仮面弁士 さん 2005年 10月 26日 18時 35分 43秒
>本当になんとかして欲しいと願うのなら、Product Feedback を使うなり、
>eXConn の方にも併せて投稿するなどした方が、より建設的ですよね。

で、どれくらいの割合でor数が実際に製品に反映されました?
買わないと当たらないけど、買っても当たらない、宝くじとは違うんでしょうね。

どうも、MSは統計的品質管理の手法で障害や要望を処理してるような気がします。
大量に集めて集計し、数が多いものから処理。ある程度の数が集まらないと、埋没。
どうなんでしょう。

Product Feedbackは「ヘルプとサポート」の中からインターネットに接続するって
言い出すやつでしょうか?そういうのはとんでもないですね。
eXConnもトラブりそうで、あまり行きたくないな。
それに一般ユーザに開放してないところ(でしょ?)ってのも抵抗がありますね。
どうも、顧客の障害や要望を聞く姿勢が、伺うのではなく、聞いてやるので申し出よ
という感じがするんですけど、気のせいかな。

>ここで騒いでも、MS には届かないでしょう……。(^_^;)

どうも、ここで騒いでいるほうが、反映されるような気がします。
気のせいかな。CScript.EXE -E -なんて、だれも言わないだろうから、
ここで言わなきゃ、蓋をされることもなかったろうに、と後悔したり。

>○○なんて書いておくと、検索会社がロボットで収集して、抽出して、
調査会社に売り、調査会社が整理して、その会社に売るようなビジネスモデルが
既に成立しているのではないかな。

それに、この問題に関しては、私は第三者なので、外野で騒ぐだけですね。
実際にその問題で困ってる当事者、日○情報システムなどの大手システム会社から、
会社ルートで要求するのが筋だし、そのほうが通り易いと思います。

とはいえ、他人事ではない、

>ばんのしゃーによかばんた さん 2005年 10月 19日 15時 14分 48秒
>相変わらず、message.txt      .pif
>みたいな添付ファイル付きのメールが来ます。
>どうして、マイクロソフトはとっとと、このセキュリティホールを
>塞がないのでしょうか?
>つまり、拡張子が.PIFなら、ファイル中のIDをチェックして、
>違っていたらエラーにする。
>それだけで、この厄介メールは無害化/駆逐できると思いますが、
>違います?非互換も発生しないでしょう。
>なんで早くやらないのか、理解できません

>ばんのしゃーによかばんた さん 2005年 10月 03日 14時 57分 46秒
>例えば、http://*.microsoft.comなどを信頼済みサイトや
>イントラネットゾーンに指定しているひとが多いと思うのですが、
>そういう、よく指定されそうなサイトを、
><!-- saved from url=(00nn)http://msdn.microsoft.com/subscriptions -->
>のように埋め込んだページをインターネットに置いておき、
>のように、IE以外のブラウザやダウンローダで、
>ローカルにそのまま取り込み、これを、関連付けなどで、IEで開くと、
>インターネットゾーンやイントラネットゾーンで動くので、
>マイコンピュータゾーンのロックダウンが効きません。
>手っ取り早く、IEのMark of the Webによるゾーン制御を無効にする
>方法はないのでしょうか?それが一番よいように思うのですが。
>ないのなら早く作ってほしい。

この2件については、「メール」で意見を送付しました。聞くかどうか様子見です。
もし、聞かないようなら、騒ぐだけにして、もう何も言ってやるまい。と思ってます。

また、UTF-8メールの件なども、誰かが言うか、自分たちで気付いて直すだろう、
と思っていたのが間違いだと分かったので、仕方なく言うようにしました。
こっちは、直すそうです。


びーち さん 2005年 10月 27日 16時 25分 46秒

いつも大変参考にさせていただいております。
今、DOSのバッチから、簡単な処理を書いたwsfのバッチをよび、そのリターンコードでその後の処理を分岐させようとしています。

簡単なソースは下記の通りです。
test.bat------------------------
@echo off
cscript test.wsf
echo 終了コードは%ERRORLEVEL%です。
pause
--------------------------------

test.wsf------------------------
<package>
     <job id="test">
          <script language="vbscript">
         
               dim strTest
               strTest = "aaaa"
               If(strTest = "aaaa") Then
                    WScript.Quit(0)
               ElseIf(strTest = "bbbb") Then
                    WScript.Quit(1)
               End If
              
               msgbox "End"
              
          </script>
     </job>
</package>
----------------------------------
この時、実行するPCがWindowsXP(Microsoft (R) Windows Script Host Version 5.6)だと、記述したとおりのリターンコードが戻ってくるのですが、Windows2000(Microsoft (R) Windows Script Host Version 5.1)だと、常に、1が返ってきてしまいます。どうやら、wscript.quit以降にプログラムが通る通らないにかかわらず、IOの入る記述があると、リターンコードがうまく返ってこないようなのですが、何か回避作等ご存知ありませんでしょうか?

ばんのしゃーによかばんた さん 2005年 10月 27日 12時 09分 27秒

>管理人むたぐち さん 2005年 10月 23日 14時 33分 39秒
>ファイルのコピーはできるので、情報も何とかして取りたい
>ところだったんですけどね。

見えるのに取れない筈はないと、遅れ馳せながら、験してみました。

GetDetailsOfはタイトル行も取れませんね。全く以て、変なフォルダです。

しかし、FolderItem.SizeやFolderItem.ModifyDateは取れましたよ。

FolderItem.ModifyDateはTimeZoneOffsetずれてましたが。

Folderは、Explorerで開いてから、Shell.Windows.Item.Document.Folderで取りました。

待ち合わせ+FolderItem.ModifyDateで験してみてください。

サイトのOS種別に依存するのかも知れません。
私が験したのは、Unixのようでした。
ftp://upload.vector.co.jp/pack/incoming

あるいは、Explorerでないといけないかも。


ばんのしゃーによかばんた さん 2005年 10月 27日 12時 08分 14秒

異文字検出法

先の非英字検出はISO-8859-1なので、US-ASCIIの場合は、

If 127<AscW(char) Or AscW(char)<0 Then

としてください。

今度はIEを使って、異文字を検出する方法です。

IEに非日本語文字を含むUnicodeテキストファイルをドロップして、
「日本語(シフトJIS)」で保存し直すと、
非日本語文字は&#123;や&trade;に変換されます。
これを「メモ帳」で開いて、&を検索すると、異文字が分かります。

欧文文字の場合は、「西ヨーロッパ言語(ISO)」か「西ヨーロッパ言語(Windows)」
を選択します。これには、128-255のISO-8859-1の文字が含まれるので、
US-ASCII(0-127)の文字にしたいときは、「日本語(シフトJIS)」と
「西ヨーロッパ言語(ISO)」で重ねて保存すればよいでしょう。


魔界の仮面弁士 さん 2005年 10月 26日 18時 35分 43秒

》ばんのしゃーによかばんた さん 2005年 10月 26日 16時 26分 23秒
> OSの欠陥(機能欠如)だったのですね。なんとかしてよ。>MS

ここで騒いでも、MS には届かないでしょう……。(^_^;)

本当になんとかして欲しいと願うのなら、Product Feedback を使うなり、
eXConn の方にも併せて投稿するなどした方が、より建設的ですよね。

門外漢 さん さん 2005年 10月 26日 18時 09分 20秒

当方の・・・です。たびたびすみません。

門外漢 さん 2005年 10月 26日 18時 08分 30秒

>ばんのしゃーによかばんた さん 2005年 10月 26日 16時 27分 43秒

応報ではスクリプトは動きませんでした。その前にリンクが効きません(正常)セキュリティレベルの微妙なカスタマイズがはいっていますでしょうか。はて?

門外漢 さん 2005年 10月 26日 18時 08分 16秒

>ばんのしゃーによかばんた さん 2005年 10月 26日 16時 27分 43秒

応報ではスクリプトは動きませんでした。その前にリンクが効きません(正常)セキュリティレベルの微妙なカスタマイズがはいっていますでしょうか。はて?

ばんのしゃーによかばんた さん 2005年 10月 26日 16時 27分 43秒

https://インターネットゾーン(セキュリティレベル中)のサイト
の中から、
<a href=http://イントラネットゾーン(セキュリティレベル高)のサイト target="_blank">
へ行くと、スクリプトが動いたのですが、いいのでしょうか?

某社のサイトは、何を信頼済みサイトに登録すれば十分なのか、分からないので、
トラブル防止のため、某社のサイトへ行くときは、
インターネットゾーンのセキュリティレベルを一時的に中に下げているのですが、
先だっての話で、イントラネットゾーンのサイト登録が残っていたため、
またもやトラブルに。トラブルはサイト登録を消して、解決しましたが、
そのトラブルの振る舞いに、上の疑問が湧きました。
疑問の振る舞いのままなら、トラブルにならないのですが、スクリプトが動いて、
ページ表示を切り替えると、同じページがもうひとつ開いて、こっちでスクリプトが
動かなくなってトラブルに。よく分からない振る舞いです。


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

>ばんのしゃーによかばんた さん 2005年 10月 20日 15時 33分 24秒
>Word文書中の異文字を検出するVBAマクロです。

これは、Wordの標準機能でも可能ですね。

MS Wordの標準機能で異文字を検出するには、
「名前を付けて保存」で、「書式なし (*.txt)」を指定し、
「ファイルの変換」ダイアログで、文字コードを選択すると、
「赤で示されたテキストは指定されたエンコードでは正しく保存されません」
という警告表示とプレビュー画面が出ます。
OKボタンを押さないようにして、確認が済めばキャンセルします。

OutLookでも、「メールの編集にMicrosoft Wordを使用する」となっていれば、
同様です。

ただし、「赤で示されたテキスト」が見付け難い、見落とし易いので、
使い勝手はもうひとつです。もっと目立つように強調表示してほしい。>MS

それに、「名前を付けて保存」でなく、普通にチェックできるようにして欲しい。

まぁ、「メモ帳」で、
非日本語文字を含むUnicodeテキストファイルをANSI(SJIS)で保存するとき、
---------------------------
メモ帳
---------------------------
このファイルは、ANSI テキスト ファイルとして保存すると失われてしまう Unicode 形式の文字を含んでいます。Unicode の情報を保存するには、下の [キャンセル] をクリックし、[文字コード] から [Unicode] を選択してください。続行しますか?
---------------------------
OK  キャンセル 
---------------------------
という警告が出ますが、どこに、どういう文字があるのかは分かりません。
分かっているなら教えてくれても良さそうなものなのにケチ。>MS

これよりは、Wordのほうがましですが。。。

あと、このWordVBAマクロをOutLookのVBAマクロに移植しようとしてるんですが、
どうも、OutLookのオブジェクトは分かりにくいですね。インスペクタって何だ?
今、開いてるメールの本文はどうやって見るんでしょう?


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

タスクスケジューラが使えないなら、RunAs系列でなんとかならんものか。

そこで、「別のユーザーとして実行(&A)...」です。

※これもパスワードを持ち歩く、危ない方法です。。。

RunAs.VBS [/u:user] [/p:password] command [arguments...]
――――――――――――――――――――――――――――――――――――――
Option Explicit
Dim fso:Set fso=CreateObject("Scripting.FileSystemObject")
Dim Shell:Set Shell=CreateObject("Shell.Application")
Dim Folder
Dim FolderItem
Dim Verb
Dim wShell:Set wShell=CreateObject("WScript.Shell")
Dim Link:Set Link=wShell.CreateShortCut(fso.BuildPath(fso.GetSpecialFolder(2).Path,fso.GetTempName())&".LNK")
Dim Path
Dim Name
Dim USER
Dim PASSWORD
Dim k:k=0
Dim arg
'USER="user"
'PASSWORD="password"

For Each arg In WScript.Arguments
 If k=0 Then
  Select Case LCase(Left(arg,3))
  Case "/u:" USER=Mid(arg,4)
  Case "/p:" PASSWORD=Mid(arg,4)
  Case Else
   k=k+1
   Name=arg
  End Select
 Else
  If InStr(arg," ") Then arg=""""&arg&""""
  If Link.Arguments<>"" Then
   Link.Arguments=Link.Arguments&" "&arg
  Else
   Link.Arguments=arg
  End If
 End If
Next

Call GetFullPath(Name)
Path=Link.TargetPath
If Path="" Then
 WScript.Echo Name,"not found."
 WScript.Quit
End If

If IsEmpty(USER) Then USER=InputBox("Enter User Name",Path,"")
If IsEmpty(USER) Then WScript.Quit
If IsEmpty(PASSWORD) Then PASSWORD=InputBox("Enter Password",Path,"")
If IsEmpty(PASSWORD) Then WScript.Quit

If Link.Arguments<>"" Then
 Link.Save
 Path=Link.FullName
End If

Folder=Left(Path,InStrRev(Path,"\"))
Name=Mid(Path,InStrRev(Path,"\")+1)

Set Folder=Shell.NameSpace(Folder)
Set FolderItem=Folder.Items.Item(Name)
For Each Verb In FolderItem.Verbs
 If Verb.Name="別のユーザーとして実行(&A)..." Then Exit For
Next
If IsEmpty(Verb) Then
 WScript.Echo "No Verb"
 WScript.Quit
End If
wShell.Run "MSHTA.EXE vbscript:Execute(""msec=100:title=""""別のユーザーとして実行"""":Set wShell=CreateObject(""""WScript.Shell""""):Sub proc2():If wShell.AppActivate(title) Then:wShell.SendKeys """"%f%u"&USER&"%p"&PASSWORD&"{enter}"""":setTimeout """"proc2"""",msec:Else:close():End If:End Sub:Sub proc1():If wShell.AppActivate(title) Then:proc2:Else:setTimeout """"proc1"""",msec:End If:End Sub:proc1:"")",0
Doit Verb
If Link.Arguments<>"" Then
 fso.DeleteFile Link.FullName
End If
If Err Then Err.Raise Err.Number

Sub GetFullPath(Name)
Link.TargetPath=""
On Error Resume Next
Link.TargetPath=Name
End Sub

Sub Doit(Verb)
On Error Resume Next
Verb.Doit
End Sub


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

>ばんのしゃーによかばんた さん 2005年 10月 17日 17時 03分 52秒
>するてーと、unixのSUID相当のことはWindowsでは出来ねーてことに
>なりんすね。

これは、単に機能がない、で済むことではなく、セキュリティホールの元です。

普通のOSは、特権ユーザでないと出来ないことを、一般ユーザが出来るようにする
安全な仕組みを持っています。
それが、unixではSUID、メインフレームでは認定ライブラリ/認定プログラムです。

もしも、そういう安全な仕組みが無ければ、危ない方法が出回ります。
つまり、ユーザ名/パスワードのスクリプト等への組み込みですね。

なんで、この手の質問が多かったのか、合点が行きました。
OSの欠陥(機能欠如)だったのですね。なんとかしてよ。>MS

或は、汎用ツールを誰か作っているのではないでしょうか。
タスクスケジューラのように?、ユーザ名/パスワードを暗号化し、電子署名を付けて
安全に管理し、RunAs.EXEのように?、CreateProcessAsUserで起動する。


WSH初心者 さん (post2005@lemon.sakura.ne.jp) 2005年 10月 26日 11時 11分 30秒

唐突の質問にすみません。
WSHを2日前から少し勉強してみました。
目的は、とあるバックアッププログラムを起動し、必要項目を自動設定
して実行するものです。
バックアッププログラムはGUIオンリーの仕様です。

プログラム起動はExecを使い、キーストロークをこのプロセスに送信
して入力処理、実行ボタンの押下までの処理を行いました。

WSHでのスクリプト自体は動作するのですが、これをWindowsタスクで
時間指定してみたところ、既にWindowsログオン時にタスク実行される
場合はうまく動作しますが、ログオフ時、ロック時は動作できません
でした。

バックアッププログラムがGUI仕様であるから無理とは思うのですが、
WSHのプログラミングテクニックで処理させる方法をご存知の方が
ございましたらお知恵いただけましたら幸いです。

本掲示版の趣旨と若干外れておりましたらすみません。。

管理人むたぐち さん 2005年 10月 23日 14時 33分 39秒

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

FTPフォルダでは「個のオブジェクト」という表示はされないので
次のようにして待ってみたのですが、やはり駄目でした。

Do While InStr(Ie.StatusText,"フォルダの内容を取得しています")<>0
     WScript.Sleep 100
Loop

念のため、WScript.Sleep 10000とかもしてみたんですけど駄目。

普通のフォルダと違って、ファイルにマウスポインタを当てても
「サイズ」や「更新日時」がポップアップされないので、
そこらへんにできない理由があるのかもしれません。

ファイルのコピーはできるので、情報も何とかして取りたい
ところだったんですけどね。

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

>管理人むたぐち さん 2005年 10月 19日 15時 46分 40秒

タイミングが早いのかも知れません。
一覧表示の完了を待ち合わせてみてください。

>sFtpURL = "ftp://thinkpad/home"
>Set Ie = WScript.CreateObject("InternetExplorer.Application")
>Ie.Navigate sFtpURL

Ie.Visible=True

>Do While ie.Busy Or ie.ReadyState<>4
>   WScript.Sleep 100
>Loop

MsgBox "一覧表示が落ち着くまで待つ"
'Do While InStr(Ie.StatusText,"個のオブジェクト")=0
' WScript.Sleep 100
'Loop

>Set oFTPFolder = Ie.Document.Folder
>Set oItem1 = oFTPFolder.ParseName(sFile)
>oFTPFolder.GetDetailsOf ,3
>sModifyDate = oFTPFolder.GetDetailsOf(oItem1,3)
>msgbox sModifyDate


ばんのしゃーによかばんた さん 2005年 10月 20日 15時 33分 24秒

Word文書中の異文字を検出するVBAマクロです。
Normal.dotに保存し、ツールバーにボタンを置いて使います。

VBAでは、SetLocaleが使えないので、代わりに、StrConvを使います。

NewMacros.bas
――――――――――――――――――――――――――――――――――――――
Attribute VB_Name = "NewMacros"
Option Explicit

Sub IsEnglish()
Dim n: n = 0
Dim j
Dim k
Dim Characters
Dim char
Dim Status
Dim Ans

Application.StatusBar = "異文字検索中..."
Ans = vbOK
For j = 1 To ActiveDocument.Paragraphs.Count
 Set Characters = ActiveDocument.Paragraphs(j).Range.Characters
 For k = 1 To Characters.Count
  char = Characters(k).Text
  If char <> StrConv(StrConv(char, vbFromUnicode, 1033), vbUnicode, 1033) Then
   n = n + 1
   Characters(k).Select
   Status = Join(Array("Paragraph", j, "Column", k, "Char", char, "Code", Hex(AscW(char)), vbTab))
   Application.StatusBar = "異文字発見 " & Status
   Ans = MsgBox(Status, vbOKCancel, "次を検索")
   If Ans = vbCancel Then Exit For
   Application.StatusBar = "異文字検索中..."
  End If
 Next
 If Ans = vbCancel Then Exit For
Next
Application.StatusBar = "異文字検索終了 " & n & " 文字発見"
MsgBox n & " 文字発見", , "異文字検索終了"

End Sub

Sub IsJapanese()
Dim n: n = 0
Dim j
Dim k
Dim Characters
Dim char
Dim Status
Dim Ans

Application.StatusBar = "異文字検索中..."
Ans = vbOK
For j = 1 To ActiveDocument.Paragraphs.Count
 Set Characters = ActiveDocument.Paragraphs(j).Range.Characters
 For k = 1 To Characters.Count
  char = Characters(k).Text
  If char <> Chr(Asc(char)) Then
   n = n + 1
   Characters(k).Select
   Status = Join(Array("Paragraph", j, "Column", k, "Char", char, "Code", Hex(AscW(char)), vbTab))
   Application.StatusBar = "異文字発見 " & Status
   Ans = MsgBox(Status, vbOKCancel, "次を検索")
   If Ans = vbCancel Then Exit For
   Application.StatusBar = "異文字検索中..."
  End If
 Next
 If Ans = vbCancel Then Exit For
Next
Application.StatusBar = "異文字検索終了 " & n & " 文字発見"
MsgBox n & " 文字発見", , "異文字検索終了"

End Sub
――――――――――――――――――――――――――――――――――――――
悩みは、検索途中で編集できないこと。モードレスフォームを使うのかな。


ばんのしゃーによかばんた さん 2005年 10月 20日 15時 33分 03秒

>魔界の仮面弁士 さん 2005年 10月 19日 00時 00分 22秒
>word-break プロパティを使う。

それです、それ。
やっぱり、英字と日本語を平等に扱うかどうかのプロパティがあったんですね。

<table border>
<tr>
<td width="50%" style="word-break:break-all;">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</td>
<td width="50%">あああああああああああああああああああああああああああああああ</td>
</tr>
</table>

これで日英が公平、平等になりました。
やりたかったのはそういうことなんです。分かりにくくて済みません。

それから、多様なブラウザ環境に対応したWebページを作る気は全然なくて、
XP SP2/IE6のローカル環境で、
>ばんのしゃーによかばんた さん 2005年 10月 07日 14時 38分 31秒
>WinDiff.EXE ファイル1 ファイル2 -filrx リストファイル
>このリストファイルを以下にドロップすると、HTMLの差分リストに変えて表示します。
>WinDiff.VBS
みたいなのが動けばよい、という程度の話なんです。話が前後して済みません。


管理人むたぐち さん 2005年 10月 19日 15時 46分 40秒

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

> エクスプローラかIEでNavigateして、GetDetailsOfで取れませんか?

sFtpURL = "ftp://thinkpad/home"
Set Ie = WScript.CreateObject("InternetExplorer.Application")
Ie.Navigate sFtpURL
Do While ie.Busy Or ie.ReadyState<>4
     WScript.Sleep 100
Loop
Set oFTPFolder = Ie.Document.Folder
Set oItem1 = oFTPFolder.ParseName(sFile)
oFTPFolder.GetDetailsOf ,3
sModifyDate = oFTPFolder.GetDetailsOf(oItem1,3)
msgbox sModifyDate

のようにしてみたんですが、やはり長さ0の文字列が帰ってきます。
何故だろう?
一応、GetDetailsOfの第二引数をループをまわして調べてみたのですが、
どれも長さ0の文字列でした。

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

Word文書中の異文字を検出します。
OutLookのエディタにWordを使用しているときにも使えます。

.DOCファイルをドロップするか、Wordで文書を開いているときに起動します。

SetLocale "en-us"     非英字を検出。
SetLocale "ja"          非SJIS字を検出。

DocIsCharSet.VBS
――――――――――――――――――――――――――――――――――――――
Option Explicit
Dim oWord
Dim arg
Dim Document

SetLocale "en-us"
'SetLocale "ja"

If WScript.Arguments.Count Then
 Set oWord=CreateObject("Word.Application")
 oWord.Visible=True
 For Each arg In WScript.Arguments
  Set Document=oWord.Documents.Open(arg)
  Find
'  Document.Close
 Next
 Set Document=Nothing
' oWord.Quit
 Set oWord=Nothing
Else
 Set oWord=GetObject(,"Word.Application")
 oWord.Visible=True
 If oWord.Documents.Count=0 Then
  oWord.Quit
  MsgBox "No Document Open."
  WScript.Quit
 End If
 Set Document=oWord.ActiveDocument
 Find
 Set Document=Nothing
 Set oWord=Nothing
End If

Sub Find()
Dim n:n=0
Dim j
Dim k
Dim Characters
Dim char
Dim Status
Dim Ans

oWord.StatusBar="異文字検索中..."
Ans=vbOk
For j=1 To Document.Paragraphs.Count
 Set Characters=Document.Paragraphs(j).Range.Characters
 For k=1 To Characters.Count
  char=Characters(k).Text
  If char<>Chr(Asc(char)) Then
   n=n+1
   Characters(k).Select
   Status=Join(Array("Paragraph",j,"Column",k,"Char",char,"Code",Hex(AscW(char)),vbTab))
   oWord.StatusBar="異文字発見 "&Status
   Ans=MsgBox(Status,vbOkCancel,"次を検索")
   If Ans=vbCancel Then Exit For
   oWord.StatusBar="異文字検索中..."
  End If
 Next
 If Ans=vbCancel Then Exit For
Next
oWord.StatusBar="異文字検索終了 "&n&" 文字発見"
MsgBox n&" 文字発見",,"異文字検索終了"
End Sub
――――――――――――――――――――――――――――――――――――――
悩みは、パラグラフ番号でなく、Jump先に指定でき、
ステータスバーにも表示される行番号にしたいこと。

WSH/VBScriptからWordやExcelを操作すると遅いのは仕方がなさそう。
性能を取るなら、次のVBAマクロですね。


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

>管理人むたぐち さん 2005年 10月 18日 09時 23分 47秒
>CreationDateプロパティはもともとありません。

うっぷ。

>ModifyDateはDate型の0:00:00を返します。
>Sizeは0を返します。
>つまり、これらの値は使い物にならないです、残念ながら。

そういうSpecial Folderが、ときどきあります。
ZIPのModifyDateもそうでした。

>GetDetailsOfだと長さ0のStringを返します。

GetDetailsOfまで駄目ですか。

>エクスプローラではちゃんと表示されているのですが、
>ちゃんと取得できないのはくやしいですね。

おお、そうなんですか。なら、できるはずです。
エクスプローラかIEでNavigateして、GetDetailsOfで取れませんか?


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

MSDNライブラリのInternetのURLとローカルのURLの相互変換方法について

http://msdn.microsoft.com/library/en-us/wmisdk/wmi/rename_method_in_class_win32_computersystem.asp

ms-help://MS.MSDNQTR.2003FEB.1041/wmisdk/wmi/win32_computersystem.htm
では、分かりますが、

http://msdn.microsoft.com/library/default.asp?url=/workshop/security/szone/reference/ifaces/iinternetsecuritymanager/getzonemappings.asp

ms-help://MS.MSDNQTR.2005APR.1041/iesecurity/workshop/security/szone/reference/ifaces/iinternetsecuritymanager/getzonemappings.htm
では、iesecurityの情報が対応していないため、
InternetのURLからローカルのURLへの変換ができません。

なんかいい方法はないもんでしょうか。


ばんのしゃーによかばんた さん 2005年 10月 19日 15時 14分 48秒

相変わらず、message.txt          .pif
みたいな添付ファイル付きのメールが来ます。

どうして、マイクロソフトはとっとと、このセキュリティホールを
塞がないのでしょうか?

>ばんのしゃーによかばんた さん 2005年 10月 11日 15時 13分 54秒
>それよりも、その先にも書いてある、見識が問われる仕様、
>cmd /c evil.gif
>をとっとと直すべきです。これこそ正真正銘の欠陥仕様です。
>これも、Mark of the Webと同じで、中のデータに依存して制御する、
>とんでもない仕様です。
>これを放置して、セキュリティを云々するなんざ可笑しくって、
>おへそが茶を沸かします。
>つまり、拡張子を制御情報として使い、拡張子が.EXEなら、ファイル中の
>IDが"MZ"であることをチェックして、違っていたらエラーにすべきなのです。
>ファイル中のIDを見て実行するなんてのは、全くのど素人が作った
>お遊びプログラムとしか思えません。これがOSだなんて信じられません。

つまり、拡張子が.PIFなら、ファイル中のIDをチェックして、
違っていたらエラーにする。
それだけで、この厄介メールは無害化/駆逐できると思いますが、
違います?非互換も発生しないでしょう。
なんで早くやらないのか、理解できません。


みみ さん 2005年 10月 19日 10時 02分 33秒

To ちゃっぴさん

>MMC は RPC 使っているくせに面白いことに Windows File 共有の
>認証情報を使っています。

>つまり、事前に Network Drive をきるとか、File 共有の認証を
>済ましておけば認証で問題になることはありません。

申し訳ないですが、意味が分かりません。
「Network Drive をきるとか、File 共有の認証を済ましておけば」
他のドメインのリソースへアクセスする際に、認証が必要ないということですか?

>しかし、
>> ただ、実現しなければいけない必然性も文面からはよくわからない。。
>という Nomu さん の意見に全く同意見ですね。
>GUIでやるなら、めんどくさがらずに手動で認証くらい何とかしましょう。

>というか、共通の Account とか設定できないのですか?
># Domain を利用しないとしても・・・

「共通の Account」というのは、処理を実行する端末とターゲットコンピュータのローカルにアカウントを作成するという意味ですか?

門外漢 さん 2005年 10月 19日 00時 45分 31秒

FYI
◆CSS: 「折り返す」pre
http://sho.tdiary.net/20050922.html#p02

white-space: -moz-pre-wrap; /* Mozilla */
white-space: -pre-wrap;   /* Opera 4-6 */
white-space: -o-pre-wrap;  /* Opera 7 */
white-space: pre-wrap;   /* CSS3 */
word-wrap: break-word;   /* IE 5.5+ */

一般論で単語単位で改行の図です。

魔界の仮面弁士 さん 2005年 10月 19日 00時 00分 22秒

》ばんのしゃーによかばんた さん 2005年 10月 18日 15時 34分 35秒
> 不公平。一方的。
ラテン系言語と CJK のそれとを比べても、あまり意味が無いような。
英文だって、breakable string であれば、そこで wrap されますよね。


> style="word-wrap:break-word;"も効かない。
これって、CSS3 の word-wrap の意味ですか?
それとも、IE5.5 独自実装の word-wrap の方?

どちらにしても、これ自体は、ボックス幅に入りきらない時に、
単語の途中での改行を許容するかどうか…という設定項目なので、
ボックス幅の指定が必要であったとしても、不思議はないと思いますが。


> <td width=50%>
<td width="50%"> 、ですよね。
で、この場合は先祖要素にてボックスサイズが定義されていないので、
パーセント指定のセル幅は、実装依存になるんじゃありませんでしたっけ。
# うろ覚え。どなたかご存知でしたら、フォロー入れてください。


> スクリプト使わないと出来ないのかなぁ。
やりたい事も、ブラウザの種類も、HTML のバージョンも
不明なので、望むべき結果になるかはわかりませんが……。


単純に改行したくないだけなら、TD に nowrap 属性を指定する。

英文表示の際に、文の途中での改行を許可したいなら、
既に御自身で使われていた word-wrap プロパティを使う。

和文表示の際にも、単語中での改行を許可したくないならば、
word-break プロパティを使う。

で、word-wrap や word-break が使えないブラウザであれば、
スクリプト制御、という事になるのかも。

はじめ さん 2005年 10月 18日 22時 52分 49秒

これまで、HTMLに組み込んでたObjectを、WSHで作成したいのですが、
パラメータの渡し方が判りません、教えてください。

HTMLでの記述
 <object ID=Hoge CLASSID="CLSID:3E9BAF2D-7A79-11d2-9334-0000F875AE17">
 <PARAM NAME = "MODE" VALUE = "HogeHoge">
 </object>

WSHでの記述
Set oHoge = createobject("Hoge.App")

<PARAM>で渡していたパラメータをどうやって渡したらいいのでしょうか?

ばんのしゃーによかばんた さん 2005年 10月 18日 15時 36分 36秒

>まこ さん (null) 2005年 10月 03日 12時 51分 04秒
>>POP before SMTP とか認証が必要なのでしょう。
>これは、どうすることも出来ないのでしょうか?
>それとも、vbsで可能なのでしょうか?

>まこ さん (null) 2005年 09月 27日 13時 48分 15秒
で、アウトルック、同エクスプレスなどでなくてもいいです。

もしも、OutLookでよければ、設定でサポートしているようなので、
簡単にできるかも知れません。

サポート技術情報 
[OL2002] メールを送信する前に受信メール サーバーにログオンする方法
文書番号: 813037
最終更新日: 2003/06/18
詳細
使用するインターネット サービス プロバイダ (ISP) によっては、メールを送信する前に受信メール サーバー (POP3) にログオンする必要があります。この機能を POP before SMTP と呼ぶ場合があります。

[メールを送信する前に受信メール サーバーにログオンする] をクリックして、[OK] をクリックします。


ばんのしゃーによかばんた さん 2005年 10月 18日 15時 36分 18秒

>たか さん 2005年 10月 09日 07時 27分 07秒
>Terminateのしかたについて、どなたか教えていただけませんか?
>これは、WindowsMeだからでしょうか?

98やMEでは、Terminateは使わないほうがよいのではないでしょうか。
ファイルもクローズされなかったような。

WMIを使おうと思うなら、2000/XPへ移行したほうがよいと思います。


ばんのしゃーによかばんた さん 2005年 10月 18日 15時 35分 31秒

一般的な需要はないと思いますが、
訳あって投稿数を調べる必要があるとき(?)に使います。:-p

CScript.EXE WSHTOP.VBS index.shtml list*.shtml > wshtop.txt
――――――――――――――――――――――――――――――――――――――
Option Explicit
Dim fso:Set fso=CreateObject("Scripting.FileSystemObject")
Dim arg,argc,argv()

For Each arg In Wscript.Arguments
 If InStr(arg,"*") Then
  call glob(arg)
 ElseIf InStr(arg,"?") Then
  call glob(arg)
 Else
  argc=argc+1
  ReDim Preserve argv(argc-1)
  argv(argc-1)=arg
 End If
Next

Function Glob(arg)
Dim Folder
Dim bre
Dim pre
Dim xre
Dim File
Dim Found
Set Folder=fso.GetFolder(fso.GetParentFolderName(fso.GetAbsolutePathName(arg)))
Set pre=New RegExp
Set bre=New RegExp
Set xre=New RegExp
pre.Global=True
bre.IgnoreCase=True
xre.IgnoreCase=True
pre.Pattern="([\]\^\[\\\$\+\.\(\)\|\{\}])"
bre.Pattern="^" & pre.Replace(fso.GetBaseName(arg),"\$1") & "$"
bre.Pattern=Replace(bre.Pattern,"?",".")
bre.Pattern=Replace(bre.Pattern,"*",".*")
xre.Pattern="^" & pre.Replace(fso.GetExtensionName(arg),"\$1") & "$"
xre.Pattern=Replace(xre.Pattern,"?",".")
xre.Pattern=Replace(xre.Pattern,"*",".*")

For Each File In Folder.Files
 If bre.Test(fso.GetBaseName(file.Name)) And xre.Test(fso.GetExtensionName(file.Name)) Then
  argc=argc+1
  ReDim Preserve argv(argc-1)
  argv(argc-1)=File.Path
  Found=True
 End If
Next
If Not Found Then
 argc=argc+1
 ReDim Preserve argv(argc-1)
 argv(argc-1)=arg
End If
End Function

Dim Name
Dim Text
Dim Matches
Dim Match
Dim dic:Set dic=CreateObject("Scripting.Dictionary")
Dim re:Set re=New RegExp
re.Pattern="<\w+>\s*<font size=[^>]+>([^<]+)</font>\s*</\w+>\s*さん\s*"
re.IgnoreCase=True
re.Global=True

For Each arg in argv
 Text=fso.OpenTextFile(arg).ReadAll()
 Set Matches=re.Execute(Text)
 For Each Match In Matches
  Name=Trim(Replace(Match.SubMatches(0),vbCrLf," "))
  If dic.Exists(Name) Then
   dic.Item(Name)=dic.Item(Name)+1
  Else
   dic.Add Name,1
  End If   
 Next
Next

Dim SC:Set SC=CreateObject("ScriptControl")
SC.Language="JScript"
SC.TimeOut=-1

Function compare(x,y)
compare=-Sgn(x(0)-y(0))
End Function
SC.AddObject "vbfunc",GetRef("compare")
SC.AddCode "function compare(x,y){return(vbfunc(x,y));}"

Dim JS:Set JS=SC.Eval("new Array()")
For Each Name in dic.Keys
 JS.push(Array(dic.Item(Name),Name))
Next

For Each Name in JS.sort(SC.CodeObject.compare)
 WScript.Echo Name(0),Name(1)
Next
WScript.Quit


ばんのしゃーによかばんた さん 2005年 10月 18日 15時 35分 08秒

テキスト中の異文字を検出します。

テキストファイルをドロップするか、
テキストをクリップボードにコピーして起動します。

コードページの切り替えにSetLocaleを使うところが味噌です。

SetLocale "en-us"     非英字を検出。
SetLocale "ja"          非SJIS字を検出。

IsCharSet.VBS
――――――――――――――――――――――――――――――――――――――
Option Explicit
Dim fso:Set fso=CreateObject("Scripting.FileSystemObject")
Dim Rows:Rows=Array()
Dim arg
Dim Text

SetLocale "en-us"
'SetLocale "ja"

For Each arg In WScript.Arguments
 Call IsCharSet(fso.OpenTextFile(arg,,,-2).ReadAll())
Next
If WScript.Arguments.Count()=0 Then
 Text=GetCLipByMsForms()
 If IsNull(Text) Then Text=GetCLipByMsIE()
 arg="Clipboard"
 Call IsCharSet(Text)
End If

WScript.Quit

Sub IsCharSet(ByVal Lines)
Dim Line
Dim j
Dim k
Dim char
Dim fFound:fFound=0

Lines=Split(Lines,vbCrLf)
For j=1 To UBound(Lines)+1
 Line=Lines(j-1)
 For k=1 To Len(Line)
  char=Mid(Line,k,1)
  If char<>Chr(Asc(char)) Then
   fFound=fFound+1
   Echo Join(Array("Line",j,"Column",k,"Char",char,"Code",Hex(AscW(char))),vbTab)
  End If
 Next
Next
Echo arg&" : "&fFound
If UBound(Rows)>-1 Then
 MsgBox Join(Rows,vbLf),,arg
 Rows=Array()
End If
End Sub

Sub Echo(str)
On Error Resume Next
WScript.StdOut.WriteLine str
If Err=0 Then Exit Sub
If UBound(Rows)=20 Then
 If vbCancel=MsgBox(Join(Rows,vbLf),vbOkCancel,arg) Then WScript.Quit
 Rows=Array()
End If
ReDim Preserve Rows(UBound(Rows)+1)
Rows(UBound(Rows))=str
End Sub


Function GetCLipByMsIE()
Const OLECMDID_PASTE = 13
Const OLECMDEXECOPT_DODEFAULT = 0
Dim ie
Set ie=CreateObject("InternetExplorer.Application")
'ie.Visible=true
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

Function GetCLipByMsForms()
Dim uf
Dim tb
Dim Text
On Error Resume Next
Set uf=CreateObject("Forms.Form.1")
On Error GoTo 0
If IsEmpty(uf) Then
 GetCLipByMsForms=Null
 Exit Function
End If
Set tb=uf.Controls.Add("Forms.TextBox.1").Object
tb.MultiLine=True
If tb.CanPaste Then
 tb.Paste
End If
Text=tb.Text
Set tb=Nothing
Set uf=Nothing
GetCLipByMsForms=Text
End Function


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

HTMLのテーブルで、英字と日本語のカラムがあると、英字はwrapされず、
日本語ばかりwrapされます。不公平と言うか差別と言うか。
なんとかなりませんか。

日本語同士なら公平。平等。
<table border>
<tr>
<td width=50%>あああああああああああああああああああああああああああああああ</td>
<td width=50%>ああああああああああああああ</td>
</tr>
</table>

不公平。一方的。style="word-wrap:break-word;"も効かない。
<table border>
<tr>
<td width=50% style="word-wrap:break-word;">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</td>
<td width=50%>あああああああああああああああああああああああああああああああ</td>
</tr>
</table>

width=固定値だと効く。
<table border>
<tr>
<td width=320 style="word-wrap:break-word;">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</td>
<td>あああああああああああああああああああああああああああああああ</td>
</tr>
</table>

スクリプト使わないと出来ないのかなぁ。


管理人むたぐち さん 2005年 10月 18日 09時 23分 47秒

To: ばんのしゃーによかばんた さん 2005年 10月 17日 17時 03分 03秒

> 同じ値でしょうか、異なる値でしょうか?

ModifyDateはDate型の0:00:00を返します。
GetDetailsOfだと長さ0のStringを返します。

> CreationDateやSizeは、どうでしょう?

CreationDateプロパティはもともとありません。
Sizeは0を返します。

つまり、これらの値は使い物にならないです、残念ながら。

> そういう設定なしに自動判読するのは無理なのかも。

エクスプローラではちゃんと表示されているのですが、
ちゃんと取得できないのはくやしいですね。

> あれ、どうしてだろう。
> source/destination共にFileSystemでないと同期にならないのかなぁ。
>
> source/destination共にFileSystemだと同期ですよね?

ともにFileSystemだと同期でした。ややこしい仕様ですねー。

ばんのしゃーによかばんた さん 2005年 10月 17日 17時 03分 52秒

>ちゃっぴ さん 2005年 10月 15日 23時 00分 36秒
>今回の場合立ち上げる Application が MMC(GUI) のため
>表示されないのでダメでしょう。

そっか。そのユーザの画面に出ちゃいますね。

>異なる認証情報を使用して
>GUIのTaskSchedulerやCLIのschtasks
>で扱えるのは、CUI の Application のみです。

するてーと、unixのSUID相当のことはWindowsでは出来ねーてことに
なりんすね。


ばんのしゃーによかばんた さん 2005年 10月 17日 17時 03分 19秒

>ちゃっぴ さん 2005年 10月 15日 22時 45分 24秒
>亡くなります?
>過去何回も「(応答なし)」にはなっていますが、
>亡くなったことはないですね。

障害の発現には、メモリサイズも関係するんじゃないかな。


ばんのしゃーによかばんた さん 2005年 10月 17日 17時 03分 03秒

>管理人むたぐち さん 2005年 10月 15日 20時 09分 53秒
>Shell.Applicationを使ってFTPフォルダとしてアクセス
>することはできたのですが、残念ながら肝心のModifyDateが
>正しい値を返しません。GetDetailsOfも駄目でした。

同じ値でしょうか、異なる値でしょうか?
CreationDateやSizeは、どうでしょう?
dirの情報と比べて。

昔、NortonFileMangerだったか、他のGUI FTPソフトかを使ってたとき、
FTPのdirのフォーマットをサイトごとに教えてやらないと駄目でした。
unix ls -l/DOS DIR/その他(フィールド定義)みたいに。
そういう設定なしに自動判読するのは無理なのかも。

>> ばんのしゃーによかばんた さん 2005年 01月 26日 18時 31分 47秒
>> ※XP SP2ではFileSystemへのCopyHereは同期のようです。
>> 2000までは同期。XPで非同期になったように思うのですが、SP2で戻ったのでしょうか。
>とありますが、当方の環境ではSP2でも非同期でした。

あれ、どうしてだろう。
source/destination共にFileSystemでないと同期にならないのかなぁ。

source/destination共にFileSystemだと同期ですよね?

――――――――――――――――――――――――――――――――――――――
ところで、過去記事参照の参照過去記事を探すのはどうしてます?

記事本文の断片でもあれば、それで検索すればよいのですが、本文なしの
>ばんのしゃーによかばんた さん 2005年 01月 26日 18時 31分 47秒
だけだと、AKiOSさんのオリジナル版WSHLAB.HTAでは検索が難しいですよね。

しか〜し、ばんのしゃーによかばんた版では、
「ばんのしゃーによかばんた さん 2005年 01月 26日 18時 31分 47秒」
で検索できます。:-)
な〜んちゃって、折角のAKiOSさんのコードをコメントアウトしてる
だけなんです。どうも済みません。>AKiOSさん

>ばんのしゃーによかばんた さん 2005年 04月 16日 15時 48分 55秒
>AKiOSさんのオリジナル版WSHLAB.HTAと
>それをカストマイズした、ばんのしゃーによかばんた版WSHLAB2.HTAとの差分です。

更に、ばんのしゃーによかばんた版+以下のようにすると、タグの中まで検索します。

function and_search(kiji) { // すべてのキーワードが見つかれば true を返す
     if (re_keyword != null) {
          var x = kiji.indexOf("<BLOCKQUOTE>");
          if (x != -1) {
//               kiji = kiji.substr(x); // 本文を取り出す
          }
//今回これも無効に     kiji = kiji.replace(/<\/?[^<>]*>/g, ""); // タグを取り除く

※この過去記事をみるとFC.EXE /Nを使ってますね。
人間の脳味噌(目)はそのときに関心がないことには節穴ですね。
カクテルパーティ効果とか言いましたっけ?耳も目も同じですね。


魔界の仮面弁士 さん 2005年 10月 17日 10時 24分 35秒

》マサ さん 2005年 10月 16日 23時 27分 42秒
> WSHで、現在の時刻を戻す関数ってあるんですか?
WSH というよりも、その上で動作させるスクリプト言語側の関数になりますね。

============ VBScript の例 ============
'VBScriptでは、Now関数(日付と時刻)かTime関数(時刻のみ)を使います。
T = Now()
WScript.Echo T
WScript.Echo FormatDateTime(T)

Y = Year(T)
M = Month(T)
D = Day(T)
H = Hour(T)
N = Minute(T)
S = Second(T)
X = CStr(Y) & "年" & CStr(M) & "月" & CStr(D) & "日 " _
 & CStr(H) & "時" & CStr(N) & "分" & CStr(S) & "秒"
WScript.Echo X


============ JScript の例 ============
//JScriptでは、Dateオブジェクトの引数無しコンストラクタを使います。
t = new Date();
WScript.Echo(t);
WScript.Echo(t.toLocaleString());

y = t.getFullYear();
m = t.getMonth() + 1;
d = t.getDate();
h = t.getHours();
n = t.getMinutes();
s = t.getSeconds();
f = t.getMilliseconds();
X = y + '年' + m + '月' + d + '日 '
 + h + '時' + n + '分' + s + '秒.' + f;
WScript.Echo(X);


============ Perl の例 ============
#Perlでは、time関数とlocaltime関数を使います。
print time, "\r\n";
$t = localtime(time), "\r\n";
print "$t\r\n";

($sec, $min, $hour, $mday, $mon,
$year, $wday, $yday, $isdst) = localtime(time);
$X = sprintf("%d年%d月%d日 %d時%d分%d秒",
 $year + 1900, $mon +1, $mday, $hour, $min, $sec);
print $X;

マサ さん 2005年 10月 16日 23時 27分 42秒

WSHで、現在の時刻を戻す関数ってあるんですか?
コマンドプロンプトでいうところの、date/tを行いたいんですが。。
できれば引数もご教授下さい。

ばんのしゃーによかばんた さん 2005年 10月 16日 15時 06分 46秒

>よしこ さん 2005年 10月 14日 15時 56分 28秒
>vbsで、あるファイルをコピー後、オリジナルのファイルを、ファイル名そのままに0バイトで残したいと考えています。
>batchなら簡単にできそうなんですが、vbsでは苦心しています。

VBScriptなら、
>oo さん 2005年 10月 14日 18時 31分 18秒
と同じことですが、
CreateObject("Scripting.FileSystemObject").CreateTextFile("testfile.txt", True)
でも可。

しかし、バッチはそう簡単に思い付かなかった。

最初に思い付いた、
ECHO. >filepath
だと、改行が入るので駄目。

標準出力が出ないものはないか?
FC >filepath
だと、エラーメッセージが標準エラーに出るのでOK。

それだったら、逆転の発想で、
ECHO 2>filepath
もOK。

一番素直なのは、
COPY /Y NUL filepath
かな。

ところで、

>mikinyan さん 2005年 08月 22日 18時 46分 14秒
>windowsに標準でついている「telnet」コマンドを使って、とあるサーバーに
>自動的にログインして、コマンドを発行するようなことって、可能でしょうか?

結局、これはどうされたんでしょうね?


ちゃっぴ さん 2005年 10月 15日 23時 00分 36秒

To みみ さん 2005年 10月 13日 13時 08分 46秒 &
  ばんのしゃーによかばんた さん 2005年 10月 15日 13時 48分 48秒

> 所謂、タイミングですね。このタイミング依存を避けるには、
> GUIのTaskSchedulerやCLIのschtasksを使います

今回の場合立ち上げる Application が MMC(GUI) のため
表示されないのでダメでしょう。

異なる認証情報を使用して
GUIのTaskSchedulerやCLIのschtasks
で扱えるのは、CUI の Application のみです。

MMC は RPC 使っているくせに面白いことに Windows File 共有の
認証情報を使っています。

つまり、事前に Network Drive をきるとか、File 共有の認証を
済ましておけば認証で問題になることはありません。

しかし、
> ただ、実現しなければいけない必然性も文面からはよくわからない。。

という Nomu さん の意見に全く同意見ですね。
GUIでやるなら、めんどくさがらずに手動で認証くらい何とかしましょう。

というか、共通の Account とか設定できないのですか?
# Domain を利用しないとしても・・・

ちゃっぴ さん 2005年 10月 15日 22時 45分 24秒

To ばんのしゃーによかばんた さん 2005年 10月 15日 13時 49分 12秒

> それが証拠に、10000くらいでは、「(応答なし)」になったExplorerが、
> よくお亡くなりになります。

亡くなります?

過去何回も「(応答なし)」にはなっていますが、
亡くなったことはないですね。

200,000 以上入っている Folder を表示したときも時間はかかりますが、
# 1時間近くかかったな〜
一応開けましたので・・・

> コマンドプロンプトでごみ箱を見ても、さっぱりですから。

これは確かにそのとおりですね。

管理人むたぐち さん 2005年 10月 15日 20時 09分 53秒

To: cube さん 2005年 10月 12日 01時 26分 24秒

> スクリプトにてファイルのタイムスタンプを保持したままUNIXからFTPでダウンロードしたいと思っていますが可能でしょうか?

sFtpURL = "ftp://localhost/home"
sFolder = "C:\"
sFile = "test.txt"

Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set Shell = WScript.CreateObject("Shell.Application")
Set oFTPFolder = Shell.NameSpace(sFtpURL)
Set oFolder = Shell.NameSpace(sFolder)

Set oItem1 = oFTPFolder.ParseName(sFile)
dModifyDate = oItem1.ModifyDate 'ここでうまく値が取れない
oFolder.CopyHere oItem1 'コピー

Do Until Fs.FileExists(Fs.BuildPath(sFolder, sFile))
     WScript.Sleep 100 'CopyHereが非同期なので完了を待つ
Loop

Set oItem2 = oFolder.ParseName(sFile)
oItem2.ModifyDate = dModifyDate 'よってこの操作は無駄

msgbox "done"

Shell.Applicationを使ってFTPフォルダとしてアクセス
することはできたのですが、残念ながら肝心のModifyDateが
正しい値を返しません。GetDetailsOfも駄目でした。
この方法は駄目ですね。

なお、

> ばんのしゃーによかばんた さん 2005年 01月 26日 18時 31分 47秒
>
> ※XP SP2ではFileSystemへのCopyHereは同期のようです。
> 2000までは同期。XPで非同期になったように思うのですが、SP2で戻ったのでしょうか。

とありますが、当方の環境ではSP2でも非同期でした。

ばんのしゃーによかばんた さん 2005年 10月 15日 13時 49分 12秒

>ばんのしゃーによかばんた さん 2005年 10月 07日 14時 38分 07秒
>ごみ箱にごみが溜まると、ごみ箱フォルダが異常に遅くなります。
>一覧するまで線形(一次式)で遅くなるのは、まだ理解できますが、
>一覧してからでも、ちょっとスクロールしただけで、すぐ「(応答なし)」
>になります。これはちょっと使い物にならない遅さです。
>これは性能設計ミス/性能障害です。

>ちゃっぴ さん 2005年 10月 08日 00時 07分 19秒
>これは、Explorer の仕様だというでしょうね。

これが「仕様」ということはないと思いいます。

それが証拠に、10000くらいでは、「(応答なし)」になったExplorerが、
よくお亡くなりになります。

スローダウンの結果、タイミング障害が露見したのではないか
と思います。


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

>みみ さん 2005年 10月 13日 13時 08分 46秒
>なんとか、以下のコードで実行できました。
>WScript.Sleep 250
>Sleepさせる時間は何の値に関係するものなのか分かりませんが・・。

所謂、タイミングですね。このタイミング依存を避けるには、
GUIのTaskSchedulerやCLIのschtasksを使います。これらは過去に
繰り返し話題になってますので、過去記事を見てください。

ところで、

>ばんのしゃーによかばんた さん 2005年 08月 01日 18時 20分 49秒
>>みみ さん 2005年 07月 30日 20時 33分 21秒
>>Do Until readList.AtEndOfStream = True

の件や、

>>みみ さん 2005年 07月 25日 19時 59分 11秒
>>「ファイルにアクセスできません。別のプロセスが使用中です。」
>>というエラーメッセージがコマンドプロンプトの画面に表示されるようになりました。
>の件はその後どうなりました?

は、どうなりました?


oo さん 2005年 10月 14日 18時 31分 18秒

>よしこさん

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("testfile.txt", 2)
f.Close

でいいのでは?

Return