ライセンスキーについて
もとはといえば、私が、某所に掲載されていたものの内容を
ここへ書きこんだのが最初です。
私の勉強不足のために管理人むたぐちさんならびに不愉快な思いをされた皆さんに
お詫び申し上げます。申し訳ございません。
以後十分注意いたしますのでお許しください。
To: kobahide さん
> このHP上で、VB のコモンダイアログ ocx について、ライセンスキーを公開していますが、これは明らかにライセンス違反です。あなたの行為によって、正当に製品を購入したユーザーの利益が損害されています。ただちに該当ページの記述を削除し、さらに謝罪文の掲載を希望します。
ご指摘ありがとうございます。
該当ページ(http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/objects.htm)の記述を削除し、
同ページに謝罪文を掲載しました。
なお、掲示板の記事リスト4(http://www.roy.hi-ho.ne.jp/mutaguchi/bbs/list4.shtml)の
15番目および17番目の記事を削除させていただきました。
皆様にご迷惑をおかけしたことを、深くお詫び申し上げます。
このHP上で、VB のコモンダイアログ ocx について、ライセンスキーを公開していますが、これは明らかにライセンス違反です。あなたの行為によって、正当に製品を購入したユーザーの利益が損害されています。ただちに該当ページの記述を削除し、さらに謝罪文の掲載を希望します。
To: 管理人むたぐち さん
># ASCIIアートかと思った(^^;
そんな(笑)
>なるほど。でも、これをどうやって1ピクセルの表にしたらいいのでしょうか?
>列の幅は、<col>要素のwidth属性で設定できそうですが、行の高さはどうしましょうか。
># それとも、1ピクセル*1ピクセル=1Tableにするのでしょうか?
セルのwidthとheightが1ピクセルのテーブルを作ります。
百聞は一見に如かずということで、動くサンプルを紹介します。
# 若干、反応が鈍いですが、なかなかの出来ですよ。(^^;
# 問題は中間色を使いたいときどうするか、ですね。
---------- ここから ----------
<html>
<head>
<script language="jscript">
var colors = get_colors();
function startup() {
stopicon.innerHTML = get_iconHTML(new Array(
"□□□□□□黒黒黒黒黒黒黒",
"□□□□黒黒赤赤赤赤赤赤赤黒黒",
"□□□黒赤赤赤赤赤赤赤赤赤赤赤黒",
"□□黒赤赤赤赤赤赤赤赤赤赤赤赤赤黒",
"□黒赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤黒",
"□黒赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤黒",
"黒赤赤赤赤白白白赤赤赤白白白赤赤赤赤黒",
"黒赤赤赤赤赤白白白赤白白白赤赤赤赤赤黒",
"黒赤赤赤赤赤赤白白白白白赤赤赤赤赤赤黒",
"黒赤赤赤赤赤赤赤白白白赤赤赤赤赤赤赤黒",
"黒赤赤赤赤赤赤白白白白白赤赤赤赤赤赤黒",
"黒赤赤赤赤赤白白白赤白白白赤赤赤赤赤黒",
"黒赤赤赤赤白白白赤赤赤白白白赤赤赤赤黒",
"□黒赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤黒",
"□黒赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤黒",
"□□黒赤赤赤赤赤赤赤赤赤赤赤赤赤黒",
"□□□黒赤赤赤赤赤赤赤赤赤赤赤黒",
"□□□□黒黒赤赤赤赤赤赤赤黒黒",
"□□□□□□黒黒黒黒黒黒黒"
));
homeicon.innerHTML = get_iconHTML(new Array(
"□□□□□□□□□黒□□□黒黒黒",
"□□□□□□□□黒黄黒□□黒赤黒",
"□□□□□□□黒黄黄黄黒□黒赤黒",
"□□□□□□黒黄黄黒黄黄黒黒赤黒",
"□□□□□黒黄黄黒白黒黄黄黒赤黒",
"□□□□黒黄黄黒白白白黒黄黄黒黒",
"□□□黒黄黄黒白白白白白黒黄黄黒",
"□□黒黄黄黒白白白白白白白黒黄黄黒",
"□黒黄黄黒白白白白白白白白白黒黄黄黒",
"黒黄黄黒白白白白白白白白白白白黒黄黄黒",
"黒黒黒白白白白白白白白白白白白白黒黒黒",
"□黒白白白白白白白白白白白白白白白黒",
"□黒白白白白白黒黒黒黒黒白白白白白黒",
"□黒白白白白白黒黄黄黄黒白白白白白黒",
"□黒白白白白白黒黄黄黄黒白白白白白黒",
"□黒白白白白白黒黄黄黄黒白白白白白黒",
"□黒白白白白白黒黄黄黄黒白白白白白黒",
"□黒白白白白白黒黄黄黄黒白白白白白黒",
"□黒黒黒黒黒黒黒黒黒黒黒黒黒黒黒黒黒"
));
}
function get_iconHTML(icon) {
var s = '<table cellpadding="0" cellspacing="0">\n';
for (var i = 0; i < icon.length; i++) {
var line = icon[i];
s += "<tr>";
for (var j = 0; j < line.length; j++) {
s += '<td class="'+colors.item(line.charAt(j))+'">'
}
s += "</tr>\n"
}
s += "</table>\n";
return s;
}
function get_colors() {
var dic = new ActiveXObject("Scripting.Dictionary");
dic.add("□", "pixel");
dic.add("黒", "black");
dic.add("白", "white");
dic.add("赤", "red");
dic.add("黄", "yellow");
return dic;
}
var norm_border_color = "threedface";
var norm_padding = "1 1 1 1";
var over_border_color = "threedhighlight threedshadow threedshadow threedhighlight";
var over_padding = "1 1 1 1";
var down_border_color = "threedshadow threedhighlight threedhighlight threedshadow";
var down_padding = "2 0 0 2";
function set_padding(o, padding) {
o.rows[0].cells[0].style.padding =
o.rows[1].cells[0].style.padding = padding;
}
function fbtn_over(o) {
if (window.event && o.contains(window.event.fromElement)) return false;
o.rows[0].cells[0].style.filter = "";
o.style.borderColor = over_border_color;
}
function fbtn_out(o) {
if (window.event && o.contains(window.event.toElement)) return false;
o.rows[0].cells[0].style.filter = "gray()";
o.style.borderColor = norm_border_color;
set_padding(o, norm_padding);
}
function fbtn_down(o) {
if (window.event && window.event.button != 1) return false;
o.style.borderColor = down_border_color;
set_padding(o, down_padding);
}
function fbtn_up(o) {
o.style.borderColor = over_border_color;
set_padding(o, over_padding);
}
</script>
<style type="text/css">
table { cursor:default; font-family:MS UI Gothic; font-size:9pt; }
.fbtn { width:44; height:38; border:1 threedface solid; padding:1; }
.pixel { width:1; height:1; }
.black { width:1; height:1; background-color:black; }
.white { width:1; height:1; background-color:white; }
.red { width:1; height:1; background-color:red; }
.yellow { width:1; height:1; background-color:yellow; }
</style>
</head>
<body bgcolor="threedface" onload="startup()">
<table cellpadding="0" cellspacing="0" width="100%">
<tr>
<td>
<table class="fbtn" cellpadding="0" cellspacing="0" onmouseover="fbtn_over(this)"
onmouseout="fbtn_out(this)" onmousedown="fbtn_down(this)" onmouseup="fbtn_up(this)">
<tr><td align="center" id="stopicon" style="filter:gray()"></td></tr>
<tr><td align="center">中止</td></tr>
</table>
</td>
<td>
<table class="fbtn" cellpadding="0" cellspacing="0" onmouseover="fbtn_over(this)"
onmouseout="fbtn_out(this)" onmousedown="fbtn_down(this)" onmouseup="fbtn_up(this)">
<tr><td align="center" id="homeicon" style="filter:gray()"></td></tr>
<tr><td align="center">ホーム</td></tr>
</table>
</td>
<td width="100%"></td>
</tr>
</table>
</body>
</html>
---------- ここまで ----------
以前も書いたかもしれませんが、Windows Script5.5の新機能についてまとめてある
ページです。↓
http://msdn.microsoft.com/workshop/languages/clinic/scripting121399.asp
To: 西 さん
> ウィンドウズ2000でコマンドを使ってwindowsを再起動したり,ログオフする方法はありませんか?
リソースキットに再起動やログオフのプログラムが含まれているそうですが、
WMIを利用することで、WSHだけでも可能です。
リスト12の5番目の記事にも書いたのですが再掲します。新事実も判明したので…。
↓実行するとログオフします。
Set oSystemSet=GetObject ("winmgmts:{impersonationLevel=impersonate,(Shutdown)}") _
.InstancesOf("Win32_OperatingSystem")
For Each oSystem In oSystemSet
oSystem.Win32Shutdown 0
'0 ログオフ
'1 シャットダウン(電源は切れない)
'2 再起動
'4 強制終了?
'8 電源オフ
Next
> SDKのWin32ShutdownメソッドのFlag Value対応表は間違っている
と以前は書いたのですが、実は正しかったのでした。
WSH MLのログにあったのですが、あの表にあるFlagは、実はビットを示していたのです。
oSystem.Win32Shutdown 4 は試したことがないので、どうなるのか知りません。
forceとあるので強制終了なのだと思いますが。
ウィンドウズ2000でコマンドを使ってwindowsを再起動したり,ログオフする方法はありませんか?
To: AKiOS さん
> 最初の">"と最後の"$1>"にスペースを追加すればいけると思います。
うまくいきました。たいしたことではないんですが、引用符は"> "だという
固定観念がありまして(^^;
> できるかどうかは別として、メリットがよくわかりません。
私にもわかりません(^^;
ちょっと言ってみただけでした。
> 特に<h1>〜<h6>は、検索エンジンのスコアの重み付けや
> 要約を作るのに利用されていますので、文字サイズではなく
> 見出しとしてマークアップしないといけませんね。
で、<font>を使えばいいのかというとこれもNGで、<span>+CSSを使うのが
正しいらしいです。表示に関する属性はすべてCSSに任せるのが
正しいHTMLらしいです。
ついでに、<s>、<b>、<i>などのおなじみの要素も今後廃止される方向に
あるらしいです。
> アイコンはピクセルが集まってできていますから、ピクセル単位の
> 表を作ることができれば、アイコンを表現できることになります。
> たとえば、次のようなデータを用意して<table>タグに変換すれば、
> Homeアイコンの出来上がり、です。(^o^)
# ASCIIアートかと思った(^^;
なるほど。でも、これをどうやって1ピクセルの表にしたらいいのでしょうか?
列の幅は、<col>要素のwidth属性で設定できそうですが、行の高さはどうしましょうか。
# それとも、1ピクセル*1ピクセル=1Tableにするのでしょうか?
To: もぐ さん
> なるほど。OSのバージョンによっては初めから使えるも
> のもあったり使えないものもあったりしたので、不思議に
> 思っていました。
あれはIEの機能なんですね。
Win95 Plus!にも同等のユーティリティが付属していたそうですが、こちらの方が
高機能だったらしい…。
IE5.0を無印Win95(IE4.0未導入)にインストールしたところ、タスクスケジューラが
インストールされたところを見ると、別にIE4.0のシェル統合が必須というわけでは
ないようです。
> でもWSH等からバッチ処理の登録みたいな事やる場合には
> ATコマンドの方が楽かも知れませんね。
Win2000なら、WMIを使ってスケジュールをすることもできます。
これだともっと楽にできるでしょう。
詳しくはリスト13の35番目の記事をどうぞ。
To: 獅子丸参上 さん
> DOSコマンドでクライアント(Win98)からサーバー(WinNT4.0)に
> "ftp"接続できません(あさはかな知識な為)。
> OPENでサーバー名を指定した後の"ログイン名"と"パスワード"に
> 何を指定すればよいのか分かりません。
私はそちらのサーバーの管理者ではないので、私にはわかりません…。
普通に自分のログイン名とパスワードを入れても駄目なんでしょうか。
anonymousFTPサーバーなら、ログイン名にはanonymous、パスワードには
メールアドレスを指定するのが通例らしいですが。
To: nao さん
> この掲示板の
> http://wwwroy.hi-ho.ne.jp/mutaguchi/bbs/list9.shtml
> にあったのを使わせてもらってます。
あ、自分で書いたコードでしたか。
> 最近,フォルダーの概念を教えるのにExplorerを起動して
> HTAからコントロールできたらいいなと思っています。
> スイッチつけて起動し,Sendkeyでコントロールするしか
> 方法思いつかないですけど,ほかにあるんでしょうか。
そのコントロールがどういうレベルのものなのかよくわからないので、
はっきりしたことはいえないのですが、Shellオブジェクトを使えば、
かなり細かいところまで制御ができます。
フォルダ自体をオブジェクトとして扱うこともできます。
詳しくは、「オブジェクトの解説」などをどうぞ。
> WSHから「ファイルの検索」を表示するのに以下のようにしてますが
Set Shell=Wscript.CreateObject("Shell.Application")
Shell.FindFiles
でOKです。
どうせなら、エクスプローラの検索機能自体をWSH/HTAから利用したいものですが…。
(WSH MLにもそういう投稿がありました。レスがつかなかったですが)
Win2000では、検索ウィンドウ自体がオートメーション化されているみたいなんです
が、使い方がよくわからないのです…。
ISearchAssistantOC(SHDocVwのメンバ)が怪しいのですが…。
ちなみにProgIDはSearchAssistantOC.SearchAssistantOCです。
それとは別に、Shell32の方に、ISearchCommandExt、IFileSearchBandというメンバが
あり、これも怪しいですね。エクスプローラバーの検索バーを制御するものなんでしょうか。
To: 管理人むたぐち さん
>ソースを取り込む機能が気に入りました。
この部分ですね。
Set doc=objIE.Document
For Each element In doc.all
If element.TagName="HTML" Then
document.all.Txtarea1.value=element.OuterHTML
Exit For
End If
この掲示板の
http://wwwroy.hi-ho.ne.jp/mutaguchi/bbs/list9.shtml
にあったのを使わせてもらってます。
最近,フォルダーの概念を教えるのにExplorerを起動して
HTAからコントロールできたらいいなと思っています。
スイッチつけて起動し,Sendkeyでコントロールするしか
方法思いつかないですけど,ほかにあるんでしょうか。
WSHから「ファイルの検索」を表示するのに以下のようにしてますが
newapp="Explorer" 'エクスプローラのスイッチつける
Set WshShell = Wscript.CreateObject("Wscript.Shell")
WshShell.Run(newapp)
WScript.Sleep(1000)
WshShell.Sendkeys("%t")
WshShell.Sendkeys("f{ENTER}")
いまいちスマートじゃない気がして,いい方法ありましたら
もぐさん、そして皆様本当にご協力ありがとうございました。
実際にATコマンドで上手くいきました事を報告します。
ですがまた新たな問題に直面してしまい、困っています。
DOSコマンドでクライアント(Win98)からサーバー(WinNT4.0)に
"ftp"接続できません(あさはかな知識な為)。
OPENでサーバー名を指定した後の"ログイン名"と"パスワード"に
何を指定すればよいのか分かりません。
なにとぞお力添えください。
お願いいたします。
To:獅子丸参上さん
>見えませんがどうしたらよいのでしょうか。
タスクスケジューラがインストールされていないようですね。
管理人むたぐちさんが書かれた内容によれば、
・IE4.0の追加コンポーネントをインストールする
・IE5.01以上をインストールする(?)
事で使えるようになるようです。
>もう少し詳しく教えて頂けますでしょうか。
詳しい機能は書ききれないので、ヘルプ
等を参照して頂きたいのですが、
・月何回、何曜日のみ、何日おきに
・何時から何時まで何分おきに
みたいな条件が指定できて、登録したジョブはアイコン
の形で見えます。
To:管理人むたぐちさん
>ちなみに、タスクスケジューラは、IE4.0xをインストールしている場合に使用できます。
なるほど。OSのバージョンによっては初めから使えるも
のもあったり使えないものもあったりしたので、不思議に
思っていました。
でもWSH等からバッチ処理の登録みたいな事やる場合には
ATコマンドの方が楽かも知れませんね。
話は変わって最近ちょっと熱い(?)HTAに関してですが、、
AKiOSさんやnaoさんのHTAを動かしてみたのですが
すごいの一言ですね。ここまで出来るかって感じです。
もっと勉強していこうと思います。
To:管理人むたぐちさん、Lib30さん、もぐさん
ありがとうございました。とても参考になりました。
メモリ消費するのはまずいのでもぐさんの内容でやってみたいのですが・・・。
>もしNTのマイコンピュータを開いて、「タスク」、「予定されたタスク」
>みたいなものが見えたらタスクスケジューラが使えます。
見えませんがどうしたらよいのでしょうか。
>VBSやATコマンド等を使わなくてもGUIベースで簡単にプログラムの自動
>起動の設定が出来ますよ。
もう少し詳しく教えて頂けますでしょうか。
To: 管理人むたぐち さん
># ただ、引用符を">"から"> "(スペース入り)に替えたいのですが、1394行目を
># どう変えればいいのでしょうか?
最初の">"と最後の"$1>"にスペースを追加すればいけると思います。
>HTA自体をXMLで記述することは可能なんだろうか…。(HTML Applicationというくらい
>だから無理かも…)
できるかどうかは別として、メリットがよくわかりません。
リソース等はXMLで、というのならわかるんですが。。。
>HTMLとは文章の論理構造を記述するものであってレイアウトの…云々(笑)
特に<h1>〜<h6>は、検索エンジンのスコアの重み付けや
要約を作るのに利用されていますので、文字サイズではなく
見出しとしてマークアップしないといけませんね。
>HTMLにXML文書を埋め込むというシチュエーションってあり得るんでしょうか。
うーん、あまり思いつきません。(^^;
>HTML文書に適合している必要もないのでしょうか。
HTML文書を作るのが目的ではなくてアプリを作るのが目的ですから、
最終的にIEで動けばそれでいいと思いますが…。(^^;
>ただの文字列として扱っている?
そうですね。
結果的には単なる文字列として扱っていることになります。
>># 現在開発中のHTAではIEのような浮き上がるボタンも<table>タグを
>># 使って実現しています。浮き上がるだけじゃあ、珍しくもなんとも
>># ありませんが、アイコンも<table>タグだけで実現してところがミソです。
>
>お、なんか面白そうなアイデアですね。
アイコンはピクセルが集まってできていますから、ピクセル単位の
表を作ることができれば、アイコンを表現できることになります。
たとえば、次のようなデータを用意して<table>タグに変換すれば、
Homeアイコンの出来上がり、です。(^o^)
---------- ここから ----------
□□□□□□□□□黒□□□黒黒黒
□□□□□□□□黒黄黒□□黒赤黒
□□□□□□□黒黄黄黄黒□黒赤黒
□□□□□□黒黄黄黒黄黄黒黒赤黒
□□□□□黒黄黄黒白黒黄黄黒赤黒
□□□□黒黄黄黒白白白黒黄黄黒黒
□□□黒黄黄黒白白白白白黒黄黄黒
□□黒黄黄黒白白白白白白白黒黄黄黒
□黒黄黄黒白白白白白白白白白黒黄黄黒
黒黄黄黒白白白白白白白白白白白黒黄黄黒
黒黒黒白白白白白白白白白白白白白黒黒黒
□黒白白白白白白白白白白白白白白白黒
□黒白白白白白黒黒黒黒黒白白白白白黒
□黒白白白白白黒黄黄黄黒白白白白白黒
□黒白白白白白黒黄黄黄黒白白白白白黒
□黒白白白白白黒黄黄黄黒白白白白白黒
□黒白白白白白黒黄黄黄黒白白白白白黒
□黒白白白白白黒黄黄黄黒白白白白白黒
□黒黒黒黒黒黒黒黒黒黒黒黒黒黒黒黒黒
---------- ここまで ----------
WMIの日本語ドキュメントのありかをネットニュースの記事で見つけたので、
URLを書いておきます。
http://www.microsoft.com/JAPAN/developer/library/jptech/msdnnews/wmi.htm
この記事は、
http://www.microsoft.com/japan/developer/thisweek/wmi/koj990730.asp
を読んでから読むと、理解がよりいっそう深まるのではないかと思います。
To: nao さん
ymedit.htaを使ってみたんですが、これ、よくできていますね。
ソースを取り込む機能が気に入りました。
下手なHTMLエディタより使い勝手がいいかも…。
To: MA さん
>NTのドメイン上にユーザーアカウントが作成されているかどうか調べるスクリプトってできるのでしょうか?
ADSIを使えば可能だと思いますが、ADSIはsp6?を導入することでインストール
されるんでしたっけ?
とりあえず、こういう感じのスクリプトで確認できるのではないかと思います。
もっといい方法がありそうですが…。
On Error Resume Next
Dim sNTDomain,sUsername,oNS
sNTDomain="NTドメイン名"
sUserName="ユーザー名"
Set oNS=GetObject("WinNT://" & sNTDomain & "/" & sUserName)
If oNs.Class<>"User" Or Err.Number<>0 Then
msgbox sUserName & "は未登録のユーザーです。"
Else
msgbox sUserName & "は登録済みのユーザーです。"
End If
To: Lib30 さん
4目並べやってみたんですが、ぜんぜん勝てない(^^;
# もしかして、「後手必勝」のゲーム?
ソースを解読して、もう一回挑戦します(^^;
>どうもネットでいろいろ調べてみると、昔MicrosoftのサイトにActiveX Gallery
>というページがあって、そこに多数の無料サンプルが公開されていたようです。
>ただし今どんなに探してもそのページは見つかりません。どこに行ってしまった
>のでしょうか?WebでActiveXを使用することについての情報はあまりに少ないので
>そのページは大いに価値があるように思われるのですが。
Microsoft的には、ActiveXという名称を使いたくないらしいです。
# 昔、ASCIIの記事に書いてありました。
COMコンポーネントのカテゴリを探してみると、あるかもしれません。
>スタートアップにvbsファイルを入れておき、起動した時間と目的の時間との間の
>ミリ秒を求めてその間Sleepを使用してスクリプトの実行を停止し、
>そのあと終了するコードを実行する、というのはどうでしょう?ただし起動して
>から終了するまでずっとSleepしっぱなしなので少し(かなり?)メモリーを消費し
>てしまいますが。
この方法ですが、Sleepメソッドの精度がいまいちよくわからないので、一定時間ごとに
時計を見る(具体的にはNow関数を使う)のがいいかもしれません。
メモリの消費量に関してはよくわかりませんが、CPUも一定量食うのではないかと思います。
To: もぐ さん
>もしNTのマイコンピュータを開いて、「タスク」、「予定されたタスク」
>みたいなものが見えたらタスクスケジューラが使えます。
ちなみに、タスクスケジューラは、IE4.0xをインストールしている場合に使用できます。
>VBSやATコマンド等を使わなくてもGUIベースで簡単にプログラムの自動
>起動の設定が出来ますよ。
ATコマンドで設定した内容は、タスクスケジューラにも反映されます(Win2000では)。
タスクスケジューラのほうが、細かい設定ができるのですけどね。
(逆に、タスクスケジューラで設定したスケジュールは、ATコマンドの管轄外になります)
>ちなみに私は会社のPCに夜7:00以降、1時間おきに
>「残業してないで早く帰れ!」
>とダイアログを出すVBSを書いて登録してあります(笑)
>(しかも時間が遅くなるほど口調がきびしくなる、、)
「遅くまでお勤めご苦労様です」とねぎらってもらった方がいいのでは?
私ならそうします(^^;
To: 西 さん
>Sub bBtn_OnClick
>WSHShell.Run """%ProgramFiles%InternetExplorer\IEXPLORE.EXE"""
>End Sub
>と書くとオブジェクトがないといわれました。
Set WshShell=CreateObject("WScript.Shell")
が書かれてないのでは?
というか、単に変数名が違うだけですね(^^;
WSH.Runでいいでしょう。
>それとHTAからHTAを行う手段として挙げられていた
>Set Fs = CreateObject("Scripting.FileSystemObject")
>WSH.Run Fs.BuildPath(Fs.GetParentFolderName(location.pathname),"ver\ver.hta")
>はどこに追加すればよいのでしょうか。
>やはり
>Sub bBtn_OnClickの1行下でしょうか。
まあ、意味を考えていただければわかると思うんですが、Subプロシージャの中に入れれば
動作すると思います。Set Fs=...というのは、Set WSH=...と同じ場所に
書いておくと見やすいと思います。
ランチャーの件で質問ですが
program filesフォルダの指定で
Sub bBtn_OnClick
WSHShell.Run """%ProgramFiles%InternetExplorer\IEXPLORE.EXE"""
End Sub
と書くとオブジェクトがないといわれました。
それとHTAからHTAを行う手段として挙げられていた
Set Fs = CreateObject("Scripting.FileSystemObject")
WSH.Run Fs.BuildPath(Fs.GetParentFolderName(location.pathname),"ver\ver.hta")
はどこに追加すればよいのでしょうか。
やはり
Sub bBtn_OnClickの1行下でしょうか。
最後にURLが間違ってましたので正しいものを書いておきました。
To 獅子丸さん
> VBスクリプト等でタイマー起動(1日に2回決まった時間にバッチ
> プログラムが自動的に起動して勝手に終了する)の方法
もしNTのマイコンピュータを開いて、「タスク」、「予定されたタスク」
みたいなものが見えたらタスクスケジューラが使えます。
VBSやATコマンド等を使わなくてもGUIベースで簡単にプログラムの自動
起動の設定が出来ますよ。
ちなみに私は会社のPCに夜7:00以降、1時間おきに
「残業してないで早く帰れ!」
とダイアログを出すVBSを書いて登録してあります(笑)
(しかも時間が遅くなるほど口調がきびしくなる、、)
To むたぐちさん
>ActiveXコンポーネントというのは、HTMLに書かれていれば勝手に
>インストールされるというのがデフォルトの導入方法ですが、
>ファイルとしてダウンロードできるものなんでしょうか。
できます。ActiveXをWebで使用する場合OBJECTタグを使用しますが、
その属性としてCODEBASEというのがあります。これはOCXファイルの
ダウンロード先とバージョンを記入します。ソースを見てそのURLを
コピーしてブラウザのアドレスランに貼り付けて移動してやればいいでしょう。
ただし中にはCODEBASEがなくても勝手にダウンロードしてくれるありがた迷惑な
コンポーネントもあります。ちなみにダウンロードしたOCXファイルは
WINDOWSフォルダの中のDownloaded Program Filesという特殊フォルダに
保存されます。ここからダウンロードしたOCXファイルを登録情報とともに
削除できるようです。
どうもネットでいろいろ調べてみると、昔MicrosoftのサイトにActiveX Gallery
というページがあって、そこに多数の無料サンプルが公開されていたようです。
ただし今どんなに探してもそのページは見つかりません。どこに行ってしまった
のでしょうか?WebでActiveXを使用することについての情報はあまりに少ないので
そのページは大いに価値があるように思われるのですが。
To 獅子丸さん
> VBスクリプト等でタイマー起動(1日に2回決まった時間にバッチ
> プログラムが自動的に起動して勝手に終了する)の方法
スタートアップにvbsファイルを入れておき、起動した時間と目的の時間との間の
ミリ秒を求めてその間Sleepを使用してスクリプトの実行を停止し、
そのあと終了するコードを実行する、というのはどうでしょう?ただし起動して
から終了するまでずっとSleepしっぱなしなので少し(かなり?)メモリーを消費し
てしまいますが。
To: 【おじさま】 さん
>HTML が元になっている分、どっちかというと VB で書く時より
>もビジュアル面で凝るのは簡単なような気もするのですが、単
ですよね。VBではなかなか苦労します。
だいたい、borderが1ピクセルの盛り上がり気味の領域
(要するに、<div style="border-style: solid;border-width:1;border-color: THREEDHIGHLIGHT THREEDSHADOW THREEDSHADOW THREEDHIGHLIGHT ">です)を
表現するのにも一苦労ですし。
>に趣味の問題でしょうか。まぁホームページなどと違ってアプ
>リケーションとなると確かにあんまり派手なのはちょっとお下
>品かも・・・(^^;)。
filter機能を使って、グラフィックビューアでも作ってみようかな。
多少、デザインも考慮した…。
>19 番に 6 の強化版として置いてありました。ここだけ普通の
>リンクじゃなくてボタンになって、書庫ではなく HTA ファイル
>単独でダウンロードされます。
ボタンでしたか。やはりスクリプトをオフにしていると、見落としがちですね…(^^;
>は IE4 からのようです。今 IE4.01SP2 で試してみましたが、EM
>BED も src 属性も有効でした。
あ、申し訳ありません。こちらの認識不足だったようです。
>ただし実際に試してみますと loop 属性には違いがあり、Netscape
手持ちのMSDNライブラリでは、loop属性の記述はありませんでした。
なぜだろう…?
>余程新し物好きでなければダウンロードはしませんよね。ただ今
>回の IE5.5 は Win2000 の場合には 6MB 位のダウンロードになり
>ます。
ニュースグループを見ていると、次々にダウンロード報告があるので、
わりとよくダウンロードされているような錯覚があるんですが、
そもそも対象とする母集団が間違っていますね(笑)
>cript.dll は新しくなるのですが)。ということで Win2000 につ
>いては 6MB で済みますので雑誌を待たなくても何とかなるかも。
6MBですか。微妙な感じです。
でも、なかなか良心的な容量ではあります。
>># なんかトラブルもあるみたいですし。これもいつものことですね。
>
>こっちのほうはどうしようもないのですが、これもまたお楽しみの
>ひとつでして(^^;)。
私はトラブルで楽しむというのがどうも理解できないという性質でして(^^;
To: AKiOS さん
# WSH Lab.掲示板記事検索スクリプトですが、レス書き機能も良くできていますね。
# お手製のVBSからこちらに完全移行してしまおうと思います。
# ただ、引用符を">"から"> "(スペース入り)に替えたいのですが、1394行目を
# どう変えればいいのでしょうか?
># 少し補足しておきますが、<xml>タグの中のタグはHTMLタグを
># 参考にしていますが、私が定義したタグであって、HTMLタグ
># ではありませんよ。念のため。
では、名前空間を記述しないと(笑)
<akios:div>とか。違うか(爆)
HTMLのxmlタグについては、要勉強ですね。なんか、要勉強の分野が多いですが(^^;
HTA自体をXMLで記述することは可能なんだろうか…。(HTML Applicationというくらい
だから無理かも…)
><table>タグも本来の表を作成するだけではなく、レイアウトにも
>よく利用されています。
よく批判を受ける使い方ですが(^^;
HTMLとは文章の論理構造を記述するものであってレイアウトの…云々(笑)
><xml>タグも本来はXML文書を格納するためのタグなんでしょうが、
HTMLにXML文書を埋め込むというシチュエーションってあり得るんでしょうか。
ところでxmlタグはHTML4.0xで定義されているのかな?
>XML文書といっても単なるデータにしかすぎません。そう考えると、
><xml>タグはデータを格納するためのタグとみることもできると
>思います(格納されているデータがXMLの文書定義に適合しているか
>どうかは重要ではありません。XMLパーサに読み込ませるわけでは
>ないので)。
ソースをちゃんと理解していないので何ともいえないのですが、ということは
HTML文書に適合している必要もないのでしょうか。
ただの文字列として扱っている?
># 現在開発中のHTAではIEのような浮き上がるボタンも<table>タグを
># 使って実現しています。浮き上がるだけじゃあ、珍しくもなんとも
># ありませんが、アイコンも<table>タグだけで実現してところがミソです。
お、なんか面白そうなアイデアですね。
完成したときにはぜひ教えてくださいね。(自分で考えろって(爆))
To: 西 さん
>ただ気がかりなのはWIN95にインストールしても問題が発生しました。
>インストール後インターネットに接続しようとするとIEが強制終了されてしまいます。
やはり、初物には用心しないといけないのかも…。
というか、5.5というのは初物ではないですか(^^;
>ということでしばらくIE5.01sp1で我慢することにします。
いつも思うんですが、IE"5.02"でいいのではないか > MS
To: 獅子丸参上 さん
> VBスクリプト等でタイマー起動(1日に2回決まった時間にバッチ
> プログラムが自動的に起動して勝手に終了する)の方法
>
>追伸、実際に動かす環境はWindowsNT4.0です。
ATコマンドを使って、スケジュールを作成してやればいいのではないでしょうか。
cmd.exeを立ち上げて、 at /? とすれば使い方が表示されます。
バッチで事足りるのなら、VBスクリプトの出番はないかもしれません。
To: nao さん
> ymedit.htaの作者です。
どうもです。
>画像のボタンは,フロントページの画面のを切り取ってPNGにしてあるので
>upしてません。
ぎく(笑)
16*16のアイコンに著作権ってあるのでしょうか?
Windowsアプリケーションの基本グラフィックとして、自由に使っていいのかと
思ってました。
私の場合、VB6についてきたBMPのアイコン画像が手元にあるんですが、さすがに
これそのものをHTAに付属して配布はできないでしょうね。
手書きで同じものを書けばOK?
オリジナルデザインのを作る? それは酷です(笑)
>私も「簡易テキストエディタ」をみて,全てVBScriptで同じような機能を実現
>しようと思って作成しました。
kiaさんのスクリプトはそれだけインパクトが強かったんですね。
私も最初見たときは感動しました。
To: Lib30 さん
>ページをひさしぶりにアップしました。HTAのページのコンテンツの作成に
>思ったより時間がかかりまだあまり内容はなく、比較的使えそうなもののみ
>アップしてみました。
おもわずアーカイブの方をダウンロードしてしまいました(爆)
こちらは更新されていなかったんですね…しまった。
また後で拝見します。
ところで、自己解凍書庫のなかにまた自己解凍書庫がありますが、これは要らないんじゃ
ないですか?
>あと、リンクが完了したことを報告しておきます。バナーが少し大きかったので
>小さなやつを勝手に作ってしまいましたが、気に入らなければ使用を止めますので
>教えてください。
お手数掛けてすいません。
でも、これ、かわいくていいです!
# リンクされる方はバナーを自作してください、とか書いておこうか(爆)
>ActiveXコンポーネントがあるのでそれを利用したほうがいいでしょう。一応
>自分のページのHTAのコーナーで紹介してあります。
標準付属でない、という点が少し気になりますが、やはり完成された
コンポーネントというのは魅力的ではありますね。
みなさんも利用してみてはいかがでしょうか。
ActiveXコンポーネントというのは、HTMLに書かれていれば勝手に
インストールされるというのがデフォルトの導入方法ですが、
ファイルとしてダウンロードできるものなんでしょうか。
どうも、勝手にどこかのフォルダに入ってしまうというのが気に入らないので、
普通にダウンロードしてからインストールしたいのですが。
>インプレスの▲曄璽爛據璽故▲錺響棺ク HTML TIPS & TRICKS」という本に
# なんか禍々しいタイトルですね(^^;
>OBJECTタグでActiveXを使用してメディアプレーヤーをHTMLに埋め込むという
>サンプルが載っています。その本を買ってきて読めばわかると思いますが、
フォローありがとうございます。
ちなみに、folder.httを参考にするという手もありますよ。
NTのドメイン上にユーザーアカウントが作成されているかどうか調べるスクリプトってできるのでしょうか?
初心者なので、どう書いていいのか想像がつきません
何方かわかる方いらっしゃいましたら教えていただけないでしょうか?
To むたぐちさん
ページをひさしぶりにアップしました。HTAのページのコンテンツの作成に
思ったより時間がかかりまだあまり内容はなく、比較的使えそうなもののみ
アップしてみました。
あと、リンクが完了したことを報告しておきます。バナーが少し大きかったので
小さなやつを勝手に作ってしまいましたが、気に入らなければ使用を止めますので
教えてください。
>というか,メニューの部分を普通のアプリケーションと同じようにしようとした
>ものです。感想は,もっと簡単に作れたらいいな
>です。やはりXMLを勉強するのが正解なんでしょうか。
XMLを勉強する必要はないと思います。
XMLのことをすべて知っているわけではないのですが、普通のアプリケーションと
同じメニューを作るのはかなり大変そうです。Win2000の浮き上がるメニューなど
も作れないことはないですが、インターネット上にそういったことを実現する
ActiveXコンポーネントがあるのでそれを利用したほうがいいでしょう。一応
自分のページのHTAのコーナーで紹介してあります。
> MPEG2を流すのにMicrosoft Media Playerを使用しています。
> 「HTMLのMPEG2のメニュー画面からリンクをはって、再生させたい動画の
> 題名をクリックすると新しくウィンドウが生成されて、ウィンドウ内に
> はめ込まれているMedia Playerの画面で動画が再生される」という動きを
> 要求されているのです。
インプレスの▲曄璽爛據璽故▲錺響棺ク HTML TIPS & TRICKS」という本に
OBJECTタグでActiveXを使用してメディアプレーヤーをHTMLに埋め込むという
サンプルが載っています。その本を買ってきて読めばわかると思いますが、
http://internet.impress.co.jp/tipsbook/
に、本に収録されているスクリプトのソースが公開されているので参考にしてみては?
ymedit.htaの作者です。
>>あのページのスクリプトは全部ダウンロードしているはずなんですが、
>>ymedit.htaはどのアーカイブに入ってるんでしょうか?
>19 番に 6 の強化版として置いてありました。ここだけ普通の
>リンクじゃなくてボタンになって、書庫ではなく HTA ファイル
>単独でダウンロードされます。
書庫にしました。未完成のままですが
画像のボタンは,フロントページの画面のを切り取ってPNGにしてあるので
upしてません。
>HTAでメニューバーといえば、kiaさんの「簡易テキストエディタ」が参考に
>なるのではないでしょうか。
私も「簡易テキストエディタ」をみて,全てVBScriptで同じような機能を実現
しようと思って作成しました。というか,メニューの部分を普通のアプリケー
ションと同じようにしようとしたものです。感想は,もっと簡単に作れたらいいな
です。やはりXMLを勉強するのが正解なんでしょうか。
はじめまして。
VBなんて全く知らないのに仕事で使う(開発)事になってしまいました。
いったいどんな本を読めばよいのかも分からず、悶々とする日々を送って
います。
そしてやっと、やさしい説明(当ページ)に巡り会えました。
いま悩んでいる事があり、解る範囲で結構ですからお力を貸してください。
VBスクリプト等でタイマー起動(1日に2回決まった時間にバッチ
プログラムが自動的に起動して勝手に終了する)の方法
追伸、実際に動かす環境はWindowsNT4.0です。
あきらめて正式版を買おうと思います(やはりライセンス違反してもいいことありませんね)それとアンインストール方法を書いていただいてありがとうございます。
ただ気がかりなのはWIN95にインストールしても問題が発生しました。
インストール後インターネットに接続しようとするとIEが強制終了されてしまいます。
ということでしばらくIE5.01sp1で我慢することにします。
馬鹿なことばかりする私に付き合っていただいてありがとうございました。
To: 管理人むたぐち さん
>>>ただ、HTMLのドキュメントを保持する変数(オブジェクト?)のような使い方を
>>>されているような気がするのですが…。(AKiOSさんのHTAでも)
>
>そんなかんじですね。
>そういう使い方が、正しい使い方なのかというと、ちょっと疑問なんですが。
それを言っちゃあ、おしまいでしょう(笑)。
# 少し補足しておきますが、<xml>タグの中のタグはHTMLタグを
# 参考にしていますが、私が定義したタグであって、HTMLタグ
# ではありませんよ。念のため。
<table>タグも本来の表を作成するだけではなく、レイアウトにも
よく利用されています。
<xml>タグも本来はXML文書を格納するためのタグなんでしょうが、
XML文書といっても単なるデータにしかすぎません。そう考えると、
<xml>タグはデータを格納するためのタグとみることもできると
思います(格納されているデータがXMLの文書定義に適合しているか
どうかは重要ではありません。XMLパーサに読み込ませるわけでは
ないので)。
# 現在開発中のHTAではIEのような浮き上がるボタンも<table>タグを
# 使って実現しています。浮き上がるだけじゃあ、珍しくもなんとも
# ありませんが、アイコンも<table>タグだけで実現してところがミソです。
管理人むたぐちさん
>それにしても、ビジュアル面を追求したHTAをあまり見かけないですね。
言われてみればそうですね。色なんかも地味なのが多いです。
HTML が元になっている分、どっちかというと VB で書く時より
もビジュアル面で凝るのは簡単なような気もするのですが、単
に趣味の問題でしょうか。まぁホームページなどと違ってアプ
リケーションとなると確かにあんまり派手なのはちょっとお下
品かも・・・(^^;)。
>あのページのスクリプトは全部ダウンロードしているはずなんですが、
>ymedit.htaはどのアーカイブに入ってるんでしょうか?
19 番に 6 の強化版として置いてありました。ここだけ普通の
リンクじゃなくてボタンになって、書庫ではなく HTA ファイル
単独でダウンロードされます。
>そういう使い方が、正しい使い方なのかというと、ちょっと疑問なんですが。
ごめんなさい。XML については全然知らないので正しいのかど
うかも分からないんです。これではいかんと昨日 XML の入門書
みたいなのを買ってきましたのでちょっと勉強してみます。
>たしかにIEはembedタグを解釈しますが、src属性などを指定して、ファイルを埋め込む
>ことはできなかったような気が…。
IE5.5 からではありません。少なくとも昨年の 12 月 3 日の時
点で使えています。私の地元紹介のほうのホームページで(この
ホームページの開設が 1999/12/03)実際に使っていますし、そ
の時点の IE で音が鳴っています。手持ちの資料によって書いて
る内容が微妙に違うのですが、どうも IE3 では EMBED を認識す
るもののほとんどの属性が無効で(むたぐちさんがおっしゃって
いるのはこのことだと思います)、実際に属性が有効になったの
は IE4 からのようです。今 IE4.01SP2 で試してみましたが、EM
BED も src 属性も有効でした。
ただし実際に試してみますと loop 属性には違いがあり、Netscape
は仕様通りに繰り返し回数の指定が有効ですが、IE ではループし
ないか永遠にループするかのどちらかになるようです(0 以外の回
数を指定すると永遠にループになってしまう)。これは IE5.5 でも
同様でした。
>本来なら私が確認できればいいんでしょうけど、いつものように雑誌収録待ちです(^^;
余程新し物好きでなければダウンロードはしませんよね。ただ今
回の IE5.5 は Win2000 の場合には 6MB 位のダウンロードになり
ます。Win98SE だと私の場合には完全なフルセットにするのには
40MB を超えました。インストーラは共通なのですが、実際のイン
ストールは Win2000 の場合には標準やカスタムがなくて Win2000
用のインストール 1 種類のみです。当然 Win9x では新しくなる
のに Win2000 では更新されないファイルというのがありまして、
ちゃんと確認したわけではありませんが、Outlook Express がそ
うだったと思います。そもそも Win2000 が標準で持っている OE
は IE5.01 に含まれているのとはバージョンが違っていたと思い
ます。後は Scrrun.dll がそうだったかな(Vbscript.dll や Js
cript.dll は新しくなるのですが)。ということで Win2000 につ
いては 6MB で済みますので雑誌を待たなくても何とかなるかも。
勿論サイズは小さくても
># なんかトラブルもあるみたいですし。これもいつものことですね。
こっちのほうはどうしようもないのですが、これもまたお楽しみの
ひとつでして(^^;)。
>改行しなくても、自動改行されますし、一文字のスペースは大丈夫ですよ。
失礼しました。以前スペースが消えたという記憶があって、過剰
に反応してしまったようです。
To: 【おじさま】 さん
>これを言われてしまうと実も蓋もないのですが(^^;)、拘るならばどこまで
>拘れるか、似せるならどこまで似せられるかが今回の目的でして、役に立つ
>かどうかや便利かどうかは考えていません。HTML には HTML なりの HTML
>らしいメニューというのはごもっともなのですが今回はそれを目的としませ
>んでした。
そうですよね。まあ、おそらくそうだとは思っていたんですが(^^;
それにしても、ビジュアル面を追求したHTAをあまり見かけないですね。
>のリンクで「学校で使うスクリプト」にあった ymedit.hta を拝見したから
>で、HTML でこんなことができるならもっと似せてみようと思ったわけです。
あのページのスクリプトは全部ダウンロードしているはずなんですが、
ymedit.htaはどのアーカイブに入ってるんでしょうか?
みつからなかったです…。
>>ただ、HTMLのドキュメントを保持する変数(オブジェクト?)のような使い方を
>>されているような気がするのですが…。(AKiOSさんのHTAでも)
そんなかんじですね。
そういう使い方が、正しい使い方なのかというと、ちょっと疑問なんですが。
# これは、HTMLで定義された「xmlタグ」のような感じですよね。
>>HTC(DHTML Behaviors)にするといいかもしれませんね。
>
>この言葉すら知りませんでしたので、ご紹介いただいたサイトで勉強してみ
>ます。
これは文字通りBehaviorを定義するだけのものかもしれません。
# プログラミング可能なCSS?
私は、HTMLのオブジェクトを組み合わせて作るコンポーネントのようなものを
想像していたのですが…。
ともかく、要勉強です。
>bgsound は IE のみ、embed は IE と Netscape のどちらでも使えるようです。
もしかするとIE5.5からの実装でしょうか。
たしかにIEはembedタグを解釈しますが、src属性などを指定して、ファイルを埋め込む
ことはできなかったような気が…。
プラグインの指定はできるようですが。
>>windows2000にインストールしてhtaを使用できているのですか?
>
>問題なく動作しています。
動作報告ありがとうございます。
本来なら私が確認できればいいんでしょうけど、いつものように雑誌収録待ちです(^^;
# なんかトラブルもあるみたいですし。これもいつものことですね。
> *長いので途中で改行していますが、実際は1行です。またここ
> の掲示板はスペースが消えてしまうことがあるので@で置き換えて
> います。@の部分を半角スペースに置き換えて実行してください。
改行しなくても、自動改行されますし、一文字のスペースは大丈夫ですよ。
というか、書き込んだ内容をそのまま(>→>等の変換はありますが)
流し込んでいるだけですので。
To: 西 さん
>mshtaがエラーを出す。)ただし使用しているバージョンがRC2(雑誌の付録についていた)ものなので仕方ないのかもしれませんが。
【おじさま】さんもご指摘のように、RC2の使用期限はとっくに終わっています。
150日?お試し版というのがあるので、そちらを使ってください。
# このお試し版が、インストールした日を基準としているのか、製品版発売日を
# 基準にしているのかわかりませんが…。
西さん
Win2000 がインストールされているマシンは職場にありまして
今ここには Win98SE マシンしかありません。地元のお祭りなど
がありまして連休になりますので、職場へは水曜日まで出勤し
ません。したがってご質問への(といっても文字化けで良く分
からないのですが)正確なレスは水曜日以降になりますが、と
もかく Win2000 に IE5.5 がインストールされているのは間違
いありません。というのはそのマシンの IE で「ファイル(F)」
->「印刷プレビュー(V)」の機能を使った記憶があり、この機能
は IE5.01 にはなく IE5.5 からの機能だったと思います。また
すべてのファイルを確認したわけではありませんが、かなりの
数のファイルが新しいバージョンに書き換えられているのも確
認しています。ともかくその他いろいろな理由から Win2000 に
IE5.5 がインストールされたのは確かです。
>windows2000にインストールしてhtaを使用できているのですか?
問題なく動作しています。
>それとIEからバージョンを見たときバージョンの上にある絵が
>5.01のときから変化していますか。
ごめんなさい。そもそも IE5.01 の時がどんな絵だったのかの
記憶がありません。このバージョン画面でのバージョン表示は
今、Win98SE マシンで見ますと 5.50.4134.0600 となっていま
す。多分 Win2000 も同じになるはずです。
>アプリケーションの追加と削除を使わずにIEをインストールする方法はありませんか
これはアンインストールの意味でしょうか? Win98SE ならば
「スタート」-> 「ファイル名を指定して実行(R)」で
rundll32@setupwbv.dll,IE5Maintenance@"C:\Program Files\
Internet@Explorer\Setup\SETUP.EXE"@/g@"C:\WINDOWS\IE@
Uninstall@Log.Txt"
*長いので途中で改行していますが、実際は1行です。またここ
の掲示板はスペースが消えてしまうことがあるので@で置き換えて
います。@の部分を半角スペースに置き換えて実行してください。
これでコントロールパネルから「Microsoft Internet Explorer
5.5 とインターネットツール」を選択したのと同じ画面になりま
す。上記のコマンド文字列は Win98SE の場合ですので Win2000
では当然異なったものになると思いますが、今は手元に Win2000
マシンがありませんので確認できません。Win98SE の場合には
レジストリの
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
以下を探せば入力するコマンド文字列を見つけることができます。
多分 Win2000 でも同じ場所にあるでしょう。なぜか私の Win98SE
環境では上記以下の IE40 というところに記載されていますが。
>ただし使用しているバージョンがRC2(雑誌の付録についていた)
>ものなので仕方ないのかもしれませんが。
Win2000 の RC2 ということですか? もしかして製品版が出た今
となってはこれを使い続けることはライセンスの問題はないので
しょうか。仮にライセンスの期限内であったとしても、IE5.5 の
ような OS そのものといったものを RC2 にインストールするのは
かなり無茶ではないかと思うのですが。
それから IE5.01 に戻すのでしたら、ついでに IE5.01SP1 にして
しまうという手もあります。これもまだ英語版しか正式には公開さ
れていませんが、IE5.5 と同様に既に日本語版がダウンロード可能
です。ただしこれにしても RC2 にインストールするのは問題があ
りますが。
やばい!おじさまと同じ方法でIE5.5を入れたらMSHTAがエラーをだして
ランチャーが起動できなくなってしまった.▲鵐ぅ鵐好函璽襪靴茲Δ箸靴燭
アプリケーションの追加と削除も起動しない。(WIN2000で実行してるので
mshtaがエラーを出す。)ただし使用しているバージョンがRC2(雑誌の付録についていた)ものなので仕方ないのかもしれませんが。
そこで質問があるのですが
【おじさま】へ
はじめまして,呂犬瓩討覆里房遡笋垢襪里蘯採蕕C隼廚い泙垢氈コ遡笋靴茲Δ隼廚い泙后
windows2000にインストールしてhtaを使用できているのですか?
それとIEからバージョンを見たときバージョンの上にある絵が5.01のときから変化していますか。(私のは変わらなかった)
むたぐちさんへ
アプリケーションの追加と削除を使わずにIEをインストールする方法はありませんか?
管理人むたぐち さん
レスありがとうございました。
>さて、ここで私の個人的な意見を述べさせてもらうと、何もここまでWindowsのGUIを
>踏襲する必要はないんじゃないか、ということです。
これを言われてしまうと実も蓋もないのですが(^^;)、拘るならばどこまで
拘れるか、似せるならどこまで似せられるかが今回の目的でして、役に立つ
かどうかや便利かどうかは考えていません。HTML には HTML なりの HTML
らしいメニューというのはごもっともなのですが今回はそれを目的としませ
んでした。
>まあ、私は半分お遊びでやっていたつもりなんですが(爆)
要するに私もこれでして、私の場合そろそろ普段から頭を使っていないとヤ
バい年齢ですし。
>HTAでメニューバーといえば、kiaさんの「簡易テキストエディタ」が参考に
>なるのではないでしょうか。
早速ダウンロードさせていただきました。うーーん私とは次元が違います。
メニューバーに関するタグそのものを定義しているのでしょうか。こういう
使い方ができること自体知らなかったので勉強してみます。そもそも何でメ
ニューバーもどきを書いたのかといえば、管理人むたぐちさんのところから
のリンクで「学校で使うスクリプト」にあった ymedit.hta を拝見したから
で、HTML でこんなことができるならもっと似せてみようと思ったわけです。
>こちらは、xmlとかを使っていて、私にはよくわからないのですけど。
>HTAにおけるxmlの役割ってよくわからないですねえ…。
>ただ、HTMLのドキュメントを保持する変数(オブジェクト?)のような使い方を
>されているような気がするのですが…。(AKiOSさんのHTAでも)
XML については全然分かりません。AKiOS さんの WshLab を拝見させていた
だくと、HTML の中にさらに HTML を埋め込んで、その埋め込んだ HTML を
識別するための ID を設定するのに XML というのを使われておられるよう
に思いました。こういうことができるんだなと初めて知ったのですが、複数
の HTML をひとつのファイルにまとめられるのは、いかにも HTML をアプリ
ケーションらしくする HTA 向きかなと感じました。
>HTC(DHTML Behaviors)にするといいかもしれませんね。
この言葉すら知りませんでしたので、ご紹介いただいたサイトで勉強してみ
ます。
>Altキーを押すと、おそらくHTA本来のメニューバー(見えないですが)がアクティブに
>なるのでしょう。それを証拠に、Altを押してから↑を押すと、タイトルバー左端の
>アイコンをクリックしたときのメニュー(移動、最小化…閉じる等)が出ます。
確かに出ますね。で、今他のツールで見てみますと、標準の動作では Alt を
押すとメニューバーの最初のメニューにマウスポインタが来た時のような動作
になるんですね。
># embedはIEでは効かなかったはずですが。
># IEではbgsoundかな?
bgsound は IE のみ、embed は IE と Netscape のどちらでも使えるようです。
>サウンドレコーダーを使いましょう(^^;
>もしくは、Media Playerオブジェクトを使う手もあるでしょう。
>Alt+SpaceをSendKeysで送るというのはいかがでしょうか。(駄目か…)
あっ、やっぱし・・・・(^^;)。
>・表示させたメニューを消す方法がない
すみません。気付いてはいましたがメニューバー以外をクリックした時の動作に
なるのと、普通のメニューバーはタイトルバーをクリックした時にも消えるので
すが、この「タイトルバーをクリックした時」というのがどうすれば取得できる
のか分からず手を付けないままになっていました。
>・メニューのワンクリック選択ができない
考えていませんでした。おっしゃる通りですね。
>・サブメニューのサブメニューはどうするのか
>どうするんでしょう(^^;
気が遠くなりそうで敢えて考えませんでした(それでサブメニューのサブメニュ
ーがないメモ帳のメニューバーをテーマにした)。
貴重なご意見ありがとうございました。また宜しくお願いします。
To: 【おじさま】 さん
> HTA でメニューバーもどきが使えないかと試してみました。
HTAでメニューバーといえば、kiaさんの「簡易テキストエディタ」が参考に
なるのではないでしょうか。
こちらは、xmlとかを使っていて、私にはよくわからないのですけど。
HTAにおけるxmlの役割ってよくわからないですねえ…。
ただ、HTMLのドキュメントを保持する変数(オブジェクト?)のような使い方を
されているような気がするのですが…。(AKiOSさんのHTAでも)
> もう少し統一された方法に変更して、できたら簡単な設定だけでメニ
> ューバー相当のコードを吐き出すような汎用性のあるプログラムの元
> にしたいと思っています(今回のをエディタとして完成させる予定は
> 全くなし)。
HTC(DHTML Behaviors)にするといいかもしれませんね。
DHTML Behaviorsに関しては
http://www.st.rim.or.jp/~makoto3/
ここが参考になります。前紹介したときには気づかなかったんですが、
ダウンロード用アーカイブも用意されています。
# DHTMLを書く上で非常に参考になるページです。ただ、量が半端ではないので、
# 目的のものを探し出すのが大変かもしれません。(検索ページはあるけど)
# それと、このページの作成者は、まぎれもないプロの方でした。
> Alt+任意のキーがショートカットキーとして働くようにしていますが
> Alt キーだけを押すと次にどこかをクリックするとか何かキーを押す
> まで無反応になります。
Altキーを押すと、おそらくHTA本来のメニューバー(見えないですが)がアクティブに
なるのでしょう。それを証拠に、Altを押してから↑を押すと、タイトルバー左端の
アイコンをクリックしたときのメニュー(移動、最小化…閉じる等)が出ます。
これをどうしたらいいのか、というと難しいですね。先ほど紹介したページでも
Alt押下でメニューがアクティブになってしまうということが未解決問題と
されていました。
> サブメニューが表示されている状態で Tab を押すと、マウス操作をす
> るまでキーを受け付けなくなります。多分 Tab によってフォーカスが
> どこかへ移動した為ではないかと判断し、付けられる場所すべてにとり
> あえず tabindex="-1" を付けまくったのですが解決しません。
これに関してはよくわかりませんが、OnBlurイベント(フォーカスを失ったとき)を
使えば何とかなるかもしれません。
> 実際のメニューバーはサウンドで設定した音が鳴ります。鳴らす WAV
> ファイルはレジストリから取得できそうですが、メニューの動きと連
> 動して鳴らす方法がわかりません。多分 autostart を false にした
> EMBED でとりあえず読み込んでおいて、それをイベントに応じて鳴ら
> すのではないかと思うのですが、肝心の「鳴らす」方法が分かりませ
> ん。
# embedはIEでは効かなかったはずですが。
# IEではbgsoundかな?
サウンドレコーダーを使いましょう(^^;
WshShell.Run "sndrec32.exe /play /stop file.wav",0,True
こんな感じでしたっけ。
でも、かなりの遅延が予測されますね。
もしくは、Media Playerオブジェクトを使う手もあるでしょう。
使い方については、Win98/2000のfolder.httをご覧ください。
# あと、オブジェクトブラウザも
どちらにしても、あまり実用的な速度は得られないかもしれません。
DHTML側の機能実装を待つしかないのかも…。
(たぶん、将来的には実装されるんじゃないでしょうか。視覚的効果のつぎは
音声でしょうから)
> サブメニュー表示状態で左右の矢印キーでメニューが順に移動します
> が、実際のメニューバーはこの順番にタイトルバーのアイコンをクリ
> ックしたメニューが含まれます。このタイトルバーをクリックした時
> のメニューの出し方が分かりません。
先ほども書いたように、出し方自体はあります。
が、こういう出方だと意味がないわけなので、別の方法を考える必要があるでしょう。
Alt+SpaceをSendKeysで送るというのはいかがでしょうか。(駄目か…)
> ということで解決法について宜しくお願いします。
このHTAを使ってみて、他にもいくつか気になる点がありました。
・表示させたメニューを消す方法がない
通常、メニューは、別の部分をクリックしたら消えますが、このサンプルでは消えません。
textareaなどのOnClickイベントに記述が必要と思われます。
・メニューのワンクリック選択ができない
本物なら、たとえば、編集→検索を実行するとき、「編集(E)」でマウスボタンを押下し、
そのまま「検索(F)」をポイントしてからボタンを離すと、検索が実行されます。
・サブメニューのサブメニューはどうするのか
どうするんでしょう(^^;
これを実装するとなると、さらに困難が待っているでしょうね。
さて、ここで私の個人的な意見を述べさせてもらうと、何もここまでWindowsのGUIを
踏襲する必要はないんじゃないか、ということです。
そういうHTAを積極的に作成してきたのは他ならぬ私なのですが(^^;
まあ、私は半分お遊びでやっていたつもりなんですが(爆)
DHTMLには豊富な表現能力があるのだから、もっとかっこいいのを作ることは不可能では
ないでしょう。事実、あのMSだってWebページにはWindowsっぽい雰囲気はありませんね。
最初に挙げたページにも、良いデザインのメニューがいくつかありますので、参考に
してみるのもいいかもしれません。
# このへんはデザインのセンスが必要ですよね。私にはこれがないので苦労します(^^;
ただ、使い勝手という点では、WindowsのGUIは見習うべきところが多いのですが。
ところでIE5.5には、Popupオブジェクトがあるようなので、こちらも注目です。
あ、そういえば紹介するのを忘れていたのですが、以前メールでLib30さんから、IE4以上で
使えるpopupコントロールの存在を教えていただきました。
<OBJECT ID="IEPOP1" WIDTH=39 HEIGHT=27
CLASSID="CLSID:7823A620-9DD9-11CF-A662-00AA00C066D2"
CODEBASE="http://www.microsoft.com/windows/common/ikcntrls.cab#Version=1,0,0,8">
<PARAM NAME="_ExtentX" VALUE="1032">
<PARAM NAME="_ExtentY" VALUE="714">
</OBJECT>
<OBJECT ID="Menu1" WIDTH=1 HEIGHT=1 CLASSID="CLSID:F5131C24-E56D-11CF-B78A-444553540000" CODEBASE="http://www.microsoft.com/windows/common/ikcntrls.cab#Version=1,0,0,8"></OBJECT>
objectタグのところだけを抜き出すと、こういう感じになります。
# 使い方については、オブジェクトブラウザでわかるんじゃないかと思います。
ActiveXコントロールなので、ページ中にうめこんでおけば、勝手にダウンロード
されるそうです。(適切なセキュリティ設定をしておけば)
私がこの掲示板で大昔わめいていた、IEpopupコントロールは、じつはこれのことなのかも
しれません。
To: 西 さん
> IE5.5を入れました(【おじ様】と同じ方法で)しかしnavigableが利用できませんでした。kiaさんのところを参考にしたんですが…
おや、そうなんですか。なぜなんでしょうね。
↓一応、MSのリファレンスページです。
http://msdn.microsoft.com/workshop/author/hta/reference/properties/navigable.asp
IE5.5を入れました(【おじ様】と同じ方法で)しかしnavigableが利用できませんでした。kiaさんのところを参考にしたんですが…
HTA でメニューバーもどきが使えないかと試してみました。
HTML とスタイルシートとスクリプトの組み合わせはあまりやったこ
とがないので、作っている最中に初めて知ることも多く、name= や
id= を同じ文字列にしたタグは配列として扱えるのを知らなかった
(Netscape ではダメかもしれない)とか、テーブルの中身は TD の
innnertext で取得/設定できるのを知らなかったなど、知らなかっ
たことばかりで、やってることが書いた日によってバラバラのソー
スですが、一応それらしい動きはします。Win2000 のメモ帳のメニ
ューバーを真似たつもりで階層はひとつだけです。
http://homepage1.nifty.com/~tomiyama/menubar.lzh
に1週間ほど置いておきます(見た目がメモ帳のデザインそのものな
ので本当はマズいかも)。
当然エディタとしては全く働きません。メニューのうち「終了」と
「右端で折り返す」以外は機能せず、単にどのメニューを選んだかの
確認文字列が表示されるだけになっています。
もう少し統一された方法に変更して、できたら簡単な設定だけでメニ
ューバー相当のコードを吐き出すような汎用性のあるプログラムの元
にしたいと思っています(今回のをエディタとして完成させる予定は
全くなし)。
で、ここからが質問なのですが
Alt+任意のキーがショートカットキーとして働くようにしていますが
Alt キーだけを押すと次にどこかをクリックするとか何かキーを押す
まで無反応になります。
サブメニューが表示されている状態で Tab を押すと、マウス操作をす
るまでキーを受け付けなくなります。多分 Tab によってフォーカスが
どこかへ移動した為ではないかと判断し、付けられる場所すべてにとり
あえず tabindex="-1" を付けまくったのですが解決しません。
実際のメニューバーはサウンドで設定した音が鳴ります。鳴らす WAV
ファイルはレジストリから取得できそうですが、メニューの動きと連
動して鳴らす方法がわかりません。多分 autostart を false にした
EMBED でとりあえず読み込んでおいて、それをイベントに応じて鳴ら
すのではないかと思うのですが、肝心の「鳴らす」方法が分かりませ
ん。
サブメニュー表示状態で左右の矢印キーでメニューが順に移動します
が、実際のメニューバーはこの順番にタイトルバーのアイコンをクリ
ックしたメニューが含まれます。このタイトルバーをクリックした時
のメニューの出し方が分かりません。
ということで解決法について宜しくお願いします。
*IE5.5 正式版は1週間前から日本語版の登録場所情報が漏れていま
してダウンロードが可能でしたので、実は私 Win2000 と Win98SE に
とっくにインストールしてしまいました。公開前にあまりにダウンロ
ードされたためかその後ダウンロードできなくなったようですが、昨
日から再び可能になっています。スクリプトエンジンは新しくなって
います。インストーラの登録場所などは
http://www.nn.iij4u.or.jp/~showtake/root.sht
の掲示板に記載がありますが、案外今日の午後あたりには正式公開に
なるのかも。
むたぐちさんへ
早速やってみたら、うまく動きました。
どうも有難うございました!
○Windows Script 5.5 リリース
らしいです。WSHのオブジェクトモデルには変更はない(Windows Script5.1相当)ものの、
VBScript/JScriptのバージョンが5.5になっている由です。
具体的な変更点については未調査ですが、新物好きな方は、インストールしてみてはいかが?
5.5といえば、IE5.5ですが、こちらも正式版がリリースされているようです。
# もしかすると、いや、かなりの確率で、これにはWindows Script5.5が含まれているのでしょうね。
IE5.5がブラウザとしてどんな新機能を持っているのか私は知りませんが(笑)、
縦書き表示、色つきスクロールバーなどがサポートされたようです。
また、hta:applicationタグに、新しい属性がサポートされました。
右クリックメニューの表示を抑制するcontextmenu属性、文字列選択を抑制するselection属性、
リンク先ドキュメントをHTAのウィンドウに読み込むか、IEのウィンドウに読み込むかを
規定するnavigable属性が新たに追加されました。
kiaさんのページの受け売りなんですけども。
http://www.geocities.co.jp/SiliconValley-PaloAlto/5042/hta/hta_application.html
結局、Heightなどのプロパティは未サポートのようです。何ででしょうね。
IE5.5は、Windows2000sp1に付属するという未確認情報もあります。
sp1には結構期待しているのですが、6万だかのバグはどれほどつぶされたんでしょうかね。
To: 西 さん
> むたぐちさん。とてつもなく長いご指導ありがとうございました。どうも人に頼りがちな性格でしかも”ずぼら”なので読み飛ばしていました。
ちょっと長すぎましたね。
もっと簡潔に書いても良かったんですが、せっかくだから他の話題も盛り込んでみました。
> あと≪お世話になっている人たち≫というところをreadmeに追加しようと
> 思うのですが、このページとむたぐちさんを紹介していいですか?
もちろんOKです。
よろしくお願いします。
To: hidecha さん
> DOSプロンプトだと
>
> ftp -s:c:\ftpcom.txt > c:\ftp.log
>
> でうまくいくのですが、これをRunメソッドでしようとすると
> ホストをopenする時に
> ホストIP + > c:\ftp.log
> というIPアドレスを探しにいってしまいます。
WshShell.Runは、リダイレクトをサポートしていないため、こうなってしまいます。
そのため、command.comを併用する必要があります。
command.com /c ftp -s:c:\ftpcom.txt > c:\ftp.log
を指定してみてください。
はじめまして、むたぐちさん
いきなり質問なのですが、WSHからのftpの起動で悩んでいます。
プロンプトを外部ファイルに保存して -sで呼び出しているのですが、
同時にlogを取りたいのです。
DOSプロンプトだと
ftp -s:c:\ftpcom.txt > c:\ftp.log
でうまくいくのですが、これをRunメソッドでしようとすると
ホストをopenする時に
ホストIP + > c:\ftp.log
というIPアドレスを探しにいってしまいます。
何か良い方法はないでしょうか?よろしくお願いします。
早速実行したところうまく動作しました。
あと≪お世話になっている人たち≫というところをreadmeに追加しようと
思うのですが、このページとむたぐちさんを紹介していいですか?
むたぐちさん。とてつもなく長いご指導ありがとうございました。どうも人に頼りがちな性格でしかも”ずぼら”なので読み飛ばしていました。
じっくり読もうと思います。そしてじわじわ実行しようと思います。それとプレビュー版を使っていただいてありがとうございます。
To: はた さん
> MPEG2を流すのにMicrosoft Media Playerを使用しています。
> 「HTMLのMPEG2のメニュー画面からリンクをはって、再生させたい動画の
> 題名をクリックすると新しくウィンドウが生成されて、ウィンドウ内に
> はめ込まれているMedia Playerの画面で動画が再生される」という動きを
> 要求されているのです。
>
> VBSの存在を昨日知ったばかりというふつつか者ですが、どなたかヒントに
> なるようなものを教えていただけませんか?
VBSが必要かどうか、ちょっと疑問なんですが、たんに
<a href="movie.htm" target="_blank">movieのタイトル<a>
(movie.htmにはMedia Playerのオブジェクトを埋め込んでおく)
とかでは駄目なんでしょうか。
もし、任意のサイズでウィンドウを表示させたいのであれば、スクリプトの力を
借りる必要があると思います。
window.openが使えると思います。オプション指定で、ウィンドウのサイズや
場所を指定できます。
window.open "movie.htm","movie","height=200,width=400,status=yes,toolbar=no,menubar=no,location=no"
のように。
ウィンドウのポップアップは、無料レンタルWebページの広告に良く使われているので、参考に
なるかもしれませんね。
To: 西 さん
> スタートボタンの横にあるクイック起動バーのOEのショートカットは"%ProgramFiles%\Outlook Express\msimn.exe"と書かれています。
>
> "%ProgramFiles%の意味はなんでしょうか?
> *ドライブのAAAフォルダというふうにドライブ名にとらわれないパスの指定なのでしょうか?そして普通のフォルダでも通用するのでしょうか?
これはいわゆる環境変数ですね。%ProgramFiles%は、Program Filesフォルダの位置
(たとえばD:\Program Files)に置換されます。
cmd.exeを立ち上げて、setコマンドを実行すると、定義済みの環境変数が表示されます。
また、環境変数をWSHから容易に取り扱うことができます。
その方法についてはLesson11をじっくり読んでみてください。
# 細かいことが一杯書いてありますが、(とくにWin2000で扱う場合)重要なので我慢して読んでください。
# 基本的に、この部分に関してはWSHのヘルプは信用できません(^^;
…読まれましたか? では続けましょう。
このように、通常、環境変数の値を利用するには、WshEnvironmentオブジェクトか
ExpandEnvironmentStringsメソッドを使う必要があるのですが、
WshShell.Runでプログラムを起動するときに限っては、この必要がありません。
WshShell.Run """%ProgramFiles%\Outlook Express\msimn.exe"""
のように、環境変数を直に指定することで、プログラムを立ち上げることができます。
( " の指定の仕方については、OKですよね? スペースが含まれるパスの場合の記述法です)
# なぜこんな指定ができるかというと、WshShell.Runが、「きわめてDOSバッチ
# フレンドリーな設計をされている」ためと私は考えています。
# おかげで、スペース入りのパスをそのままでは解釈できないという不便さまで引きずっていますが
さて、次に%ProgramFiles%という環境変数そのものについて注意すべき点を挙げておきます。
まず、この環境変数はWin2000にはあるが、Win9xには定義されていません。
(もちろん、autoexec.batに自分で定義しておけば別ですが)
そのため、Win9xでも動作させるためには、別の方法が必要になってきます。
その方法がまたやっかいなのです。通常、特殊フォルダ(たとえば、お気に入り
フォルダとかフォントフォルダとか)のパスを取得するには、WshSpecialFolders
オブジェクト(これもLesson11で解説しています)を利用するのですが、
このオブジェクトを使っても、Program Filesフォルダのパスは取得できないのです。
通常、WshSpecialFoldersオブジェクトで調べられないフォルダのパスは、
レジストリを直読みする必要があります。
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders以下
を読み込むと良いことが多い(やり方はLesson11に書いてます)のですが、
Program Filesフォルダの場所は、ここにも記述されていないのです。
では、どうするのかというと、私にもよくわかりません(^^;
普通のアプリのインストーラを見ていると、初期ディレクトリとして
Program Filesを指定するので、調べる方法はあるはずなのですが、
おそらくAPIを使うでしょうから、WSHからは基本的に不可能です。
# WSHからのやり方をご存知の方がいらっしゃったら、ぜひ教えてください。
妥協案として考えられるのは、
Windowsフォルダのあるドライブには必ずProgram Filesフォルダがあるのだ、と
決め付けてコーディングしてしまうことくらいでしょうか。
例:
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
msgbox Fs.GetDriveName(Fs.GetSpecialFolder(0)) & "\Program Files"
さて、%ProgramFiles%という環境変数にはもう一つ問題点というか、よくわからない
点があるのです。
Win2000のマイコンピュータ→プロパティ→詳細→環境変数で表示される中に、
%ProgramFiles%がないのです。
そもそも、ここに表示される環境変数は、
"SYSTEM"(システム環境変数;すべてのユーザーに適用されるHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment)
"USER"(ユーザー環境変数;ユーザーごとに設定可能HKEY_CURRENT_USER\Environment)
の2つなんですが、ここには%ProgramFiles%はありません。
さらに
"VOLATILE"(揮発性環境変数;ログオフとともにクリアされるHKEY_CURRENT_USER\Volatile Environment)
にもありません。
ところが、
"PROCESS"(プロセス環境変数;現在読み込まれているすべての環境変数。読み込み専用)
を読み出してやると、何故か表示されるのです(コマンドプロンプトのsetコマンドでも同じ)。
いったいどこから沸いてきたんでしょう。
この件については、現在も調査中である。詳細がわかり次第、追って報告する。(特命リサーチ200X風に)
ふう…何故かとんでもなく長くなってしまいました。環境変数は奥が深いです。
ともあれ、ここまでの知識で、「環境によって異なる場所にあるプログラムを起動させる方法」
についてはフォローできるのではないかと思います。
今度は、HTAを特定のフォルダに入れておかないと動作しないという点に関しての
アドバイスです。
まず、相対パスの概念についてですが、
st.htaの
<IMG src="D:\WinWhistler\startnl2.jpg" border="-30">
という部分を
<IMG src="startnl2.jpg" border="-30">
あるいは
<IMG src="./startnl2.jpg" border="-30">
とすることで、同じフォルダ内の画像ファイルを表示させることができます。
絶対パスではなく、このような相対パスで記述することで、特定のフォルダにファイルを
おく必要がなくなります。
さて次に、HTAから別のHTAを実行する方法についてです。
WshShell.Runも、相対パスでファイルを指定することができます。(HTA/WSHどちらで使っても)
ただしここには一つ問題点があって、ショートカットからHTA/WSHを起動するとき、
作業フォルダを指定しておくと、その作業フォルダを基準としてパスが展開されてしまいます。
たとえば、
WSH.Run "main\Mcont.hta"
としておいて、そのままHTAファイルをダブルクリックした場合はちゃんと動作しますが、
st.htaのショートカットをつくり、作業フォルダを別のフォルダにして実行するとエラーに
なってしまいます。
そこで解決法ですが、次のような方法はどうでしょうか。
Set Fs = CreateObject("Scripting.FileSystemObject")
WSH.Run Fs.BuildPath(Fs.GetParentFolderName(location.pathname),"main\Mcont.hta")
…ちょっと書きすぎたですね(^^;
まあ、たまには良いでしょう。
> 余談ですがランチャーのプレビュー版を公開しました。
HTAをランチャーに使うというのは、新しいアイデアですね。
自分好みのランチャーを自由に作れるというのが魅力的だと思います。
おひさしぶりです。ランチャーを作って・・・・で質問していた西です。
最近気になっていることがあるのですが。
スタートボタンの横にあるクイック起動バーのOEのショートカットは"%ProgramFiles%\Outlook Express\msimn.exe"と書かれています。
"%ProgramFiles%の意味はなんでしょうか?
*ドライブのAAAフォルダというふうにドライブ名にとらわれないパスの指定なのでしょうか?そして普通のフォルダでも通用するのでしょうか?
余談ですがランチャーのプレビュー版を公開しました。
今日初めてこのページを見て、さっそく投稿させていただきました。
仕事で詰まっていて、みなさんのお知恵をお借りしたい次第です。
MPEG2を流すのにMicrosoft Media Playerを使用しています。
「HTMLのMPEG2のメニュー画面からリンクをはって、再生させたい動画の
題名をクリックすると新しくウィンドウが生成されて、ウィンドウ内に
はめ込まれているMedia Playerの画面で動画が再生される」という動きを
要求されているのです。
VBSの存在を昨日知ったばかりというふつつか者ですが、どなたかヒントに
なるようなものを教えていただけませんか?
Win98に、WMIのコアをインストールしてみました。
スタンドアロンでもちゃんと動作します。
セキュリティ関係がどうなっているのか、よくわからないのでちょっと怖いんですけども。
ところで、
"winmgmts:{impersonationLevel=impersonate}!//pcname"とするかわりに、
"winmgmts:{impersonationLevel=impersonate}!//xx.xx.xx.xx"
のようにIPアドレスでも指定できるようなのですが、これって
グローバルIPアドレスが指定できちゃったりしないですよね…。
まさかとは思うのですが、ちょっと心配だ…。
# こんなことがもしできたら、しゃれになりませんね…。
# チャブーンさんにお願いして実験してみようかな?
To: 藤田 健一 さん
> ありがとうございました。助言して頂いた通りに「RUNメソッド」を使用するとFunctionプロシージャを実行できました。
ちゃんと動きましたか。良かったです。
貴重な情報提供に感謝します。>藤田 健一さん & もぐさん
こんにちは。
<要点>
ありがとうございました。助言して頂いた通りに「RUNメソッド」を使用するとFunctionプロシージャを実行できました。
<詳細>
具体的には以下の要に、記述しました。
' Access アプリケーション オブジェクトのインスタンスを作成
Set appAccess = CreateObject("Access.Application.8")
'Access アプリケーション起動
appAccess.OpenCurrentDatabase 起動するアクセスのパス, False
' Functionプロシージャを実行
appAccess.Run "Table_Rename"
<発展>
Access アプリケーション オブジェクトをインスタンスすると、以下の様に記述できます。
' Access アプリケーション オブジェクトのインスタンスを作成
Set appAccess = CreateObject("Access.Application.8")
'Access アプリケーション起動
appAccess.OpenCurrentDatabase 起動するアクセスのパス, False
'テーブル名「STATISTICS」を「STATISTICS_yymmdd」に変更する記述
appAccess.DoCmd.Rename "STATISTICS_" & Left(Date, 2) & Mid(Date, 4, 2) & Right(Date, 2), acTable, "STATISTICS"
ポイントは{テーブル名「STATISTICS」を「STATISTICS_yymmdd」に変更する記述}をWSH側に直接記述できることです。WSHはすごいですね。
AKiOSさんのWSH Lab. 掲示板 記事検索プログラムがバージョンアップしたので、
公開させていただきます。
前バージョンに比べ、使いやすさ・機能ともに大幅にグレードアップしています。
ぜひ、ソースを見てそのテクニックを参考にしてみてください。
それと、たまっていたリンクを数件追加しました。
今回リンクに追加したUSERS GROUPにあるWSHのメーリングリストですが、私も早速加入しました。
で、過去記事を取り寄せてみると、WMIに関する話が一杯あって、大変参考になります。
はっきりいって、このMLの内容は非常に高度です。
私も機会があれば、話題に入っていければなあ、と思っています。
WSH Lab.(だいたい)1周年記念なのに、私自身が
作成したコンテンツを出せないというお粗末な状況ですが、ご勘弁を。
そのかわりといってはなんですが、ニュースの方に投稿したスクリプトを1つ転載しておきます。
# 今度は「スクリプトのお兄さん」かぁ(爆)
----ここから----
Windowsで定義されているショートカットキーの一覧を書き出すスクリプトを
書いてみたので、試してみてください。結構興味深い結果が得られますよ。
'keylist.vbs
iMsg=MsgBox("Windowsで定義されているショートカットキーの一覧を書き出します。" _
& vbCrLf & "この作業にはかなりの時間を要します。" & _
"また、シェルの動作が一部不安定になる可能性もあります。" & vbCrLf & _
"続行しますか?",vbExclamation+vbYesNo)
If iMsg=vbNo Then WScript.Quit
Set WshShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set Shell = WScript.CreateObject("Shell.Application")
sLnkFile=Fs.BuildPath(WshShell.Environment("PROCESS")("temp") _
,"test.lnk")
sTxtFile=Fs.BuildPath(WshShell.Environment _
("PROCESS")("temp") ,"keys.txt")
Set oShortcut1=WshShell.CreateShortcut(sLnkFile)
oShortcut1.TargetPath="notepad.exe"
oShortcut1.Save
Set oShortcut2=Shell.NameSpace(Fs.GetParentFolderName(sLnkFile)) _
.ParseName(Fs.GetFileName(sLnkFile)).GetLink
Set ts=Fs.CreateTextFile(sTxtFile)
For I=0 To 4096
oShortcut2.HotKey=I
oShortcut2.Save
ts.WriteLine I & vbTab & WshShell.CreateShortcut(sLnkFile).HotKey
Next
Fs.DeleteFile sLnkFile
ts.Close
WshShell.Run sTxtFile
'End
…で、これを実行すると、Ext+なんとか、というショートカットキーが定義さ
れていることがわかります。これがWindowsキーなのかな、と思っていたので
すが、そうではないようです。残念。
また、Ctrl+Esc+なんとか、という組み合わせはないようです。
ちなみに、「ショートカットのプロパティ」ダイアログでは設定できない
ショートカットキーは、スクリプトから設定できたりします。
'例:メモ帳のショートカットをデスクトップに作成し、Alt+アプリケーション
'キーをショートカットキーにする
Set WshShell = WScript.CreateObject("WScript.Shell")
sFile=WshShell.SpecialFolders("desktop") & "\" & "notepad.lnk"
Set oShortcut=WshShell.CreateShortcut(sFile)
oShortcut.TargetPath="%windir%\notepad.exe"
oShortcut.HotKey="Alt+APPS"
oShortcut.Save
ちなみに、oShortcut.HotKey="A" とかにすることで、Aキーを打つたびにメモ
帳が立ち上がるようにしたりできます。(何の意味があるのか?)
----ここまで----
To: もぐ さん
> 恐らくACCESSのRunメソッドが使えると思います。
フォローありがとうございます。
ちゃんとあったんですね。
なんとなく、WSHからも使えるような気がするんですが、CreateObject関数とかを
使えばいいのでしょうか。
>>藤田 健一さん
親切な回答でなくて申し訳ないですが、、
恐らくACCESSのRunメソッドが使えると思います。
詳しくはACCESSのHELPを参照の事。
------以下 ACCESS 97HELPより転載----------
Access またはユーザー定義の Function プロシージャあるいは Sub プロシージャを実行します。このメソッドは、以前は OLE オートメーションと呼ばれていた
オートメーションによって、別のアプリケーションから Access を制御する場合に便利です。たとえば、ActiveX コンポーネントから Run メソッドを使用して、Access データベース内に定義されている Sub プロシージャを実行することができます。.....
------以上 ACCESS HELPより転載----------
ACCESSでは試した事はないですがEXCELにも同様のメソッドが用意
されていて、そちらでは何度か使った事があります。
(WSHでなくVBからですが、、)
よさげなページを発見したので、紹介します。
http://www.kawabata.ksi.ne.jp/
ASP・WSHなどの実践的な使い方が取り上げられています。WMIも活用されています。
また、このページのリンク先にあったページ
http://www.users.gr.jp/
ここには、WSHなどのメーリングリストがあり、有用な情報が流れています。
To: ts さん
> 個別的にレジストリに触ることには、とても慎重(ナーバス)になっています。
たしかに、慎重にやることに越したことはないですが、よほど無茶をやらない限り、
システムが破壊されることはないでしょう。
もちろん、変更点の部分バックアップと、レジストリ全体のバックアップは必須ですが。
To: 藤田 健一 さん
> ACCESS97の中のモジュールを実行するスクリプトはどのように記述すればよいのですか?
ACCESSについては、私もよくわからないんです。
ただし、MSDNライブラリ(英語版も!)などをくまなく検索してみれば、
何かわかるかもしれません。
ACCESS97も、COMコンポーネントを提供しているでしょうから、理論的にはWSHからも
扱えておかしくはないのですが…。
あとは、そのような機能(mdbファイル内のモジュールの関数にアクセスする)が
提供されているかどうかですね。
こんにちは。分からないことがあります。お知恵を拝借したく、投稿させて頂きました。宜しくお願いします。
<要点>
ACCESS97の中のモジュールを実行するスクリプトはどのように記述すればよいのですか?
<概要>
WSHでEXCEL97やWORD98、ノートパッドを起動させ、コントロールするサンプルスクリプトは色々なところで記述されています。しかし、ACCESS97をコントロールするサンプルスクリプトはほとんど見当たりません。ACCESS97を起動するスクリプトはWshshellオブジェクトで記述できました。(WSHテクニック集記載)
そこで、ACCESS97を起動後、ACCESS97の中のモジュールを実行したいのですが、どのようにスクリプトを記述すればよいのですか?
<詳細>
ACCESS97を起動するスクリプトは以下のように記述できます。
たたし、パスは「C:\MY DOCUMENTS\CALCULATION.mdb」とします。
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run "C:\MY DOCUMENTS\CALCULATION.mdb"
このアクセス「CALCULATION.mdb」の中にはモジュール「ACTION_1」があり、さらにこのモジュール「ACTION_1」の中にはFUNCTION「Table_Rename()」があります。以下はFUNCTION「Table_Rename()」の記述です。
Function Table_Rename()
DoCmd.Rename "STATISTICS_" & Left(Date, 2) & Mid(Date, 4, 2) & Right(Date, 2), acTable, "STATISTICS"
End Function
このFUNCTION「Table_Rename()」を実行するスクリプトを、上記のACCESS97を起動するスクリプトの後に記述したいのですが、どのように記述するればよいのでしょうか?
参考までにFUNCTION「Table_Rename()」はテーブル「STATISTICS」のテーブル名を「STATISTICS_YYMMDD」に変更します。
むたぐちさん、コメントありがとうございます。
> 今回の場合は、クラスIDなどが絡んでくる可能性があるので、一筋縄ではいかないでしょう。
> 素直にWindowsの再インストール(Not 上書きインストール)を試すのが、結局早いのかも
> しれません。
やはりそうですか‥‥‥
マイクロソフトのナレッジベースから取り寄せた技術情報に、
「Wordが正しく起動しない場合」に、
「HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word\Data」
を削除すると事態が回復する場合がある。
という記述がありますが、同時に、
「レジストリの編集を誤ると、Windowsが起動しなくなる…」
というような恐ろしい記述もありますので、
個別的にレジストリに触ることには、とても慎重(ナーバス)になっています。
むたぐちさんのおっしゃられるように、クラスIDが絡んでいるとすれば、
(勉強不足ゆえ、間違っているかもしれませんが)
上記のキーを削除するだけで済む問題でもなさそうですね。
その場合には、FDISKからやるのが安全確実(無難)ということになりそうです。
# レジストリというものは、平時には便利なぶん、問題が起こると大事になりますね。
# ハイリスク・ハイリターンということになるのでしょうか…
To: ts さん
> レジストリの勉強から始める必要がありそうですね。
通常は、ユーザーが触れなくてもいい/触れてはならない領域なんですが、ここを
いじらないとどうにもならないというケースは良くあります。
今回の場合は、クラスIDなどが絡んでくる可能性があるので、一筋縄ではいかないでしょう。
素直にWindowsの再インストール(Not 上書きインストール)を試すのが、結局早いのかも
しれません。
To: TiMe さん
> リンク完了いたしましたので報告します。
どうもありがとうございました。
こちらからのリンクも早急に作りたいと思います。
> 開発言語系を作りましたので、そこから飛べるかご確認ください。
バナーが表示されていないようです。
こちらのサイトにあるバナーのアドレスを指定するか、バナーを
ご自分のサイトにコピーするかしてください。
リンク完了いたしましたので報告します。
開発言語系を作りましたので、そこから飛べるかご確認ください。
むたぐちさん、
> ただ、WORD2000には、修復セットアップのような機能があったはずなので、これを
>試されてみるのはいかがでしょうか。
こちらもやってみましたが、ダメでした。
> おそらく、OLEがらみの部分が痛んでいるのでしょう。これはレジストリの損傷が
> 原因である可能性が高いと思いますので、通常の再インストールでは駄目だと思います。
> (Windowsアプリはたいてい、アンインストールしても、レジストリまでは削除してくれないし、
> そのまま再インストールすると前の設定を引き継いだりしますし)
レジストリの勉強から始める必要がありそうですね。
アドバイス、ありがとうございました。
To: ts さん
> set a=createobject("word.application")
> a.visible=true
> a.documents.open("c:\a.doc")
> --
> 10回の起動トライで、2〜3回は起動するものの、7〜8回は起動に失敗し、
> WSHから「呼び出しは、呼び出し先で拒否されました。(80010001)」
> というエラーメッセージを返されます。エラー発生に規則性はないのですが、
規則性がない、というエラーが一番困りますよね。
> マイクロソフトHPの技術情報から、winerror.hというファイルにエラーメッセージ
> の説明があるというので見てみたのですが、
> このメッセージが英語では「Call was rejected by callee.」ということしか
> わかりませんでした。何か解決のヒントはございませんでしょうか?
申し訳ありませんが、どこかが異常である、という結論しか出せません。
ただ、WORD2000には、修復セットアップのような機能があったはずなので、これを
試されてみるのはいかがでしょうか。
おそらく、OLEがらみの部分が痛んでいるのでしょう。これはレジストリの損傷が
原因である可能性が高いと思いますので、通常の再インストールでは駄目だと思います。
(Windowsアプリはたいてい、アンインストールしても、レジストリまでは削除してくれないし、
そのまま再インストールすると前の設定を引き継いだりしますし)
To: go さん
> エラーの原因は引数の渡し方がまずかった様です。
> <xxx@yy.co.jp> → " <xxx@yy.co.jp>"(文字列)と変更したら
> うまく起動することができました。どうもありがとうございます。
そうですか。良かったです。
引数というのは、sendmail.vbsに与える引数でしょうか?
それにも「""」が必要なんですか…。
> 今後は自分でWshを作成し意見、質問等を提示したいと思います。
> それでは今後も宜しくお願いします。
こちらこそです。
To: TiMe さん
> リンクについては、今度の更新予定日7/2にアップしたいと思います。
よろしくお願いします。
こちらからのリンクは、次回更新日(未定)、ということで(^^;
> ところで、バナーはありますか?あれば教えていただきたいです。
トップページの下の方を見てください。
Bigバナーはやはり大きすぎですよね…。
あと、GIFなのが気になるところです。