管理人さま、はじめまして、これからもよろしくお願いします。
>できません(きっぱり(^^;)
>OE5.0になって、タイプライブラリが見られるようになったので、
>何とか使う方法がないかどうかいろいろ試してみたのですが、
>結局無理みたいです。
そうですか、がっかり・・・
メールの保存と削除をWSHでやりたかったんですが、できないとなれば
何か違う方法を考えてみます。
ありがとうございました。
To: 管理人むたぐち さん
>クラスID指定の方法はやはり動きませんでしたか?
一番最初にいそいそ試しましたがダメでした。
もっと簡単に出来ても言いと思うんだがなぁ
>スペシャル・ホルダへのリンク
ご挨拶が遅れましたが、
元々 perl 使いのaMIと申します。
perl 使いといっても、所詮ワタシは DOS/WIN 環境。
手軽にあちこちの環境で動かすというわけにもいきません。
それに、そもそも perl は unix 文化。
DOS/WIN や日本語環境ではいろいろ制約や問題があります。
一番好きでよく使うのは perl なんだけど、
最近 WIN 環境で WSH であれこれやり始めたとこです。
正規表現は使えるようになったし、
ハッシュ相当の機能も付いたし。
何よりも、WIN 環境では最も由緒正しいスクリプト処理系なので
WINマシンなら大抵どこでも動かせるし、
(少なくとも今なら)フロッピー1枚で最新バージョンに上げられる、
というのは perl と比べると非常に大きい魅力です。
というわけで、これからもよろしくお願いします。
To: aMI さん
> そこから右メニューコマンドの
> 「ショートカットの作成(%S)」をキックする、
> という方法を考えました。
なるほど。そういう手がありましたか。
クラスID指定の方法はやはり動きませんでしたか?
> ちなみに、プリンタの自動設定は
> SendKeyによる力技も試みたのですが
> どうもうまくタイミングが取れないことがあって
> 思うように動いてくれません。
SendKeysはやはり使いどころが難しいですね。
暴走が怖い(^^;
> レジストリの直接変更は
> 変更後にプロパティを開けても変わっておらず、
これがレジストリをWSHからいじくるときの、一番頭を悩ませる部分ですよね。
レジストリの変更というのは本来アプリがやるものなので、WSHから無理やり書き換えた場合、
その変更がうまく反映されないことが多々あります。とくに、エクスプローラやIEなど、
実行中に変更することになるので、そういうケースが発生しやすいです。
実行前にレジストリを変更してからアプリを立ち上げるという場合では有効なんですがね…。
To: HIRAO さん
> ただ、何度か実行するうちに「ファイルシステムのエラーです(1026)。」っていうエラーメッセージが出るときがあります。無視してもう一度実行すると今度は
> すんなり実行されます。
これ、なぜかよく発生するエラーですね。
WSHからShellオブジェクトを使うというのは、やはりイレギュラーなことなのかも
しれません。
> また、CopyHere、MoveHereのオプションにFOF_NOCONFIRMATIONを
> 指定しても上書きの確認ダイアログは表示されます。
私のところでは問題なく動作しますよ。
ちゃんと定数宣言はされていますか?
Const FOF_NOCONFIRMATION = &H10 のように。
To: st さん
> htmlのなかで、createobject関数を使用するとactivexオブジェクトは、
> 安全でない可能性があります、実行しますか?というメッセージがでますが、
> 警告メッセージを出ないようにする方法はありますか?
過去何回もこの掲示板で取り上げられた話題なので、ログを検索してみてください。
To: YASU さん
> Outlook ExpressはWSHで制御できるのでしょうか?
できません(きっぱり(^^;)
OE5.0になって、タイプライブラリが見られるようになったので、何とか使う方法が
ないかどうかいろいろ試してみたのですが、結局無理みたいです。
OE5.5はどうでしょう? もし制御できるなら、ちょっと乗り換えも考えるかも。
今はDatulaで快適に暮らしているんですが…。
> Outlook97等のOfficeにバンドルされているのは制御できる
> みたいなのですが・・・
そうですね。やはり売り物と無料配布なものとは違いますね。
# で、この仕組みが悪用されると、ウィルスになってしまうわけです(^^;
To: 斎藤泰 さん
> ところで質問というのが、VBではごく当たり前のコモンダイヤログボックスを使ってファイルパスを取ろうと思ったのですが、CreatOjectでComdlg32.ocxを指定してもうんともすんとも言わないし、IEの中のObjectタグの中のようにclassIDを指定する方法もわからんということで、何か特別な書き方があるのでしょうか。
別に特別な書き方ではありません。
Set Dlg = CreateObject("MscomDlg.CommonDialog")
(WScript.CreateObjectでも可)
でOKです。
ClassID指定の方法もあります。WSH2.0で追加された、WSFファイルを使えば出来ます。
詳しくは「WSH2.0の新機能」というページをご覧ください。<object>要素です。
ただし、WSHからコモンダイアログコントロールを使えるのは、VBがインストールされている環境
だけです。
はじめまして。
Webサーバーのメンテナンスで他の人のテキストファイルを掲示する際に、半角カタカナやらいろいろ修正を必要とするテキストファイルの処理で、最近、WSHを使い始めました。この手の簡単なものはVBでアプリを作るよりもWSHの方が手っ取り早いとつくづく思います。
ところで質問というのが、VBではごく当たり前のコモンダイヤログボックスを使ってファイルパスを取ろうと思ったのですが、CreatOjectでComdlg32.ocxを指定してもうんともすんとも言わないし、IEの中のObjectタグの中のようにclassIDを指定する方法もわからんということで、何か特別な書き方があるのでしょうか。
ご教授いただけると助かります。
皆さん、はじめまして。
YASUといいます。これからもよろしくお願いします。
早速の質問です。
Outlook ExpressはWSHで制御できるのでしょうか?
Outlook97等のOfficeにバンドルされているのは制御できる
みたいなのですが・・・
どなたか、ご教授願います。
回答ありがとうございます。
CSVファイルの読み込みは出来ました。
NT4.0上でWINDOWSを終了させるスクリプトはご指摘の通りRUNDLL32.EXEを使用します。動かないかもということですが、一度試してみて又検討したいと思います。
htmlのなかで、createobject関数を使用するとactivexオブジェクトは、
安全でない可能性があります、実行しますか?というメッセージがでますが、
警告メッセージを出ないようにする方法はありますか?
htmlのなかで、createobject関数を使用するとactivexオブジェクトは、
安全でない可能性があります、実行しますか?という勵尚灼がでますが、
警告勵尚灼を出ないようにする方法はありますか?
htmlのなかで、createobject関数を使用するとactivexオブジェクトは、
安全でない可能性があります、実行しますか?という勵尚灼がでますが、
警告勵尚灼を出ないようにする方法はありますか?
管理人むたぐち さん、コメントありがとうございます。
教えていただいた方法でうまくいきました。
ただ、何度か実行するうちに「ファイルシステムのエラーです(1026)。」っていうエラーメッセージが出るときがあります。無視してもう一度実行すると今度は
すんなり実行されます。
また、CopyHere、MoveHereのオプションにFOF_NOCONFIRMATIONを
指定しても上書きの確認ダイアログは表示されます。
皆さんのところはどうでしょうか?
環境は
NT4.0 WorkSation+SP6+IE5(5.00.2314.1003) です
早速のご回答ありがとうございます。
>> 「デスクトップに、確認付きで」なら
>> どうにかできるようになったのですが。
>
>ん、そっちのやり方の方が気になりますね(^^;
>教えていただけませんか?
ここの情報を参考に
マイ・コンピュータを開いて
フォルダ・オブジェクトを取得し、
そこから右メニューコマンドの
「ショートカットの作成(%S)」をキックする、
という方法を考えました。
ちなみに、プリンタの自動設定は
SendKeyによる力技も試みたのですが
どうもうまくタイミングが取れないことがあって
思うように動いてくれません。
レジストリの直接変更は
変更後にプロパティを開けても変わっておらず、
再起動しないといけないのかなぁ、と
思ったところろで止まってます。
まだちゃんと確認してません。
明日もあれこれ試してみます、はい。
To: deacon blue さん
> 任意のアプリケーションのみを登録してメニュー画面に表示できるように
> CSV形式のテキストファイルから読み書きしたいのです。
> そういう事は可能でしょうか?
できます。FileSystemObjectで、csvファイルをTextStreamとして開けばOKでしょう。
IE4以上がインストールされている環境なら、Tabular Data Control が使えると思います。
詳しくは、過去記事リスト18の38番目の記事(2000/07/27 08:02)をどうぞ。
# たぶんWSHからも使えると思うんですが…。ProgIDはなんだろう?
> それからWINDOWS終了のスクリプトはNT4.0でも有効なのでしょうか?
って、どのスクリプトのことでしょうか?
RUNDLL32.EXE を使うやつは、動かないかもしれませんね。
WMIを使えば可能ですが、NT4.0には追加インストールする必要がありますし…。
To: aMI さん
> プリンタを自動的に登録したり
> プリンタのプロパティを自動設定したりというのは
> どうにかしてできないもんでしょうか?
レジストリをいじることで可能かもしれません。
過去記事リスト16の14番目の記事(2000/06/23 16:56)で、motoさんが似たようなことを
されていました。
> あと、任意の場所に
> コンパネやプリンタへのショートカットを張る事は
> できないでしょうか?
WshShortcutオブジェクトのTargetPathプロパティに、コンパネやプリンタの
クラスIDを指定してやればOKです。
たとえば、コンパネの場合
Set WshShell = WScript.CreateObject("WScript.Shell")
Set oLink=WshShell.CreateShortcut ("D:\conpane.lnk")
oLink.TargetPath="::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}"
oLink.Save
あれ、Win98では動かないですね…。
Win2000のみ?
> 「デスクトップに、確認付きで」なら
> どうにかできるようになったのですが。
ん、そっちのやり方の方が気になりますね(^^;
教えていただけませんか?
はじめまして。
先日ここを発見して、あれこれ勉強させていただいてます。
さて、自分でもいろいろ調べてはいるのですが、
プリンタを自動的に登録したり
プリンタのプロパティを自動設定したりというのは
どうにかしてできないもんでしょうか?
あと、任意の場所に
コンパネやプリンタへのショートカットを張る事は
できないでしょうか?
「デスクトップに、確認付きで」なら
どうにかできるようになったのですが。
初めて投稿します。
現在WSHを使ってWEB版ランチャーを作成中ですが、
任意のアプリケーションのみを登録してメニュー画面に表示できるように
CSV形式のテキストファイルから読み書きしたいのです。
そういう事は可能でしょうか?
それからWINDOWS終了のスクリプトはNT4.0でも有効なのでしょうか?
どなたかご存知の方がいたら教えてください。
よろしくお願いします。
To: liki さん
> NGで御教示いただいlikiです。
どうも。こんにちは。
> こちらで勉強させて頂いております。
う…。ニュースでのフォローと、うちのサイトの内容はあまり関係がなかったりします(^^;
NGで御教示いただいlikiです。有難う御座いました。こちらで勉強させて頂いております。難しいのですがちょっとずつ進みたいと思います。宜しくお願いします。
○「アプリケーションの追加と削除」最終?報告
Win2000のアプリケーションの追加と削除は、HTAだということはすでに書きましたが、
このappwiz.cplの正体が大体つかめたのでご報告。
じつは、appwiz.cplは、コンパネにアイコンを表示させ、コンパネから実行すると
中身のHTAをmshta.exeに渡す機能 + 表示に使う画像? + 実際の処理を記述したHTA
+ HTAから利用する、アプリのインストール情報を制御するCOMコンポーネント
という構造になっています。
COMコンポーネントがいっしょになっているところがミソで、
appwiz.cplをオブジェクトブラウザで参照設定すると、ちゃんとオブジェクトモデルを
調べることができます。
これを利用して、オリジナルの「アプリケーションの追加と削除」が作れるかもしれません。
appwiz.cpl内のHTAは、DHTMLビヘイビアなど、注目すべき技術が使われているので
一度じっくり読んでみるのもいいと思います。
なお、以前書いた、「アプリケーションの追加と削除」のエラーですが、やはりIE5.5
が犯人だったようです。どうもmshta.exeのバージョンの違いが原因らしいです。
IE5.5を再インストールすると治るそうです。
○ちょっとしたスクリプト
ニュース・MLに公開したスクリプト2点。
GetRef関数を堪能できます。
'その壱。マウスを置いた部分のタグ名をステータスバーに表示。
Set Ie = WScript.CreateObject("InternetExplorer.Application","IE_")
IE.Visible=True
IE.GoHome
Do : WScript.Sleep 100 : Loop
Sub IE_OnQuit()
WScript.Quit
End Sub
Sub IE_DocumentComplete(ByVal pDisp, URL)
Set IE.document.onmouseover = GetRef("document_onmouseover")
End Sub
'その弐。リンク先を常に新しいウィンドウで開く。
Set IE=WScript.CreateObject("InternetExplorer.Application","IE_")
Set WshShell = WScript.CreateObject("WScript.Shell")
IE.Visible = True
If WScript.Arguments.Count=1 Then
IE.Navigate WScript.Arguments(0)
Else
IE.GoHome
End If
Do : WScript.Sleep 100 : Loop
Sub IE_OnQuit()
WScript.Quit
End Sub
Sub IE_DocumentComplete(ByVal pDisp, URL)
Set IE.document.onclick = GetRef("document_onclick")
End Sub
Sub document_onclick()
Set oEvent=IE.document.Parentwindow.event
If oEvent.srcElement.tagName="A" Then
oEvent.ReturnValue = False
WshShell.Run WScript.ScriptFullName & " " & oEvent.srcElement.href
End If
End Sub
To: HIRAO さん
> 上のコードでコピーはうまくいくのですが、コピー中だよってメッセージを表示したいのです。
> なんにも表示されないとあまりにも寂しいので...
FileSystemObjectをやめて、Shellオブジェクトを使うという手が有効です。
過去記事リスト12の13番目の私の記事(2000/04/16 03:39)が参考になると思います。
「オブジェクトの解説」なども参考にしてみてください。
To: hata さん
> IEのバージョンが5でなく、4.0や4.01の場合は最新のWSHがインストール
> されておらず、FileSystemObjextがきちんと使えないような事を聞いたのですが
> 本当なのでしょうか?(OSはWin98)
それは半分は正しいと思いますね。
たしかに、IE4.0、IE4.01(Win98)、IE5.0までに同梱されているWSHのバージョンは1.0ですが、
IE5.01(Win2000)、IE5.5に同梱されているものは2.0です。
ただそれとは別に、IE4.01(Win98)からIE5.0のバージョンアップで、VBSがver 5に
なるとともにFileSystemObjectに、ごくわずかな機能追加がされます。
# GetFileVersionメソッドです。
さらに、これは確証が持てないのですが、FilesコレクションのCountプロパティが
正常に取得できないバグがあったような気がしたんですが、これが直ったような
気がします(あいまい。勘違いの可能性大)。
# 最新版でも、ドライブの容量が2GBまでしか認識できないという制限はそのままですが(^^;
まあ、なんにせよ、最新版のWSHというのは単体でDLできるので、別にIEのバージョンは
それほど重要ではないともいえます。
IEのバージョンが5でなく、4.0や4.01の場合は最新のWSHがインストール
されておらず、FileSystemObjextがきちんと使えないような事を聞いたのですが
本当なのでしょうか?(OSはWin98)
IE4.0の環境が無くてテストできないので、困っています。
どなたかご存知の方がいましたらお教え下さい。
初めまして、HIRAOと申します。
ファイルをコピーするスクリプトを書いていまして、教えていただきたいことが
あります。
Set objFS = WScript.CreateObject("Scripting.FileSystemObject")
objFS.CopyFile "G:\LZH\ABC.ZIP","A:\"
上のコードでコピーはうまくいくのですが、コピー中だよってメッセージを表示したいのです。
なんにも表示されないとあまりにも寂しいので...
なにかいい方法はないでしょうか?
To: kobahide さん
まあ、もう見てらっしゃらないでしょうけど…。
> ドキュメントでの仕様説明と実際の機能の実装とは、まったく異なる
> 場合が多いと思いますが?
そうですか?
第三者に使ってもらうことを目的として作成されたCOMコンポーネントの場合、
仕様説明にない機能を実装して、はたして意味があるんでしょうか…。
> 機能の実装や、出来といったことは、インストールして評価(試用)してみなければわからないはずですが?
では、「中途半端」というのは、仕様という点での評価ではなく、機能の実装や出来の
ことだったのですね。
私はてっきり、中途半端な仕様だという感想を述べられたのかと思っていたのです。
> この掲示板はあなたの著作物以外の話題をしてはいけないのですね。
そんなこと言ってませんよ。
作者のページがわかっていて、作者と連絡が取れるなら、まずその作者に聞くのが筋だし、
確実でしょう。(もちろん、今回の場合はちゃんと作者のページに補足説明がありましたし、
作者さんが答えてくれるかどうかはわかりませんけど)
> ということは、もちろん、WSH の話も厳禁ですよね?
ここは、WSHやスクリプトの話題を取り扱うために開設した掲示板です。
to 管理人むたぐち さん
>でも、その仕様はヘルプを見ればわかるので、別にインストールしなくても評価できます。
ドキュメントでの仕様説明と実際の機能の実装とは、まったく異なる
場合が多いと思いますが?
>だから、なんでkobahideさん曰く「中途半端」なものをわざわざインストールしたのかわからないなあ、という意味です。
機能の実装や、出来といったことは、インストールして評価(試用)してみなければわからないはずですが? って、なんでこんなことをうだうだ掲示板に
かかなきゃならないのか、それが一番わからないですね。。
>まあそれはともかく、ソフトの作者ではなく私のところで質問するというのはなん>だかなあ、という気がしないでもないです。
この掲示板はあなたの著作物以外の話題をしてはいけないのですね。
ということは、もちろん、WSH の話も厳禁ですよね?
さようなら。
To: kobahide さん
> インストールすることと、使うことは、イコールなのですか?
コンポーネントは、インストールしないと使えないです。
でも、その仕様はヘルプを見ればわかるので、別にインストールしなくても評価できます。
だから、なんでkobahideさん曰く「中途半端」なものをわざわざインストールしたのか
わからないなあ、という意味です。
まあそれはともかく、ソフトの作者ではなく私のところで質問するというのはなんだかなあ、
という気がしないでもないです。
# COMコンポーネントの場合、レジストリに登録されるのが嫌なのと、基本機能だけで
# やりくりするのが好きなので、私は紹介はするものの、自分では使いません(^^;
> シェアウェアの考え方って知りませんか?
あれはフリーソフトです。
まあ、ここで言うシェアウェアの考え方っていうのは、試用できることだと
おっしゃいたいのはわかります。
ここは一つ、フリーソフトの理念にしたがって、作者さんに、どこが中途半端に感じたか、
レポートなさっては如何ですか?
> はい。そうです。だから、hta は、windowstate="minimize" と記述しておきます。
あ、なるほど。最小化表示から元に戻るときのアニメーションは気にしないってことですね。
to 管理人むたぐち さん
>じゃあ、なんでインストールしたんですか(^^;
インストールすることと、使うことは、イコールなのですか?
シェアウェアの考え方って知りませんか?
>1.の段階で非表示で実行させない限り(それはWSH等で外部から立ち上げるしか方法がない、はず)、
はい。そうです。だから、hta は、windowstate="minimize" と記述しておきます。
>付け加えておくと、HTAを自己呼び出し(これは、エクスプローラから再実行しても
同じですが)したときには、onloadイベントは発生しません。
確かにonload イベントはfire されませんが、記述されているscript は実行されますので、まったく問題ありません。
hta のみで動作する起動時のサイズ指定のscript はすでに作成すみです。
昨日の朝につくったばっかりなので、人に見せられるコードでないので、
ごめんなさいですが、singleinstance="no" でもちゃんと動作するので、
まーまーの出来です。
To: kobahide さん
> っていうか、ある程度知識のある人は、こんな中途半端なコンポーネント
> を使いません。ま、どうでもいいけど。
じゃあ、なんでインストールしたんですか(^^;
> >最初に起動するHTAを、非表示で立ち上げるようにする方法があれば、の話ですが。
> >これだけは、WSHを使わないとどうにもならないと思うのですが…。
> だから・・・・hta の中でcreateobject("wscript.shell")
> するっていうことなんですけどね>自己呼び出し
1.hoge.htaを立ち上げる
2.HTA内でWshShell.Run "hoge.hta",0 実行(自己呼び出し)
3.HTA内でwidthなどのパラメータを読み込んでresizeToする
っていうことですか?
# ごめんなさい。はっきり言って、よく意味がわかりません…。
1.の段階で非表示で実行させない限り(それはWSH等で外部から立ち上げるしか方法が
ない、はず)、resizeToするときに、一瞬デフォルトのサイズで表示されてしまうという
現象は回避できないと思うのですが。
付け加えておくと、HTAを自己呼び出し(これは、エクスプローラから再実行しても
同じですが)したときには、onloadイベントは発生しません。
# だから、自己呼び出しする意味もよくわからないんです…。
管理人むたぐち さん
>どうでもいいですけど、なんかすさまじいアンインストール方法ですね(^^;
>インストールも、regsvr32の使い方がわかっていないと無理ですしね。
>スクリプトをある程度使いこなしている人向けみたいで
っていうか、ある程度知識のある人は、こんな中途半端なコンポーネント
を使いません。ま、どうでもいいけど。
>最初に起動するHTAを、非表示で立ち上げるようにする方法があれば、の話ですが。
>これだけは、WSHを使わないとどうにもならないと思うのですが…。
だから・・・・hta の中でcreateobject("wscript.shell")
するっていうことなんですけどね>自己呼び出し
ま、hta の実行環境でも、wsh をアンインストールしている環境も
あるかもしれないので、wsh を使えない環境はありえますけど。。
To: D さん
> regsvr32 を使った削除ですよね?
>
> 以前、作者さんに聞いたことがあります
> 「直接レジストリを削除してください」ということでした
どうでもいいですけど、なんかすさまじいアンインストール方法ですね(^^;
インストールも、regsvr32の使い方がわかっていないと無理ですしね。
スクリプトをある程度使いこなしている人向けみたいです。
To: kobahide さん
> wsh から、run("foo.hta",0) で起動して、
> hta の中で、self.resizeto(300,400) することで、
> 希望の動作をしませんか?
ええ、それはAKiOSさんの方法ですね。
> これを拡張して、hta から自己呼び出し。
最初に起動するHTAを、非表示で立ち上げるようにする方法があれば、の話ですが。
これだけは、WSHを使わないとどうにもならないと思うのですが…。
To: AKiOS さん
> Win2000は持っていません。(^^;
あれ、そうなんですか。
hta:applicationで検索をかけると、もう一つファイルが引っかかってきました。
たしか、IEの接続ウィザードかなんかのexeファイルだったと思います。
> わかりました。少し後回しになってしまいますが、なんとか実装したいと思います。
よろしくお願いします。楽しみに待ってます。
> そうなんですよね。私もそれで迷っていたのですが、
> あとで手直しするのは面倒なのでプレフィックスなしでいきます。
ところで、本当にwidth属性とかは追加されるんでしょうかねえ。
とっくに実装されていてもいいはずの機能なだけに、ちょっと気になります。
「アプリケーションの追加と削除」でも何らかの方法でこれを回避している
ようなので、別に実装しなくても…という考えなのかもしれません。
To: 管理人むたぐち さん
> Win2000で次のコマンドを実行してみてください。
Win2000は持っていません。(^^;
> これで、http://...がクリッカブルになれば完璧! (って、まだ言うか、おい(爆))
> もしよろしければ、これを実装していただけないでしょうか。何度もすみません。
わかりました。少し後回しになってしまいますが、なんとか実装したいと思います。
> > ところで、独自に追加したプロパティですが、標準のものと区別できる
> > ようプレフィックスを付けようと思いますが、いかがでしょう?
>
> 独自拡張ですからね。つけておいた方がいいのかもしれません。
> でも、本家の方で今後これらの属性が追加される可能性もあるので、
> その場合、同じ属性があるとスクリプトの手直しが必要なくなったりしてかえっていいかも…。
そうなんですよね。私もそれで迷っていたのですが、
あとで手直しするのは面倒なのでプレフィックスなしでいきます。
> > 今のところ追加したプロパティはwidthとheightだけなんですが、
> > 画面中央に表示するposition="screencenter"も追加する予定です。
>
> ついでにleftとtopも定義しては如何ですか?
ついでに追加しときます。(^^;
こんばんは。
to Dさん
情報ありがとうございました。(感謝)
and to all...
hta の起動時のwindow size の件ですが・・・
wsh から、run("foo.hta",0) で起動して、
hta の中で、self.resizeto(300,400) することで、
希望の動作をしませんか?
これを拡張して、hta から自己呼び出し。
そのとき、hta タグ部分をfile read して、
近い将来定義されるだろうと思われるwidth ,height パラメーター
を読み込めば、hta だけで完結すると思いますが?
>むたぐちさん
お返事有り難うございます。
今回の書き込みには省いてましたがappactivate使用してます。
>具体的な方法は、過去記事リスト10の28番目(2000/03/12 01:05)の記事をどうぞ。
過去ログにありましたか、見落としてました。
お手数かけてすみません、これから勉強しますね。
はじめまして
To: kobahide さん
> SeraphyScriptDialog ですが・・・
regsvr32 を使った削除ですよね?
以前、作者さんに聞いたことがあります
「直接レジストリを削除してください」ということでした
現在はそのページの「その他の情報」に注意書きがあります
To: AKiOS さん
> ところがresizeTo()だけで表示できます。
> リサイズ=新しいサイズで再表示、ということだと思いますよ。
あ、そうなんですか。確かめもせず憶測でものを言ってはいけませんね(^^;
しかし、少し気になる点が…。
Win2000で次のコマンドを実行してみてください。
mshta res://appwiz.cpl/default.hta
…ピコってならないですよね?
いったいどういうカラクリが!?
> OKですが、当分先になると思いますので、
> とりあえずテスト版を記事検索HTA(インデントに対応しました!)に
> 添付するつもりです。
を、お試し版バンドルですね。
インデント対応、ありがとうございました。これでコードも見やすくなるんじゃないかと
思います。
これで、http://...がクリッカブルになれば完璧! (って、まだ言うか、おい(爆))
もしよろしければ、これを実装していただけないでしょうか。何度もすみません。
この機能、本来なら掲示板に最初から入っていてもいいものなんですけど(^^;
> ところで、独自に追加したプロパティですが、標準のものと区別できる
> ようプレフィックスを付けようと思いますが、いかがでしょう?
独自拡張ですからね。つけておいた方がいいのかもしれません。
でも、本家の方で今後これらの属性が追加される可能性もあるので、
その場合、同じ属性があるとスクリプトの手直しが必要なくなったりしてかえっていいかも…。
> 今のところ追加したプロパティはwidthとheightだけなんですが、
> 画面中央に表示するposition="screencenter"も追加する予定です。
ついでにleftとtopも定義しては如何ですか?
> 利用だけでなく継承もできるそうです。
このへん、例のページを読んでもよくわからなかったので、ありがたいです(^^;
To: kobahide さん
> SeraphyScriptDialog ですが・・・
私はインストールはしていない(DLしただけ)のでよくわかりません。
> IE5 からですよね??
そうだと思います。
To: きむち さん
> 最初のmake123というソフトが既に起動状態にある場合というのは
> どう取得すれば良いのでしょう?
そのmake123というソフトは、タイトルバーがついたウィンドウを表示しますか?
その場合、AppActivateメソッドを裏技的に使えばうまくいくかもしれません。
具体的な方法は、過去記事リスト10の28番目(2000/03/12 01:05)の記事をどうぞ。
こんにちは、一つ質問させて頂いても良いですか?
ソフトを2つ起動させるスクリプトを作成してるのですが
最初のmake123というソフトが既に起動状態にある場合というのは
どう取得すれば良いのでしょう?
現状では複数起動してしまうため、対処方法を考えていたのですが
わかりませんでした。
call make123
sub make123()
Set Make123 = WScript.CreateObject("WScript.Shell")
if Make123 =??? then
call Datalog
else
Make123.Run "C:\SPEKTRA\Make123.EXE",2
end if
end sub
sub Datalog()
Set Datalog = WScript.CreateObject("WScript.Shell")
Datalog.Run "C:\SPEKTRA\DATALOG.EXE"
end sub
SeraphyScriptDialog ですが・・・
1.レジストリー登録解除に失敗しませんか?
2.help の中にIE4.0sp1 でHTA が動作するようなことを
書いてますけど、IE5 からですよね??
IE4 でHTA が動作しないのは、私のPCの環境が壊れてる(TT)
せいじゃないですよね??
To: 管理人むたぐち さん
> 非表示モードでRun()メソッドを実行、というのは
> WshShell.Run "hoge.hta",0
> ということですよね?
そうですね。
> hoge.htaのonloadイベントでwindow.resizeTo()しても、
> やっぱりウィンドウは見えないままなんじゃないでしょうか?
ところがresizeTo()だけで表示できます。
リサイズ=新しいサイズで再表示、ということだと思いますよ。
> 公開の暁には、リンクを張らせていただけますか?
OKですが、当分先になると思いますので、
とりあえずテスト版を記事検索HTA(インデントに対応しました!)に
添付するつもりです。
ところで、独自に追加したプロパティですが、標準のものと区別できる
ようプレフィックスを付けようと思いますが、いかがでしょう?
# たとえば、_widthのようにアンダースコア(_)を付けるとか。
今のところ追加したプロパティはwidthとheightだけなんですが、
画面中央に表示するposition="screencenter"も追加する予定です。
> JScript.NETのサンプルコードがあったのですが、スクリプト言語のはずなのに、
> 型宣言の機能が追加されています。
> また、.NETフレームワーク(これが何か不明ですが)のクラスを利用できるように仕様が
> 拡張されています。
利用だけでなく継承もできるそうです。
.NETフレームワークとはクラスライブラリとランタイム環境のセット
(ようするにJavaのようなもの)のことで、ふつーのアプリ用と
Webアプリ用の2つが用意されているみたいです。
で、CLR(Common Language Runtime)というJavaバーチャルマシンに
あたるランタイム上で、Java以外の複数の言語(C#,C++,VB,JScript,
Pascal,Smalltalk,Perl,Eiffel,COBOL等)がサポートされるそうです。
このCLR上で動く言語はすべて一度中間言語に変換されてから実行され
るのですが、あらかじめコンパイルしておくことも可能だそうです。
To: SHELLPA さん
> UWSC(スクリプトによりアプリの操作ができるフリーソフト)が
> COMオブジェクトにも対応したようです
> WSH的な使い方もできて色々できます
WSHの強力なライバル現る! ってところでしょうか(^^;
このソフト、基本的にマウスやキーボードの動きを記録して
再生するものですが、こういう真似はWSHにはできないですからね。
これにCOMオブジェクトを扱う機能が加われば、強力になるのは容易に想像できます。
だいたい、WSHは、アナログ的な処理ができなさすぎです。
SendKeysだけで何とかしろってか?
To: Lib30 さん
SeraphyScriptDialogをダウンロードしてみました。
マウスポインタを砂時計にする機能なんてのもありますね。
DoEventsって、WScript.Sleepで代用できません?
はじめまして
UWSC(スクリプトによりアプリの操作ができるフリーソフト)が
COMオブジェクトにも対応したようです
WSH的な使い方もできて色々できます
お試しあれ
http://www07.u-page.so-net.ne.jp/ca2/umiumi/
うーん。.NETって何なんでしょう。
Windows.NETは、どうも新しいOSのようですが。
http://www.microsoft.com/JAPAN/presspass/RELEASES/062300ngwa.htm
こんなページがあったんですが、読んでも抽象的過ぎてようわかりません。
また、http://msdn.microsoft.com/voices/scripting07142000.aspを斜め読みしたところ
によると、けっこう衝撃的なことが書かれていました。
VBScriptとVBが一本化されて、Visual Basic.NETというものになるそうです。
VBのさまざまな機能が、スクリプトから利用できるようになるそうです。
でも、最初はASP+で使うのがメインになるということらしいです。
IEやWSHへの実装は後で、ってことでしょう。
(なんか読み違えてますか?)
JScript.NETのサンプルコードがあったのですが、スクリプト言語のはずなのに、
型宣言の機能が追加されています。
また、.NETフレームワーク(これが何か不明ですが)のクラスを利用できるように仕様が
拡張されています。
こういう、具体的なことを挙げてもらえると、何となくわかるような気もします。
なんかよくわからないですが、スクリプト界に革命的な出来事が起こるということだけは
確かなようです。
To: 西 さん
> hta内にいろいろ表示させていろいろしたのですが、デスクトップだけは
> 表示できません
デスクトップのクラスIDって、私も知らないんですよね…。
デスクトップをエクスプローラで表示させる方法はいくつかあり、「WSHテクニック集」の
ページで紹介していますが…。
To: Lib30 さん
> http://members.tripod.co.jp/archangel_seraphy/
> で、SeraphyScriptDialogというコントロールを見つけました。
情報提供、ありがとうございます。
このページ、なぜか私のところから見ることは出来ませんでした。
> 日本語フォームの作成やコモンダイアログが使用できるようになります。
> 個人的に使えると思ったのは、フォルダの表示ダイアログと、スクリプト内で
> DoEventsが使用できることです。
日本語がとおるという点が貴重ですね。
また今度確認しておきます。
みなさん、こんにちは ;)
AKiOS さんへ
>>> AKiOS さんのこれってどこにあるのでしょう?
>>私のハードディスクの中にあります。(^^;
まだ作成中でしたか、早とちりでした
どうやってるのか知りたかったので
完成したのを見たかったもので...
PS.
そういえば大昔のMicrosoft系BASIC でも 偽は -1 でした
N-BASIC とか...
http://members.tripod.co.jp/archangel_seraphy/
で、SeraphyScriptDialogというコントロールを見つけました。
日本語フォームの作成やコモンダイアログが使用できるようになります。
個人的に使えると思ったのは、フォルダの表示ダイアログと、スクリプト内で
DoEventsが使用できることです。
hta内にいろいろ表示させていろいろしたのですが、デスクトップだけは
表示できません_燭ij,呂△蠅泙擦鵑@
みなさん、Windows.NETってご存知ですか?
よく聞くフレーズなんですけど、意味がわかりません(^^;
どこかに、噛んで含めるような解説がされているページはないでしょうか。
実は、ニュースグループでちょっと気になる記事を見かけたのです。
Subject: Download the .Net SDK today! Including the JSCript, VB, and C# command-line compilers.
サブジェクトだけ見てもなかなか刺激的でしょ?
MSがスクリプト言語のコンパイラを含んだ.NETのSDKを配布する、ということみたいですね。
↓β版がダウンロードできるらしい。Win2000+IIS+IE5.5が必要? 86MBもある?
http://msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?url=/msdn-files/027/000/976/msdncompositedoc.xml
↓JScript.NETの概要があるらしい
http://msdn.microsoft.com/voices/scripting.asp
To: Gori さん & AKiOS さん
どうも詳しい解説ありがとうございます。
結局、私の無知から来る妄想でした。お恥ずかしい限りです…(^^;
> -1 = 11111111 (2)
> こう表現され、このせいで Not 0 = -1 (= True) となります。
> Not 0とは0をビット反転するということなので-1になるんですよ。(^^;
感覚とか言っていた私は何なんでしょう(爆)
> つまり&hFF、すなわちビットがすべて1であれば-1とすることができます。
(^^;
それならなんで&hFFが-1なんでしょう。感覚的に納得できないなあ、とか言うところでした。
To: AKiOS さん
> WSHからであれば、非表示モードでRun()メソッドを実行して、
> htaのonloadイベントでwindow.resizeTo()すれば同じように
> できますが、すべてのhtaで記述しなければなりません。
非表示モードでRun()メソッドを実行、というのは
WshShell.Run "hoge.hta",0
ということですよね?
hoge.htaのonloadイベントでwindow.resizeTo()しても、
やっぱりウィンドウは見えないままなんじゃないでしょうか?
あ、そうか。シングルインスタンスであれば、このあとWshShell.Run "hoge.hta",1
を実行すればいいわけですね。この方法は、マルチインスタンスには適用できないと
いうことになりますね。
To: Makoto さん
> みんささん、こんにちは
誰だろうとしばし考えてしまいましたよ(^^;
# 私もよくtypoします。
> AKiOS さんのこれってどこにあるのでしょう?
公開の暁には、リンクを張らせていただけますか?
もしくは、私のところでアップロードされます? > AKiOSさん
AKiOS さん、Gori さん
> おじさまさんの言うC言語での例というのは、int = unsigned int と決められ
>ていたC言語を使っていた、と考えるのが自然ですね。表示の際に1へキャストさ
>れてしまったのでしょう。
いえ、単に私の無知と勘違いです(^^;)。int は特に指定しなければ signed でし
たし、ちゃんと -1 だったのに理解していなかっただけでしょう。なるほど、全部
のビットが 0 で、NOT なんだからそれらを全部反転させれば符号ビットも 1 にな
って負ですね。これなら処理系によっての違いは通常あるわけないですね。
お恥ずかしい。
To: Gori さん
> おじさまさんの言うC言語での例というのは、int = unsigned int と決められていたC言語を使っていた、と考えるのが自然ですね。表示の際に1へキャストされてしまったのでしょう。
C/C++では !0 はふつー、1 になるんじゃないでしょうか。
# jscriptのドキュメントにも 0 以外は 1 になると書かれていますが
# 実際に試すと -1 になります。(^^;
つまり、C/C++の論理否定演算子(!)とビット反転演算子(~)が
VB系の言語ではNot演算子1つでまかなっているため、
True = Not Falseで定義すると-1になってしまうんですよね。
To: Makoto さん
> >>BC++でちょっとした小物を作りました。
> >><hta:application>タグにwidthとheightプロパティが
> >>設定されているとそのサイズで表示するというものです。
> >>onloadイベントでwindow.resizeTo()するとリサイズしたのが
> >>一瞬見えてしまいますが、これがなくなります。(^o^)
>
> AKiOS さんのこれってどこにあるのでしょう?
私のハードディスクの中にあります。(^^;
まだ、完成したわけではなくて、マルチインスタンスに対応している
ところです。
みんささん、こんにちは
>>BC++でちょっとした小物を作りました。
>><hta:application>タグにwidthとheightプロパティが
>>設定されているとそのサイズで表示するというものです。
>>onloadイベントでwindow.resizeTo()するとリサイズしたのが
>>一瞬見えてしまいますが、これがなくなります。(^o^)
AKiOS さんのこれってどこにあるのでしょう?
To: 管理人むたぐち さん
> > Not 0は-1だから、ですね。
>
> ですから、なんでNot 0 が -1 なのかな、という話をしていたんですよ(^^;
> Not 0 = 1 のほうが、感覚的に納得できます。
ですから、Not 0とは0をビット反転するということなので-1になるんですよ。(^^;
# VBSの整数型は-32768から32767まで扱えるということですから、
# 16ビット(16進数4桁)なので0をビット反転した&hFFFFが-1ということです。
たとえば、8ビット(16進数2桁)の場合で考えた場合、&hFFに1を加えると
&h100になって桁あふれしてしまいますが、それを無視すると&h00ということで
&hFFは0より1だけ小さい数と考えることができます。
つまり&hFF、すなわちビットがすべて1であれば-1とすることができます。
同様に&hFEは-2、&hFDは-3としていくと&h80から&hFFまでが負の数になります。
これを2進数でみた場合、負の数は必ず最上位ビットが1になっていて、
逆に、0または正の数では最上位ビットが0になっています。
この最上位ビットをみることにより正の数か、負の数か判別できることから
符号ビットと呼ばれ、コンピュータにおける数値表現で、負の数を含めた整数
を表現するのにこの符号付き2進数がよく使われています。
> > BC++でちょっとした小物を作りました。
> > <hta:application>タグにwidthとheightプロパティが
> > 設定されているとそのサイズで表示するというものです。
> > onloadイベントでwindow.resizeTo()するとリサイズしたのが
> > 一瞬見えてしまいますが、これがなくなります。(^o^)
>
> これ、どういう仕組みで動いているんでしょうか。
> 興味があります。
非常に単純です。
WSHからであれば、非表示モードでRun()メソッドを実行して、
htaのonloadイベントでwindow.resizeTo()すれば同じように
できますが、すべてのhtaで記述しなければなりません。
今回作った.exe版では.htaに関連付けされているopenアクションを
非表示モードで実行して、あらかじめ読み込んだwidthとheightで
ウィンドウのサイズを再設定して、表示させているだけです。
おひさしぶりです。
VBの歴史というか、あらゆる言語で同じ処理をしてます。アセンブラレベルの内部処理上の都合で・・・
すべての変数は内部的に2進数なんです。8ビットの場合、2進数では
1 = 00000001 (2)
0 = 00000000 (2)
-1 = 11111111 (2)
こう表現され、このせいで Not 0 = -1 (= True) となります。
おじさまさんの言うC言語での例というのは、int = unsigned int と決められていたC言語を使っていた、と考えるのが自然ですね。表示の際に1へキャストされてしまったのでしょう。
こういう処理系ではまれに True が 65535 とかを返す場合もあります。でも、内部的には結局 11111111 (2) を持っているにすぎません。
前に書いた、「アプリケーションの追加と削除」HTAのソースを見る方法がわかりました。
HKey_Classes_Root\.htaキーの"Content Type"を"application/hta"から"text/html"に
しておくだけ。あとは、普通にres://appwiz.cpl/default.htaをブラウザで開くだけです。
このソースを見てわかったことは、hta:application要素のselection属性、contextmenu属性
が、IE5.01ですでにサポートされていた、ということでしょうか。
# yes,noではなく、on,offの値をとることに注意。
そういえば、スクリプトのエラー表示なんかも間違いなくHTMLですね。
EmSoftのフリーソフト、Capture Textでキャプチャできないテキストがあれば、それはHTML
とみて間違いないでしょう(spy++とかがあれば簡単にわかるんでしょうけど)。
話は飛びますが、EmEditor v3 の正式版が出ていました。
…高い(^^;
To: kobahide さん
> 「if a then 」=「if a<>false then」です。
そっちの方が正しそうですね。TrueなんてFalseのおまけみたいなもの?
To: 【おじさま】 さん
> 私も普段はこれですよ。If Fs.FileExists(file) = False Then
> についても If Not Fs.FileExists(file) Then って書くことの
> ほうが多いです。VB や VBS に限らず False は 0 で True は
> Not False としてしか決められていないはずです。
私は相当間抜けなことを言っていたことになりますね。
Falseが主体なわけですか。
> 私他の言語を知らないのですが、多分とりあえずの値が
> -1 であるほうが珍しいんじゃないでしょうか。
ええ、私もそんな気がしますね。
「有・無」ではなく「真・偽」だから0と-1なのでしょうか。
VBの歴史を紐解いてみれば、何かがわかるかもしれませんね。
To: AKiOS さん
例のエラーが出たので、ご報告。
最新記事リストをダウンロードする、にチェックを入れて「ダウンロード開始」を
クリックするとおこりました。オフライン作業中です。
Internet Explorer スクリプト エラー
ライン: 694
文字: 3
エラー: 書き込みできません。
コード: 0
URL: WshLab.hta
このまま実行すると、続いて次のエラーが出ます。
ライン: 183
文字: 1
エラー: オブジェクトでサポートされていないプロパティまたはメソッドです。
コード: 0
URL: $WshLab.tmp
このあと、もう一度ダウンロードをこころみると成功します。
> Not 0は-1だから、ですね。
ですから、なんでNot 0 が -1 なのかな、という話をしていたんですよ(^^;
Not 0 = 1 のほうが、感覚的に納得できます。
> BC++でちょっとした小物を作りました。
> <hta:application>タグにwidthとheightプロパティが
> 設定されているとそのサイズで表示するというものです。
> onloadイベントでwindow.resizeTo()するとリサイズしたのが
> 一瞬見えてしまいますが、これがなくなります。(^o^)
これ、どういう仕組みで動いているんでしょうか。
興味があります。
そういえば、「アプリケーションの追加と削除」も、ウィンドウサイズを決めるのに
window.ResizeToを使っていました。でもリサイズするところは見えませんね。
あれもどういう仕組みで動いているんだろうか。
To: HAL3 さん
> そこで、出来れば、Excelにボタンを張りつけて、そこからWSHを実行できれば
> いいなぁと思うのですが、
よくおっしゃることがわからないのですが、Excelのシートにボタンを貼り付け、
そのボタンを押すことでWSHのスクリプトが動作するようにしたい、ということでしょうか?
それなら、VBAのマクロを使えばいいと思いますが。
わざわざ、スクリプトをWSHで動かす意味がよくわからないんですが、すべてVBAで
記述してしまえばいいのでは?
To: nonomura さん
> VBScriptでAPI関数を使いたいのですがどうしたらよいのでしょうか。
VBSはDeclareステートメントをサポートしていないので、基本機能だけでは
API関数を使用することはできません。
しかし、API関数を呼び出すためのDynaCallというCOMコンポーネントがありますので、
それを使えばいいのではないでしょうか。
URLはリンクのページにあります。
VBScriptでAPI関数を使いたいのですがどうしたらよいのでしょうか。すみませんが教えてください。
はじめまして
いつも参考にさせテいただいています。
ちょっとここに書きこむのはお門違いかもしれないんですが、
情報を取得する場合、csvなどの表形式にしたりよくすると思うのですが、
うちは、結果としてEXCELで資料にします。
そこで、出来れば、Excelにボタンを張りつけて、そこからWSHを実行できれば
いいなぁと思うのですが、
そういうことって駄目なんでしょうか。
ここに聞くことじゃないかもしれないですが・・・
(DOSのbatはちょっとやった程度のプログラム素人です。場違いでしたら
ごめんなさい)
To: 管理人むたぐち さん
> VBSでも
> False=0
> True=-1ですね。
> # なんで1じゃないんだろう…。
Not 0は-1だから、ですね。
# WScript.Echo Not 0 を実行してみてください。:-)
PS.
BC++でちょっとした小物を作りました。
<hta:application>タグにwidthとheightプロパティが
設定されているとそのサイズで表示するというものです。
onloadイベントでwindow.resizeTo()するとリサイズしたのが
一瞬見えてしまいますが、これがなくなります。(^o^)