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/
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 ] 方法があるのに「らめぇ〜」ってどういう事だよ。もう付き合いきれん。
470 名前:デフォルトの名無しさん [2007/12/30(日) 08:43:10 ] らめぇ〜って何? 日本語の乱れ?
471 名前:デフォルトの名無しさん [2007/12/30(日) 08:53:40 ] >>470 お前は萌えを知らんのか?
472 名前:デフォルトの名無しさん [2007/12/30(日) 10:27:00 ] 萌えは知っているがみさくらなぞ知らん!
473 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 12:37:18 ] MSはWSHというものが Windowsの自動操作を行えると主張するが AppActivate+SendKeysはWindowの基本設計とは完全に矛盾しており システムのクラッシャーになりかねない OLE対応アプリ/機能以外は操作できないというのは 実質WSHには自動操作はできないという事を示している
474 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 13:34:25 ] 「Windowsの」ここ重要 決して「Windowsアプリケーションの」とは言っていない。
475 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 13:37:55 ] もちろん、ドライバのインストールはWindowsに関わることだけど、 上にもあるようにセキュリティに関わることだから、 自動化に制約がかかるのは勘弁してやれ。
476 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 15:00:30 ] でもさ、市販ソフトのインストーラでも、うらでダイアログポチポチしてるよね。 Windowsってなんなの?って感じ。
477 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:56:40 ] VBSと組めばバッチなんていらんくね?
478 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 20:31:53 ] WScript.ShellのPopUpの秒指定、ExcelやIEやHTAで効かないんだけど 使えているひともいるみたいで、環境依存なの? ttp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=53250;id=excel
479 名前:デフォルトの名無しさん [2007/12/30(日) 20:33:11 ] そう思うなら、 COPY *.TXT A:\ と同等の機能をVBSで書いてみろよ。 適材適所で使い分けの出来ないヤツは役に立たん。
480 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 22:51:01 ] >>478 既知の問題で、(おそらく)環境依存で、原因不明で、解決法無し(不明)です スレ違いなので詳しくは書きませんが代用法もあるわけですし 問題が起きるようならキッパリ諦めてください
481 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 04:06:48 ] >>479 Option Explicit Dim objFSO Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") objFSO.CopyFile "*.txt" "A:\" Set objFSO = Nothing こんな感じでしょうか?
482 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 04:49:23 ] 前から思ってたんだがWScript.つけてるコードって どこソースなんかね タイピング増やしたくない俺は滅多に使わないんだが
483 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 05:15:55 ] Scripting Guyですよ
484 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 05:16:47 ] どこソースって、MSDN(WSHヘルプファイル)には object.CreateObject(strProgID[,strPrefix]) object WScript オブジェクトです。 って書かれてるわけだが
485 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 05:19:20 ] ちゅーか別物だよね
486 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 05:26:43 ] Scripting.FileSystemObjectのインスタンス作る場合に置いては別物じゃないよ 大元は一緒でラップの仕方が違うだけだし
487 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 05:42:27 ] クライアントサイドはCreateObject() サーバサイドはServer.CreateObject() って記述してる
488 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 09:02:11 ] >>487 それはまた全然別の話だよw
489 名前:デフォルトの名無しさん [2007/12/31(月) 16:43:29 ] >>481 ブッブーーッ!はいダメ。 無理すんな。素直にバッチファイル書けよ。
490 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 18:28:02 ] ダメな理由くらい書け
491 名前:デフォルトの名無しさん [2007/12/31(月) 18:49:49 ] ↑ なぜダメか一人でずっと悩んでろ!
492 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 18:56:41 ] じゃあ俺は駄目だと思わないから481を使うね。
493 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 20:43:42 ] >>489 "*.txt" と "A:\" の間にカンマがないのがダメってこと?
494 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 20:54:13 ] CreateObject("Scripting.FileSystemObject").CopyFile "*.txt", "A:\"
495 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 21:11:40 ] >>479 がダントツで役立たずだな
496 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 22:14:00 ] 対話的じゃないとかいうオチか?
497 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 00:29:29 ] >>478 WScript.Shellという名前からしてWSH専用だろ
498 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 00:32:29 ] >>479 はCopyFileで*.txt使えること知らずに複数行になるはずと 勘違いしてたに1票
499 名前:481 mailto:sage [2008/01/01(火) 01:18:11 ] あっちゃーやっちゃった。すみません。 objFSO.CopyFile "*.txt", "A:\" ↑こうですね・・・・。。。
500 名前:デフォルトの名無しさん [2008/01/01(火) 02:35:00 ] 500ゲット!あけおめ
501 名前:デフォルトの名無しさん [2008/01/01(火) 13:01:20 ] >>499 はいそのとおり。 バッチなら COPY *.TXT A:\ で済む、バイトの女の子さえミスしようがない超超超簡単なことさえ WSHで書くとミスっちゃうだろ? ミスの確立が増える。そういうこと。 だから、WSHがあればBATはいらない、などとイキガッテないでさ、適材適所で使い分けれ。 それにしても、超〜〜思うツボだな。わざとミスってくれたのかと思ったよ。 天然だったんだねw
502 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 13:08:20 ] (ノ∀`) アチャー
503 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 13:10:06 ] >ミスの確立が増える。 狙って書いてるのか?w
504 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 13:20:23 ] 天然だろ
505 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 14:11:33 ] >>501 かんじで かくと みすっちゃう だろ? いきがって ないで ひらがなで かけ。
506 名前:481 mailto:sage [2008/01/01(火) 14:35:00 ] >>501 はい、今回WSHで書いて、確かにBatで書いた方が良い場面もある事を痛感しました。 WSHとBatを混合させると言うのはどうなんでしょうか? Dim objWshShell Set objWshShell = WScript.CreateObject("WScript.Shell") objWshShell.Exec "copyFile.bat" みたいな。でもこうすると処理が複雑になったときにbatとWSHと行き来するような事になると なんかバグが出てきそう・・・。その時修正が大変じゃないですかねぇ・・・。 それに出来れば1つのスクリプトファイルで済ませたいし・・・ >>505 ワラタw
507 名前:デフォルトの名無しさん [2008/01/01(火) 15:02:00 ] >>503-505 ネット初心者?
508 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 16:08:59 ] 氏ね それはこういうやつだろ。「確立」は単なる間違い。 >>506 バッチファイル内のCALLで他のバッチファイルを呼んだ方が解り易いかと。 基本バッチファイルで、足りない機能をWSHでフォローって感じで 書いていけばいいんじゃないかな。 無論、内部・外部コマンドが殆ど不必要なら、直接WSHで書いてしまえばいいし。
509 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 17:08:23 ] >>478 リンク先の代替法はSendKeys使っててもひとつやね VBSファイル作って呼び出すのが確実
510 名前:デフォルトの名無しさん [2008/01/01(火) 20:18:13 ] >>506 おもしろい発想だけど、たとえばC言語でこんな・・・ main() { system("MKDIR \"C:\\Program Files\\MyApp\"") system("COPY *.* \"C:\\Program Files\\MyApp\""); system("ECHO インストールが完了しました。||PAUSE"); } こんなの書いて、「オレ、C言語でプログラムかいたおw。スゴイでそ!」 なんて言ったら笑われるだけ。他の言語でも同じこと。
511 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 21:54:49 ] C言語が使いこなせてるわけではないが C言語でプログラム書いたというのは事実なわけだが
512 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 22:43:12 ] 笑われるのもまた事実というわけだ
513 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:32:04 ] JScriptのマクロ変数の値を出すことできる? WScript.Echo(@if (@_Win32) 'Y' @else 'N' @end); はできても、 WScript.Echo(@_Win32); はできない
514 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:37:34 ] スレ違い
515 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 02:13:13 ] >>513 @変数は、JScript コードでは使えませんよ。 @setや@ifの中でしか使えない仕様です。 >>514 プログラム板で有名な基地害さんじゃありませんかw
516 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 02:53:29 ] >>513 @_win32じゃね? >>514 それ見ていつも思うけど 誘導先が書いてないんじゃ無意味なレスじゃね?
517 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 05:05:50 ] そうでもないか
518 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 12:01:50 ] >>510 ちょwwwwそれはないですwwwww さすがにそれはひどい・・・・。
519 名前:デフォルトの名無しさん [2008/01/02(水) 15:06:44 ] で、ドライバがインストールされているかどうかで処理を分岐させることはWSHではどうすれば良いのでしょうか?
520 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 15:10:57 ] If Then Else End If
521 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 19:17:49 ] >>520 いや、その構文を使うのはわかるけど、 If の後に書く内容ですよ。 どういう風に書いて真偽を返させればいいのかが全く検討がつきません。 If ドライバがインストールされている Then MsgBox ドライバインストールされてるよ〜 Else MsgBox ドライバインストールされてないよ〜 End If の"ドライバがインストールされている" と言う判定をどう書けばいいのかをお聞きしています。
522 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 19:27:25 ] インストールされた状態とされていない状態の差分を調べろ。 レジストリでも覗いとけ。それ以上はこのスレの範囲外。
523 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 20:45:49 ] ・複数のバイナリファイルの文字列を置換したい。 ・置換リストを作って置換したい。 ・CUIでもいい。 これらを実行したい場合は、WSHで出来ますか?
524 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 21:27:49 ] >>523 WSHとCOM(標準のものだけで事足りる)で出来ますよ
525 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 22:11:30 ] バイナリはpowershellのほうが楽
526 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 22:30:03 ] >>524 COMとはCOMMAND.COMのことですか? >>525 win2kは未対応のようで、うちでは使えません。
527 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 05:08:06 ] よくActiveXコントロールの事 ActiveXって言う人いるよね。 もちろんActiveXが何かは殆どわかってない人が多い
528 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 12:46:44 ] 特撮ヒーローの名前だ間違いない
529 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 16:09:38 ] >>526 win2kではCMD.EXEだな
530 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 16:22:51 ] WSHでバイナリは読めても書くのが大変だから、PowerShell使え win2kでも誤魔化せば使えるらしい
531 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 16:38:06 ] つVBA
532 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 16:57:36 ] >>529 そういうボケはいらん COMコンポーネントだろ
533 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 17:05:17 ] そういうボカシタ話はいらん 具体的なProgIDを書け しらんなら書くな
534 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 17:32:01 ] CreateObjectすんのにProgIDとか使わんがな
535 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 17:40:10 ] ProgID使わないでどうやってCreateObjectするんだよ。 っていうかググればADODB.Stream使うってすぐ出て来るよね。
536 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 17:42:03 ] ADODB.Streamにバイナリ書き込むのが面倒だって
537 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 18:18:04 ] WSHでも理論上はできそうだな。 俺は面倒臭がりだからC#で書くけど。
538 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 20:22:49 ] >>522 レジストリを覗く・・・それぐらいしか手が無いとは・・・・OTL
539 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 20:55:40 ] >>538 WSHはそういうもの 痒いところに手を伸ばすにはダルシムレベルの修行が必要
540 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 22:37:30 ] wmi
541 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 00:19:04 ] 残念ながらそれはハズレだ
542 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 03:12:15 ] >>539 別にWSHがそうだから、 とかいう問題じゃなくね?
543 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 10:01:01 ] きっとWSH以外ならもっと簡単な方法があるんだろう 僕にもその方法を教えてください
544 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 11:46:40 ] そういえばWindowsXPの「プログラムの追加と削除」ってHTAじゃなかったっけ
545 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 14:37:11 ] WSHでアイドル時の検出とか出来ませんか? Windowsのタスクスケジューラでアイドル時検出試してみたのですが とりあえず1分アイドル時間が続いたら hoge と表示してpauseしてそれから終わらせるスクリプト をスケジュール登録してみたのですが、 負荷が小さい処理、例えばメモ帳に文字列を 打ち込んでいたり、こうやって2chを見たりしていると、操作しているからアイドルではないのですが CPUから見るとアイドル状態なので、スケジュールが実行されてしまいます。 やりたい事は パソコンを切るのをしょっちゅう忘れる愚息のパソコンに仕込む事による 省エネ対策です。 1時間以上パソコンを全く触ってないならshutdownさせると。 しかし先ほど述べたように1時間以上2chを見てたりネットサーフィンしている状態だと 操作しているにも関わらずアイドル検出されてしまってシャットダウンされてしまうのでダメです。 MSNメッセンジャの「退席中」表示みたいな、指定時間全くマウスもキーボードも操作しなかったとき (Inputが全く無い時)にスクリプトを発動させたいのですが、WSHでアイドル時間を取得できませんか?
546 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 14:40:42 ] コントロールパネルの電源オプションでよくね?
547 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 14:41:16 ] 電源管理使えよ
548 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 15:08:21 ] レスありがとうございます。 電源オプションのプロパティ ウィンドウを見てみましたが、シャットダウンがありません。 まぁ休止状態で代用してもいいかな?とは思いますが システム休止状態 の所の 1時間後 にすると、アイドル時間(CPUがアイドルではなく ユーザによるマウスやキー入力が一切無いアイドル)が1時間経ったら勝手に休止になる のでしょうか?スレチ?
549 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 15:13:03 ] システム休止状態1分で 何もせずに2chブラウザだけ立ち上げた状態で 放置してみましたが、休止状態になりませんでした。 これじゃダメなようです・・・・
550 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 00:38:59 ] コントロールパネルの電源 休止状態でOK
551 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 02:46:07 ] CPU使用率がとれるとかとれないとか
552 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 02:49:11 ] あとDATが定期更新されてるんじゃね
553 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 20:52:09 ] HTMLファイル内にWSH(拡張子.vbs)を埋め込んで、ブラウザから機能を実行する事は出来ませんか? WSH HTML 等で検索してみたのですが、イマイチそういうことを紹介しているページが 見つかりません。 もしくは.vbsファイルの内容をテキストコピーして、 HTMLファイル内に貼り付けて そのコードを実行させるとかそういうことは出来ませんか?
554 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 21:02:44 ] ???良く分からないんだけど、HTAみたいなのを望んでるのかな。 とエスパーしてみる。
555 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 21:09:43 ] ちなみに、WSH関係なく単にVBScriptを書きたいだけなら、 JScript同様、script要素の中に書けるぞ。現状ではIE限定になるが。
556 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:39:11 ] できません。そんなことできたらずぼずぼの脆弱性だ
557 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:48:54 ] >>555 <script language="VBScript"> <!-- MsgBox "ハロー" <--! </script> ↑みたいな感じでHTMLで実行させる事についての詳細が知りたいのですが、 >>556 が言っているように出来ないのでしょうか? ブラウザでそういうことしたいならJava Scriptとか書くしかないのでしょうか? でも >>555 はできるって言っているし、どういうことなのん???
558 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:57:03 ] それはWSHではなく、VBScriptだろ
559 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 23:03:41 ] >>553 >WSH(拡張子.vbs) このあたりに勘違いを感じる
560 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 23:47:11 ] >>557 それくらいは555に書いてあるとおり可能。languageよりtype使えな。 >>556 ネットワーク上に置いてあれば、 FileSystemObjectなどはセキュリティゾーンに従って制限を受ける。 JScriptで自由に使えたXMLHTTPなどはVBScriptでも同様に使える。 いずれにせよWSHは関係なくスレ違い。よそ行け。
561 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 03:55:36 ] WSHとIEは一応は別物 が、実際にHTMLでVBScriptが使用される事はまず無い。 VBとVBSも当然違うので VBSの話がまともに扱われるのは ここかお前らスレかHTAスレぐらいのものだろう WSHもIEもHTAもスクリプトが実装されているモジュールは 完全に同一の物。 WSHのマニュアル、と言われているものも実際には 必ずしもWSHのマニュアルではなくWindowsスクリプト、 についてのマニュアル
562 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 05:30:06 ] 残念、ハズレ
563 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 09:31:30 ] >>553 >>557 VBScript HTML で検索したらいいと思うよ。 既に言われてるようにWSHは関係ないので WSH HTML では見つからないでしょ。
564 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 12:34:40 ] unko deta kimochi ii
565 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 19:45:03 ] レジストリエディタを起動すると右側に"名前", "種類", "データ" と標示されますよね。 指定したレジストリキー以下の"名前"を全てフルパスで返して欲しいのですが どのように記述すれば良いのでしょうか? Set objShell = WScript.CreateObject("WScript.Shell") ret = objShell.RegRead("HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\VIDEO\*") のようにしても、VIDEO\ 以下の名前の部分のパスは帰ってきませんでした。(何も帰ってこない) かといって 最後の * を削除しても結果は同じで何も帰ってきませんでした。 On Error Resume Nextを上のほうに書いてあるからエラーにはなりませんが・・・。 やりたい事は、それによってフルパスが得られるなら、For Each文で全てのデータを覗いて 指定した文字列が含まれているかどうかをInStr関数等で検索すると言う事です。 よろしくお願いします。
566 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 19:53:22 ] >>565 ワイルドカード使えるなんて何処に書いてある? ワイルドカードは使えないのが基本で、使えるメソッドにはその旨書いてある物だ 勝手に都合の良い仕様を妄想するな 君のやりたいことを実現するにはWMIを使えば良い 但し、ここはWSHのスレであって汎用コンポーネントのスレではないので後は自分で調べること と言っても情報は腐るほどあるからググれば簡単に解決するけど
567 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 19:59:33 ] >>566 WSH厨ってなんでそんなに偉そうなんだ? そのくせ関係ないスレに聞かれても無いスクリプト張りまくったりして気持ち悪いな。
568 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 20:04:29 ] 汎用コンポーネントもこのスレでいいだろ どうせ使うんだから
569 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 20:08:50 ] 文句言うだけでサンプルコードのひとつも貼らない君等も同類だと気付いてる?
570 名前:567 mailto:sage [2008/01/06(日) 20:14:40 ] ? 回答なら566で十分だろ? 俺はただ566が気持ち悪いって書きたかっただけだ。 同類にされたかないね!
571 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 20:26:49 ] ゴメン、それ以下だったようだねw
572 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 20:34:23 ] 教える側はさぞ自分のほうが頭がいいと思い気持ちよくなる。 教えられる側はその代償に回答をもらう。 いいんじゃね? モレだったら表面上では偉そうな態度取らんが、それは人それぞれ。
573 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 20:39:56 ] >>572 恥ずかしくならない?
574 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 22:12:33 ] >>573 モレは恥だと思うから、 >モレだったら表面上では偉そうな態度取らんが、それは人それぞれ。 って事ね。
575 名前:デフォルトの名無しさん [2008/01/06(日) 22:13:47 ] >>566 は氏ねばいいと思いま〜〜す。
576 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 22:25:42 ] >>574 そういうの偉そうに書いちゃうのは恥ずかしくないの?
577 名前:565 mailto:sage [2008/01/06(日) 23:12:00 ] 私が初歩的な質問をしてしまったばかりにスレが荒れてしまっているみたいで 申し訳ありません。 一応自己解決したので参考までに私がとった手段を書いておきますね。 WMIと言うのは一応調べてみたのですが、イマイチよく分からなかったので WScript.CreateObject("WScript.Shell").Exec を使って reg.exe を呼び出す事で処理しました。 reg query キー とやると、指定したキー内の"名前", "種類", "データ"が全て列挙されるので 1行1行InStr関数にかけて目的のレジストリデータが存在するかどうかを調べる手段を 取りました。一瞬コマンドプロンプトの画面が立ち上がってくるのがちょっと気になりますが これなら私にもかけました。 アドバイス下さった方、ありがとうございました。
578 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 23:24:39 ] >>576 楽しそうだね。
579 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 00:07:34 ] >>577 msdn2.microsoft.com/en-us/library/aa393664 (VS.85).aspx www.microsoft.com/japan/technet/scriptcenter/scripts/os/registry/default.mspx
580 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 12:33:33 ] >一瞬コマンドプロンプトの画面が立ち上がってくるのがちょっと気になりますが 出てこなくする方法もあるけど それが出ないのが気に入らないっていうひともいるだろうね
581 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 13:08:42 ] >>580 おお、そうなんですか?参考までに出てこないようにする方法を教えて頂けませんか? IEの場合は objIE.Visible = False すれば見えなくなりますが、コマンドプロンプトの場合どうするんだろう・・・
582 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 16:36:53 ] cmd /?
583 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 01:46:31 ] >>562 どれをハズれと言ってるのかよくわからんのだが まああれだ。 MSがいくら宣伝しても VBSを使ってる人間は少数派。 というかもはや滅亡の道を歩んでおる VBS < 壁 < javascript .NET < 壁 < java パワーシェル < 壁 < Perlなど って事だ。 将来性を考えるんなら>>557 もVBSはスルーして JSにしときな
584 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 02:24:01 ] でもな、VBSのほうが断然早いんだ。特に配列。 たまにByRef受け取りなパラメータもあったりするし。
585 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 04:32:21 ] fsoで移動先に同名フォルダがある場合について質問です。 c:\test\test というように同じフォルダ名で入れ子になっている環境で、 explorer上でc:\test\testを切り取り、c:\test内で貼り付けて上書きすると 二つのフォルダ内容が融合されますが、これをfsoで実現しようとしています。 Moveは移動先に同名アイテムが存在していてはダメということなので、 まずc:\test\testの中身を先にc:\testに移動させ、 c:\test\testが空になったら削除する。 この際に、 c:\test\test\foo.txt c:\test\foo.txt というように移動先のフォルダに同名ファイルが存在した場合、 まずc:\test\foo.txtを削除し、c:\test\test\foo.txtをc:\test\foo.txtに移動させる。 さらに同名フォルダの場合はそれぞれについて再帰的に処理していく。 というような手順を踏まなければならないのでしょうか? もっとシンプルな方法があるなら教えてくれませんか?
586 名前:デフォルトの名無しさん [2008/01/08(火) 05:09:32 ] >>585 質問は日本語でおねがいします
587 名前:デフォルトの名無しさん [2008/01/08(火) 07:09:21 ] モールスぬるぽ銃乱射 www6.ocn.ne.jp/~miz2/morse.htm 1TGBIT ガッガッガッガッドガガッガッ!!!!! >z/':y★r” ドガガガガガッ ∴ ∧変∧ ル%#*゚∀)___。 \从/ _ _ _☆_ _★∴*.`Д´)/ ノハ つ∞【〔ロ=:(∈(二(@ >‐― ‐★‐―☆∵*;:*; / ∧★∧ (*゚∀゚)φ――・ ・― ― ―・・― ・・―→ (モールスでガッ!)
588 名前:604 mailto:sage [2008/01/08(火) 07:47:55 ] >>585 CopyFolderとかなら上書きに関するパラメータがあるみたいだけど。 なんでMoveにはないのかね?
589 名前:604 mailto:sage [2008/01/08(火) 07:49:08 ] 未来からきてすみません
590 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 08:23:31 ] >>583 残念ながらハズレです
591 名前:585 mailto:sage [2008/01/08(火) 13:46:21 ] >>586 (´・ω・`) >>588 なんでですかねー? >Moveの上書きパラ CopyFolderの場合はあくまでCopyなので、後でコピー元を削除するとしても、 一時的に同一アイテムが階層違いで存在してしまうことになってしまいます。 この方法だとサイズの大きいアイテムのときに問題が出てきます。 となると、移動先の同名アイテムを先に削除してから移動させる、 という選択肢しかなくなってしまうと思うんです。 しかしそれがどう考えても複雑な処理になってしまう。 みなさんどうやってるんですか?
592 名前:デフォルトの名無しさん [2008/01/08(火) 14:18:12 ] CopyFolder には上書きオプションがあって Move には無い。 どこか抜けてるところが、いかにもマイクロソフトらしい。
593 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 14:31:42 ] moveは内部renameなのでrenameに上書きがないから
594 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 15:01:03 ] >>591 ShellオブジェクトのFolderオブジェクトを使えばできた。 以下、"F:\temp\test\test"を"F:\temp\test"へ上書きするサンプル。 Set objShell=Wscript.CreateObject("Shell.Application") set objFol = objShell.NameSpace("f:\temp") call objFol.MoveHere("f:\temp\test\test", &H10)
595 名前:585 mailto:sage [2008/01/08(火) 15:54:53 ] >>594 動作確認できました。 ありがとうございますm(_ _)m しかしこのMoveHereって移動エラー発生時点で処理が中断されるっぽいですね。 スキップさせるにはやっぱり自分で書くしかないですね。 MoveHere.VBS www.vector.co.jp/soft/winnt/util/se377243.html けっこうみんな苦労してるっぽい www.roy.hi-ho.ne.jp/mutaguchi/bbs/list121.shtml
596 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:15:45 ] >>595 FolderItemオブジェクトのInvokeVerb使って、 "切り取り(&T)"して"貼り付け(&P)"という手もあると思いますが・・・。 まあ、エラーが出れば止まるのは同じでしょうね。
597 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:46:24 ] shellのmoveはcopy+deleteだから
598 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:52:30 ] fsoで if folderexists then deletefolder movefolder がいいんじゃないの on error使ってもいいけど
599 名前:585 mailto:sage [2008/01/08(火) 17:26:35 ] >>596 それって裏でMoveHereが動いてるのでは? >>597 そのようですね。いろいろ実験してると分かりました。 >>598 それだとフォルダとフォルダのマージにはならないような。 移動先のかぶってないファイルも削除されてしまう。
600 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 17:29:09 ] movefileでぐるぐる
601 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:50:28 ] > まずc:\test\foo.txtを削除し、c:\test\test\foo.txtをc:\test\foo.txtに移動させる。 > さらに同名フォルダの場合はそれぞれについて再帰的に処理していく。 ファイル名とフォルダ名が同じだったらどうするんだろ
602 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:58:05 ] すきにしてくれ
603 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 22:24:30 ] つrobocopy.exe
604 名前:585 mailto:sage [2008/01/09(水) 06:53:12 ] >>601 そのへんは考えてあります。 MoveHereの標準動作を見ると 移動先に同名アイテムがない → 移動 移動元:ファイル → 移動先:ファイル → コピー先削除 → 移動 移動元:ファイル → 移動先:フォルダ → エラー(中断) 移動元:フォルダ → 移動先:ファイル → エラー(中断) 移動元:フォルダ → 移動先:フォルダ → マージ(再起処理へ) ということみたいですが、 ファイル-フォルダ、フォルダ-ファイルの場合の中断は問題があるので ダイアログでも出すか、スキップするかで対応。
605 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 16:41:28 ] cronNTで動かすスクリプトはネットワーク上のファイルにはアクセス出来ないのでしょうか? var objFSO = new ActiveXObject("Scripting.FileSystemObject"); WScript.Echo((objFSO.DriveExists("\\\\Server\\SharedDocs")).toString());; というスクリプトをcronNTで動かした場合、falseになります。
606 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 18:12:05 ] DriveExists?
607 名前:デフォルトの名無しさん [2008/01/09(水) 20:35:09 ] >>605 それ、cronNTじゃない環境では動くの?
608 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 23:44:50 ] >>606 ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/jsmthdriveexists.asp >>607 コピペミスで2行目に ; が1個余分に付いてしまったorz foo.js というファイル名で保存して、コマンドプロンプトから cscript で実行させれば動きます。 共有フォルダに置いてあるDLL(AutoItX3.dll等)を regsvr32 した後、スクリプト中で ActiveXObject() して使おうと思い、コマンドプロンプトからの動作確認ではうまく動いたので cronNT に起動スケジュールを書いておいたら動いてはくれず、色々と調べていたら 共有フォルダへのアクセスに失敗している事が分った次第です。 もし、cronNT が原因で他の類似ソフトでは再現しない問題なら他に良い物が有れば それに乗り換えようとも思ってます。 ただ、VMware Player の中で動かしている都合 (無料版はディスクイメージの容量を後から大きくするツールが付属しない)で、 しかも既に残り容量にも余裕が全く無い為、 Windows Services for UNIX Version ttp://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=896C9688-601B-44F1-81A4-02878FF11778#Overview の様なのでは無く、もっと軽い物でないと無理です。
609 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 01:57:32 ] cronNT類似とか関係なく、例えばWSHとかHTML, HTAなど 他のActive Script実行環境でやるとどうなるか試してみろ。
610 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 09:00:52 ] >>608 ちょっとかなりスレ違いっぽいが cronNTサービスのプロパティを開いて ログオンをローカルシステムアカウントから自分のアカウントに変えてみて
611 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 11:28:47 ] Aというディレクトリに a,b,c,d,e というファイルがありました それをBというディレクトリにmoveしますが途中で終了してしまい a,b,cまでしかmoveされませんでした その後もう一度AをBにmoveしたところ上書きしますか?と聞かれたので 「はい」で最後まで完了したのですがBのナカミを見たところ d,eしかありませんでした あるOSで実際に起こった出来事です
612 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 13:53:18 ] で?
613 名前:デフォルトの名無しさん [2008/01/10(木) 15:46:01 ] >それをBというディレクトリにmoveしますが途中で終了してしまい 「それ」 とは何か。具体的に書け。
614 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 16:54:33 ] >「それ」 とは何か。具体的に書け。 単数形だから「Aというディレクトリ」じゃね
615 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 17:24:00 ] >611 最初のmoveにより、ディレクトリAからファイルa,b,cが消えた。 その状態でディレクトリAを再びmoveさせれば、ディレクトリBにファイルd,eしかないのも別におかしくないだろ。
616 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 20:57:58 ] 普通はディレクトリとその中身のファイルは別だからねぇ。 ディレクトリを移動(上書き)というのはディレクトリ自体の移動ではなく中身の移動のことだし。 中身の移動であるという観点から見れば、上書きが発生すること自体おかしな話だわな。
617 名前:デフォルトの名無しさん [2008/01/10(木) 21:32:01 ] なぜ 「それ」 が問題なのかというと、 Aというディレクトリを move せずに a,b,c,d,e というファイルを move すればよかったんだよ。 「それ」 が A なのか a,b,c,d,e なのかで結果が違ったんだね。
618 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 21:57:15 ] Macはどうでもいいよ。
619 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 17:16:43 ] a,b,c,d,e なら「それら」だろ
620 名前:デフォルトの名無しさん [2008/01/11(金) 20:19:27 ] >>611 ご愁傷さま
621 名前:デフォルトの名無しさん [2008/01/11(金) 20:56:54 ] www.microsoft.com/japan/technet/scriptcenter/resources/qanda/oct04/hey1011.mspx を JScript に移植したくて以下のように書きましたが、実行すると xxx.js(4, 1) SWbemServicesEx: 無効なクエリです。 というエラーで止まってしまいます。 どこが間違っているでしょうか? var strComputer = "."; var objWMIService = GetObject("winmgmts:\\\\" + strComputer + "\\root\\CIMV2"); var colMonitoredEvents = objWMIService.ExecNotificationQuery( "SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE " + "Targetinstance ISA 'CIM_DirectoryContainsFile' and " + "TargetInstance.GroupComponent= " + "'Win32_Directory.Name=\"c:\\\\scripts\"'"); while (true) { var objLatestEvent = colMonitoredEvents.NextEvent; WScript.Echo(objLatestEvent.TargetInstance.PartComponent); }
622 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 20:58:28 ] >>611 次から気を付けようなw
623 名前:デフォルトの名無しさん [2008/01/11(金) 20:59:57 ] >>622 ここが間違ってる var colMonitoredEvents = objWMIService.ExecNotificationQuery( "SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE " + "Targetinstance ISA 'CIM_DirectoryContainsFile' and " + "TargetInstance.GroupComponent= " + "'Win32_Directory.Name=\"c:\\\\scripts\"'");
624 名前:621 [2008/01/11(金) 21:09:46 ] >>623 すみません、書き方が悪かったです。 どこが間違ってるかはエラーメッセージが教えてくれているのでわかってました。 どう直せばいいんでしょうか?
625 名前:デフォルトの名無しさん [2008/01/11(金) 21:41:29 ] デバッグくらい自分でしろ〜 他人に投げるな〜〜
626 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 21:42:52 ] var colMonitoredEvents = objWMIService.ExecNotificationQuery( "SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE " + "Targetinstance ISA 'CIM_DirectoryContainsFile' and " + "TargetInstance.GroupComponent= " + "'Win32_Directory.Name=\"c:\\\\\\\\scripts\"'");
627 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 22:38:22 ] wwww
628 名前:621 mailto:sage [2008/01/15(火) 17:17:28 ] >>626 ありがとう
629 名前:デフォルトの名無しさん [2008/01/18(金) 06:33:04 ] CreateObject("ADODB.Stream") 上記でエラーがでます。 おそらく、ファイルが必要だと思うのですが、 それはどうやったら手に入りますか?
630 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 07:29:28 ] >>629 とりあえずエラーの内容書いてみ
631 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 21:42:53 ] >>629 MSからダウンロードに決まってるだろ
632 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 22:22:49 ] 標準で入ってない環境、まだあったっけ?
633 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 09:49:15 ] FileSystemObjectとか称してテキストファイルの読み書きしか出来ないの? fread,fwriteとかseekのメソッドを提供してるクラスって無いの?
634 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 09:59:08 ] 出来ない ADODB.Stream
635 名前:デフォルトの名無しさん [2008/01/19(土) 15:46:30 ] ADODB.Stream ってファイル全体をいっぺんに読み込んでしまうよね? デカイ動画ファイルの 最初の数バイトだけ 読み込んで処理したいけど ファイル全体を読み込んでしまうため時間がかかってしょうがない。 何か良い手は無いですか?
636 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:18:25 ] FileSystemObjectで読む
637 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 22:25:52 ] PowerShellやC#に逃げる
638 名前:デフォルトの名無しさん [2008/01/20(日) 01:04:11 ] ↑ 自分の殻に閉じこもる現実逃避型。
639 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 01:25:31 ] debugでダンプする
640 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 17:01:36 ] 殻=shell
641 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 22:13:18 ] basp21
642 名前:デフォルトの名無しさん [2008/01/20(日) 22:46:52 ] 客先のPCにbasp21がインストールしてあれば苦労しないよ
643 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 23:24:23 ] スクリプトをインストール(=使用準備なので何処かのディレクトリにスクリプト置くだけでインストールになる)は可能なのに COMコンポーネントのインストールは不可なんて馬鹿げたことを言い出すような低レベルな奴など相手にするな こんなこと言い出すのは、嫌レジストリ厨とか"インストール"の意味を分かってない奴とか、相当な初心者の類だが、 もし"客先"ってのが会社なら、そんな奴がシステム管理においての権限を持ってるなんてゾッとしないねw まあそれ以前にWSHスクリプトを外注する会社ってのもアレだけどw
644 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 23:37:16 ] FileSystemObjectなら使えるだろうに、なぜ使わん?
645 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:12:46 ] スクリプトの中で COM みつからなかった初回のみ regsrvr32 すれば?
646 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:14:43 ] >>635 > デカイ動画ファイルの 最初の数バイトだけ 読み込んで処理したいけど とのことだ。 バイナリは無理だろ。
647 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:15:20 ] >>646 は >>644 へのレスね。
648 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 01:28:09 ] OpenBinaryFile()
649 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 01:50:38 ] > バイナリは無理だろ。 何が?
650 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 01:55:19 ] FSOでってことだろ
651 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 04:47:12 ] ForBinaryReading
652 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 10:21:14 ] それは今回の用途とは違うわけで
653 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 16:21:14 ] baspをbase64してwsfに入れて実行時に登録
654 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 16:36:19 ] すなおにVBで作って納品46
655 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 01:59:20 ] VBSファイルごとにアイコン変える方法おすえて
656 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 02:11:42 ] >>655 ショートカット作って、ショートカットのアイコン変えるとか
657 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:41:26 ] そういうアイコンハンドラを使えばいいんじゃね なければ作ればいいんじゃね
658 名前:sage [2008/01/31(木) 00:57:14 ] 1.WSHを使って指定URLをIEから立ち上げる 2.(1)のURLのHTMLに含まれるjavascriptを解析して 自動で実行したい WSHで1.はできると思うのですが、2はできますでしょうか? できるのであればヒントを教えていただけぬか
659 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 00:59:05 ] HTMLDocument
660 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 20:30:46 ] 最近 WSH を始めた者です。 WSHShell の Run メソッドでアプリを起動して使おうとしているんですが、 普通にアイコンをダブルクリックして起動した場合と挙動が違って困っています。 とりあえずわかったことは、そのアプリは ¥Document and Settings¥ユーザ名¥ Application Data¥アプリ名 以下に一時ファイルを作るんですが、WSH から 起動した場合ファイルが生成されないようです。 WSH の場合でもちゃんと走るようになる為には何か別途設定がいるのでしょうか? 今は基本的に WSHShell.Run(アプリのバス, 4, True) を呼んでるだけです。
661 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 21:42:20 ] >>660 カレントディレクトリを設定しろ 設定仕方はWSHヘルプに載ってるので嫁
662 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 07:34:31 ] >>661 どうもです。 >WSHヘルプ すみません、実はこれが何を指すのか分からん程度なんですがw >カレントディレクトリを設定しろ ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/wslrfcurrentdirectory.asp によると CurrentDirectory というプロパティがあるそうなのでこれを適宜セット する、で正解ですか? で、できたらどんな値にセットするかも教えていただけると助かるのですが... もしかしたらWSHヘルプというものにそれが書いてあるんでしょうか。 逆に考えると、普通にダブルクリックで起動したアプリではカレントディレクトリが 適宜セットされているから動く、ということでしょうか? もしそうなら一体どんな値になって いる? という疑問がわきますが...
663 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 08:38:11 ] 右クリック-プロパティ
664 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 09:38:40 ] 通常はダブルクリックしたものがあるディレクトリがカレントディレクトリとなる。
665 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 11:10:49 ] >>662 で言ってる CurrentDirectoryって Windows2000にデフォルトで入ってるWSHでは 動きませんよねぇ。なんか代替のメソッド無いですかね?
666 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:14:22 ] >>665 Win2Kでも、WSH5.6なら、("Wscript.Shell").CurrentDirectryが使える。 インストール直後のバージョンは、どうだったかな‥ 古いWSHでも、("Wscript.Shell").Run """ショートカットファイル.lnk""",,False なら 問題ない。False設定しか使えなくなっちゃうけども。 Wscript.ScriptFullName のほうは今回無関係ですかね。
667 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 16:33:34 ] そのスクリプトファイルのショートカットを作って作業フォルダを設定しろ
668 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 02:07:27 ] WSHでファイルを読み取り専用に変えることはできますでしょうか?
669 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 02:20:08 ] readonly属性をつけることならできるな
670 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 03:43:53 ] >>669 それです。教えてください。
671 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:41:54 ] Attributes=1
672 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:09:40 ] ヘルプみろ
673 名前:662 mailto:sage [2008/02/04(月) 06:06:35 ] >>664 なるほど。その値でうまくいくようです。ありがとうございます、
674 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:53:29 ] 質問です。 現在、VBSCriptで各ディレクトリのアクセス権限を テキストに書き出す仕組みを作成しています。 コマンドは下記のようになっております。 CACLS <ディレクトリ名> >> <出力ファイル> ディレクトリ名、出力ファイル名はパラメータとして受け取り、 文字列を結合してWshShell.Runに渡しております。 ・・・【1】 ここで問題なのですが、【1】の文字列をコピペして DOSプロンプトで実行すると、正しく出力がされているのですが、 WshShell.Runにて実行すると、正しく出力されません。 この部分のコードは下記のようになっております。----------* Command = "CACLS " & DIRName & " > " & ExportFileName objShell.Run Command ' WShellオブジェクトは生成済み --------------------------------------------------------* 恐れ入りますが、どなたかこのような現象を経験されておりましたら、 解決策の指南のほどよろしくお願いいたします。
675 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:26:05 ] >WShellオブジェクトは生成済み ソース全部貼るべき 「・・・【1】」って違う場所に書いてない?
676 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:27:44 ] >WshShell.Runにて実行すると、正しく出力されません。 とはどうなるのだ?
677 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 19:11:25 ] Set objShell = WScript.CreateObject("WScript.Shell") Command = "CACLS %cd% > out.txt" objShell.Run Command これで試してみたけど、うまくいかないね。 Command = "cmd /c cacls〜 ではうまくいくけど。
678 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 20:04:10 ] %windir%\system32\cacls.exeと指定したらどう?
679 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:50:01 ] リダイレクトはシェル(cmd.exe)の機能。
680 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 06:34:50 ] フルパス指定でも無理
681 名前:674 mailto:sage [2008/02/07(木) 09:15:53 ] 皆さんご回答ありがとうございます。 >>WshShell.Runにて実行すると、正しく出力されません。 >とはどうなるのだ? パラメータ無しで実行したCACLSのように、ヘルプが表示されます。 経過ですが、 >>677 さんの"cmd /c cacls〜"で試してみたところ、うまくいきました。 大変お世話になりました。
682 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 12:25:55 ] タクススケジューラの引数について質問です。 Windowsタクススケジューラで設定した引数が渡ってこない(WScript.Arguments.Count = 0)のです。 同じパス(コマンドライン)で作ったショートカットを実行すると引数が渡ってくる(WScript.Arguments.Count > 0 )のです。 実際に試した記述は、「c:\test.vbs abc」と「c:\test.vbs "abc"」と「"c:\test.vbs abc"」です。 何か特別な記述方法などあるのでしょうか? 先輩方、よろしくご教授ください。
683 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 13:36:44 ] cmd /c c:\test.vbs abc
684 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 15:31:49 ] 先輩!ありがとうございました!
685 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:29:01 ] ファイルをドラッグアンドドロップしたらパスを表示するスクリプトが動きません。 どこを直せばよいか教えてください。 var strArgument = new Array(); if ( WScript.Arguments.count() == 0 ) { WScript.Echo ("コマンドライン引数が指定されていません。"); } else { for ( strArgument in WScript.Arguments ) { WScript.echo ( strArgument[i] ); } }
686 名前:685 mailto:sage [2008/02/08(金) 21:37:42 ] スクリプトをダブルクリックした時は正常作動しますが ファイルをドロップすると何も表示されません。 スクリプトエラーも出ないので困っています。
687 名前:デフォルトの名無しさん [2008/02/08(金) 22:03:46 ] コマンドライン引数が指定されているからに決まってるだろ
688 名前:デフォルトの名無しさん [2008/02/08(金) 22:04:54 ] var strArgument = new Array(); if ( WScript.Arguments.count() == 0 ) { WScript.Echo ("コマンドライン引数が指定されていません。"); } else { WScript.Echo ("コマンドライン引数が指定されました。"); }
689 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:18:40 ] for ( strArgument in WScript.Arguments ) { WScript.echo ( strArgument[i] ); } これ、なにしてるの?
690 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:42:40 ] >>688 var strArgument = new Array(); これ、なにしてるの?
691 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:52:48 ] msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/wsproarguments.asp
692 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:25:21 ] >>685 // var strArgument = new Array(); if ( WScript.Arguments.count() == 0 ) { WScript.Echo ("コマンドライン引数が指定されていません。"); } else { for (i = 0; i < WScript.Arguments.length; i++ ) { WScript.echo ( WScript.Arguments(i) ); } } .vbsファイルしか作った事がないけど、なんとなく.jsファイルはこれで動くんじゃないかなぁと・・?
693 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:56:38 ] >>692 > if ( WScript.Arguments.count() == 0 ) { count はメソッドじゃなくプロパティ。
694 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:10:28 ] >>693 えー?
695 名前:685 mailto:sage [2008/02/09(土) 00:12:24 ] >>692 動きました。ありがとうございます。 只今WSHをJScriptで書こうと、vbsのスクリプトを翻訳しながら勉強中です。 でもJSのサンプルコードが少なくて困ってました。 今回は元コードに配列を使っているように見えたので、それらしく書き換えたけど動きませんでした。 なんでここまで違いが出るのか、まだ理解してませんw ↓元のサンプルコード Option Explicit Dim strArgument If WScript.Arguments.Count = 0 Then WScript.Echo "コマンドライン引数が指定されていません。" Else For Each strArgument In WScript.Arguments WScript.Echo strArgument Next End If
696 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:28:24 ] >>695 実際にはいろいろな書き方ができるので、余計に混乱してるのかも。 元のスクリプトになるべく忠実に対応させるなら、以下のような書き方もできる。 if (WScript.Arguments.length == 0) { WScript.Echo("コマンドライン引数が指定されていません。"); } else { var e = new Enumerator(WScript.Arguments); for (; !e.atEnd(); e.moveNext()) { WScript.Echo(e.item()); } }
697 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:31:07 ] for (var e = new Enumerator(WScript.Arguments); !e.atEnd(); e.moveNext()) { すっきり
698 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:41:48 ] >只今WSHをJScriptで書こうと、vbsのスクリプトを翻訳しながら勉強中です。 なぜ?遅いのに。いろいろ細かいことにうるさいのに。などなど
699 名前:デフォルトの名無しさん [2008/02/09(土) 01:35:29 ] マイクロソフトの公用言語はBASIC ゲイツはBASIC長者 java には裁判で負けた恨みが有る
700 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 09:13:38 ] WSHは使うけど、今はもうVBScriptでは書かないなあ。 JavaScript(JScript)のある意味変態的な言語仕様に慣れてしまったら戻れない。
701 名前:デフォルトの名無しさん [2008/02/09(土) 14:37:22 ] ↑ 変態
702 名前:693 mailto:sage [2008/02/09(土) 15:58:20 ] >>694 > >>693 > えー? といわれてMSDN見てきた。 msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/wsobjWshArguments.asp プロパティとメソッド、両方あるな……。 ふだんはJScriptで length 使うか Enumerator にして扱ってるんで、 確認不足で適当に書いてしまった。スマソ
703 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:38:49 ] >プロパティとメソッド、両方あるな……。 プロパティを見るとメソッドになってて、メソッドしかないような
704 名前:デフォルトの名無しさん [2008/02/09(土) 17:18:48 ] 動きさえすればどっちでもいいよ
705 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:22:03 ] with (WScript.Arguments) { WScript.Echo(Count()); WScript.Echo(length); WScript.Echo(Count); // エラー }
706 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:48:58 ] basp21のsocketって非同期通信できませんか? データ取得できたらコールバック関数を呼びたいんですが。 接続できなかった場合とかタイムアウトになるまで 他の処理ができない
707 名前:685 mailto:sage [2008/02/09(土) 23:10:36 ] 昨日教えてもらったスクリプトを、テキストに出力しようとしたら働きません。 また教えてください。 var objFso = new ActiveXObject("Scripting.FileSystemObject"); var objFile = objFso.OpenTextFile("testdirlist.txt", 8, true); var path String(); objArgs = WScript.Arguments; for (i = 0; i < objArgs.length; i++) { path = path + objArgs(i) + "\n"; } //WScript.Echo(path);//←働く objFile.WriteLine(path);//←働かない objFile.Close();
708 名前:685 mailto:sage [2008/02/09(土) 23:13:59 ] ×var path String(); ○var path = String();
709 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:46:55 ] 絶対パスにすれば
710 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:18:19 ] var path = ""; で
711 名前:685 mailto:sage [2008/02/10(日) 00:30:39 ] >>709 動きました!
712 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 12:28:54 ] WSH 5.1(Win2k)環境でカレントディレクトリを変更したいのですが Set foo = WScript.CreateObject("WScript.Shell") foo.CurrentDirectory = と言った.CurrentDirectoryプロパティはWSH 5.6(WinXP)以降の環境でしか動作しません。 もちろんWin2kのWSHをバージョンアップすれば動くのですが、それは手間がかかる為 やらずに解決したいと思っています。 やりたい事は、WSHスクリプトファイル(仮にhoge.vbs)と同じ階層に scriptと言うフォルダがあり、 そのフォルダの中に var.bat と言うファイルがあるとして Set objShell = WScript.CreateObject("WScript.Shell") Set fs = WScript.CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(".") objShell.Run f.path & "\script\var.bat" 等として、他のフォルダ内の実行ファイルを実行したいのです。 しかし実際にコレをやると、指定されたファイルが見つかりません とエラーが表示されて実行できません。 確かにファイルは存在しますし、WScript.Echo f.path & "\script\var.bat" とかやってパスを確認しても 正しいパスです。 なので、カレントディレクトリを実行ファイルのある場所に移動しないと実行できないのかなと 考え、CurrentDirectoryを変更する方法を考えているのですが・・・ 普通に考えてCurrentDirectoryを変更せずとも実行できるはずですよねぇ・・アドバイス頂けませんか?
713 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 12:37:49 ] パスをだぶるくぉーてーしょんで囲みなさい
714 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 14:26:29 ] >>713 レスありがとうございます。 strDrv = strCurrent & "driver\install.bat" ↑これで、カレントディレクトリ\driver\install.bat がstrDrv に入ります。 その後 objWshShell.Run strDrv で、今までは出来ませんでした。なのでこれを" " で囲みます objWshShell.Run "strDrv" しかしこうすると、strDrvと言う文字列を起動しようとしてしまい、strDrvが変数として扱われず 単なる文字列として扱われるため動作しません。 objWshShell.Run ""strDrv"" として、"をエスケープしてみてもだめ〜 とか考えてたら strDrv = strCurrent & "driver\install.bat" strDrv = """" & strDrv & """" WScript.Echo strDrv objWshShell.Run strDrv これでいけました。最初の"が文字列の開始、 中2つの"が 文字列としての純粋な"を表し (""で"を単なる文字列としてエスケープ)、最後の"が文字列の終了を表すダブルクォート・・・ 結局 """" となり、非常に分かりにくいというか、混乱する形になったのですが、こんなもんなんでしょうか?
715 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 14:47:54 ] こんなもんです
716 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 16:13:45 ] >>714 Python がお勧め
717 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 16:15:22 ] strDrv = Chr(18) & strDrv & Chr(18)
718 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 17:42:26 ] >Set f = fs.GetFolder(".") >objShell.Run f.path & "\script\var.bat" objShell.Run ".\script\var.bat"
719 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 18:10:32 ] >>716 >>712
720 名前:デフォルトの名無しさん [2008/02/11(月) 23:38:48 ] >>714 C言語やjavaだって "\"" みたいな、「たいへん分かりにくい混乱する表記」 になるから、こんなもんです。 もし、コードをスッキリさせたかったら、 Const QQ = """" strDrv = QQ & strDrv & QQ もしくは strDrv = Q( strDrv ) Function Q(ByVal str) Return """" & str &"""" End Function みたいな方法がありますよ。(自分は後者をよくつかう)
721 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 01:25:32 ] Chr(34)は?
722 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 07:40:18 ] "自分は後者をよくつかう"って、使えるの、それ?
723 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:41:25 ] うん
724 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:56:37 ] >みたいな コードはイメージです
725 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 20:18:12 ] >>724 実際のコードとは異なる場合があります。
726 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 20:24:57 ] >>722 使えない
727 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:32:48 ] 使わない
728 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:43:08 ] 使われない
729 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:07:38 ] こんばんです。1つ質問させてください。 vbsでプログラムを組んでいるのですが、vbs親プログラムからvbs子プログラムを 起動は出来ないのでしょうか? 〜〜〜〜〜vbs親プログラム内〜〜〜〜〜〜〜〜〜 Set objWshShell = WScript.CreateObject("WScript.Shell") strCmdLine = "sub_program.vbs str01 str02 " objWshShell.Exec(strCmdLine) この記述で「sub_program.vbs」を引数2つ与えて起動できると思うのですが出来ません。 尚、コマンドプロンプトで[sub_program.vbs str01 str02]実行すると正常に起動します 修正点がありましたらお教えいただけないでしょうか。
730 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:16:04 ] >>729 strCmdLine = "cscript sub_program.vbs str01 str02 " または strCmdLine = "wscript sub_program.vbs str01 str02 " と記述する必要がある。 コマンドプロンプトでは、"たまたま" cscriptまたはwscriptが省略できる。
731 名前:729 mailto:sage [2008/02/13(水) 00:23:32 ] >>730 ありがとうございました。無事起動すること出来ました。 コマンドプロンプトでは"たまたま"省略可能なんですか・・・
732 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 07:49:15 ] という事はExplorerでアイコンをダブルクリックすれば起動するのも"たまたま"だね。
733 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 08:13:26 ] //H:でたまたまを切り替えられる。
734 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 09:19:40 ] どう考えても>>721 が正解
735 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 16:36:06 ] たまたまだけど、これもできる strCmdLine = "sub_program.vbs str01 str02 " objWshShell.Run(strCmdLine)
736 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 21:57:32 ] >>735 おまえ、何も解ってないな
737 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:12:08 ] そうだな、解るように言ってやれ
738 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 21:53:59 ] var fso= WScript.CreateObject("Scripting.FileSystemObject"); var d = fso.GetDrive(fso.GetDriveName("Q:\\")); if(d.IsReady){ ... とやってDVD-ROMドライブが準備できているかどうか調べているのですが、 DVDを入れて認識している最中にIsReadyが実行されるとウィンドウズ自体が数秒止まってしまいます バックグラウンドで動かしていてもフォアグラウンドアプリまで停止してしまうので困っているのですが これを回避するにはどうしたらいいのでしょうか?
739 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 22:14:09 ] FSOで問題あるときはShell.Applicationを使ってみるのが定石
740 名前:デフォルトの名無しさん [2008/02/16(土) 06:37:35 ] ドアラ グッドウィルドームに立つ! 再生:654,421 | コメント:123,256 | マイリスト:20,510 www.nicovideo.jp/watch/sm354359 凄い勢いで踊るドアラ 再生:482,525 | コメント:28,129 | マイリスト:17,837 www.nicovideo.jp/watch/sm1489303 ドアラが異端になった経緯 再生:424,284 | コメント:36,521 | マイリスト:9,417 www.nicovideo.jp/watch/sm378355 ドアラーズブートキャンプ 再生:241,338 | コメント:18,996 | マイリスト:7,229 www.nicovideo.jp/watch/sm409082
741 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:36:40 ] >>738 ドライブ認識動作中にエクスプローラとかでドライブにアクセスしても凍るから アクセスするタイミング悪いと凍るのは仕様じゃね? >>739 Shell.ApplicationにIsReadyはないけどな
742 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 17:20:40 ] Shell.Applicationで取れる情報で変化するものを見つければ?
743 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 16:30:09 ] Sub プロシージャとFunction プロシージャの違いって Function プロシージャが戻り値を返すのに対してSub プロシージャが値を返さないって言うだけですか?
744 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 16:51:11 ] End XXX Exit XXX がちがう
745 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 19:34:19 ] >>744 End Sub End Function が違うって言うのは分かりますし、Functionの場合のみ Function名 = 値 で値を返す事が出来る のも分かりますが(Javaで言うコンストラクタに値代入したらreturn文みたいな振る舞いすんのな) Exit Sub Exit Function というのがあるのですか?それはいったいどういう・・・? 単に終わらせるだけですか? 呼び出し元に戻りますか?
746 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:25:12 ] Javaなんかのreturnみたいにプロシージャの呼出元へ戻るだけ。
747 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:50:22 ] >>745 ヘルプも見れないのか
748 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:10:48 ] WSH(拡張子.vbsのファイル)で カレンダを表示するプログラムを作成しました。 出力はMsgBoxでしてます。 こんなかんじ MsgBox strResult, , "カレンダ" これを、携帯電話からも実行できるようにしたいと考えました。 携帯のカレンダがあるじゃないかと言われると困るのですが・・・ 便宜上カレンダと言っているだけで、実際は他の物を出力するので。 イメージ的にはカレンダというと一番伝わりやすいので・・・。 で、そのアイディアとして、サイト上に掲載すればいいと考えました。 携帯のブラウザからそのサイトにアクセスした際に.vbsで作ったのと同じような出力が 得られれば良いのですが、これを実現するのに簡単な方法は無いでしょうか? 今のところ私に考え付くのは JavaScriptを勉強してJavaScriptに書き直して やるぐらいかなぁと思っているのですが、そんな事しないとやっぱ出来ませんか? そうなると関数とか文法とかいろいろ勝手が違うでしょうから覚え直しですかね?・・。 .vbsファイルの出力のWeb版を作りたいみたいな感じです。よろしくお願いします。
749 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:16:13 ] 携帯もまだJavaScriptは実行できないぞ。 ASPと言って、Windowsサーバ上でVBScriptやJScriptをCGIのように実行する環境があった。 お前が欲しいのはきっとそれに違いない。 問題は、世間がASP.NETへ移行しつつあるということ。 ASP.NETはC#とかVB.NETとかを使うまた別物。
750 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:00:35 ] >>749 .vbsファイルを携帯に渡しても実行できるわけないし、じゃあ現状だと携帯でコレを実現 するのは難しいんでしょうか? 仮に携帯で実現するのが難しいとして、ブラウザに実装・・と言うか 第三者がWebブラウザでアクセスしてきた時に表示するようなのは JavaScriptになりますかね?
751 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:01:39 ] すれ違い よそへいけ
752 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:02:43 ] それって、なんか実行時に入力するパラメータあるんかな? ないんならタスクマネージャで定期的に実行して、 TXTかHTMLに出力したのをサーバに自動アップするような環境をつくって、 携帯でそれを見に行けばいいような気がするが。
753 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:12:23 ] >>752 おお!なんか凄いアイディア聴けた! えっとですね、1日に1回更新されるので、1日に1回実行してやればいいですね。 後はそれをTXT・・・には出来るのかなぁ・・・ ああ、そうか MsgBoxじゃなくてFileに出力 してやればいいんだ・・・ ああ、HTMLからそのTXTにリンクを貼るってのもありだし、 HTMLの中にそのTXTの内容を直接埋め込むのもありか!凄い!なるほど! ちょっと試行錯誤してみます。ありがとうございましたっ!
754 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:27:45 ] >>752 ありがとうございました! Dim objFso, txtFile Set objFso = WScript.CreateObject("Scripting.FileSystemObject") Set txtFile = objFso.OpenTextFile("hogehoge.txt", 2, True) txtFile.Write strResult txtFile.Close Set txtFile = Nothing Set objFso = Nothing こんなコードで生成できました!後はこの.txtファイルにHTMLでリンク貼れば完璧! 本当にお世話になりました〜
755 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:57:23 ] >>753-754 ただのテキストを吐き出すついでにHTMLにすればいいんじゃないの?
756 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 00:29:27 ] >>755 いやーそれが、やろうと思ったのですが、出来なくて・・・。 やろうと思ったらかなり大変だと思いますが、簡単に出来るもんでしょうか?
757 名前:756 mailto:sage [2008/02/20(水) 00:30:22 ] Replace strOutStrings, vbCrLf, "<br>" とかやって、改行を<br>に置き換えようとかやってみたんですが、うまくいきませんでした。
758 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 00:47:19 ] >>756 With txtFile .Write "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN"" ""www.w3.org/TR/html4/loose.dtd "">" .Write "<html lang=""ja"">" ... End With こんな感じで書き出せばいいだけだろ。 >>757 そのテキストをpre要素の中に入れてしまうというのはどうだ?
759 名前:デフォルトの名無しさん [2008/02/20(水) 00:47:33 ] Dim objFso, txtFile Set objFso = WScript.CreateObject("Scripting.FileSystemObject") Set txtFile = objFso.OpenTextFile("hogehoge.htm", 2, True) txtFile.Write "<HEAD><TITLE>うんこやろ〜</HEAD></HEAD>" txtFile.Write "<BODY>" txtFile.Write "<CENTER>なんか文句あっか!</CENTER>" txtFile.Write "</BODY>" txtFile.Close Set txtFile = Nothing Set objFso = Nothing
760 名前:デフォルトの名無しさん [2008/02/20(水) 00:51:57 ] そういえばむかし、こんなんやってたな。 10 OPEN "INDEX.HTM" FOR OUTPUT AS #1 20 PRINT #1,"<HEAD><TITLE>ハナクソ</TITLE></HEAD>" 30 PRINT #1,"<BODY>" 40 PRINT #1,"<CENTER>うんこちんちん!</CENTER>" 70 PRINT #1,"</BODY>" 90 CLOSE #1 100 SYSTEM これを N88BASIC.EXE /T:RUN"HOGE.BAS" で定期的に動かして コンテンツを更新してた。 古きよき時代。
761 名前:756 mailto:sage [2008/02/20(水) 16:22:22 ] >>758 それやろうとしたんですが、HTMLファイル中の" を ""と置き換えないといけないのが面倒でした。 HTMLって意外と"を使いますし。 それに.txtファイルに出力してしまって HTMLからリンクを貼るだけの方がとても楽だったので・・。 それにしてもWithステートメントかぁ、ヘルプを見て初めて知りましたが、こんな便利なのが あったんですね。今までだったら txtFile. を何度も書かないといけなかったのに、これを知った おかげで完全修飾しなくてすむからもっとコードが楽にスッキリかけそうです。ありがとうございます。 >そのテキストをpre要素の中に入れてしまうというのはどうだ? これもまた素晴らしいアイディアだと思います。考え付きませんでした。 確かにそれなら簡単ですね。なるほどなるほど・・・。 しかしどうして>>757 のコードで 改行が <br> に置き換わらないのでしょうか? >>759 >txtFile.Write "<HEAD><TITLE>うんこやろ〜</HEAD></HEAD>" この行</HEAD>が2個あります。</TITLE>の間違いでしょうか(内側のHEAD) >>760 へぇ・・・そんな時代があったんですかぁ〜・・・。
762 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 16:34:20 ] Replaceは結果を戻り値に返すからこう使わないといけないはず。 strOutStrings = Replace(strOutStrings, vbCrLf, "<br>") ""がうざいのは、 ダブルクォーテーションではなくシングルクォーテーションを使うとか、 (属性はシングルでいい。でもDOCTYPEはわからない) 先頭(head要素が終わるまでくらい)をテキストに用意しておいて、 txtFileの頭にそれを書き出すとかでどう。 .Write objFso.OpenTextFile("c:\header.txt", 1).ReadAll
763 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 16:46:23 ] >HTMLって意外と"を使いますし。 ならJScriptつかえよ HTMLタグをつけるメソッドもあるし
764 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 17:58:02 ] >>763 DOMのことならVBScriptからでも使えるだろ。
765 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 18:18:23 ] Stringオブジェクトのことだろ
766 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 18:45:06 ] でもあまり使えるメソッドがないな
767 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 19:49:38 ] HTMLタグをつけるメソッドを付けた奴は、きっと浮かれ過ぎていたんだろうな。 後でcreat以上に恥ずかしい思いをしたに違いない。
768 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 20:09:23 ] JScriptだから好きなメソッドが追加できるよ .quote()なんてのもいいんじゃね
769 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 20:15:50 ] anchor(anchorString), big(), blink(). bold(), fixed(), fontcolor(colorVal), fontsize(intSize), italics(), link(linkstring), small(), strike(), sub(), sup() 確かに今更これらを使う気にならない
770 名前:756 mailto:sage [2008/02/20(水) 22:51:33 ] >>762 >strOutStrings = Replace(strOutStrings, vbCrLf, "<br>") あ、なるほど、確かにそうだ・・・失敗失敗・・・。 >先頭(head要素が終わるまでくらい)をテキストに用意しておいて、 txtFileの頭にそれを書き出すとかでどう。 なるほどねぇ・・・参考になります。 >>763 JScript使った事無いので全然知りません。 >>769 が言っている事がさっぱり分からない・・・
771 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 23:13:16 ] 俺もJScriptは使わないけど、ヘルプはあるんでJScriptのヘルプより抜粋。 > anchor メソッド参 照 > link メソッド| String Object メソッド | String Object プロパティ > > 対象: String オブジェクト > 必要条件 > バージョン 1 > String オブジェクトに格納されている文字列の前後に HTML の NAME 属性を指定する <A> タグを挿入します。 > > strVariable.anchor(anchorString) > 引数 > strVariable > 必ず指定します。String オブジェクトの名前またはリテラルを指定します。 > anchorString > 必ず指定します。アンカー タグの NAME 属性に挿入する文字列を指定します。 > 解説 > anchor メソッドを呼び出すと、String オブジェクトから名前付きアンカーが作成されます。anchor メソッドの使用例を次に示します。 > > var strVariable = "これはアンカーです"; > strVariable = strVariable.anchor("Anchor1"); > 2 つ目のステートメントの実行後、変数 strVariable は次の値になります。 > > <A NAME="Anchor1">これはアンカーです</A> > このメソッドの実行時には、<A> タグが既に元の文字列内にあるかどうかの確認は行われません。 後の関数も似たようなもんだろ。さすがにこれはどうかね・・・
772 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 10:32:49 ] BASP21のSpaceメソッドほどではない。 # あれは馬場さん自身「作者の無知からくる全くのゴミメソッド」なんておっしゃってたな...
773 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 10:43:06 ] |BASP21メソッド編 | 1. BASP21のSpaceメソッドはなんであるの | えーとこれは、作者の無知からくる全くのゴミメソッドです。 | HTML でスペースをあけるのに全角のスペースを使うことがありますが、 | IMEでなぜか入力できなかったから(IMEのプロパティが半角スペースになっていただけ)。 | たぶん、誰も使ってないと思いますがどうでしょう。 babaq さんオッチョコチョイ杉ワロタ せっかくだから今度どこかで無理矢理にでも使ってあげようっと
774 名前:デフォルトの名無しさん [2008/02/23(土) 12:50:03 ] あれはあれで便利だからなくさないで欲しい
775 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 13:30:14 ] 吉岡照雄のOn Error Resume Nextの正しい使い方とやらを読んだんだが、 こんな面倒なことをしないといけないのか・・・
776 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 15:11:12 ] >>775 On Error Resume Nextの正しい使い方教えて〜
777 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 15:23:10 ] Subプロシージャを毎回作るのはいいけど、さらに複数行の時は入れ子。。。 Subプロシージャだらけになって大変すぎ
778 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 16:39:25 ] ファイルの日付をデータベース(ACCESS)に格納できねぇーー strSQL = "INSERT INTO Log " & _ " (Name " & _ " ,Date " & _ " ,SIZE) " & _ "VALUES ('" & fol.Name & "'" & _ " ,#" & fol.DateCreated & "#" &_ '←ここがおかしいらしい " ," & fol.Size & ")" なんか 『Insert into ステートメント の 構文エラーです』 とか出るんだけどなにがおかしいのか・・・
779 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:27:26 ] 文字列にフォーマットし直してから渡せ
780 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 18:51:51 ] はぁー?
781 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 18:55:22 ] 問題はそのフォーマットだろ
782 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 19:22:20 ] SQLの構文に合った書式に変換されるとは限らないってこった。 一旦、年月日時分秒をバラバラにして、構文に合わせた書式に作り替えればいい。 書式は自分で調べてくれ。
783 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:40:43 ] #mm/dd/yyyy hh:mm:ss# で渡すといいよ。VBScriptはFormat関数ないから面倒だ。
784 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 21:39:48 ] コードそのままで[地域のプロパティ] を変更するといいよ
785 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:21:37 ] capicom.dllが再頒布可能かどうかが調べてもさっぱり分からないんだが
786 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:31:22 ] WSHってマウスクリックも出来ないし、.SendKeysメソッドで日本語扱えないしで やっぱりAutoHotKeyには到底かなわない?
787 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:40:13 ] >>785 www.microsoft.com/downloads/details.aspx?FamilyID=860ee43a-a843-462f-abb5-ff88ea5896f6&displaylang=ja このパッケージには、CAPICOM 2.1.0.1 の再頒布可能なファイルとそのサンプルが含まれています。
788 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:47:45 ] >>787 そこだけみると、間違いなく再頒布可能なファイル=CAPICOM.dllな気がするんだが、 DLしてライセンス(英語)を読むと、 再頒布可能なのは、REDIST.TXTに記載されたものと書いてあるが、 REDIST.TXTなんてどこにもない・・・ ググってもググってもはっきりどこにも書いてないorz
789 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:40:10 ] >>788 msdn2.microsoft.com/en-us/library/ms995332.aspx ここだと「再配布可能な CAPICOM ActiveX control」と表現してる。 Platform SDK で CAPICOM で ActiveX control なのは capicom.dll しかないので限定できる。 The Platform SDK contains CAPICOM samples, API documentation, and the redistributable CAPICOM ActiveX control. というか考えすぎと思う。 再配布して意味のあるものは capicom.dll しかないんだし。
790 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:43:07 ] >>779 #とか'とか何度もやったし >>781 Accessに設定したフォーマットは、yyyy/mm/dd hh:mm:ssで、 DateCreatedも書式一緒だからそのままにした >>782 ,783 Dim day, m, n, strDt, strEd strDt = "2090/02/23 00:00:00" day = Split(strDate, " ") m = Split(day(0),"/") n = Split(day(1), ":") strEd = m(1) & "/" & m(2) & "/" & m(0) & " " & n(0) & ":" & n(1) & ":" & n(2) WScript.Echo strCom 煩雑だ >>784 [英国]とか[米国]でもダメだけどorz フィールド名にDateはダメだったの? Dateから日付に直したらできたよ ふぉぉぉぉぉっふぉおおおっ!!
791 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:08:27 ] >>789 確かにそういうことですね。私の考えすぎでした。 これで、capicom.dllを一緒に配布できるってことか。 一緒に配布している例が見あたらなくって、 どうしてMicrosoftからDLさせるところばっかりなんだろう?と、思ってました。 どーもです。
792 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:26:28 ] >>791 >どうしてMicrosoftからDLさせるところばっかりなんだろう?と、思ってました。 これについてはセキュリティリスクが関係すると思う。 同梱は可能であっても、同梱してしまうとバグやセキュリティ問題で capicom が更新されたとき、 企業責任として製品自体の更新版を出すことを検討しなければならない。 別途ダウンロードさせる場合にはそれは必要ない。
793 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:28:06 ] >>786 の質問に答えてくだされ・・・・
794 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:34:26 ] そうです、WSHはうんこです。AHKの足元にも及びません。AHKが最高です。よかったね。
795 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:26:00 ] AHK >>>>>>>>>>>>>>>>>>>>> マウス操作がデフォでできない言語 こんな定義でおk?AHKってどんだけ凄いんだよ(w
796 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:40:34 ] 全盛期のAHK伝説でも貼る流れか?
797 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:05:09 ] AHKは本当に凄いですよ?AHKにWSHが勝てる点って デフォルトでWindowsに入ってる 標準環境っていうぐらいじゃないですかね?
798 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:24:06 ] デフォルトでWindowsに入ってる標準環境>>>(越えられない壁)>>>インストール
799 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 13:03:14 ] AHKのおかげで身長が2m伸びました
800 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 13:06:38 ] AHKから受信料の請求がきましたが、どうすればいいのでしょうか
801 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 13:29:44 ] >>800 テレビの横に古いパソコンを置いて「これはパソコンモニタです」って言い張れ。
802 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 13:43:11 ] >>786 >>793 >>797 暇でネタ振ってるんだと思うけど、それならそれで以下を回答してくれ。 ・WSHとは何か、具体的に。 ・どのように比較してその結論に達したか。
803 名前:デフォルトの名無しさん [2008/02/24(日) 15:12:23 ] A ア H ホ K か?
804 名前:797 mailto:sage [2008/02/24(日) 16:47:52 ] >>802 WSHとはWindows Script Hostingの事で、拡張子 .vbsのファイルにして実行できる Windowsのスクリプト(Batとは違うのだよ、Batとは!)です。 Linuxで言うShell Scriptみたいなものかと思っています。 比較は、やはりマウスクリックですね。操作の自動化をしたいので、GUIアプリケーションを操作 する際に、Alt + Key みたいな感じにキーが割り当てられてない、クリックでしか出来ない操作を 自動化しようとするときにWSHだと無理なんですよ。 それと .SendKeysメソッド。日本語を送信できないなんて論外です。 その点AHKなら日本語も送信できるしマウスクリックも出来るし、記述が簡単(インスタンス生成 とか面倒な事しなくても簡単な記述でいい、ただし引数の多さがたまに傷かな)な所が良いと思います。 こんな感じでしょうか?
805 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:22:37 ] WSHはオートメーションオブジェクトの操作がメインだったりする。 他のアプリの制御はアウトプロセスサーバとして制御してくれ、って方針。 Perlが標準入出力の扱いに最適化されているように、 ATKはGUIアプリの操作シミュレートによる制御に最適化されている、と。 ATKはWMIの制御やりにくいから糞、とか言われても困るだろ?
806 名前:797 mailto:sage [2008/02/24(日) 17:52:35 ] >>805 1行目、2行目、5行目の貴方の言っている事がスキルの低い私には理解できません・・・。 意味が分からないです・・・。すみません。
807 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:56:37 ] 操作自動化の方法論が違うから総合的な比較はできないってこと GUI操作のシミュレートならそりゃそれように作られたもの使うのが当然 WSHはそういう用には作られてないもの
808 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:06:30 ] >それと .SendKeysメソッド。日本語を送信できないなんて論外です。 日本語が送れるVBのSendKeysと送れないVBSのSendKeysは、 仕組み上でどういう違いがあるのでしょうか?
809 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:13:14 ] 直接Win32API呼び出してるかどうかじゃね
810 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:15:12 ] Win32API呼び出さないで、SendKeys作れるの?
811 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:22:31 ] つかってるAPIがちがうんだろ
812 名前:802 mailto:sage [2008/02/24(日) 21:37:27 ] >>804 WSHというのは、スクリプト言語からWindows操作をする為の手段(WSHオブジェクト) の提供と、そのスクリプト言語をデフォルトではVBScriptとJScriptを内包している。 君の比較しているのはVBScriptのようだけど、これは>>805 の言っている通り WSH以外のオブジェクトにもアクセスできる。例えば、IEやEXCEL、WMI....etc こういう事はAHKでは、どうやるの? というか、よく見たら>>807 が結論出してるね。 GUI操作だけで比較したら、その機能に特化しているAHKが優れているが、 それは総合的な比較じゃないでしょ。理解できた?
813 名前:797 mailto:sage [2008/02/24(日) 23:23:04 ] >>812 なるほど、適材適所でWSHもWSHが得意な場面で使えばAHKより使い勝手いいんだ・・・。
814 名前:デフォルトの名無しさん [2008/02/24(日) 23:59:03 ] 質問させてください。 ファイルが書き込み不能かどうかを検出するにはどうすればよいでしょうか? リードオンリ属性ではなく、ファイルを削除するとき稀に出てくる 「ほかのプログラムが使用しているため削除できません」ってやつの状態です。
815 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:01:04 ] >>814 自己レス。 try仕込むだけでよかったのね orz
816 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:18:15 ] >>812 > こういう事はAHKでは、どうやるの? AHK用ActiveXモジュールを使えば良いだけ 逆にWSHでのポインティング操作などは そういう機能を提供するCOMを使えば良いだけ このレベルのことなら、やり易さに違いはあっても 結果的に"出来ること"ではWSHもAHKも大差ない ポインティング操作に限って言えば WSHは最初からWindowsに入っているが、ポインティング操作機能は後付けになる AHKはWindowsに対して後付けで入れないと使えないが、ポインティング操作は最初から備えてる ってだけの違い
817 名前:797 mailto:sage [2008/02/25(月) 02:18:45 ] >>816 なんか凄くお詳しいですね・・なるほど、参考になります。 構文とかの簡単さはどちらの方に軍配が上がりますか? 情報量の多さでいくと、WSHの方が色々なところで解説されているだろうし メジャーだと思います。 AHKはもっと普及してれば敷居低くなるのになぁと思ったり。
818 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 02:49:55 ] AHKS
819 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 09:15:26 ] FileSystemObjectのTextStreamオブジェクトのReadAllメソッドって サイズ0のテキストファイルに対して実行するとどうしてエラーになるのかよくわからん 長さ0の文字列返せばいいのに なんで? あとVB6でFileSystemObjectのGetParentFolderNameメソッドを使うと親フォルダ名のみだけど VBScriptだと親フォルダのフルパスが返ってくるけどこれもなんでだろ? 同じFileSystemObjectでもVB6が使ってるのは別物なの? なんで?
820 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 20:06:21 ] ReadやReadLineとの仕様の一貫性かも DLLは同じなの?
821 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 21:57:16 ] ReadAll()する前にAtEndOfStreamを調べなきゃならないようですね var ForReading = 1, ForWriting = 2; var Fso = new ActiveXObject("Scripting.FileSystemObject"); var f = Fso.OpenTextFile("null.txt", ForReading); if (! f.AtEndOfStream) WScript.StdOut.Write(f.ReadAll()); f.Close();
822 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 22:01:31 ] たぶん、めんどくさかったんだと思う
823 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 23:17:11 ] WindowsXP、つまり最新のWSH 5.6だと使えるメソッドでもWindows2000、つまりWSH 5.6未満だと 使えないメソッド(例えば Execメソッドとか・・・)やプロパティがありますよねぇ? それらを調べたいのですが、何を見ればそういうことがまとまって書かれてありますか? WSHのヘルプファイルを見てみたのですが、見つけきれませんでした。 やりたい事はWindows2000のWSHを5.6にバージョンアップせずにWindows2000でもXPでも 動作するスクリプトを書きたいのです。だから予めどのメソッドが動作しないとか、 引数が違うとかそういうことを把握しておきたいのです。
824 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 23:46:07 ] 5.6のヘルプのバージョン情報
825 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 23:47:24 ] ただし、障害は載ってないからなぁ
826 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 08:26:53 ] 最新は5.7よ
827 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:02:12 ] >やりたい事はWindows2000のWSHを5.6にバージョンアップせずにWindows2000でもXPでも >動作するスクリプトを書きたいのです。 いまさらやめとけ それに2.0じゃたいしたことはできねー
828 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 16:42:46 ] >>825 5.0と5.1の挙動の違いすら、5.6のヘルプのバージョン情報だけでは分からなかったからなぁ・・・
829 名前:デフォルトの名無しさん [2008/03/19(水) 11:24:42 ] 5.7なんてあったっけ
830 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 12:40:52 ] >>829 最近出た。Vistaに標準搭載で、上から2000, XP, 2003英語版がダウンロード可。 www.microsoft.com/downloads/details.aspx?FamilyID=c03d3e49-b40e-4ca1-a0c7-cc135ec4d2be&DisplayLang=en www.microsoft.com/downloads/details.aspx?FamilyID=47809025-d896-482e-a0d6-524e7e844d81&DisplayLang=en www.microsoft.com/downloads/details.aspx?FamilyID=f00cb8c0-32e9-411d-a896-f2cd5ef21eb4&DisplayLang=en
831 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 15:47:18 ] ちがいは?
832 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 03:21:19 ] 0.1
833 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 03:37:06 ] >>831 不具合修正・セキュリティパッチの統合もあるが、 JScriptで大量のオブジェクトが生成された時のGC高速化がメインかと。 dramaticallyとまで書かれているあたり、結構凄いのかもしれない。
834 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 19:20:03 ] Msxml2.XMLHTTPなんだけど readyState=2や3の時、status取得できる? 4にならないとエラーになるんだけどこれ普通? Msxml2.ServerXMLHTTPなら2や3でできるんだよね・・・ 最近IEがおかしくなってきてるので どっか壊れてるんだろうか・・・? XP SP2+IE6
835 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 00:32:37 ] IEとalertがとじれません><
836 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 02:02:27 ] すれちがい
837 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 02:09:26 ] IE.Quit
838 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 15:04:13 ] Exec("iexplore.exe").Terminate
839 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 17:42:24 ] >>775-776 これ、気になるんですけど…
840 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 17:59:25 ] どんまい
841 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 18:41:22 ] ん?検索すれば出てくるだろ?
842 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 19:05:52 ] >>841 あれがベストなのか?
843 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 19:10:55 ] .wsfに読み込む.vbsファイルの一部の関数を非公開にするのってどうやるの? .vbs内部だけで使える関数を作りたいんだけど・・・
844 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 19:13:42 ] できない 代替するなら wsc class かな
845 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 19:18:08 ] >>842 ベストなのを教えて
846 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 23:13:48 ] 無理言うな、それが出来れば質問しないだろ?
847 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 23:45:48 ] >>843 Sub xxx_aaa() とかで凌げ
848 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 00:02:50 ] エラーが起きたら即終了でダイアログが出ないようには どうすればよろしいでしょうか?
849 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 00:07:35 ] try { …… } catch (e) { WScript.Quit(); }
850 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 00:37:04 ] On Error Resume Next
851 名前:デフォルトの名無しさん mailto:age [2008/03/30(日) 02:51:51 ] アニメ「めぐみ」ダウンロードページ www.rachi.go.jp/jp/megumi/index.html#ja
852 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 04:16:32 ] >>850 は即終了しないだろ?
853 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 13:45:44 ] vbeはwsfでは読み込めないのか…
854 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 16:10:59 ] んなことはない
855 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 17:01:16 ] vbsをvbeにエンコードしてから、読み込む側のコードの読み込み部分を <script language="VBScript" src="./hoge.vbs" /> から <script language="VBScript" src="./hoge.vbe" /> のようにしたんだが、 エラー: ステートメントがありません。 ソース: Microsoft VBScript コンパイル エラー になってしまって、あきらめていた。"VBScript"の部分を適切なものに変更すればいいのか? wsfの説明を読んでも分からない…教えてください。
856 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 17:02:55 ] VBScript.Encode
857 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 17:06:38 ] >>850 Try ... Catch ex As Exception WScript.Quit End Try
858 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 17:10:18 ] で、できた。今までできないと思っていたのに… いろいろ実験に使っていたファイルを使ってやってみたんですが、 vbeファイルの中にPrivate Subと宣言した関数(実験なのでそのままPrivateSubという名前) を使おうとすると エラー: 型が一致しません。: 'PrivateSub' ソース: Microsoft VBScript 実行時エラー となるんですが、これはたまたまですかね?それともPrivateの効果なのか・・・ vbsを読み込んでいた時はエラーは起こらなかったんですが。
859 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 18:49:01 ] >>848 //B
860 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:10:00 ] >>858 君は>>843 かな? Private(Public)宣言はオブジェクト(クラス)外に公開するか否かの宣言なので インクルード(wsfのscript要素のsrc属性指定)した場合は関係ないよ きっと偶々というよりプロシージャ名間違い等、君のミスだろう プロシージャ名間違いなら、読み込みでエラーにはならないが呼び出しではエラーになるし 一応確認してみたが、vbs内でPrivate宣言したSubプロシージャを そのvbsをインクルードしたwsf内で呼んでみたが、きちんと実行された
861 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:21:47 ] VBScriptでなく、JScriptにすれば? function a(){ WScript.Echo('a'); b(); function b(){ WScript.Echo('b'); } } a(); b();//エラー
862 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 22:40:14 ] MsgBoxをModelessに出して、後で閉じる方法を教えてください
863 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 00:41:20 ] WshShell.Run "MsgBox.vbs"
864 名前:デフォルトの名無しさん [2008/04/01(火) 22:03:55 ] あるサイトに含まれている文字列をカウントして出力する、 VBscript(HTA)を、作成しているのですが、 実際に試してみると、以下のダイアログが出現してしまいます。 「このスクリプトの実行を中止しますか?」 このページのスクリプトが、IEの実行速度を落としています。 このまま実行を続けても検索結果となる数字が出力されません。 この場合、どうしたらよいのでしょうか? 以下に、該当する処理を載せます。 strSerch = document.u_list.key.value i = 0 If strSerch="" Or strSerch=" " Then '検索フォームに何も入っていないとき Else Do While InStr(webtext,strSerch) '検索キーワードでサイト検索 i = i+1 '検索回数カウント Loop End If
865 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 22:22:47 ] >>864 無限ループにならないようにすると良いのです
866 名前:デフォルトの名無しさん [2008/04/01(火) 23:30:32 ] ひどいロジックだな。 最近は「フローチャート」とか書かなくなったせいか こんなのが増えたな。
867 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 23:37:41 ] フローチャートなんて日本で「マイコン」が出だした頃でも既に有用性が 否定されていたぞw
868 名前:デフォルトの名無しさん [2008/04/01(火) 23:50:25 ] ↑ 言うと思った。バカの一つ覚えw それは、ある程度、論理的な思考ができるヤツがいう事だよ。 >>864 みたいに未熟なヤツは、フローチャートから入らないとダメ。 今からやろうとすることを、目に見えるカタチにしてまとめる。 これは大事なことだよ。 >>867 は後輩を育てられないタイプだな。
869 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 00:15:04 ] i = UBound(Split(webtext,strSerch)) + 1 '検索キーワードでサイト検索 検索回数カウント
870 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 00:58:45 ] found = 0 i = 0 Do found = InStr(found+1,webtext,strSearch,vbTextCompare) i = i + 1 Loop While found i = i - 1 初心者だけど同じ関数で無理やりやってみた。>>869 みたいに綺麗に逝きたい…
871 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 01:10:39 ] あー、でもこれ"aaaaaaaaaaaa"から"aaa"を検索したいときどう解釈するべきなんだろ。 >>870 では10回、>>869 では4回?
872 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 01:16:13 ] あれ?検索文字列を区切りにしたなら検索された数は要素数-1でないの? UBoundに+1する必要ないような。
873 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 02:35:03 ] i = Len(webtext) - Len(Replace(webtext,strSerch,Mid(strSerch,2)))
874 名前:デフォルトの名無しさん [2008/04/03(木) 00:59:23 ] カッコつけて恥かいちゃったね
875 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 02:22:25 ] (恥)
876 名前:ドシロウト mailto:sage [2008/04/03(木) 11:45:22 ] >>870-872 が自分のレスだけど、それ以外の人にも、わかってる人は 罵倒レスじゃなくてなんでダメポなんか書いて欲しいな。 スレ見てても参考にならんわ。 >>873 は何したいのかわけわかめなんだけど。 i=全文字数-(ヒットした数x(検索文字列の字数-2)) でいいんかな? この2はどこから出たのやら? もしかして>>871 に対するレスか?
877 名前:ドシロウト mailto:sage [2008/04/03(木) 11:54:33 ] 連レスすまん。 カキコした瞬間に勘違いに気づいた。 webtextで検索文字列にマッチした部分を検索文字列の2文字目以降で全置換 →全文字数がマッチした回数x1文字減るから減った数をカウントすればマッチ数がわかる でOK?
878 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 17:49:57 ] i = (Len(webtext) - Len(Replace(webtext,strSerch,""))) / Len(strSerch)
879 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 17:54:58 ] found = 1 - Len(strSerch) i = - 1 Do found = InStr(found+Len(strSerch),webtext,strSearch,vbTextCompare) i = i + 1 Loop While found
880 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:28:22 ] ここ、PC初心者板じゃないよね?
881 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:34:37 ] >>880 ちがうよ スレタイも読めないの?
882 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:35:29 ] 何が言いたい? 煽るなら死ぬ気でやれよ
883 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:36:15 ] っちょ うざいな
884 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:51:50 ] >>880 凄いなぁ!尊敬。アッタマいい!かっこいい。 (などと言われてみたい。。。てか?
885 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:54:16 ] >>880 は例の基地外
886 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:57:19 ] >>864 正攻法はRegExpだろ?
887 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 19:17:17 ] >>880 にもチャンスをやろうよ RegExp使ったコード書いてみ?
888 名前:デフォルトの名無しさん [2008/04/03(木) 19:21:46 ] i = UBound(Split(webtext,strSerch)) すでに答えが出てるだろ。
889 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 19:38:52 ] >>868 あのなあ。。 フローチャートってのは「プログラミング言語以外で処理内容を表現するツール」 いうなれば「プログラマ以外の人間の方を向いたツール」であって(だから今でも ユーザーズマニュアル等には時々出てくる)プログラマが思考の整理に使う道具ではないんだよ。 もう30年も前から言われていることだが、フローチャートってのは 複雑性を縮減する機能が全くないだろう。 ただベタに処理をチャートで表現しただけだからな。 だったらそんなもの書いてる暇があったらとっととコード書けってw こんな人間が後輩の育成とか釣りではなく言ってるならどんだけ馬鹿なんだよw っていうかこんな人間に「育成」される人が可哀想だ。
890 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 19:42:38 ] >>887 正規表現で指定したい場合なら、何の変哲もないが With New RegExp .Pattern = strSerch '.IgnoreCase = False .Global = True found = .Execute(webtext).Count End With でいいんじゃね? IgnoreCaseプロパティは必要に応じて指定すれば良し >>871 の場合の結果は後者
891 名前:kuchigakusaiossan [2008/04/04(金) 11:47:41 ] すいません、スレ異かな。WSHの言葉だけで来ました。 悩んでます。だれか教えぇぇぇぇ〜〜て EXCEL2003 VBAで www.happy2-island.com/vbs/cafe02/capter00711.shtml あたりに WScript.Sleep 5000 っていうのがさりげにつかってありますが オブジェクトが必要です というエラーが出ますうううぅぅぅぅぅ 私はどうすればいいのでしょうか。 悩みと疲労で歯槽膿漏がますますひどくなりますうううぅぅぅ ぐぐると以下の同じような人もいます。だれか愛の手を win32のsleepとかはなしで、Wscript.echo もつかいたいし >Excel VBA質問スレ Part5 878 :デフォルトの名無しさん:2008/03/02(日) 23:54:52 物凄く基本的な事で申し訳ないのですが・・・、処理待ちでスリープを掛けたく、 WScript.sleep (250) と記述していますが、エラー424 オブジェクトが必要です というエラーが出るのです。 何か参照設定が足りないんでしょうか。。 879 :デフォルトの名無しさん:2008/03/02(日) 23:56:42 ググれよ・・・ 880 :デフォルトの名無しさん:2008/03/03(月) 00:01:10 >>878 WScript.exeを参照設定しろー
892 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 16:05:48 ] すれちがい
893 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 17:04:30 ] ぐぐれもん
894 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 17:05:30 ] WScript.exeを参照設定しろ
895 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 19:36:53 ] 実際問題としてVBAならDeclareが一番楽だと思うんだ
896 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 21:11:06 ] Application.Waitのほうが簡単
897 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 21:15:39 ] >>887
898 名前:デフォルトの名無しさん [2008/04/05(土) 02:12:04 ] >>889 後輩つぶし必死だなwww そんなに若者に追い越されるのが怖いのかい? >そんなもの書いてる暇があったらとっととコード書け で書いたのが、>>864 だよ。 キミは後輩にこんなコードを書かせて満足してるんか?
899 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 03:26:18 ] いいぞもっとやれ
900 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 04:37:18 ] よそでやれ
901 名前:kuchigakusaiossan [2008/04/06(日) 14:14:28 ] >>891 自己レスですぅ 誤った解釈は、www.happy2-island.com/vbs/cafe02/capter00711.shtml はVBAじゃなくWSHのスクリプトそのもらしい。 www.atmarkit.co.jp/fwin2k/operation/wsh01/wsh01_01.html から考えましたが Wshスクリプトないでは wscriptは暗黙にオブジェクト化されそのまま参照可能である VBAからはwscript そのもののオブジェクト化はエラーになる Dim WSH Set WSH = CreateObject("WScript") ← エラーになる WSH標準オブジェクトはオブジェクト化できる Dim WSH Set WSH = CreateObject("WScript.shell") WSH.Run ("sleep 3") WSH.Run ("echo test") ↑ はOK sleep echo は意味ありませんが 以上の事で混乱していたみたいです なぜVBAからWscriptのオブジェクト化ができないのか?回避策は?などは 誰か〜〜 知ってる人おらんか。。。。。。 ヨロシク
902 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 14:30:59 ] だいたいそういうこと。 WScriptオブジェクトはwscprit.exe/cscript.exeがスクリプトへ与えるもので、 その大半はスクリプトを実行したときでいないと意味を成さない。 例えば、WScript.SleepならVBではWin32 APIのSleep関数を使えばいいという具合に別の方法がある。
903 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 16:24:34 ] スレ違い 【OLE】オートメーション総合スレ【ActiveX】 pc11.2ch.net/test/read.cgi/tech/1137771139/l5
904 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 16:33:35 ] ActiveScript絡みだしギリギリOKじゃね? OLEオートメーションは一寸戻り過ぎだ。
905 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 17:12:55 ] >なぜVBAからWscriptのオブジェクト化ができないのか? できるけど?
906 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 17:29:47 ] Set WScript=GetObject("WScript.exe")
907 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 17:38:31 ] WScript.exeをtlbimpした.NETアセンブリを作って、 それをregasmしてVBAから呼び出す。
908 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 20:34:49 ] なぜWSHからVBAの関数やステートメントが呼べないのか?回避策は?などは 誰か〜〜 知ってる人おらんか。。。。。。 ヨロシク
909 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 20:56:36 ] VBAは外部に公開されていないし、ステートメントは論外だろ。 よって回避策も無い。呼び出すこと自体が目的でないなら別だけど。
910 名前:デフォルトの名無しさん [2008/04/07(月) 02:23:47 ] >>905 どうやって作るのかコーディング例希望 ちなみに >>906 は excel2003VBA では 「オートメーションエラーです」になる。なにかおまじないが必要なら ご教授ねがいたい。くれぐれも実際に動作する説明でお願いしたい。
911 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 02:37:28 ] >>908 >>909 回避策でよいなら、Office経由で可能では? WSHからOfficeのオブジェクト作って、非表示のOfficeのドキュメント内にVBAのコード 動的に登録して実行すればよい とはいっても最近ではセキュリティの関係でOfficeの外部からVBAコード操作するとエラーになるけど、 これについては設定変えればいけると思う(たぶん)
912 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 17:19:56 ] >>910 WScriptは外部に公開されていないし、CreateObjectは論外だろ。 よって回避策も無い。呼び出すこと自体が目的でないなら別だけど。
913 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 17:22:25 ] >>910 回避策でよいなら、Office経由で可能では? WSHからOfficeのオブジェクト作って、非表示のOfficeのドキュメント内にWScriptのオブジェクトを 動的に登録して参照すればよい
914 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 17:27:23 ] >>908 Excel.Application.Run (Excel2002以降は不可) Access.Application.Eval (関数のみ) FoxPro...
915 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 23:05:58 ] htaなんて便利なものがあるのを初めて知った。 まだpowershellはいいや。
916 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 12:25:35 ] すれっち
917 名前:デフォルトの名無しさん [2008/04/10(木) 22:06:04 ] Set WSH = CreateObject("ほげほげ") は、 Set WSH = WScript.CreateObject("ほげほげ") の WScript を省略したもの。WScript はデフォルトで用意されているから。 >>901 Set WSH = CreateObject("WScript") ← エラーになる これを長く書くと、こうなる。 Set WSH = WScript.CreateObject("WScript") なんか変だよね。
918 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 22:11:34 ] > Set WSH = CreateObject("ほげほげ") > は、 > Set WSH = WScript.CreateObject("ほげほげ") > の WScript を省略したもの。WScript はデフォルトで用意されているから。 違うよ CreateObjectはVBSのグローバル関数(メソッド) > CreateObject(servername.typename [, location]) WScript.CreateObjectはWSH(WScriptオブジェクト)の関数(メソッド) > object.CreateObject(strProgID[,strPrefix]) 動作は似てるが引数(得に第二引数)の内容も違う
919 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 22:41:44 ] 違うよ ここでは CreateObjectはVBAのグローバル関数(メソッド) WScript.CreateObjectはWSH(WScriptオブジェクト)の関数(メソッド) なのでVBAでは使えない ちなみにWSHでは Set WSH= はエラー
920 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 01:14:52 ] ADOでExcelに接続してワークシートをテーブルに見立ててクエリ投げる、ってのあるじゃないですか、 Excelが2000・2002(XP)・2003の環境だと問題ないんだけど、今日同じソースでExcel2007で初めて動かしたら ADO接続のところでエラーになった。 もしてかして2007ってこれ使えない?
921 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 10:18:52 ] 当然
922 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 12:33:43 ] >>921 こういうレスって2007使ってない奴には何が当然かさっぱりわからんわな。
923 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 18:31:53 ] >>921 thx!
924 名前:デフォルトの名無しさん [2008/04/11(金) 21:49:08 ] >>922 kwsk
925 名前:デフォルトの名無しさん [2008/04/11(金) 22:08:45 ] >>919 ここでは、って言われても・・・ ここはWSHのスレだろ?VBAのスレじゃ無いよ。
926 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 23:34:51 ] 質問文の日本語を読めなかったの?
927 名前:デフォルトの名無しさん [2008/04/12(土) 01:45:37 ] 質問文の日本語を読めば、ここがVBAスレに変身するのか?
928 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 11:20:49 ] ここがWSHスレだから、元レスがWSHの質問文に変身したというのか?
929 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:12:30 ] >>910 WScript.exe /register
930 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:18:02 ] regsvr32 WScript.exe
931 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 16:38:59 ] >>910 WSC作って Set WScript=GetObject("script:WScript.wsc")
932 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 17:01:40 ] >>929-930 こういう小学生的なレスの意味は?
933 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 17:12:27 ] 他人の人生の意味なんか考えてても人生の無駄だぜ
934 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:05:43 ] 他人が以下に自分より劣ってるかというのは重要だぜ
935 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:14:35 ] 他人が恥を晒しているのが見れるのは重要だぜ
936 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 00:56:49 ] >>932 レベルを相手に合わせてるんじゃないの?
937 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 01:08:50 ] そう思ってるのは本人だけ。
938 名前:kuchigakusaiossan mailto:sage [2008/04/13(日) 13:15:30 ] WSHのソース作成&デバッグってみなさんどうしてるの? vbs をダブルクリック等で起動するようなスクリプトを VB(A)と同じようようなデバッグ環境でデバッグできますか? excel2003の Script Editor が使えるのかなと動かしてみたが これはWEBのVBS用なのかな。。? スッテップイン させてもブラウザが動いてステップしないし ぐぐるとWSHではそのままでは動かないような事もでてくるし ttp://www.sio.no-ip.com/mt/shio/archives/2005/05/wsh-os.html イミディエィトウィンドウがないみたいだし エクセルVBAで書いてるソフト(自己使用)のメイン部分をWSHにしてエクセルから外にだそうと 考えていいますが、すなおに VB(Visual studio ?)にでもしたほうがいいのかな。。。 よろしく〜〜〜〜〜〜
939 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 13:26:29 ] Msgbox デバックだろ。常考。
940 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 13:32:17 ] VisualStudio持ってるけど、VBS相手に使ったことないなぁ〜 使ってる/使ったことあるひと教えて〜
941 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 13:39:34 ] wscript //?
942 名前:デフォルトの名無しさん [2008/04/14(月) 02:35:34 ] VisualStudio 2005 Enterprise Edition は コード補間のできるVBSエディタとして使ってるけど デバッグは MsgBox や Wscript.Echo だな。 これは VBS に限らず、すべてのプログラミング言語に共通する 基本中の基本だな。
943 名前:デフォルトの名無しさん [2008/04/14(月) 08:30:01 ] MSがscript debugger とかいうの配布してなかったっけ? おれもmsgboxデバッグ派だけど。
944 名前:デフォルトの名無しさん [2008/04/14(月) 11:36:24 ] デバッガ使うよりメッセージ出力のほうがいい理由って何?
945 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 12:27:54 ] デバッガがある環境は限られるが、メッセージ出力はメモ帳があれば追記できる。
946 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 14:31:09 ] ScriptDebugger って生VBSで使えたんだっけ? たしかIEのオプション(?)でASPとか向けだった気がするんだけど。
947 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 16:00:59 ] >>941
948 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 01:00:37 ] VisualStudio だとVBSのステップ実行できないし変数ウォッチできないだろ
949 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 01:09:09 ] つまりScriptDebuggerならステップ実行&変数ウォッチができるってこと?
950 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 07:44:18 ] >948 できないよ
951 名前:デフォルトの名無しさん [2008/04/15(火) 08:34:13 ] そのdebuggerってフリーなの?
952 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 12:58:30 ] WSHってかvbsは外部コマンドも呼びづらくパイプ処理も面倒で かといってWin32APIも呼び出せず単体ではモジュール化もできないと制約だらけだな。 これほど使いづらい言語はお目にかかったことがない。
953 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 13:23:32 ] >WSHってかvbsは外部コマンドも呼びづらくパイプ処理も面倒で >かといってWin32APIも呼び出せず単体ではモジュール化もできないと制約だらけだな。 自分の無知を言語のせいにする典型だなw
954 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 13:57:29 ] 言語を使いこなせない狐が酸っぱい葡萄と言うんだって?
955 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 14:33:46 ] WSHでAPI呼べるの?
956 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 14:40:28 ] そういうCOM使って呼べる
957 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 14:44:20 ] >>955 WSHでもAPIは呼べるよ ActiveXって種類のAPIなら直接ね そしてWin32APIって種類のAPIはActiveXから呼べるので 結果WSHからWin32APIを呼ぶことも可能
958 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 14:47:25 ] よーするに呼べないってことですね。
959 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 14:53:11 ] 馬鹿には呼べないってことですね。
960 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 14:56:35 ] vbaは外部コマンドも呼びづらくパイプ処理も面倒で
961 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 15:20:27 ] 言語仕様もひどいもんだしな
962 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 15:24:15 ] >ステップ実行 1行ごとにStop文
963 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 20:40:33 ] >外部コマンドも呼びづらくパイプ処理も面倒 なのは"WScript.Shell"がへぼいせいで、もっといいCOMを作れっていうの
964 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 22:25:44 ] COM作れるんだったらそっちの開発環境で完結すればいいんじゃね なにもWSHなんぞ使わんでも
965 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 22:36:02 ] MSに文句を言ってるんだと思った
966 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 14:40:24 ] >なのは"WScript.Shell"がへぼいせいで、もっといいCOMを作れっていうの だれか作って コンソールを非表示にできる StdOut/StdErrにデータがあるかブロックしないで調べられる/取り出せる できればStdInにreadが掛かってるか分かる
967 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 14:42:39 ] WSHにのってるまともなスクリプト使えば一瞬で解決だろ
968 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 14:53:31 ] 追加 AppActivateでなくFindWindowどまりの機能 SendMessageもついでに
969 名前:デフォルトの名無しさん [2008/04/16(水) 21:02:45 ] >>952
970 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 21:05:45 ] COMに手を出す時点で、WSHに拘る理由がなくなるな。 そのまま他言語で書いた方が早い。
971 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 21:37:36 ] 一時的に目的を達成するだけならね しかしそういう状況のみではないんだよ もっと視野を広く持とう
972 名前:970 mailto:sage [2008/04/16(水) 22:00:06 ] むしろ、WSHに拘っている方が視野が狭いと思ったわけで。 >>966 や>>968 程度の機能でいちいちCOMコンポーネント書いて、 使うPC毎にいちいちregsvrして、って唯のギャグだろ。
973 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 22:12:48 ] そうでもないか
974 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 23:38:14 ] >>972 そうそう。 だから、WSH付属のコンポーネントがもっと高機能だったらよかったのにと思う。
975 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 09:25:24 ] 何故自分にレス?
976 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 13:27:53 ] 自意識過剰w
977 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 09:49:46 ] オプションって//じゃなくて/でもいいの? 1つでも動くっぽいんだけど cscript /nologo xxxxxxxxxxx って感じで
978 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:38:38 ] おk
979 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 13:49:30 ] /と//になんか違いはあるの?
980 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 15:53:43 ] スクリプトのファイル名の後にオプションを記述するときは //でなければならない。
981 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 16:28:44 ] へー
982 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 17:07:02 ] cscript -nologo xxxxxxxxxxx でもよい
983 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 18:05:11 ] どうでもよい