Windows Scripting Host
■ このスレッドは過去ログ倉庫に格納されています
0001名無し~3.EXE
NGNGJScript でも VBScript でも書けるし、
ショートカットも作れるし、ドラッグ&ドロップもサポートしてるし、
レジストリもいじれるし、EXCEL や IE も制御できるし……。
使い勝手がいいと思うんだよね。
てなわけで、WSH をマターリと語りましょうぜ。
とりあえず、「おれはこんなことしてる自慢」とかでもいいです。
プログラム板じゃないんだし、簡単なネタでいいですよん。
0002sage
NGNG0003名無し~3.EXE
NGNG0004名無し~3.EXE
NGNG0005名無し~3.EXE
NGNG0006名無し~3.EXE
NGNG0007名無し~3.EXE
NGNG0008名無し~3.EXE
NGNG0009名無し~3.EXE
NGNG0011名無し~3.EXE
NGNG日本語でしか書けないけど、
ショートカットも作れるし、ドラッグ&ドロップもサポートしてるし、
レジストリもいじれるし、EXCEL や IE もWordも他色々制御できるし……。
使い勝手がいいと思うんだよね。
てなわけで、ひまわり をマターリと語りましょうぜ。
とりあえず、「おれはこんなことしてる自慢」とかでもいいです。
プログラム板じゃないんだし、簡単なネタでいいですよん。
0012名無し~3.EXE
NGNG逆にしんどい
つーか覚えても・・(以下略)
0014名無し~3.EXE
NGNGネタとしては桶
0015名無し~3.EXE
NGNG0016厨房
NGNGやっぱゲームはHSP。
仕事用ならひまわりで良いかな
0017名無し~3.EXE
NGNG00181
NGNG気軽に扱えるならひまわりでも HSP でもオッケ。
ひまわり、EXCEL との相性がいいし、
HSP だって小さな「お助けアプリ」組むにはいいよね。
(ゲームとか、それなりのソフト開発は別の話……HSP、向いてるけど)
例えば自分は、CD-ROM で AUTORUN.INF で起動するためには
実行ファイルじゃないとダメだから、HSP で「関連づけで実行」
だけの一行ソースのアプリ、作ったりもするよん。
0019名無し~3.EXE
NGNG前に一つのファイルに、PerlとVBを混ぜてスクリプト組んでたんだけど、
デバッグが大変でした。
お互いの苦手な部分を補いつつ、プログラム組めると思ったが
とことん甘かったと認識させられたよ。。
00201
NGNG一つのファイルにってのが猛者。猛者過ぎたね(^^;
0021名無し~3.EXE
NGNGなかなか思い通りのこと出来ない
0022
NGNG0024名無し~3.EXE
NGNGIISでデバックすると他のリクエストもとまるので
同僚に迷惑がかからないように、ローカルでやるぞ。
WSHマンセ−!
002624
NGNGADSI(LDAP)を使って、IISの設定を行うスクリプトも作ったぞ。
で、危ない設定は全て塞いだもんだよ。
でも、パッチはまた別問題だから、ワーム発生後はいろいろ大変だったよ。
あと、WMIを使えば、リモートサーバのシャットダウンや再起動もかけられるぞ。
これも、WSHでかけるよん。
0027名無し~3.EXE
NGNGもういっていいよ
0028名無し~3.EXE
NGNG? なんかあったの?
0029名無し~3.EXE
NGNG0030名無し~3.EXE
NGNGそういうことじゃなくて
↓こういうことで何かいいアイデアがあるかってことでは?
http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/download.htm
0031名無し~3.EXE
NGNG003324
NGNGもう既出かもしれないけど、Win98で
c:\windows\SAMPLES\WSH ってフォルダーになぜかWSHのサンプル
が入ってます。ためしてみてね。
じゃ。また。
00341
NGNG>>30 のページもいいですね。
自分も何か話題出さなきゃ……。
とりあえず、SendKeys でキーマクロっぽい処理をするのが好き
だったりします。素朴っしょ(^^; こんな感じ。
(ペイントソフト D-Pixed でアイコン作るとき用。
無題ファイルをアイコンサイズで開きます)
'D-Pixed でアイコン製作
Dim size
Const dpixed = "C:\SOFTWARE\dpixed\DPixed.exe" 'D-Pixed の場所
If MsgBox("32×32 で作る? 「いいえ」で 16×16 です。",4) = 6 then
size = "32"
Else
size = "16"
End if
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run dpixed
WScript.Sleep 2000 '起動にかかる時間(タイトルも含めて)
WshShell.AppActivate "D-Pixed" : WScript.Sleep 100
WshShell.SendKeys "^n" : WScript.Sleep 100
WshShell.SendKeys "%w"+size : WScript.Sleep 100
WshShell.SendKeys "%h"+size : WScript.Sleep 100
WshShell.SendKeys "~" : WScript.Sleep 100
0035名無し~3.EXE
NGNG↓はディレクトリ一覧を表示するやつ
var fso = new ActiveXObject("Scripting.FileSystemObject");
Dir("c:\\", "");
function Dir(strFolder, strIndent)
{
var folder = fso.GetFolder(strFolder);
var fc = new Enumerator(folder.SubFolders);
while(!fc.atEnd())
{
WScript.StdOut.WriteLine(strIndent + fc.item());
f = fso.GetFolder(fc.item());
Dir(fc.item(), strIndent + "\t");
fc.moveNext();
}
}
0036名無し~3.EXE
NGNGNUMLOCKが効かなくなるとか、なんとか。だよね?
SendKeysはそれくらいだから良いとして、問題はAppActivateだよね。
たまにフォーカス取得に失敗するでしょ。どうにか回避できないものかな。
0037名無し~3.EXE
NGNG00381
NGNGイイですね。
>>36 PC98 の件は知りませんでした。
AppActivate、こっちの環境じゃあまりエラーはないけど、
エラーを知る手だてが欲しいですよね。
あと、title でしか捕捉できないのが、ちょっと不満。
0039名無し~3.EXE
NGNGAppActivateはPID(プロセスID)を指定することもできる。
WSHからPIDを取得する方法は、
1. WMIのWin32_Processクラスを使う
2. WSH5.6のWshExecオブジェクトのProcessIDプロパティを使う
さらに、AppActivateは、そのウィンドウをアクティブ化できたか
できなかったかのbool値を返す。
これを利用して、アクティブ化できるまでループをかけることにより、
目的のウィンドウをほぼ確実にアクティブ化することができる。
0040名無し~3.EXE
NGNG0041しっつも〜ん!
NGNG0042名無し~3.EXE
NGNGヘルプには、まだないって書いてあったと思う。
00441
NGNGうわ、かなり突っ込んだお答え、ありがとうございます。
WMI ですか……(汗)5.6 ですか……(汗)
うーん、どっちも触ってないです。
けど AppActivate が値を返すっていうのは凄く役立ちます!
ヘルプで AppActivate のところだけさっと読んでみて諦めちゃダメですね。
とりあえず、>>34 のスクリプトの例で言うと
D-Pixed 起動後に Do....Loop Until WshShell.AppActivate ("D-Pixed")
するだけで、期待通りの動作になりました。
(Loop の中では Sleep 10 し続けて、ある回数以上でそれ以降の動作は中止……と)
やってみるもんですね。ありがとうございます。
0045名無し~3.EXE
NGNG0046名無し~3.EXE
NGNGIISを使いたい時、ワンクリックでサービス開始、管理ツールを開いたり。
ノートンのLiveUpdateもタスクスケジューラにまかせて
予定時刻の直前にオン、終わったらサービス切るようにしている。
あと無理矢理作られるレジストリを綺麗に、などなど。
0048名無し~3.EXE
NGNGWshExecを使うとこんな感じですね。
Const WshFailed = 2
Const WshFinished = 1
Const WshRunning = 0
Set WshShell = WScript.CreateObject("WScript.Shell")
Set oWshExec = WshShell.Exec("C:\SOFTWARE\dpixed\DPixed.exe")
If oWshExec.Status = WshRunning Then
Do Until WshShell.AppActivate(oWshExec.ProcessID)
WScript.Sleep 100
Loop
WshShell.SendKeys ...
End If
ちなみに、WshExecを使うと、実行したプロセスの
標準出力・標準入力が自由自在に操れる
ようになります。これでSendKeysが使えなかった
コンソールアプリの制御も可能になったわけです。
(しかもSendKeysより精度が高い)
WSH5.6はIE6.0に付属してます。日本語版単体ダウンロードはまだ。
0049名無し~3.EXE
NGNGオマエガナ
0051名無し~3.EXE
NGNGADO2.5があれば可能です。
以下はWindows板のロゴをダウンロードするスクリプトです。
ダウンロードにはMicrosoft.XMLHTTPを使っているので
IE5.0以上がインストールされているのが追加条件となります。
sSource = "http://yasai.2ch.net/win/2ch_logo_rc2.jpg"
sDest = "test.jpg"
Set oHTTP = WScript.CreateObject("Microsoft.XMLHTTP")
oHTTP.open "GET", sSource, False
oHTTP.send
Set Stream = WScript.CreateObject("Adodb.Stream")
Const adTypeBinary = 1
Const adSaveCreateNotExist = 1
Const adSaveCreateOverWrite = 2
Stream.Type = adTypeBinary
Stream.Open
Stream.Write oHTTP.responseBody
Stream.Savetofile sDest, adSaveCreateOverWrite
Set Stream = Nothing
Set oHTTP = Nothing
MsgBox "ダウンロード完了"
あと、BASP21などのコンポーネントを使うって手もありますね。
■ このスレッドは過去ログ倉庫に格納されています