1 名前:デフォルトの名無しさん [2007/04/16(月) 13:48:54 ] ( ´ゝ`) 誰か詳しい情報キボンヌ ●過去スレ WSH(・∀・)スレッド! pc11.2ch.net/test/read.cgi/tech/1055075469/ ●関連スレ お前ら、wsh使ってますか? part6 pc11.2ch.net/test/read.cgi/win/1155040873/ 【イケメン】阿龍スレ避難所@自己紹介【彼女募集中!】 life8.2ch.net/test/read.cgi/intro/1171897814/ ●個人サイト Windows Scripting Host Laboratory www.roy.hi-ho.ne.jp/mutaguchi/wsh/ Windows Script Wiki winscript.s41.xrea.com/wiki/index.php 音楽 winscript.mine.nu/music/ キャラネタ板・なな板のための何か charaneta.mine.nu/
369 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 22:15:10 ] >>368 与えられた オプションスイッチ スクリプトパス スクリプトへの引数 の順序が違ってても区別できますか?
370 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 23:27:36 ] >>366 ProcessExplorerとか?
371 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 09:10:14 ] >>369 区別できるよ コマンドライン文字列 を丸々見ることは可能だし
372 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 21:59:30 ] >>364 コンパイルすればライブラリいらなくなるの?マジかよ
373 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 22:10:24 ] 355も言ってるが、COMをライブラリとして使用する場合はスクリプトも実行ファイルも同じだよね ソースに取り込めばライブラリファイル(dll=ダイナミックリンクライブラリ)は不要になるけど それはCなどのまともな言語を使うかスクリプト言語を使うかって場合の話で スクリプトそのものとスクリプトをコンパイルしたものの差にはならないよな
374 名前:デフォルトの名無しさん [2007/12/06(木) 00:02:22 ] >>372 バカ。元発言嫁よ。 ”そういうコンパイラはありませんか?”って質問だよ。
375 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 06:37:39 ] そんなコンパイラがあれば CreateObject("Excel.Application")とかやってるスクリプトも ExcelをインストールしてないPCで利用可能に やべーすげー俺にも教えて
376 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 19:44:45 ] cmdからだとcscript.exe explorerからだとwscript.exe で起動されるようにはどうすればできますでしょうか?
377 名前:デフォルトの名無しさん [2007/12/11(火) 20:10:14 ] ヌケ作マイクロソフトに無理言うなよ。
378 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 20:56:05 ] >376 そんな事を考えるよりは素直にコマンドラインから cscript //nologo ***.vbs で 起動する習慣をつけておくほうが良いと思う。 またはvbsファイルをcscript.exeに関連付け、wscript.exeへのショートカットをSendToフォルダに入れておき、 エクスプローラでファイルを右クリック→送る→wscript.exeを起動させるとか。 あと、そこまで考えてるなら、ついでにvbsファイル内で以下のような条件文をつける手法も 覚えておくほうが良いかも。 If Right(UCase(WScript.Fullname),12) = "\CSCRIPT.EXE" Then WScript.Echo("このファイルはCSCRIPT.EXEから起動されました") Else WScript.Echo("このファイルはWSCRIPT.EXEから起動されました") End If
379 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 21:13:14 ] >>376 コマンドプロンプトでファイル名叩くとエクスプローラーの関連付けで 起動するのは仕様で無理なんジャマイカ? 難しそうだから、ScriptingGuyに聞いてみたら? >>378 彼が何を考えて、そうしたいのかわからないんだから、素直にやり方は ないと答えるか、スルーするのが吉。
380 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 22:07:03 ] Wrapper噛ませればいいじゃん
381 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 22:18:05 ] >>380 kwsk
382 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 00:20:36 ] cmd.exeから起動されたかどうかは区別できるので 同じコンソールにcscript.exeで起動し直すのが問題だな
383 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 00:28:43 ] 逆ならおk?
384 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 08:55:28 ] >>382 >cmd.exeから起動されたかどうかは区別できるので kwsk
385 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 08:58:59 ] >>381 >>384 kwskはGoogleで
386 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 09:16:57 ] KaWaSaKi
387 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:04:44 ] >>385 Googleの検索キーワードをkwsk
388 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 20:54:28 ] >>387 >>380 >>382 >>385 は性格が悪いので教えてくれるわけがない。
389 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 21:46:40 ] だったら性格のよい388が変わりに教えてやればいいのに・・・ それとも388も性格悪い仲間なの?
390 名前:384=388 mailto:sage [2007/12/12(水) 22:04:43 ] >>389 性格はとてもいいんだけど、387と同じで検索キーすらわからないんだが。 わかれば、すぐ教えるが、残念ながらこれ以上調べてもわからなさそう。
391 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 22:49:07 ] よくわからんけど Win32_Process とかじゃねーの?
392 名前:390 mailto:sage [2007/12/12(水) 23:10:04 ] WSHでは無理、という結論。 .NET系ならGetCurrentProcessを使って自分自身のプロセスを調べ、 さらに親プロセスがcmd.exeである事を判別する、って方法でいけそうだけど。 >>391 自分自身の実行パスをWMIで調べて、そこから親プロセスを割り出す、 って出来そうだけど、同じスクリプトが複数走ってるとアウトのような希ガス。
393 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:11:58 ] scriptname = "foo.vbs" set swl = wscript.createobject("wbemscripting.swbemlocator") set s = swl.connectserver set rs = s.execquery("select * from win32_process where caption='cscript.exe' or caption='wscript.exe'") p = -1 for each r in rs if instr(1, r.commandline, scriptname) then wscript.echo r.caption p = r.parentprocessid end if next set rs = s.execquery("select * from win32_process where processid=" & p) for each r in rs wscript.echo r.caption next 'ttp://d.hatena.ne.jp/Ratso/20070313/p1
394 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:14:32 ] >>393 同じスクリプトが複数走ってるとアウトのような希ガス
395 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:18:35 ] ごめん リンク貼り間違えてた ttp://www.geocities.jp/maru3128/wmi.html
396 名前:392 mailto:sage [2007/12/12(水) 23:22:19 ] >>393 貼り付け乙 穴があるのは承知で、同じような物を作ろうと思ってた。
397 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:26:24 ] 自分でうにーくなプロセス起こしてそこからたどればおk
398 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:29:20 ] 自分のプロセスidはどうやったらわかるの?
399 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:30:15 ] MSは健忘症だから自分のことも平気で忘れる
400 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:32:17 ] 自分の子の親は普通、自分だけど、例外もあるかも
401 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:36:14 ] 子供のidは分かるけど自分のidは分からんらしい
402 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:39:07 ] scripting.cocolog-nifty.com/blog/2007/01/id_548f.html
403 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 00:04:35 ] 自分探しって大変なんだな
404 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 00:04:48 ] >>402 子プロセスを起動してその親プロセスIDを取るのか スゲー力技
405 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 00:08:44 ] >>400 '子の親(=自分)を調べる方法でgetpid()を作ってるサイトがあったので 'そちらを参考(丸写しともいう)にして >>302 を改良 'ttp://www.vector.co.jp/soft/winnt/util/se420729.html 'ttp://www.vector.co.jp/soft/winnt/util/se383755.html set swl = wscript.createobject("wbemscripting.swbemlocator") set s = swl.connectserver set rs = s.execquery("select * from win32_process where processid=" & getpid()) for each r in rs wscript.echo r.caption p = r.parentprocessid set prs = s.execquery("select * from win32_process where processid=" & p) for each g in prs wscript.echo g.caption next next function getpid() set ws = createobject("wscript.shell") set e = ws.exec("mshta.exe -") p = e.processid set o = getobject("winmgmts:root\cimv2") set ps = o.execquery("select * from win32_process where processid=" & p) if ps.count <> 1 then e.terminate err.raise 9 end if for each p in ps getpid=p.parentprocessid next e.terminate end function
406 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 00:13:16 ] なんでメインとサブでわざわざ違うやり方してんの?
407 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 00:13:35 ] そこまでしてわかったところでどうする? cscriptで起動しなおしたって別ウィンドウが開くだけだ
408 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 00:29:41 ] もう充分だよ
409 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 00:31:33 ] >>407 =382だろ? だから、まずできるところまでやってんだろ。 よくいるんだよな。自分では何もしないで人のしてる事にケチをつける奴。
410 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 00:33:07 ] >>405 すげーな。そんな方法思いもよらなかった。
411 名前:デフォルトの名無しさん [2007/12/13(木) 01:46:48 ] 超手抜きだけど、環境変数で判別するって方法もあるよ。 Cドライブのカレントディレクトリが =C: という変数に入ってるなら cmd 無ければ explorer から起動したとみなす。 かなり乱暴なやりかただけど。Win XP 以外でうまくいくかどうかわワカラン。 Dim WshShell,Environment Set WshShell = WScript.CreateObject("WScript.Shell") Set Environment = WshShell.Environment("PROCESS") If Environment("=C:") = "" Then MsgBox "エクスプローラから起動されました" Else MsgBox "コマンドプロンプトから起動されました" End if
412 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 06:07:15 ] PROMPT=$P$G も使えそうだね 消されてたらだめかな
413 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 06:09:08 ] >>411 DドライブにOS入れててCドライブが無い変態さんもいるかも知れない
414 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 19:02:27 ] If Environment("=" & left(wscript.fullname,2)) = "" Then
415 名前:デフォルトの名無しさん [2007/12/14(金) 06:45:12 ] 凄腕プログラマーな皆様!!!!! おいらの悩みを聞いてください replaceで " の入っている文章を置換したんですがどうすれば良いんでしょうか 具ぐってもサンプルコードばかりで解決策が見つかりません
416 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 07:01:34 ] エスケープでググロ
417 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 17:43:49 ] replace('"', 'hoge')
418 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 17:47:37 ] 〜.replace(/"/g, """);
419 名前:デフォルトの名無しさん [2007/12/14(金) 20:45:55 ] vbs だと " の1個手前に " を置いてエスケープする。 "" の中に " を書きたいときは "" と書く。(C言語の \" のようなもの) つまり、 s = "今日は""楽しい""遠足" s = Replace(s, """", "うんこ") となる。
420 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 23:00:32 ] ソースキボンヌ その仕様自体は知っているのだけれど、 スクリプトのヘルプには何故かその記述が見当たらなかったような……
421 名前:デフォルトの名無しさん [2007/12/15(土) 02:30:04 ] SQL と似てるね。たとえば What's the vbScript という文字列をインサートするには、' を2回重ねて INSERT INTO MYBOOKS SET ID=1, TITLE='What''s the vbScript'; としなきゃならない。
422 名前:デフォルトの名無しさん [2007/12/15(土) 10:28:15 ] >>415 """それは言えないな""" """こ、この不自然な二重引用符は何でもないんだからね"""
423 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 16:09:35 ] >>420 なんでそんなもんがいるんだ?
424 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:46:31 ] >>423 'に挟まれた'を挟み込む'ではなくて文字列の'にするため
425 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:02:40 ] いや、>>423 のいう「そんなもん」は「ソース」のことではないかと。 ついでに野暮なツッコミをしておくと、>>424 の書き方だと シングルクォーテーション("'")を単なる文字として読ませる工夫をしていないので 「に挟まれた」を挟み込む「ではなくて文字列の」にするため と読めてしまうな。
426 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:06:50 ] ちなみに、ややこしいようなら JavaScript では "\x22"、VBScript では Chr(34) と書く方法もある。 (ダブルクォーテーションの場合ね)
427 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:52:18 ] JavaScriptだったら '"' とか "\"" とかの方が良くね?
428 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 13:48:01 ] ダブルクォートを定数で作っておくのが親切ってもんです
429 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 13:54:46 ] >>428 ヤメレ キショクワルイ
430 名前:デフォルトの名無しさん [2007/12/17(月) 06:03:14 ] こんなおいらにいろいろ教えて頂いてありがとうございました。 ''か""""かChr(34) でOKって事ですね 陳宮ベリーマッチでした
431 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 16:31:39 ] Const vbQuote = """"
432 名前:デフォルトの名無しさん [2007/12/17(月) 19:32:56 ] ふつうに書けば a = "おまいは""アホ""か!" でもこんな書き方する人もいるの? Const vbQuote = """" b = "おまいは" & vbQuote & "アホ" & vbQuote & "か!" ダサ・・・
433 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 01:27:40 ] ダサいのは可読性を考慮しないオナニー専門のお前
434 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 03:35:02 ] CLSIDはあってもPROGIDがないものはどうやってCreateObjectする?
435 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 08:57:54 ] アルファがベータをカッパらったらイプシロンした。なぜだろう?
436 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 16:23:23 ] >>434 一覧で全部体当たりする
437 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 16:47:09 ] wsf or wsc or htaで<object>使うしかないだろ vbsやjsでは無理だろ
438 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 20:45:57 ] 無理と言うか、出来る方が問題やん
439 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 21:20:53 ] ほなwsf wsc htaも問題やな
440 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 21:58:41 ] >>438 問題のあることやっててゴメンナサイ
441 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 23:23:27 ] そもそもそんな必要性がないだろ
442 名前:デフォルトの名無しさん [2007/12/20(木) 00:08:25 ] >>433 可読性??wara 「"」の読み方も知らんの?ダサ〜〜w おしえてあげよっか〜〜〜〜? やだよ〜〜ん。おまいの熊度が気に入らないから教えてあげんよ〜〜だ。
443 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 01:10:50 ] 煽りの返しレスはすぐにつけないと、ただのキモい粘着野郎としか扱われませんよ 要約:KY
444 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 01:11:32 ] さんご礁は黙ってろ
445 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 01:47:30 ] >>434 自分専用スクリプトなら、適当にレジストリエディタでProgIDをでっち上げればいいw。
446 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 02:04:59 ] getobject("new:{ clasid... }")
447 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 11:52:43 ] new:なにこれ?
448 名前:デフォルトの名無しさん [2007/12/20(木) 19:35:47 ] >>443 で。「"」 の読み方はわかんのかい?
449 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 19:51:05 ] queue moniker queue:/new:classid or progid
450 名前:デフォルトの名無しさん [2007/12/21(金) 18:49:10 ] vbsかwsfでftpの処理をして処理内容をリダイレクトしようとしています。 ftpのコマンドを書いたファイルを読み込ませているのですが、うまく処理できません。 コメントを切り替えて下記10通りのパターンで試してみたのですが、 一つ目のRun以外動作していないようです。 ftpもできないしログも吐かないし、エラーも出ません。 その後のEchoは表示されます。 ------------------ Dim objShl Set objShl=Wscript.CreateObject("WScript.Shell") objShl.Run "ftp -s:crp.ftp", 0, true 'objShl.Run "ftp -s:crp.ftp > ftp.log", 0, true '× 'objShl.Run "ftp -s:crp.ftp >> ftp.log", 0, true '× 'objShl.Run "ftp -s:crp.ftp > ftp.log", 1, true '× 'objShl.Run "ftp -s:crp.ftp > C:\db\wsh\ftp.log", 0, true '× 'objShl.Run "ftp -s:crp.ftp >> C:\db\wsh\ftp.log", 0, true '× 'objShl.Run "ftp -s:C:\db\wsh\crp.ftp >> C:\db\wsh\ftp.log", 0, true '× 'objShl.Run "ftp -s:C:\db\wsh\crp.ftp > C:\db\wsh\ftp.log", 0, true '× 'objShl.Run "ftp -s:/db/wsh/crp.ftp >> /db/wsh/ftp.log", 0, true '× 'objShl.Run "ftp -s:/db/wsh/crp.ftp > /db/wsh/ftp.log", 0, true '× WScript.Echo "完了" ------------------ OSはWindows2003 Serverです。 上記をコマンドプロンプトで実行すると、ftpもログも正しく処理できています。 違っているところや、別の対処方法等教えてください。 よろしくおねがいします。
451 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 18:54:12 ] cmd.exe /c ftp....
452 名前:450 mailto:sage [2007/12/21(金) 19:04:49 ] >>451 ありがとーーーーー!!ヽ(・∀・ )ノ できました!
453 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 23:29:39 ] objShl.Exec
454 名前:デフォルトの名無しさん [2007/12/28(金) 13:37:03 ] WSHでドライバインストールって出来ませんか? 著名確認画面で止まるのを自動で進みたいんですが。
455 名前:デフォルトの名無しさん [2007/12/28(金) 16:24:02 ] >>454 マウスクリックするだけじゃん。 どんだけズボラなんだよ。 スクリプト書く方がはるかに手間がかかるよw なんて冗談はさておき、たぶん、自分のPCなら自分で マウスをクリックすればいいだけな話だが キミやりたいのは、不特定多数の他人のPCにインストールしたい ということなんだろ? たぶん sendkeys って命令を使えばいいんだと思う。 (誰か詳しいひとがフォローしてくれるはず) それはそれとして、いったい何のための署名なのか。よく考えて欲しい。 システムに深刻な障害を与える可能性のあるソフトを 何の確認もせずに自動インストールできてしまう機能がOSに 備わっていたら?それはセキュリティーホールだよね。 ウイルス作成ハッカーの格好の餌食じゃん。
456 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 18:41:26 ] >>455 >それはそれとして、いったい何のための署名なのか。よく考えて欲しい。 親切で言ってるとは思うが、余計なお世話だろ。 >>454 出す情報少な杉。ダイアログを自動で操作したいだけなら455の言うとおり ウインドウハンドルを取得してsendkeys使えばいい。
457 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 20:18:55 ] >>455 SendKeysは知っていますが・・・ それから、著名確認を無効にする事がWindowsでは出来ますよ。 貴方の言うように著名確認が無いならそれはセキュリティホールだというなら、どうして そのような機能がWindowsについているのでしょうか? >>456 すみません。携帯電話からだったのでつい・・・・。 今度はPCから書いています。 確かにSendKeysを使えば良いのでしょうが、確認ダイアログ が出るかどうかが分からないとか、 AutoHotKeyの IfWinExist みたいな 指定したタイトルの ウィンドウが存在するかどうかチェックとか、そういった事はWSHでは出来ないのかなぁと。 要するに、SendKeysだとAppActivateと組み合わせても、タイミングによってはユーザの介入 によって上手くいかない可能性もあるので、そういった不安要素を取り除いて確実なスクリプト にしたいなぁと思ったのですが、無理っぽいですねぇ・・・・ マニュアルを "存在するか" とか "ドライバ" とか 色々検索してみたのですが、どうも なさそうでした・・・・。
458 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 20:36:01 ] >>457 本筋とは関係ないが、「著名」じゃなくて「署名」だよ。
459 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 21:23:03 ] 「しょめい」じゃどう変換しても「著名」にはならんから ずっと「ちょめい」と読んでいたんだろうね。
460 名前:456 mailto:sage [2007/12/28(金) 21:27:53 ] >>457 突っ込みどころが多杉。 >>455 がsendkeys出したのは、情報小出しのおまえが悪いんだろ。 それに対して礼も言わずにバカにしたようなレスはどーなのよ。 携帯電話なんてそっちの事情はしらねーんだよ。 >AutoHotKeyの IfWinExist みたいな 指定したタイトルの できるが、「確認ダイアログが出るかどうかが分からない」って事じゃ 使いようがないだろ。 ある程度知ってる人ならスマートな解決方法がわからないまでも、この流れで 2種類の解決方法が思い浮かぶだろうな。 ブチむかついたので、以上。
461 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 21:27:59 ] >>458 うっはw 指摘ありがとうございます。 超恥ずかしいOTL オレバカす・・・・・ それはそうと、スクリプトはどんなコンピュータで実行されるか分からないじゃないですか? ハードウェアのインストールウィザードで一旦止まりますが、要はユーザがそれを見て よく分からずに「インストール停止」を選べないように、出てきた瞬間にインストールを選択 させてインストールしたいのです。 最悪かなり重いマシンで実行する事を想定すると Wscript.Sleep 10000で10秒ぐらいは待って それから objWshShell.SendKeys "{Left}" Wscript.Sleep 100 objWshShell.SendKeys "{Enter}" ってやらないと、まだハードウェアのインストールウィザードが出てきてないのに SendKeysしてしまうと失敗しますよね。 ではそのように作ったスクリプトを高速なマシンで実行した場合はどうなるか・・・ ハードウェアのインストールウィザードは出ているのにしばらく停止したまま。その間にユーザが インストール停止を選択してしまうかもしれない。そうでなくても無駄に待ち時間が長いのは問題。 だから、出てきたらすぐインストールを選択させたいんです。無駄な待ち時間をなくしたい。 そうするにはどうすればいいのでしょうか? AutoHotKeyだと IfWinExist タイトル で そのタイトルが存在するかどうかチェックとか そういった事が出来たのですが、WSHではどうするのかなぁと。 存在しないタイトルを objWshShell.AppActivate タイトル ってやってアクティブにしようとして 存在しないのだから多分 Falseが帰ってくるから、それがTrueになるまで1秒ずつ実行するような 無限ループでも作ればいいのでしょうか?こんな感じ Do While objWshShell.AppActivate("ハードウェアのインストール") <> True Wscript.Sleep 1000 Loop しかしこうするとなんらかの原因で永遠にAppActivateするプログラムが立ち上がってこなかったら 無限ループに陥ってしまうし・・・どうしたらいいんでしょう?
462 名前:461 mailto:sage [2007/12/28(金) 21:35:15 ] >>460 すみませんでした。 ただ、署名を無効にするオプションが存在するのに署名無視でインストール なんて出来るとセキュリティホールでしょ?って言っていたので、それはおかしいなと思って レスしたまでです。で、携帯電話からってのは確かに、貴方には知る由もありません。申し訳ございませんでした。 >できるが、「確認ダイアログが出るかどうかが分からない」って事じゃ 方法をぜひご教示願えませんか? >ある程度知ってる人ならスマートな解決方法がわからないまでも、この流れで >2種類の解決方法が思い浮かぶだろうな。 向学のために2種類の解決方法とスマートな解決方法をご教示願えませんか? >ブチむかついた "ブチ"って、山口県辺りの人ですか?
463 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 22:14:01 ] >>461 >無限ループに陥ってしまうし・・・どうしたらいいんでしょう? 有限ループにする
464 名前:461 mailto:sage [2007/12/28(金) 23:48:48 ] >>463 なるほど・・・ i = 0 Do While objWshShell.AppActivate("ハードウェアのインストール") <> True WScript.Sleep 1000 i = i + 1 If i >= 10 Then WScript.Popup "エラー!ドライバのインストールに失敗しました", 5 WScript.Quit End If Loop こんな感じですかね。。。 それともう1つ聞きたいのですが、指定した名前のドライバがきちんとインストールされているか どうかIfで分岐する事はできませんか? もう具体的に出した方が分かりやすいと思いますので言いますが UltraVNC のVNC Hook Driver のインストールをしたいのです。 もしインストールされてなければインストールを実行(全自動) インストールされていればインストールはせずにスクリプトを終了させる といった分岐です。
465 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 11:38:43 ] もう全部手作業でやった方がいいと思うよ。
466 名前:デフォルトの名無しさん [2007/12/29(土) 15:19:42 ] >>462 「署名を無効にするオプションが存在する」 なら、無効にしとけばいいじゃん!頭悪っ
467 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 15:29:01 ] あーあ、言っちゃったよ
468 名前:461 mailto:sage [2007/12/29(土) 18:09:53 ] >>466 そういう設定に変えちゃらめぇ〜〜〜!
469 名前:デフォルトの名無しさん [2007/12/30(日) 01:12:43 ] 方法があるのに「らめぇ〜」ってどういう事だよ。もう付き合いきれん。