[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 10/02 12:26 / Filesize : 234 KB / Number-of Response : 984
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

WSH(・∀・)スレッド! Part 2



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/

2 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 00:23:58 ]
    ∧_∧
    (*´Д`)  イヤン
     / ,ノ⌒ヾ、
   ⊂⊂、___(_,つ

3 名前:デフォルトの名無しさん [2007/04/17(火) 20:06:46 ]
      ∧∧ ∧∧ ∧∧ ∩
     ( ( ( ( ・( ・ω( ・ω・)
     (つ(つ/つ//  二つ
     ) .| /( ヽノ  ノヽっ
     ∪∪とノ(/ ̄ ∪

              ∩
  (( (\_∧∧∧∧ ω・)っ
   ⊂`ヽ( ・ω・)ω・)) ・)  ノノ
    ⊂\  ⊂)  _つ
    (/(/∪∪ヽ)ヽ) ノ
     ∪ ̄(/ ̄\)

          ∧∧∧
       ∧∧ ・ω・)・ )
       ( ・ω・)―〇 )
       /´、Y ノ
       と⌒)(,,つ

        ∧∧
       ( ・ω・ )
       /´、Y ノ
       と⌒)(,,つ

4 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 01:57:15 ]



5 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 09:51:07 ]
    ∧_∧
    (* ゚Д゚ )  ナニミテンダゴルァ
     / ,ノ⌒ヾ、
   ⊂⊂、___(_,つ

6 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 13:36:19 ]
WScript.Echo("保守");

7 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 20:01:37 ]
新スレおめ

8 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 01:54:03 ]
デスクトップのフォルダウィンドウ(最小化も含)を
横に整列したいのでWSHを弄りまじめました

最小化していないフォルダを並べるのは見つけたのですが
このあとどうしたらいいのか教えてもらえるでしょうか?

Set Win = WScript.CreateObject("Shell.Application")
Win.TileVertically



9 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 06:13:25 ]
自分の股間でも弄ってろ

10 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 07:03:41 ]
>>9
なんかだんだん変な気分になってきたお。



11 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 16:09:44 ]
sendkeys

12 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 18:11:57 ]
sendkeys "%+{tab}%+{tab}%+{tab}%+{tab}%+{tab}%+{tab}"

13 名前:デフォルトの名無しさん [2007/05/01(火) 19:00:24 ]
Windowsのバージョンを取得するにはどうすればいいのでしょう?
↓のような書式で取得したいのですが
WindowsXP Service Pack 2


14 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 19:18:46 ]
のような書式と言われても少々困るが、WMI で Win32_OperatingSystem から取ってくるとか

15 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 19:54:22 ]
>>12みたいな文字列の繰り返し関数はないの?


16 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 21:31:51 ]
PerlScriptでも使えば

17 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 21:34:51 ]
つかまあそれくらい作れと言う話だな

18 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 00:56:12 ]
つJoin()

19 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 23:52:52 ]
おいw

20 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 01:29:40 ]
やま



21 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 01:40:56 ]
じゅん

22 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 03:39:29 ]
XP Home Editionでwmic.exe使っている人いませんか?


23 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 11:52:37 ]
>>15
String.prototype.repeat = function(num) {
return Array(num + 1).join(this);
}
WScript.Echo( "ABC".repeat(3) );

24 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:51:36 ]
つSplit()

25 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 17:45:15 ]
>>23
>Array(num + 1)

newがあるのとないのでどう違うの?

26 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:04:28 ]
組み込みオブジェクトの場合new付けなくても
付けたことと同じように振舞うらしいが
なんとなく気持ちよくないなあ。

27 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 22:09:00 ]
WSHのスクリプトの最後にrelease();とか=null;するのって意味あるんでしょうか?
勝手に解放するものと思ってるんですが、結構やってる方が多いので聞きたいです。

28 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 22:41:55 ]
殆どの場合意味無いけど、意味のある場合もあるよ。
デストラクタイベントの順番をコントロールしたい場合とか。
解放自体は君の思ってるとおり自動でやってくれるから、解放のためだけにやる意味はない。
最後じゃなくて途中で破棄するなら、逆に殆どの場合有意だけどね。

29 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 22:46:30 ]
excelなんかは解放してすぐ終了すると死ぬみたいで、
解放してからsleepいれたりするのに必要かも
解放してすぐ終了なら不要でしょ

30 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 22:47:37 ]
>>27-28
関連してこんなのもあるそうです
support.microsoft.com/kb/266088/ja?spid=1741&sid=485

CollectGarbage()



31 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 01:21:37 ]
>>8 何かすげー
(Win2KSP4+SRUPとWin98SE&WSH5.6にて動作確認済み)
Execute "Set Win = WScript.CreateObject(""Shell.Application"") :Win.TileVertically"
自分のアプリケーションランチャに登録させて貰いました。

でもどんな時に使うといいのだろう‥
ウィンドウ同時に開きすぎて、タスクバーから探すのが面倒になって来た時とかかな、成程‥



32 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 19:43:12 ]
それって「上下に並べて表示(H)」より便利なのか?

33 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 21:33:51 ]
>>13
wmic.exe os


34 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 18:04:31 ]
>>22
wbemoc.inf

35 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 21:33:25 ]
hoge.vbs //aaaa
で引数が渡せないよー

36 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 22:00:40 ]
>>35
それは wscript/cscript に渡すときのやり方だろ。
hoge.vbs /aaaa でおk・・・のハズ。

37 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 22:03:32 ]
うんにゃ
//aaaa
という形式の引数だす


38 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 22:07:58 ]
当然、シェルは内部で wscript.exe を起動するわけだから、それはすなわち wscript.exe の引数になるのである。
で、ここはお前の日記帳じゃない。

39 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 22:56:41 ]
//〜で渡すのは、組込の名前付きオプションだけでしょ
//Jobとか//nologoとか、WSH側で初めから定義されてるやつ
ユーザー定義の名前付き引数は/〜の形だよ

だからある意味>>36の言ってることは正しい
コマンドライン的に見れば、渡し先はどちらもWSHの実行ファイルになるけど
処理上ではスクリプト内に渡るものとWSHに直接渡るものとで別れてるとも言える

40 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 23:27:30 ]
つ//
hoge.vbs // //aaaa



41 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 03:37:17 ]
こういうのも
× cscript -nologo -hoge.vbs
○ cscript -nologo -- -hoge.vbs


42 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 15:02:14 ]
WScript.ShellのExecでコンソールを非表示にできないの?

43 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 17:03:20 ]
できるよ

44 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 22:57:07 ]
www.microsoft.com/japan/technet/scriptcenter/resources/qanda/may06/hey0519.mspx

45 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 18:17:38 ]
dsofileの新版が出たそうな
www.microsoft.com/downloads/details.aspx?FamilyID=9ba6fac6-520b-4a0a-878a-53ec8300c4c2


46 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 18:33:01 ]
>>44
>Exec がコマンドライン ユーティリティを実行すると、そのユーティリティは非表示ウィンドウで実行され
なんか変なことが書いてあるね


47 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 13:17:47 ]
>>43 >>44
>>42>>44の質問者もそういう意味ではないと思うんだが。
というかいつも思うんだけどScripting Guyって本当馬鹿だよな

48 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 18:28:41 ]
>>44の説明記事は無視してサンプルを見れば出来ると分かるよ

49 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 14:54:30 ]
はあ?お前もScripting Guyと同じ池沼かよ
CScriptの事なんか聞く訳ねーだろ
WScriptからできるかどうかを聞いてるに決まってんだろ

50 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:06:29 ]
日本語でおk



51 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 16:27:35 ]
>>44のサンプルが示しているのは
「cscriptからexecするとコンソールが新たに開くことはない」
ということ
だったら、そのcscriptをwscriptから非表示でrunすればおk

52 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 21:03:04 ]
Scripting Guyの場合、本質的にはこうじゃないの?
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "net Localgroup Administrators", 0

結果が欲しいというのなら
WshShell.Run "cmd /c net Localgroup Administrators > result.txt", 0

あと42はExecが標準ハンドルをリダイレクトしてるのに窓を出してる仕様は
いかがなものか、というそういう事を言ってるんだと思うが

53 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 22:42:25 ]
はあ?

54 名前:52 mailto:sage [2007/05/18(金) 23:52:50 ]
>>53
知らんのね。本来のWin32仕様では・・・

55 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 02:08:26 ]
ハイハイ次どうぞ

56 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 19:42:46 ]
>>8
つArrangeIconicWindows()


57 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 01:55:25 ]
domacroがダウンロード出来るサイトってありますか?
404ばかりで…

58 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 08:31:42 ]
検索して10分で落とせるところ2カ所見つけた

59 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 04:59:47 ]


60 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 02:53:00 ]




61 名前:デフォルトの名無しさん [2007/05/31(木) 07:43:10 ]
batスレから誘導されました。質問させてください。
WSHの正規表現でvar.iniファイル内の各行に対して、「###」と「###TITLE###」
という文字列を検索、見つかったか否かをEchoさせているのですが、
実際に検索対象の文字列が無い行に対しても「True」を返しているようです。
なぜうまくいかないのか教えてください。

Dim objFS, strCD, objINI
Set objFS = CreateObject("Scripting.FileSystemObject")
strCD = objFS.GetParentFolderName(WScript.ScriptFullName)
Set objINI = objFS.OpenTextFile(strCD & "\var.ini", 1, False)

Dim strSpecificTag, strAnyTag
strSpecificTag = "###TITLE###"
strAnyTag = "###"

Dim strINI, strINIsum, boolWritable
Do While objINI.AtEndOfStream <> True
strINI = objINI.ReadLine
'*** Any tag の検索 ***
Dim objREat
Set objREat = New RegExp
objREat.Pattern = strAnyTag
'*** Specific tag の検索 ***
Dim objREst
Set objREst = New RegExp
objREst.Pattern = strSpecificTag

WScript.Echo objREat.Pattern & ": " & objREat.Test(strAnyTag) & vbNewLine & objREst.Pattern & ": " & objREst.Test(strSpecificTag)
Loop
objINI.Close

62 名前:デフォルトの名無しさん [2007/05/31(木) 07:44:37 ]
ちなみにvar.iniの中身はこれです

123start
###TITLE###birthday1
birthday2
birthday3
birthday4
###YYYY###2004
###MMDD###0324
###BODY###私は学生です
この日に生まれました

63 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 08:45:53 ]
> なぜうまくいかないのか教えてください。
だってstrAnyTagをパターンに設定して、var.iniの行内容(strINI)ではなく
strAnyTagがstrAnyTagにマッチするか見てるんだもん。
strAnyTagとstrAnyTagは同一なんだから、毎回Trueで当然でしょ。
strSpecificTagも同じく。
var.iniはstrINIに読み込んだっきりで、検索も何もしてないし。

それとループ内で毎回RegExpオブジェクト設定する必要無いし
そもそも正規表現使うまでもない。

64 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 20:21:47 ]
ほんとだ!ありがとうございました!

65 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 13:41:12 ]
このくらいのバグ取りだったら、怪しい行間に、Msgbox 入れてけばすぐ解るでしょうに…
時間が無い人が多くなったのかな、現代社会って。

66 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 14:06:54 ]
時間の有る無しの問題じゃないだろ。
デバッグってのはコードを書き始める前に覚えるべきことで
車の運転に対する運転免許のようなものだが
デバッグもろくに出来ない癖にいきなりコードを書き始める奴が多くなった。

最近の若い子は基礎とか準備とか、そういうのを飛ばして面白そうな所にいきなり飛びつく。
んで、問題が起きると人任せに「たすけて〜」と言うだけで、自分でどうにかしようとはしない。
本人は努力してるつもりなのかもしれないけど、端から見たらすぐ投げ出してるようにしか見えない。
これは時間の有る無しではなく人間性の問題だよ。

67 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 15:22:21 ]
>>66
デバッグ技術は難しいよ。

教えてくれる人が殆ど居ないから。

知ってても(大して知らないが)教える気は無いけど。

どういう攻め方をするのかで幾つかの定石があり、それをなぞれば良いだけなんだけどね。

68 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 15:25:02 ]
実は難しくないけどね

69 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 20:31:14 ]

プログラミング免許制にすればいいのにね

Fizz Buzz 問題を 2分以内に解けない香具師は不合格でいいよ

pc11.2ch.net/test/read.cgi/tech/1158247019/377


70 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 00:14:58 ]
>>69
コピペ勝負と考えてw

printf("1");
printf("2");
printf("Fizz ");
printf("4");
printf("Buzz ");
  ・.
  ・
  ・
printf("100");



71 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 22:14:13 ]
あえて乗ってみる。
function FizzBuzz( n ) {
    if( n % 15 == 0 ) return "FizzBuzz";
    if( n %  3 == 0 ) return "Fizz";
    if( n %  5 == 0 ) return "Buzz";
    return n.toString();
}

72 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 21:25:21 ]
>>70
絶対計算ミスるぞそれ……と思ったら既にミスっててワラタ

73 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 00:49:14 ]
WSHでCD/DVDドライブのプロパティの設定を変更する方法はあるのでしょうか?

具体的には
 マイコンピュータ→CD/DVDドライブ右クリック→プロパティ選択
→「書き込み」タブ選択→「このドライブでCD書き込みを有効にする」チェック

のチェック有り無しをスクリプトで制御したいと考えています

74 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 08:47:58 ]
>>73
そういう制御が出来るActiveX.dllを作って、それをWSHから使えば良いだけだよ。
WSH自体には、そんな機能は備わってないからな。
反映が再起動後でいいなら、アレを変更するだけでいいけど。

75 名前:デフォルトの名無しさん [2007/06/08(金) 09:29:28 ]
CDトレイをリジェクトしたりインサートしたり
WSHでやってみたいが、無理ではない。可能だ。

76 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 12:38:17 ]
WSH+WMI


77 名前:デフォルトの名無しさん [2007/06/08(金) 23:38:12 ]
VBScriptで文字列中のダブルクォートをエスケープするにはどうすればいいの?

dim str
str="\"

これだとエラーになるんですけど


78 名前:デフォルトの名無しさん [2007/06/08(金) 23:39:05 ]
ミス

○str="\""
×str="\"


79 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 23:40:04 ]
""""
冗談みたいだろ

80 名前:デフォルトの名無しさん [2007/06/09(土) 00:20:41 ]
>>79
thx!



81 名前:デフォルトの名無しさん mailto:sega [2007/06/09(土) 02:02:51 ]
>>76
詳細kwsk

それはそうと、MCIでも操作するかと思ったけど
WSHでは無理そうだった


82 名前:73 [2007/06/09(土) 02:20:01 ]
>>74
ActiveX.dllは未経験でしたので
それがどんなものかから調べていきます
(VBで作ってそれをWSHから呼び出して?)

>>76
自分もその方法でできるなら
ぜひ教えていただきたいです

Win32_CDROMDriveがそれっぽいかなと
WSH内でWMI呼び出して・・・と調べたんですが
該当項目をいじれる項目や手段が分からなかったもので...


83 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 09:21:35 ]
>>82
Win32_CDROMDriveではイジェクトできませんよ。
というか、WMI経由ではCDトレイは操作できません。
>>76は釣りか知ったかです。

84 名前:デフォルトの名無しさん [2007/06/09(土) 13:59:33 ]
ファイルの作成日や最終更新日を任意の日付に変えたいのですが、
WSHでは無理そうですね。
普通、どんな手段を使うんでしょうか。

85 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 19:12:04 ]
Win32APIを使うのが常套手段なので、DynaCall使ってもいいが
タイムスタンプ変更が出来るActiveX.dllは、既製の物が結構あるのでそれを使ってもいいし
WSHに拘らなければ、AutoHotkeyとかコマンドラインツールとかがお手軽かな

86 名前:73 [2007/06/10(日) 02:14:07 ]
>>82
「このドライブでCD書き込みを有効にする」チェックの有無の確認と
無し→有り(有り→無し)を実現したかったのですが無理でしたか・・・

なるべくVBScript系で行ないたかったのですが
この計画の初期段階から考え直します・・・

87 名前:デフォルトの名無しさん [2007/06/10(日) 23:06:28 ]
うん、CDトレイを閉じる方法もどうやらなさそうだな
本当はあるんだろうけど、ちょっとマイナーで難しい方法しか
ないみたいだま
WSHの可能性をもう少し信じたいが

88 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 01:45:25 ]
WSHの可能性というよりはActiveXの可能性だろ。
ActiveXはFileSystemObject(scrrun.dll)やWshShell(wshom.ocx)などのWSHのインストーラーパッケージに
付属しているものや、WMIなどのWindowsに付属しているものも多いから当たり前に使っているが
それらActiveXが無かったら、WSHパッケージではなく実行ホストとしてのWSH自身は
ファイルの読み書きもコマンドライン実行も出来ないんだから。
逆にActiveXのdll,ocx,exeさえ作るか探すかすれば、大抵はなんとでもなってしまう。

> 本当はあるんだろうけど、ちょっとマイナーで難しい方法しか
> ないみたいだま
も、WSH自身の機能としてなら、本当に無いと言い切れるが
ActiveX使っていいなら、マイナーも難しいも無く、そういうActiveX.dll作るか探すかすればいいってだけの話。

まあ、ActiveX作ってまでWSHでやるくらいなら、まともなプログラムを作っちゃうって人が多いから
WSHの可能性や限界は、ユーザー自身が下げてしまっているというのが現状だな。
適材適所という考え方からすれば、それは悪いことじゃないし。

89 名前:デフォルトの名無しさん [2007/06/11(月) 02:56:14 ]
>>88
出来る限り、(ほぼ)標準機能で済ませたい
WSH使いとして、なんとなくここだけは何かこだわりたい

プログラム書くのは別に苦じゃないしどうとでも書けるけど
テキストだけで済ましたい ってのはなんか、こう、ロマンだよね

90 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 04:24:27 ]
勝手にすればいい



91 名前:デフォルトの名無しさん [2007/06/11(月) 21:55:51 ]
こちらで質問していいのか迷ったのですが・・・

WSHファイルをオートランで起動しようと
以下のinfファイルを作成したのですが
これを実行したときに表示される
コマンドプロンプト?画面を非表示にするにはどうすればよろしいのでしょうか?

[autorun]
open=cscript //nologo "hoge.wsf"

92 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 22:12:06 ]
cscriptに渡したらコマンドプロンプト開くのは仕方ないと思うが…
↓こんな風に直接叩くいたらダメなのかい?

[autorun]
open="hoge.wsf"

93 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 22:18:21 ]
wscriptはだめだっけ?

94 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 19:53:41 ]
>>92-93
open=cscript "hoge.wsf"

open=wscript "hoge.wsf"
に替えたらコマンドプロンプト無しで実行されました。

というかなぜcscriptで思考が止まってしまったのか
お恥ずかしい限りですが
ご助言ありがとうございました


95 名前:デフォルトの名無しさん [2007/06/12(火) 22:54:03 ]
set shell = WScript.CreateObject("WScript.Shell")
if not shell.AppActivate "TARGETWINDOW" then
  shell.Run "targetapp.exe"
end
shell.SendKeys ...

のようなことがやりたいんですがAppActiveに失敗したかどうかを得る手段はありますか?

96 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 00:07:01 ]
失敗したらfalseを返すのでは

97 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 08:33:26 ]


98 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 22:58:31 ]
       -‐''''"´ ̄``ヽ、              ____
       /     _     ヽ        //´   __,,>、
     /        ̄ ̄   {        /::/ / ̄:::::::::::::::\
      l _ィニニア二二二ニヽ、j._      /::::l/::::::::::::::::::::::::::::::::l
     | 0Lj/-‐-レノ ノ_ヽ:::`ヽ     l:::::::::::/l/lノノ/_イ:::::l
     レ:r、/ イ゚テ   ピト`|::|      l:::::::::/ rtテ、  .ィtq l::::::|
      l:lヘ  '"   ,j  '"/ノ      |::lヘ!j  ´  ,j   !;:::/
     ヽヽ、   r‐-,   /'         レリー 、    ,....,  lノ/
        lヽ、  ̄ /         `ヽ、lヽ 、  ̄ /´
     _,r┴‐-`v´-‐j-、__   , -‐-、_r┴─'ー‐チト       false
  / ̄/:.:.:.:| ̄ ̄`T ̄´|:.:.:.:l´ `ヽ /    ヽ ̄`ー-‐'´`''''⌒ヽ
/   ,':.:.:.:.:.l    l   l:.:.:.l    \  _r‐、-、-、r,    、   ',
     |:.:.:.:.:.:.!     !   !:.:.l   ,. -‐ゝ/// 〉 〉 〉 〉 〉    !   ',
    l:.:.:.:.:.:.l     |   l:.:.:l  /  人〈〈〈〈 ' ' ' /っ   l    l
    l:.:.:.:.:.:.!     !   l:.:.:.ト/   /  ```´-ァ‐'''"     /   l
、__/:.:.:.:.:.:l     |    |:.:.:ヽヘ  l    //         / _ ィノ
    /:.:.:.:.:.:.:!    l   |:.:.:.:.:l `ーヽ、_ノ´l、______/lニ二」
____l:.:.:.:.:.:.:.|      l   |:.:.:.:.:!        |_  ( ( ) )_〕|   l
   l`ー‐‐'匸二l ̄ ̄l二フーイ       /   ̄ `‐‐'´ ヽ  |

99 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 23:35:14 ]
>98
ソースに埋め込みました。

100 名前:デフォルトの名無しさん [2007/06/18(月) 12:58:51 ]
マウスの座標を設定したいのですが
どうしたらいいでしょうか



101 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 14:29:02 ]
>>100
WSHにはそういう機能は無いので、
そういう機能のあるActiveXを作るか探すかしてください

以上

102 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 16:27:17 ]
>>101
それを聞いてるんだけど・・・大丈夫?

103 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 16:29:13 ]
マウスの設定をWSHから読みたいんだけど
レジストリを読めばいい?

104 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 19:17:13 ]
>>102
ActiveXを作るのはwshじゃ無理。
他を当たってください。

105 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 21:35:59 ]
>>102
ここはWSHスレであって、ActiveXスレでもActiveXを作れる言語のスレでもないんだけど・・・大丈夫?

>>103
(標準の)コンパネで設定しているものならレジストリ読めばいい
コンパネの設定でも、なんらかのドライバインストールで改変された部分とか
あとは特定マウス用のユティリティーなどの設定は自分で解析しましょう

106 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 21:41:00 ]
Win板のスレにはテンプレにいくつかコンポーネントとか挙げられてるけどこっちには無いのな

107 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 21:47:36 ]
無ければ作ればいいじゃない。

108 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 22:01:26 ]
だってここは自分でコンポーネント作れる人達が集まる板だから

109 名前:デフォルトの名無しさん [2007/06/18(月) 22:10:07 ]
SetCursorPos.exe作れよ。
一分もかからないだろ。

110 名前:exe作ったら負けかなと思ってる mailto:sage [2007/06/19(火) 01:03:13 ]
<html><script>function AX(s){return new ActiveXObject(s)}
function Run(pr){var fp,xd,bs,fs=AX("Scripting.FileSystemObject");
xd=AX("Microsoft.XMLDOM").createElement("x");xd.dataType="bin.base64";
xd.text=fm.dt.value.replace(/\s/g,"").replace(/@(\d+)/g,function(a,b){return Array(b*1+1).join("A")});
bs=AX("ADODB.Stream");bs.Open();bs.Type=1;bs.Write(xd.nodeTypedValue);
fp=fs.GetSpecialFolder(2)+"\\MouEvt.exe";bs.SaveToFile(fp,2);bs.Close();
AX("WScript.Shell").Run(fp+" "+pr,1,true);fs.DeleteFile(fp)}</script>
<form id=fm onsubmit="Run('1 '+fm.dx.value+' '+fm.dy.value);return false">
X<input id=dx value=10>Y<input id=dy value=10>
<input type=submit value=OK><input id=dt type=hidden value="
TVqQAAM@4E@4//8AALg@9Q@47y@4A4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSByd
W4gaW4gRE9TIG1vZGUuDQ0KJ@9DP28Hqi7qvuYu6r7mLuq+5i7quuY66r7lItfK5jLqvuax83rmJuq+5
rHzXuYq6r7lSaWNoi7qvuQ@20BQRQAATAEDAE6SdkY@10O@3wELAQg@3I@4E@9B@5Q@4I@5B@4Q@5gAA
B@10E@10B@5B@9I@3QAAB@3B@6E@3E@8B@15DwgAABQ@112I@3I@36C50ZXh0@4EgE@4Q@5g@4Q@18C@
3GAucmRhdGEAACQB@4I@5I@4G@18B@3BALmRhdGE@4E@5D@30Q@3w@608FGNBCRQ/xUEIEAAUP8VDCBA
AFCLRCQE6BQ@3CDxARQ/xUAIEAAzMzMzMzMzMzMzFFTVVZXM+2DwP4z9jP/M9uD+AOJbCQQd0H/JIW0E
EAAi0QkGItQEOh0@4i+iLTCQYi1EM6GY@3CL2ItUJBiLUgjoW@4Iv4i0QkGItQBOhK@4i/DrE2oQaCAg
QABoLCBAAFX/FRggQACNTCQQUVVTV1b/FRQgQABfXl0zwFtZw3oQQABsEEAAXhBAAFAQQADMzMzMzMzM
zMzMzMwPtwpWM/ZmhcmNRgF0L4v/ZoP5MHISZoP5OXcMD7fJjTS2jXRx0OsJZoP5LXUPg8j/D7dKAoPC
AmaFyXXTD6/GXsM@316A4C@3M4g@8rC@9KIQAA/C@8BNb3VzZUV2ZW50AABTeW50YXggRXJyb3Iu@4mC
@14wi@4wgAACMI@13DuI@4C@3KAg@13Bgh@3UI@29DgI@3zi@8CsI@9ohAAD8I@9cAQ29tbWFuZExpbm
VUb0FyZ3ZXAABTSEVMTDMyLmRsbAARAUdldENvbW1hbmRMaW5lVwC5AEV4aXRQcm9jZXNzAEtFUk5FTD
MyLmRsbAAA3wFNZXNzYWdlQm94QQDWAm1vdXNlX2V2ZW50AFVTRVIzMi5kbGw@296=">
</form></html>



111 名前:exe作ったら負けかなと思ってる mailto:sage [2007/06/19(火) 01:05:55 ]
やっと入ったww

ふ〜、この板の文字数制限は地獄だぜ・・・

112 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 01:09:08 ]
またおまいかw

113 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 08:47:06 ]
それなくても、マウスカーソルを動かすプログラムを考えついた。
前提として、 規定のボタンの位置にマウスを移動させる 機能を
有効にしている人にしか使えない方法なんだけど、

114 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 09:05:22 ]
規定のボタンを動かすって?

115 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 10:45:47 ]
>>114
かしこいな

俺、ダイアログそのものを動かしてたよ

116 名前:デフォルトの名無しさん [2007/06/19(火) 10:48:40 ]
マウスのプロパティのアレだろ

117 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:16:20 ]
CreateObject("WMPlayer.OCX").cdromCollection.item(0).eject
WSHがなぜか終了しない

118 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:44:32 ]
当然なのでは?

119 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 13:02:26 ]
はあ?何が当然なんだよwww

120 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 21:23:01 ]
>>119
m9(^Д^)プギャー



121 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:42:57 ]
>>119
アホには構わない方がいいよ

122 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 08:20:15 ]
レスアンカー間違ってる

123 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:03:56 ]
HTAにすりゃ終了するよ

124 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 06:32:19 ]
>>122

120 :デフォルトの名無しさん:2007/06/26(火) 21:23:01
>>118
m9(^Д^)プギャー

これか?

125 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 15:21:24 ]
違う

126 名前:デフォルトの名無しさん [2007/07/03(火) 12:17:12 ]
ランダムに開かれるIE画面で一つの変数を共通に使いたいのですけど、
そういう方法ってないでしょうか?

起動時にWSHで常駐させて、その中の変数をあとから開かれるIE画面が
読み書きするような形でも構わないのですけど。

127 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 12:52:10 ]
親ウィンドウがあるなら window.parent.HENSUU

128 名前:デフォルトの名無しさん [2007/07/03(火) 13:01:58 ]
>>127
特定の親は無いです。
プロセスまで切り離されていても連携したいです。

129 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 16:54:14 ]

CreateObject("Shell.Application").Windows()
PutProperty
GetProperty


130 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 18:12:15 ]
ファイルをD&Dしたときはメモ帳でファイルを開いて、
単純に実行した場合はメモ帳だけを立ち上げる
というようなスクリプトはできないでしょうか?



131 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 19:45:32 ]
>>130 それは notepad.exe へのショートカットと何が違うの?

132 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 20:01:18 ]
>>131
これを参考にD&Dしたときと、普通に起動したときの分岐の仕方が知りたかったのです

133 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 20:20:11 ]
>>132
引数

134 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 09:13:24 ]
>>132
一緒だよ。

135 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 10:52:04 ]


136 名前:デフォルトの名無しさん [2007/07/22(日) 22:35:56 ]
PrintScreenキーを押す方法何かない?

137 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 01:25:22 ]
>136
俺ならIrfanViewをコマンドラインで実行し、デスクトップ画面全体または
現在アクティブなウィンドウをファイル化するけどな。

138 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 04:17:07 ]
PowerShellならできる?

139 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 00:46:30 ]
できるよ

140 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 20:33:39 ]
VBSについての質問です

WINDOWSからSolarisにFTP接続してファイルを取得するVBスクリプト。
・ /export/home/backup/mysql/の下にあるファイルを取得
・ /export/home/backup/www/の下にあるファイルを取得
・取得したいファイル名をリスト化、そのリストを読み込んで、
1つのファイルをGET.→FTP切断→FTP接続→ファイルGET→FTP切断の繰り返し
・取得したファイルはSolarisから削除
・日付を管理。最新のを5つだけ残す。一番ファイルを削除

こういったVBSは、さぁどうつくればいいんでしょうか?



141 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 20:58:25 ]
>>140
www.hi-ho.ne.jp/babaq/basp21f.html

142 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:50:32 ]
>>140
pc11.2ch.net/test/read.cgi/tech/1170492587/18-23

まだできてなかったの?

ていうか、固定のFTPスクリプトを生成するVBSを書いてみ、って言ったろ?

143 名前:デフォルトの名無しさん [2007/08/03(金) 23:24:29 ]
構成
A ファイル一覧がほしいPC
B スクリプトを走らせるPC


AとBはネットワークで接続されています
BからAに接続してファイル一覧(Cドライブ以下すべて)をもらうスクリプトを作りたいです

Bは手元にあり自由に弄れます
スクリプトを走らせる事やどんな操作も可能です

Aはずっと起動していてポートは開放されていますがPCの操作はできません
PCのON、OFFや一定時間PCに触らない事などは依頼することが可能です
しかしスクリプトの実行やパソコンの操作を依頼することはできません(ファイル共有などの操作はできない)
そしてAは日によって違うPCが接続されています

以上の条件を満たすスクリプトを作成するにはどのような方法があるのでしょうか?


144 名前:デフォルトの名無しさん [2007/08/03(金) 23:35:39 ]
疼く、悪の予感

145 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 23:39:08 ]
>>143
>以上の条件を満たすスクリプトを作成するにはどのような方法があるのでしょうか?

まずお前さんが質問の仕方の勉強をする事。次に、なんでもいいからプログラミング言語を
一つ学ぶ、という方法がある。


146 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 00:13:51 ]
これは、流石に胡散臭すぎだろ。

147 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 00:35:55 ]
>>143
ファイル一覧はそもそも秘密情報であり、セキュリティ上、他マシンから参照できては
ならないもの。
A自身に仕込みがなければ無理。



148 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 00:43:05 ]
もしかしたらDCOM経由である程度のことはできるのかもしれない。
俺はよくわかっていないけど。

149 名前:デフォルトの名無しさん [2007/08/04(土) 01:10:07 ]
セキュリティホールつかないと無理

150 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 07:47:47 ]
セキュリティホール(笑)



151 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 13:13:42 ]
エスケープシーケンス使って文字列の色を変更したいんですが
WScript.Echo で表示するとそのまま出てきてしまってうまくいきません。
なんかいい方法ないですかね?


152 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 20:25:36 ]
>>151
WScript.Echo 以前に NT のコマンドプロンプトではエスケープシーケンス自体がサポートされてない。
config.nt ansi.sys でググれ。

153 名前:151 mailto:sage [2007/08/05(日) 11:10:55 ]
>>152
ググってみました。コマンドプロンプトではエスケープシーケンスがサポートされてないんですね。
ansi.sys を組み込んでも 16bit で動かない限りうまくいきそうにないので WSH で文字色変えたりするのはあきらめます。
ありがとう。




154 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 14:29:55 ]
color/?
または
powershell

155 名前:デフォルトの名無しさん mailto:sage [2007/08/14(火) 09:45:56 ]
VBSで優先度を指定してIEオブジェクトを生成する方法はないですか?
start /low wscript hoge.vbs
だと起動されたIEに優先度が継承することはありませんでした。

156 名前:デフォルトの名無しさん mailto:sage [2007/08/14(火) 11:14:46 ]
WMIのあたりを調べてみてはどうだろう。
Win32_ProcessにSetPriorityってメソッドがあるみたい

スクリプトからCOMで操作しつつっていう前提だと
うまく使えないかもしれないけど

157 名前:デフォルトの名無しさん mailto:sage [2007/08/14(火) 11:49:00 ]
>>156
ありがとうございます。
WbemScripting使ってプライオリティ変えることができました。

158 名前:デフォルトの名無しさん [2007/08/16(木) 22:09:55 ]
ttp://www.nicovideo.jp/watch/sm826452
これのflvファイルをWSH使ってブッコ抜きたいんだけど
標準で入っているライブラリだけで出来るかな?
多分出来るよね?


159 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 22:12:13 ]
素直にダウンローダ使っとけよ

160 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 23:45:03 ]
>>158
当然出来るよ

まあHTMLの知識とか無かったら無理だろうし
ここはそういうスレでもないから具体的な方法は伏せるけどね



161 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 23:48:27 ]
>>160
そういうスレだよw

162 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 00:06:22 ]
ここはいつからHTMLスレになったの?

163 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 00:13:26 ]
>>161
ここはWSHスレだと思うが。

WSHで出来るなら、是非ご教示願う。


164 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 00:28:44 ]
WSH自体(WScript.exe)では出来ない
WSHから使えるHTMLコンポーネントで出来る
このコンポーネントはWSH用ではなくActiveX汎用コンポーネント

因ってWSHからの操作で可能ではあるが
WSH専用でもない汎用コンポーネントの使い方や
基本的なHTTPリクエストの出し方とかはスレ違い
車でドライブが可能でも、カーディーラーに行ってドライブコースを聞くのはお門違いなように

165 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 00:35:18 ]
>>164
batスレの病気の人ですか?

166 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 00:38:50 ]


167 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 00:41:58 ]
C言語スレで標準ライブラリのことを聞いたら
「それはC言語ではなくライブラリの使い方だろ。死ねよ」
って言われたような、そんな衝撃

168 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 00:49:40 ]
WSHのパッケージ付属コンポーネントにHTML系有ったっけ?
FSOやDictionaryが付属してるのは知ってるが

169 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 00:50:27 ]
WSHはIE4の付属コンポーネントだったよ。

170 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 00:52:38 ]
で?



171 名前:158 mailto:sage [2007/08/17(金) 01:02:41 ]
ちょ、おまいら落ち着こうぜ。

>>159
とりあえず春閣下関連を全部一括ダウンロードしようと思って
タグ検索してURI一覧を作るところまではさっき完成したんで
冷静に考えたらあとはSmileDownloadにぶっこめば終わりだね。

172 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 01:13:17 ]
>>171
それが正解。

たぶんniconicoってHTMLの中にflvのURL埋め込むとかそんな単純なことしてないと思う。
だから、技術的にはHTTPのコンポーント(XmlHttpとかWinHttp)があれば十分
なんだと思うけど、解析難易度は高くて、HTMLの解析なんてささいな問題じゃないかな。
断片化されたURL情報をFlashの中で復元するなんてしてたら、普通に追いかけても無理。

173 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 01:44:21 ]
>>172
IEコンポで検索結果ゲットしてリンク全ゲットして
smileっぽいとこ全抽出しておしまいだったしね。
どうせならWSHで最期までやってみたかったけど
それより閣下に早く会いたかったので妥協した。

174 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 22:48:11 ]
JScriptでMSXMLを利用してweb上のxmlファイルから文字列を取得したいと考えています。
以下のようなファイル構造のとき、「あいう」の部分と「かきく」の部分をそれぞれstr1とstr2に代入するには、
どう記述すれば良いでしょうか。
アドレス:ttp://test/test.xml
<?xml 〜 ?>
<aaa name="あいう">
 <bbb>
  <ccc>かきく</ccc>
 </bbb>
</aaa>

175 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 22:55:39 ]
responseXML を適当に selectSingleNode とかで XPath 使って検索する

176 名前:デフォルトの名無しさん [2007/08/20(月) 23:42:45 ]
すみません、初心者です。
Jscriptで開いたサイトのソース(html)を変数に入れるには、
どうすれば宜しいでしょうか。
ブラウザはIE6です、よろしくお願いします。

177 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 02:22:43 ]
単純にHTMLをダウンロードしたいって話なら以下。ブラウザは直接関係しない。
www.f3.dion.ne.jp/~element/msaccess/AcTipsVbaXMLHTTP.html

ブラウザで開いているページならブラウザのインタフェースを取得して
Document.body.innerHTML
とか試してみれば?

178 名前:176 [2007/08/21(火) 22:04:01 ]
>>177
Document.body.innerHTMLも試したつもりでしたが、
もいちど、やってみると、、、できたーーー。
すごくうれしいです、ありがとさんでした。。。

179 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 22:22:43 ]
>>178
タイミングによるんじゃないの?
Navigateした直後にページ内容読み出そうとしているとか。
DocumentCompleteのイベント内とかで読まないとうまくいかない可能性が高くなる。

180 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 17:54:34 ]
立川警察の警官のおかげでストーカーには
セックスを伴うストーキングと
セックスを伴わないストーキングの
2種類あるということを初めて知りました




181 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 05:35:05 ]
WSHからSQL薄幸とか可能?

182 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 05:47:53 ]
君に出来るかどうかは知らないが
技術的には可能だよ

183 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 07:21:21 ]
>>181
可能
ADO使え

184 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 12:21:16 ]
画面のプロパティの画面の色をスクリプトで変更したいんです。
その日の気分で色変えたいんで、ワンクリックでできるようにしたいです。
ヒントよろしくお願いします。

185 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 12:37:59 ]
HKEY_CURRENT_USER\Control Panel\Colors以下をいじる。
正直どの程度の事を聞かれてるのかサッパリなのでこれだけ書いておく。
後はWSHなりAHKなりregファイルなり好みの方法で。

186 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 15:47:31 ]
>>185
ありがとうございます。
レジストリ値を変更したあと、ログインし直さないと変更が反映されないんですが
すぐ反映させる方法はありますか?

187 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 18:55:25 ]
ありますよ
そのくらいは自分で調べようね

188 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 19:20:53 ]
WM_SETTINGCHANGEとか?

189 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 22:03:38 ]
>>187 >>188
ありがとございます。なんとかできそうです。

190 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 03:07:31 ]
名前にフィルタ掛けて抽出したzipファイルを、
コマンドラインに渡して、無事解凍できたら消すって趣旨のスクリプトを組んでいて、
いざ消すときにまだコピー中な為か、ファイルが使用中だというエラーが
でてしまうので、コピーが終わったかどうか確かめる関数を作ろうと
思っているんですが、まったく思いつかないよーー

似たようなことやったことある人とかアドバイスください




191 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 08:54:50 ]
VBSならOn Error Resume Nextした上で、ループ内で消せばいいさ
消せたらループ抜けるようにしておけば、消せた時点でループ抜けて次の処理に移れる
On Error Resume Nextしておけば、消せなくてもエラーメッセージ出さずに
ループ内で何度も消去試行してくれる

あとはアーカイバツールに渡すときに、処理が終わるまで次の処理に移らないようにしておくとかね

どちらもWSHのヘルプに載ってるので、詳しくはそちらを見てね

192 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 06:59:49 ]
そんなブサイクな発想より普通は解凍ソフトからの戻り値に期待するもんだ

193 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 08:18:41 ]
それはハズレ

194 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 20:47:38 ]
プロセスが起動中ならまだ動いてるんだよ

195 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 20:52:19 ]
宇宙開拓史ののび太並みの天才発言だな

196 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 21:11:16 ]
「この機械、こわれる前はこわれてなかったんだろ」
ってやつだな。

197 名前:デフォルトの名無しさん [2007/09/11(火) 10:56:39 ]
Script56.CHMの目次が不完全な件

198 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 11:50:51 ]
今更?

199 名前:デフォルトの名無しさん [2007/09/14(金) 18:52:35 ]
wshで、COM1とかのシリアルポートとやりとり
する例ってどこかにありませんでしょうか?
Scripting.FileSystemObject でopenしたりReadLnしたり
できるんでしょうか?


200 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 11:04:56 ]
FSOをなんだと思ってるんだこいつ



201 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 11:20:47 ]
>>199
MSCommを使う
PCに入っていない?そんな時はVB6ランタイムでゴニョゴニョ...

202 名前:199 mailto:sage [2007/09/15(土) 18:03:21 ]
>>201
なるほど。でもVB開発ライセンスが要るみたいですね。
最終的に配布したいので、標準の環境で動かしたかったのですが・・
通信用の外部プログラム作成したほうがいいですね。

203 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 22:42:26 ]
.NET Framework 2.0が使えるなら
名前空間 System.IO.PortsのSerialPort クラスあたりを
使うのが楽

204 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 00:00:31 ]
スレの衆、おこんばんは。
俺つい昨日まで、MS-DOSの時代に流行ってたLSI-C86試食版という
Cコンパイラを使って、プログラムをメモ帳で書いてたんよ。
長いファイル名をどうにかする必要があるときは、バッチファイルを
書き出すプログラムを書いてからバッチ実行、とかね。
Oh, WSH! なんてこったい、こんな便利なもんが最初からあるのを知らなかったなんて・・・orz


205 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 00:22:56 ]
>>204
LSI-C86試食版で長いファイル名を使えるようにするライブラリがあるのに。
BCCとかVC2005Expressとかただで使えるWindows用コンパイラがいくつもあるのに。
いろんな意味でご苦労さん。

206 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 06:39:37 ]
>204
右クリック→[送る](SendToフォルダ)経由でファイルやフォルダを引数として渡す場合、
バッチファイルだとOSによって挙動がまちまちでイマイチ使いづらいんだよね。
(特にWin2000以外)
その点、WSHのVer5.0〜5.6だとWin95〜XPまで使い勝手を何とか統一させる事ができる。
(それなりの配慮は必要だが)

207 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 09:40:03 ]
>>204
LSI-C86試食版で頑張っていたおまいは凄すぎ。
昔C言語独学しようと思って初めに手を出したのがそれだったが、
結局Quick-Cに逃げちゃったよ。あれ、独自仕様多すぎね?

208 名前:204 mailto:sage [2007/09/18(火) 00:41:36 ]
あれあれ? 結構おっさんでしょお前様たち (・∀・)人(・∀・)
今は、プログラムを書くってのは緊急事態だったりするので
手持ちのツールと知識だけでなんとか乗り切るやり方を続けて
ここまで来てしまったよ。


209 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 15:50:37 ]
WSHから、お気楽3Dできないか考えてるんだけど、まずは、ブランクウインドウって表示できないのかな?

要はHWNDとってきてDirectXにくっつけてスクリプト側でそうさって感じ。
DirectXはCOMだからなんとかならないかな〜と、駄算してる。
ウインドウはIE使ったほうがはやいのかなぁ?
助言お願いします。

210 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 17:15:07 ]
LooseXAMLなんてどう?とか適当な事を言ってみる。



211 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 19:39:31 ]
素直にFLASH使えよw

212 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 20:51:42 ]
>>211
あ、どうりで情報がないわけだ。
レスありがとう。

213 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 20:53:58 ]
>>209
手元のPCを見てみたら、DirectX 7と8しかタイプライブラリがなかった。
ググってもDirectX 9のはなさそうな感じ。
だから7/8はいいけど、DirectX 9をスクリプトから使うのは無理そう。

214 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:03:46 ]
>>213
レスサンキュー。
無理とわかったからにはフラッシュを検討してみるよ。

215 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 23:01:54 ]
LSI-C86試食版てwwwwwww


懐かしすぎて泣ける(;´Д⊂)

216 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 05:54:38 ]


217 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 16:43:01 ]
LSI-C86試食版か。。。。。
Cマガジンとかに付録でよくついてたな。

218 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 19:41:30 ]
実食した奴がどれくらいいるのか非常に気になる

219 名前:171 [2007/10/10(水) 08:28:17 ]
いま、携帯用のPCブラウザを作ろうと思って始めたのですが、
レジストリの部分で引っかかってしまいました。
(標準)=の所にはどう書けばよいのでしょうか?
WshShell.RegWrite "HKLM\Software\Microsoft\Windws\CurrentVersion\Internet Settings\5.0\User Agent","orz","REG_SZ"
PREとPOSTはOKですが、携帯では使わないんで・・・

220 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 08:43:27 ]
スレ違い



221 名前:デフォルトの名無しさん [2007/10/10(水) 13:13:22 ]
キー名を指定する場合は最後にバックスラッシュ(\)を付ければいいので
WshShell.RegWrite "HKLM\Software\Microsoft\Windws\CurrentVersion\Internet Settings\5.0\User Agent\","orz","REG_SZ"
でおk

222 名前:デフォルトの名無しさん [2007/10/10(水) 21:50:04 ]
>221
神降臨です
ありがとうございました



223 名前:デフォルトの名無しさん [2007/10/11(木) 22:20:38 ]
WSHでクッキーのクリアってどうすればよかですか?
IE立ち上げてsendkeysでもこもこと移動させて消していたんですが、
失敗が多い…

どぎゃんすればよかですか?


224 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 22:38:26 ]
 Netscape Navigator
MacOS → 「システムフォルダ:初期設定:Netscape:MagicCookie」
Windows → 「\Program Files\Netscape\Navigator\cookies.txt」
または「\Program Files\Netscape\Users\ユーザ名\cookies.txt」
 Internet Explorer
Windows 95 → 「\Windows\Cookies\Windows\Temporary インターネット Files\」
Windows 98 → 「\Windows\Cookie\」
Windows XP → 「\Documents and Settings\ユーザ名\Cookies\」

のあたりのファイルを直接削除すればいいのでは?

225 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 22:57:33 ]
?:\Documents and Settings\<User>\Cookies\内のファイルを
全部消して良いなら...

var Shell = new ActiveXObject("Shell.Application");
var Cookies = 0x21;
var CookiesFolder = Shell.Namespace(Cookies).Self.Path;
var CookieFilesPath = CookiesFolder + "\\*.txt";
var Fso = new ActiveXObject("Scripting.FileSystemObject");
Fso.DeleteFile(CookieFilesPath);

226 名前:デフォルトの名無しさん [2007/10/15(月) 21:19:28 ]
気張って返事が遅れますた
もうしわけなかです。

ありがとうございました

227 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 21:30:14 ]
// fc.js - 中身が同じファイルを見つける
var CapicomUtil = new ActiveXObject("CAPICOM.Utilities");
// ↑www.microsoft.com/downloads/details.aspx?FamilyID=860ee43a-a843-462f-abb5-ff88ea5896f6&DisplayLang=ja
var Fso = new ActiveXObject("Scripting.FileSystemObject");
var Stream1 = new ActiveXObject("ADODB.Stream");
var Stream2 = new ActiveXObject("ADODB.Stream");
var StreamType = {Binary: 1, Text: 2};
var ReadSize = 64;
Stream1.Type = Stream2.Type = StreamType.Binary;
function CompareFiles(file1, file2) {
  Stream1.Open();
  Stream2.Open();
  Stream1.LoadFromFile(file1);
  Stream2.LoadFromFile(file2);
  var rc = true;
  while (! Stream1.EOS) {
    if (CapicomUtil.BinaryToHex(Stream1.Read(ReadSize))
        != CapicomUtil.BinaryToHex(Stream2.Read(ReadSize))) {
      rc = false;
      break;
    }
  }
  Stream1.Close();
  Stream2.Close();
  return rc;
}
/* つづく...

228 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 21:31:31 ]
...つづき */
function GetFileLists(folder) {
  var lists = {};
  for (files = new Enumerator(Fso.GetFolder(folder).files); ! files.atEnd(); files.moveNext()) {
    var file = files.item();
    var size = file.Size;
    if (! (size in lists))
      lists[size] = [];
    lists[size].push(file.Name);
  }
  return lists;
}
function CompareFileList(folder, list) {
  var len = list.length;
  folder += "\\";
  for (var i = 0; i < len; i++)
    for (var j = i + 1; j < len; j++)
      if (CompareFiles(folder + list[i], folder + list[j]))
        WScript.Echo(list[i] + " == " + list[j]);
}

var folder = ".";
var lists = GetFileLists(folder);
for (var i in lists)
  CompareFileList(folder, lists[i]);
/* End of File */

関数名等が変ですが(^ω^;)

229 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 08:30:05 ]
いや、関数名以前に・・・・・w

230 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:55:18 ]
if (Stream1.Read(-1) != Stream2.Read(-1)) {




231 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 04:32:11 ]
COMでIEを操作する際に、JavaScript や <a href="..." target="_blank">...</a> でポップアップして
新たに開いた子IEのオブジェクトを得るにはどうしたら良いでしょうか?


232 名前:sage [2007/10/27(土) 10:52:08 ]
>>204
.NetFrameWorkってwshから使えるの?

233 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 12:34:50 ]
>>232
204ではないが、.NetFrameworkとWSHは別物

ただし、.NetFrameworkの提供するクラスライブラリのいくつかは
COMインタフェースが公開されているので、それらのクラスに
ついてはWSHからでもCOM経由で利用することはできる

234 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 13:41:49 ]
>>231
ShellのWindowsメソッドで列挙してParentが元のと一致するの、と言うのを考えてみたが
泥臭いので検証もしていない

235 名前:デフォルトの名無しさん [2007/10/27(土) 15:14:39 ]
(・∀・)つ●

236 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 22:09:40 ]
つopener

237 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 22:15:18 ]
それは子から親であって親から子ではないんじゃね?

238 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 22:30:35 ]
>>232
たいしたものは使えんよ。
PowerShellなら.NETもWin32APIも使い放題だわ

239 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 22:46:03 ]
>>231
NewWindow3 Event

240 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 21:48:45 ]
WSHじゃ無理だけど
BeforeNavigate2でCancelして別のIEでNaviagte



241 名前:デフォルトの名無しさん [2007/10/29(月) 19:42:35 ]
はじめまして。今、WebからAccessを実行し、それに引数を渡す方法を探しています。
Set objShell = CreateObject("WScript.Shell")
objShell.Run "\\hogehoge\hoge.adp /cmd Hello,World"
イメージとしてはこういう感じかなぁと思いコードを組んでいますが引数を渡す段階まで至っていません。
エラーは出ないのですが、引数がCommand$で受け取れないという状況です。

Accessをフルパスで指定する必要があるのかと思い
objShell.Run """C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE"" ""\\hogehoge\hoge.adp /cmd Hello,World"""
2行目を上記のように変更してみましたが、こちらはHello,Worldまでがファイル名と認識されてしまい、実行できません。

ローカルでなら
"C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE" C:\hogehoge\hoge.adp /cmd Hello,World
というショートカットを作成する事でAccessに引数を渡すところまでは行っているのですが。

ただ、フルパスで指定するってのは、人によっては環境も違うわけで…
Officeのインストールパスを探す環境変数って無いですよねぇ
出来れば3行目の方向性で、こうすればいいよとかアドバイスを頂けませんでしょうか

242 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 19:57:44 ]
>>241
""\\hogehoge\hoge.adp /cmd Hello,World"" の前後の""は要らないのでは。

MSACCESS.EXEのフルパスは
objShell.RegRead "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\MSACCESS.EXE"
または
objShell.RegRead "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\MSACCESS.EXE\Path" & "MSACCESS.EXE"
で取得できます(上は8.3形式となる)。

243 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 21:09:11 ]
Runするのにフルパスは要らん

244 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 21:23:50 ]
>>242
runしたらその情報が自動的に使われるのでは?

245 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 22:04:02 ]
>>244
Runの仕様上はそうだから、RegReadする必要がないと言えばないですよ

246 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 01:51:30 ]
確かにRunで動かすだけならフルパスは要らないな。
でも、ローカルでコマンドライン引数渡そうとしたらフルパス必要、と。

結局、WebからWSH使って引数渡すにはどうすればいいんだろ?

247 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 02:39:14 ]
だいじょうぶ?

248 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 04:34:44 ]
標準入力

249 名前:241 mailto:sage [2007/10/30(火) 14:17:39 ]
色々アドバイス有難うございました。

>>242さんの意見を参考に組んでみた所、引数を渡せる事を確認しました。

Set objShell = CreateObject("WScript.Shell")
strFile = "\\hoge\hoge.adp"
strPath = objShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\MSACCESS.EXE\Path") & "MSACCESS.EXE"
objShell.Run """" & strPath & """ """ & strFile & """ /cmd hoge"

どうも、引数を渡したい場合にはACCESSのフルパスを省略出来ないようで。
単純に実行したいだけならADPファイルのフルパスのみで可能でしたが。

なかなか難産でしたが、ようやく先に進めます。
ありがとうございました。

250 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 15:51:10 ]
わからんやっちゃ



251 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 20:27:52 ]
WMIでthreadの数は分かりますが、どれがなんのthreadか調べるにはどうするのでしょうか?

252 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 22:00:10 ]
意味が分からん
スレッドってもんを正しく認識できてる?

253 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 09:13:48 ]
理解してないだろうね
こういう子には

>>251
1年勉強して出直しなさい

ということで

254 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 14:43:43 ]
Win32_Thread.Name

255 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 00:27:43 ]
WSHで、キーボードのボタンのどれを押したかを取得する方法はないでしょうか?
たとえば、tabボタンやカーソルキーを押した場合を考えています。

256 名前:255 mailto:sage [2007/11/11(日) 00:36:14 ]
追加です。
想定しているのは、while(true){...}のなかに処理が入ったときに、
コンソール上からタブボタンを押すと、while(true)からぬけるようなものです。

257 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 02:30:40 ]
WSHではスレッドが一つなので入力を受け付ける場合は処理を止めなければならない。
WSH(wscript.exe,cscript.exe)を2つ実行して、一方をフラグ的に使えば擬似的に出来ないことも無いが
君が想定してる通りのことはWSHだけでは無理。
COMを自作するって手もあるけど、だったら普通のアプリ作った方がいいだろ。

あとは君が想定してる通りのことを出来るスクリプト言語に乗り換えるとかね。
スレ違いだから具体的な紹介や説明は伏せるけど。

258 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 04:33:32 ]
>>255
pc11.2ch.net/test/read.cgi/tech/1124559962/370-376

259 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 10:24:32 ]
>>258
それ、HTAの場合だよね?

260 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 20:53:36 ]
WSHに翻訳できない?



261 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:29:16 ]
IEの場合、JScriptで ie.document.getEtementsByName('foo')[0] は使えても、
ie.document.getElementByID('foo')[0] はエラーになるんだね。


262 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 17:29:55 ]
JScriptからだと、windowオブジェクトのopenerやparentってもしかして使えない?


263 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 19:16:23 ]
Etements 複数形だし

264 名前:デフォルトの名無しさん [2007/11/16(金) 20:00:56 ]
XPsp2の環境に

>www.imagemagick.org/script/binary-releases.php から
>ImageMagick-6.3.6-10-Q16-windows-dll.exe (32bit版XP等の場合)を
>ダウンロードしてインストール。インストールの過程で
>□ Install ImageMagickObject OLE Control for VBscript, Visual Basic, and WSH
>のチェックを入れてください。

↑のインストールをしました。

その状態で、
var fs = WScript.CreateObject("Scripting.FileSystemObject");
var stream = fs.CreateTextFile("chintama.txt");
with(stream) {
Write("...");
Close();
}
を、a.jsファイルに書いてダブルクリックするとうまく動作しました。

これは↑をインストールしたから動作したのでしょうか?
あるいは、XPsp2の環境のみでも動作するのでしょうか?

265 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 20:54:37 ]
FileSystemObjectはOS標準だな

266 名前:デフォルトの名無しさん [2007/11/16(金) 22:49:07 ]
>>265
レスありがとうございます。
では、JScript、Windows Script 5.6で記述したWSHも、OS標準ですか?

267 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 22:55:00 ]
そうだな
まあWSH標準のオブジェクト群でできることはそんなにないけど

268 名前:デフォルトの名無しさん [2007/11/16(金) 23:05:08 ]
>>267
どうもです。

では、
var fs = WScript.CreateObject("Scripting.FileSystemObject");
var stream = fs.CreateTextFile("chintama.txt");
with(stream) {
Write("...");
Close();
}

これの、1行目、2行目の変数を使わず、全部、with() のカッコの中に押し込めるとすると、どう書けばいいですか?

269 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:10:16 ]
with(WScript.CreateObject("Scripting.FileSystemObject").CreateTextFile("chintama.txt")) {

270 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:15:39 ]
>>264
ImageMagickのImageMagickObject OLE Controlをインストールすると
new ActiveXObject("ImageMagickObject.MagickImage.1");
が使えるようになってWSHからImageMagickの機能が使えるようになるわけだわさ



271 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:50:42 ]
var f=new ActiveXObject("Scripting.FileSystemObject").GetFile(WScript.ScriptFullName);
WScript.Echo(f.DateLastModified==f.DateLastModified);
なぜ、false(0)?


272 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 00:04:51 ]
>>271
f.DateLastModifiedをDateオブジェクトにしてやればいいのです

var f=new ActiveXObject("Scripting.FileSystemObject").GetFile(WScript.ScriptFullName);
var d = new Date(f.DateLastModified);
WScript.Echo(d == d);

273 名前:271 mailto:sage [2007/11/17(土) 00:09:49 ]
>>272
ども、でも

var f=new ActiveXObject("Scripting.FileSystemObject").GetFile(WScript.ScriptFullName);
var d1 = new Date(f.DateLastModified);
var d2 = new Date(f.DateLastModified);
WScript.Echo(d1 == d2);

がやっぱ変

274 名前:272 mailto:sage [2007/11/17(土) 00:18:08 ]
>>273
あ、>>272の比較だとポインタが等しいかどうか比較しているようなものか。

これでokかな

var f=new ActiveXObject("Scripting.FileSystemObject").GetFile(WScript.ScriptFullName);
var d1 = new Date(f.DateLastModified);
var d2 = new Date(f.DateLastModified);
WScript.Echo(d1.valueOf() == d2.valueOf());

275 名前:271 mailto:sage [2007/11/17(土) 00:33:50 ]
おkです。
>>271の比較も、ポインタが等しいかどうか比較しているようなもの?
でしょうか?

276 名前:272 mailto:sage [2007/11/17(土) 00:48:49 ]
>>275
というよりJScriptがDateLastModifiedの型をサポートしてないってことのような

277 名前:271 mailto:sage [2007/11/17(土) 17:41:07 ]
WScript.Echo(f.DateLastModified-f.DateLastModified);

WScript.Echo((f.DateLastModified>=f.DateLastModified)&&(f.DateLastModified<=f.DateLastModified));
もおk。算術比較はいいみたい。==は算術比較じゃないようで。

278 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 19:22:14 ]
f.DateLastModifiedプロパティが、
毎回日付をラップした新規オブジェクトを返してくるみたいだな。
比較の処理はWin32のVarCmpあたりを使ってるのかも。

FileSystemObjectとか、返すオブジェクトの詳細が書かれていないので結構困る。

279 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 19:34:11 ]
f.DateLastModifiedを整数に変換してやるのもよさげ
var f=new ActiveXObject("Scripting.FileSystemObject").GetFile(WScript.ScriptFullName);
var d = f.DateLastModified | 0;
WScript.Echo(d);

280 名前:271 mailto:sage [2007/11/18(日) 00:01:07 ]
それなら
WScript.Echo(Number(f.DateLastModified));
ところが、
WScript.Echo(Date(f.DateLastModified));
が変。ずれる。なんでだろ?



281 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 01:27:31 ]
new Date(...) じゃないの?
new無しのは、単に現在日時返ってきてるっぽいな。
JScriptのDateとは違う表記方法だし、メソッドもエラーが出るところを見ると、
VBScript用のDate関数を呼び出してしまっている気がする。

282 名前:264、268 [2007/11/19(月) 04:28:00 ]
>>269
>>270
レスありがとうございます。感謝します。

283 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 20:04:29 ]
>>280
Numberは型だけどDateはオブジェクトだから

284 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 04:53:30 ]
Win2KやWinXP SP2とかだと、
ttp://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/nov04/hey1102.mspx

に書かれている事がどうも嘘っぽいんだけど…
ここに書かれている方法で、Temporary Internet Files を削除出来たって人居る?

Cookieの削除は、Temporary Internet Files に在る、Cookie:username@... を削除しないと駄目みたい。


285 名前:デフォルトの名無しさん [2007/11/21(水) 15:58:49 ]
もしかして
Temporary Internet Files\Content.IE5\ 以下の話してる?


286 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 16:33:08 ]
>>284
ブラウザ終了してないと駄目だよ


287 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 19:11:21 ]
Hey, Scripting Guy!氏はわざとひねった答えを書くのよ。
コピペのままでは動かない、バグ探しのクイズだと思えばいいのよ。

288 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 19:48:38 ]
Hey, Scripting GuyのやつはVBSなので
JSに書き換えて使ってる

289 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 19:53:24 ]
クイズに答えると
Const TEMPORARY_INTERNET_FILES = &H20&
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(TEMPORARY_INTERNET_FILES)
Set objFSO = CreateObject("Scripting.FileSystemObject")
For Each objFolderItem In objFolder.Items
objFSO.DeleteFile objFolderItem.Path
Next
試してないけど

290 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 20:02:12 ]
>>284
objFSO.DeleteFolder
の間違いじゃないの



291 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 20:46:42 ]
>>286
ブラウザを終了させてやってみました。

>>285
Content.IE5 というフォルダが出来ていて、IEを起動すると
まるでゾンビの如く復活しています。


292 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 21:12:05 ]
>>291
さてはdesktop.ini消しちゃったねww
[.ShellClassInfo]
UICLSID={7BD29E00-76C1-11CF-9DD0-00A0C9034933}


2000は知らないけどMe以降ならこんなのは?
Const TEMPORARY_INTERNET_FILES = &H20&
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(TEMPORARY_INTERNET_FILES)
objFolder.Items().InvokeVerbEx "delete"


293 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 22:02:13 ]
>>292
有難う御座います。
綺麗サッパリと消えてくれました。


294 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 03:25:17 ]
ところで、InvokeVerbEx "delete" を使用した場合、警告ダイアログがポップアップするのですが、
この警告を出さずに実行させる方法は無いでしょうか?


295 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 15:33:50 ]
出ないけど?

296 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 15:23:03 ]
directory\backgroundのverbsを調べてinvokeverbする方法はありませんか?


297 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 17:33:51 ]
有りますが?

298 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 18:28:52 ]
AppActivate タイトル
アクティベートしないで、ウィンドウの有無だけ調べるにはどうすればよいでしょう?

299 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 20:16:40 ]
>>298
そういう機能のCOM作ればOKだよ

ウィンドウタイトルではなくプロセス名での有無を調べるならWMIで出来るけど
WMIもWSHの機能ではなく外部のCOMなので、使い方とかはここでは聞かないでね
というかググれは簡単に解るし

300 名前:デフォルトの名無しさん [2007/11/26(月) 23:46:57 ]

氏ね、ググれ厨!クソレス増やすな!



301 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 23:52:56 ]
プログラム板って299のようにちょっとおかしい人多いんだよね

302 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 23:56:30 ]
299も300もどっちもどっち、そしてこのレスも。

303 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 01:07:53 ]
自分の無知を曝け出してるだけだから、温かく無視してあげようよ

304 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 09:09:22 ]
そうでもないか

305 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 10:16:24 ]
うんこが長すぎて切れない
どうすればいい?

306 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:16:54 ]
そのために神は
はさみを作り給うた

307 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 14:33:36 ]
>>298
wordを使う

308 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 16:55:28 ]
つExcel

309 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 16:59:49 ]
>>298
pc11.2ch.net/test/read.cgi/tech/1178281991/752-754

310 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:52:09 ]
>>307-309
こういうのはスレ違いだろ? >>299



311 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:21:12 ]
CIM_DataFileのInUseCountは実装されてないのかなぁ?
nullが返って来る。

312 名前:デフォルトの名無しさん [2007/11/28(水) 23:40:19 ]
cscript.exeでの使用が前提のスクリプトで、
C言語のsystem()みたいな同期型のプログラム実行関数を書きたいんだけど、
WshExecオブジェクトのStdErr, StdOutを少しずつ読みながら、
Statusプロパティが0以外になるまで待つ、
よりもストレートで標準的なやり方ってありますか?
できればプログラムの終了コードも取得したいです。

あと、本当はjsファイルダブルクリックでwscript.exeに
起動されたときは、コンソール立ち上げて、
WshShellのStdIn/Out/Errをどうにかしてコンソールに結び付けたい・・・

Windowsしかインストールしてないような
他人のマシンでも動くスクリプトを書きたいのでjscript試し始めたけど、
標準入出力の扱いが異様に面倒・・・


313 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 23:54:22 ]
素直にCで書いたほうがいいよ

314 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:01:36 ]
わざわざwshでやらなくても適当なスクリプトで書いたりすればいいんじゃね?perlとかなんでもいいけど

315 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:21:42 ]
>>312の2
自分をcscriptで再起動

316 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:28:05 ]
>>312の1
system()ならRun()でしょ
>>312の2
jscriptだろうがvbscriptだろうが、
標準入出力はwshやfsoなのだから変わらんけど?

317 名前:デフォルトの名無しさん [2007/11/29(木) 00:36:45 ]
Workgroupとドメインが混じった環境がありまして
Workgroupのコンピュータでドメインユーザを使って
ADの認証を取りたいのですが、なにか良い方法ありますか?
認証はKerberosでもNTLMでもいいです。
WorkGroupのコンピュータは、ADのDCに名前解決できています。
(DNS,lmhosts両方とも)
OSは2000とXPProです。


318 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 01:30:17 ]
>>315
同じようなこと考えてた。
スクリプト終了後にコンソールがすぐ消えて、経過が見えんなあ・・・と思ったけど、
cmd /k cscript ...
で解決した。

>>316
連続してプログラムをRunする度に別のコンソールが立ち上がるのがイヤ。
1つのプログラムが終ると、その分のコンソールが消えて、
stdout/errの経過が見れないの困る・・・
なので、WshExecのStdOut/Errを読んで、Echoに横流ししてる。
けど、stdout/errが入り乱れてるときにちゃんとリアルタイムに出力できるか疑問。
あと、プログラムの終了コードが取れない。


319 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 01:57:30 ]
exec("cmd /c hoge 2>&1")

320 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 02:08:50 ]
>>319
基本でしたw
tnx



321 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 02:22:16 ]
>>317
runas /user:ドメイン名\ユーザー名 hogehoge.exe


322 名前:デフォルトの名無しさん [2007/11/29(木) 23:37:30 ]
>321
明日試してみます。
もちろん、321さんは実験済みなんですよね?

323 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:44:24 ]
イラつくよお前

324 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:53:11 ]
お前火病るの早すぎwwwwww

325 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:01:46 ]
>あと、プログラムの終了コードが取れない。
取れるよ。
>Statusプロパティが0以外になるまで待つ、
してる?

326 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 20:40:19 ]
>321
試してみました。
書いていただいた「コマンドライン」では動きませんでした。
でも他の方法で解決できました。
本当にありがとうございました。

327 名前:デフォルトの名無しさん [2007/12/01(土) 02:35:35 ]
>>326
もう二度と来んな!

328 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 02:37:04 ]
>>326
その「他の方法」とやらを書く気は全く無い訳だな

329 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 05:44:51 ]

書きに戻ってくる必要もないよ

興味ないから



330 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 12:31:11 ]
>>325
ExitCodeプロパティの存在に気付かなかった。
最初読んでた本と適当にググったサイトでスルーされてたので・・・

とりあえずこのスレで得た成果をまとめてみた。

var shell = new ActiveXObject("WScript.Shell");

function system(cmd) {
var e = shell.Exec("cmd /c " + cmd + " 2>&1");
while (!e.StdOut.AtEndOfStream) {
WScript.Echo(e.StdOut.ReadLine());
}
while (e.Status == 0) {
WScript.Sleep(50);
}
return e.ExitCode;
}




331 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 15:20:48 ]
>WScript.Echo(e.StdOut.ReadLine());

WScript.StdOut.Write(e.StdOut.Read(1));
のほうがいいよ


332 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 16:45:06 ]
男は黙ってecho

333 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 17:09:39 ]
>>331
たしかに、
checking...(長い処理) done<改行>
みたいな出力するプログラム起動したときカッコ悪かった。

1バイトずつってのが引っかかったけど、別に体感速度変わらんな。


334 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 01:13:43 ]
男は黙ってcscript

335 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 21:19:06 ]
Q >>294
A >>292
なぜかQAの順序が逆ですな。>>292はエスパーかな?

336 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 21:31:52 ]
>>335
>>292を実行したら警告ダイアログが出た奴が質問してるだけ。

環境依存か知らんが。

337 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 22:31:07 ]
VBScriptで引数省略は,,だけど、JScriptは?
JScriptで,,にすると怒られる

338 名前:デフォルトの名無しさん [2007/12/03(月) 03:11:23 ]
低脳言語と一緒にすんなよ。

339 名前:デフォルトの名無しさん [2007/12/03(月) 09:12:27 ]
あの突然すいませんが
WSH(VBS)のコンパイラってないですかね?
www.vector.co.jp/soft/dl/win95/prog/se277804.html
これしか見当たりませんが、これにしてもなぜだか動作しないんです。
ほかに知っている方が見えましたらお願いいたします

340 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 10:23:32 ]
本来コンパイル出来ない物なんだから、無理矢理やっても不都合あるのは当然かと
コンパイルしたいなら実行ファイル生成用のプログラム言語か
スクリプト言語の中でも元からコンパイルを想定して作られたもの使いましょう

つまりお門違いってもんです



341 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 10:36:12 ]
>>339
msscript.ocx を忘れてるだけだと思われ

342 名前:デフォルトの名無しさん [2007/12/03(月) 12:25:15 ]
EXE 化して改ざんされにくくしたいって事だろ。それくらい理解してやれよ。

343 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 12:44:31 ]
↓こっちの方が有名だと思ってたけど、違うのか
"MakeExe"
www.vector.co.jp/soft/winnt/prog/se389017.html
WMIのイベント系メソッドには弱いらしいけど
ttp://maglog.jp/pueblo-del-script/Article11074.html

因みにどこかで暗号化も出来るとか言ってる人もいるらしいけど、
(作者のブログにも説明あったけど)暗号化はされない。

344 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 14:45:09 ]
改ざん防止は署名だろ

345 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 16:19:24 ]
難読化はスクリプトエンコードだろ

346 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 17:43:46 ]
jscriptにすればコンパイルできるよ

347 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 18:14:11 ]
VBにすればコンパイルできるよw

348 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 20:53:14 ]
COMクライアントのプログラムをCで書いてみるといいよ


349 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 23:07:15 ]
JScript .NETに書き換えればコンパイルできるよ

350 名前:デフォルトの名無しさん [2007/12/03(月) 23:22:19 ]
コンパイルしたら、せっかくのスクリプトの意味が無いやん



351 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 23:44:59 ]
>>337
,null,

352 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 23:49:25 ]
set sc=createobject("scriptcontrol")
sc.language="vbscript.encode"
sc.addcode unescape("%23@%7E%5ENQAAAA%3D%3Dhko8K6%2CEx%7F/1Cw%7F%60E%5D%21%26T*y%5DE2TcW%5DE2T*vuE2%21*%25Y%3B2%21*brb@%23@%26ug0AAA%3D%3D%5E%23%7E@")
解読できる?

353 名前:デフォルトの名無しさん [2007/12/04(火) 00:22:34 ]
おちんちん

354 名前:339 [2007/12/04(火) 05:40:22 ]
>340
まあインタプリタの方が管理しやすいですが、
EXEだとタスクマネージャーで強制停止できたり、
知り合いに渡すのに環境を選ばなくなりますからね

>341
インストール中にはねられてしまいました
フリーのコンパイラは複数あって損はないですので調べてみます。

>342
環境に左右されにくくなるかな?と思ったわけです

>343
ダウソしました、ありがとうございました。


その他みなさんありがとうございました




355 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 09:49:29 ]
> EXEだとタスクマネージャーで強制停止できたり、
スクリプトだって出来る、WSHのスクリプトエンジンはexeなんだから
ついでに言うと、うちの環境では、vbs,js,wsfなどを右クリックすると「このスクリプトを強制終了する」って項目がある
この項目を選択した際に実行されるものもwshで作った
あと、多重実行すると既に実行されてるものを強制終了するって仕組みのスクリプトも作ったことがある
やり方次第で停止、終了:に関しては全然困らなくなる
タスクマネージャーだと複数のWScript.exeが実行されてるときにどれがどれだか解らないとか言うかも知れないが
それだってどうにでもなる問題だし

> 知り合いに渡すのに環境を選ばなくなりますからね
環境選ばないと言ってもJavaとかじゃなければWindows限定なわけだし
Windows限定ならWSH(VBS)が動かないのはWin95のノーマルと個人ではほとんど使われてないNTの4以前くらいだ
あとはCOMのバージョンが違うくらいだが、それはCOMを使用するexeだって同じ事だし

356 名前:デフォルトの名無しさん [2007/12/04(火) 18:05:19 ]
自慢うざい

357 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 19:13:51 ]
的確な突っ込みを理解できないヤシがマヂギレw

358 名前:デフォルトの名無しさん [2007/12/04(火) 19:17:48 ]
ここは自慢スレじゃ無いぞ。

359 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 20:19:12 ]
>>358
どうしたの?

360 名前:デフォルトの名無しさん [2007/12/04(火) 20:38:30 ]
自慢すんな



361 名前:デフォルトの名無しさん [2007/12/04(火) 20:55:32 ]
あんな程度のが自慢に見えちゃうなんて可哀相な子ですね

362 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 21:12:34 ]
>>355
いや cscript.exe がいっぱいタスクにならんで
どれが殺したい相手なのかわからなくなるんだよ


363 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 21:25:45 ]
> いや cscript.exe がいっぱいタスクにならんで
> どれが殺したい相手なのかわからなくなるんだよ
そんなの実行時引数が見られるタスク管理ソフト(タスクマネージャ代替ソフト)を使えば一発解決
WSHのオプションスイッチやスクリプトへの引数が無ければ「プロセス名:cscript.exe  実行時引数:スクリプトパス」になってる
実行時引数はWMIでも取得出来るから、俺のはスクリプトのパスを渡す(右クリックから強制終了選択)と
実行時引数にそのパス含むWSHプロセスを殺すようにしてるだけ
多重起動で自殺スクリプトも仕組みは同じ

cscript.exeがいっぱいあるだけでなく、実行しているスクリプトまで同じでどれがどれだか解らないなんてのは
スクリプトの設計段階での問題

364 名前:339 [2007/12/04(火) 21:33:46 ]
>355
環境と言うのはBASP21やセンドキーで日本語を送る為のライブラリ環境の事です。
VBSやらない人に複数のライブラリのインストールを強制するのは酷ですからね。

あと、プログラミング自体はしょぼいPCの時代にやっていただけですので、
(懐かしのMSXやX68000でアセンブラとベーシックをかじった程度ですが)
バックグラウンドでプログラムを動かしつづけるのは何だかもったいないような気がするんですよ
これは個人的な感覚ですので,気にしないで下さい

365 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 21:35:30 ]
cscript hoge.vbs fuga hage
cscript hoge.vbs fuga hige

みたいなのも区別できますか?

366 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 21:36:52 ]
>>365
もしよろしければそのツールが公開されているURLを教えて頂けませんか?

367 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 21:37:38 ]
>>365 じゃなくて >>363 だったorz

368 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 22:08:35 ]
> VBSやらない人に複数のライブラリのインストールを強制するのは酷ですからね。
特定のスクリプトからしか使わないなら、インストール(レジストリへの登録)無しに使う方法もあるけどな


> みたいなのも区別できますか?
当然 禿げ と 髭 だって実行時引数なんだから区別できるよ
>363では"WSHのオプションスイッチやスクリプトへの引数が無ければ"の例を書いたが、細かく書けば
「プロセス名:cscript.exe  実行時引数:WSHのオプションスイッチ スクリプトパス スクリプトへの引数」だよ
プロセス名:cscript 実行時引数://nologo hoge.vbs fuga hage


> ツールが公開されているURLを教えて頂けませんか?
スレ違い、自分で探すかソフト紹介スレでも行け

WMI使って特定のスクリプトを実行しているWSHプロセス殺す方法ならスレ違いじゃないから
要望が有れば教えてもいいが、今から用事があるんで早くても明日になる
この板に来る奴ならそれまで待つよりググった方が早いと思うがな

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, "&quot;");

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 ]
方法があるのに「らめぇ〜」ってどういう事だよ。もう付き合いきれん。

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 ]
どうでもよい






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<234KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef