WSH(・∀・)スレッド! Part 3at TECH
WSH(・∀・)スレッド! Part 3 - 暇つぶし2ch433:デフォルトの名無しさん
08/11/16 23:12:26
俺が見ても>>419-420が役立たずのアホ

434:デフォルトの名無しさん
08/11/17 00:32:24
慈円

435:デフォルトの名無しさん
08/11/17 00:43:23
       ☆ チン       マチクタビレタ~
                     マチクタビレタ~
 ☆ チン  〃 ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ヽ ___\(\・∀・)< ミスディレクションさんの登場まだ?
      \_/⊂ ⊂_)_ \____________
    / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
   |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:|  |
   |Winコンポーネント .|/
    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

436:デフォルトの名無しさん
08/11/17 00:45:28
>>427
 大 し て 役 に た た な い 類似品
 ~~~~~~~~~~~~~~~~~

理解できたか?

437:デフォルトの名無しさん
08/11/17 00:45:44
珍しく伸びてると思ったら・・・

438:デフォルトの名無しさん
08/11/17 05:44:19
フルパスからフォルダ作成(存在しない親フォルダも作成)をできるだけにスマートにvbsで書くとどうなりますか?

439:デフォルトの名無しさん
08/11/17 07:01:33
こいつはスレ出入り禁止
>>421=>>423=>>338=>356

こいつの文章は特徴があるからすぐわかる

440:デフォルトの名無しさん
08/11/17 07:09:42
>>438
フォルダが作成される。

441:デフォルトの名無しさん
08/11/17 09:00:37
書くだけじゃ作成されねーし


パス区切り文字でsplitして親から順に存在チェック
有ったら次へ、無かったら作る

442:デフォルトの名無しさん
08/11/17 12:04:13
CreateObject("WScript.Shell").Run "CMD /CMKDIR \a\b\c\d"

443:デフォルトの名無しさん
08/11/17 18:59:29
やっぱ再帰だろ

444:デフォルトの名無しさん
08/11/17 20:33:00
sub sub_CreateFolder(strFolderPath) 'フォルダの作成
 strParentFolderPath = objFileSystem.GetParentFolderName(strFolderPath)
 if objFileSystem.FolderExists(strParentFolderPath) then
 else
  call sub_CreateFolder(strParentFolderPath) '親フォルダが無ければ再帰的に呼び出し
 end if
 call objFileSystem.CreateFolder(strFolderPath)
end sub

445:デフォルトの名無しさん
08/11/17 20:50:02
>>442
cmd使っちゃう方法もありますねw

>>444
なるほど。シンプルですね。
大変参考になりました。
みなさんありがとうございます。


446:デフォルトの名無しさん
08/11/18 00:13:43
call sub_CreateFolder("x:\folder")
無限ループ

447:デフォルトの名無しさん
08/11/18 00:51:22
>>444
then 側の実行文が空のコードってすごくバカっぽく見えるのは俺だけか?

448:デフォルトの名無しさん
08/11/18 00:59:16
どっちでもいいじゃん
いちいちめんどくせぇな

449:デフォルトの名無しさん
08/11/18 01:16:58
>>446
・ドライブレターが存在するか
・フォルダパスとして成立するテキストが入っているか
この2つは本来はこのサブルーチンに入る前にチェックするべきだあね。

>>447
then側はtrue、else側はfalseに統一しておくと、
可読性が高くなって個人的にはいいと思ってる。
"not ~" とか "~ = false" は後々で見直すときに、
ぱっと見てどっちかわかりにくいんだよね。

450:デフォルトの名無しさん
08/11/18 04:19:42
>>446
あーそうかそうか。
ドライブの直下にフォルダ作らせようとすると無限ループにはいるね。
今までそういう使い方してなかったから気づかなかった。
objFileSystem.DriveExistsでif文一個追加すればいいやって思ったけど
このメソッド、"x:\"だと必ずFalseだね。"x:"ならTrueがかえってくるけど。 

451:デフォルトの名無しさん
08/11/18 04:31:03
ちゃんと作るとこうかな?

Set objFileSystem = CreateObject("Scripting.FileSystemObject")
strBuf = inputbox(" ")
if objFileSystem.DriveExists(objFileSystem.GetDriveName(strBuf)) then
 call sub_CreateFolder(strBuf, objFileSystem.GetDriveName(strBuf) & "\")
else
 WScript.Quit
end if

sub sub_CreateFolder(strFolderPath, strDrivePath) 'フォルダの作成
 strParentFolderPath = objFileSystem.GetParentFolderName(strFolderPath)
 if objFileSystem.FolderExists(strParentFolderPath) then
 elseif strParentFolderPath = strDrivePath then
 else
  call sub_CreateFolder(strParentFolderPath, strDrivePath)
 end if
 call objFileSystem.CreateFolder(strFolderPath)
end sub

452:デフォルトの名無しさん
08/11/18 05:01:41
call objFileSystem.CreateFolder(strFolderPath)をする前に
objFileSystem.FolderExists(strFolderPath)しないと
ファイルが既に存在してるかどうか確認するのがめんどくさいからとりあえず実行しちゃえ
ってなった時に既に存在してたらエラーになる


453:デフォルトの名無しさん
08/11/18 05:03:23
ファイルじゃなくてフォルダだった(´・ω・`)

454:デフォルトの名無しさん
08/11/18 08:36:27
つーかさ、初心者って「スマートに」とか「シンプルに」とか好きだよな
そんで例外処理すら省いた短いだけの不適合コードに満足する
良いコードとは、短いコードではなく正しく動作するコードだってことを解ってない

455:デフォルトの名無しさん
08/11/18 13:14:52
作ろうとするフォルダ名と同じファイルがあっても困るからそのときは中断処理しないといけないなぁ

456:デフォルトの名無しさん
08/11/18 13:58:50
>>454
所詮スクリプトなんだからあんまり例外処理を作り込む必要はないんちゃう?と最近は思う。
自分の環境で動けばそれでいいし、動かなければ適宜手直しするし・・・。

457:デフォルトの名無しさん
08/11/18 17:32:08
>>450
>このメソッド、"x:\"だと必ずFalseだね。
このメソッド、"c:\"だとFalseかね?

458:デフォルトの名無しさん
08/11/18 19:54:41
>>457
"c"とか"c:"ならTrueなのに、"c:\"はFalse。
で、ofs.GetParentFolderName("c:\hogehoge\")の戻り値は"c:\"
設計思想としてはわからんでもないけどなぁ。

459:デフォルトの名無しさん
08/11/18 20:40:06
>>447
バカっぽくは見えないけど、個人的にはあまり好きな書き方じゃないな。
ちなみに↓だと「「許容できない」が一番多いけど、「許容できる」もそれなりに多い。

空のIF文を書きますか? - Insider.NET
URLリンク(www.atmarkit.co.jp)

460:デフォルトの名無しさん
08/11/18 20:42:28
"c:\"はTrueだけど?


461:デフォルトの名無しさん
08/11/18 21:43:55
>>454
そんな初心者見たことねぇ。

462:デフォルトの名無しさん
08/11/18 22:48:51
>>460
本当だ。どうも寝ぼけてなんか間違えたらしい。>>458は忘れてくれ。

>>459
そこでも出てるけど、後々のメンテとか考えると統一したいんだよね。
if not ~ thenで作ってて、後からTrueの場合の条件分岐追加したくなるときとか。
特に理由がない限りは愚直に馬鹿でも読めるように書けと教育されたので。

463:462
08/11/18 23:00:13
あ、でも確かにCode Completeでは「稚拙に見えるから止めろ」って書いてある。
だから本来はNot使うのがいいのかもね。

464:デフォルトの名無しさん
08/11/19 01:26:22
jsのif (!...) { ... }なら認識しやすいんだけど
vbsのif not ... thenは色分けできるエディタ使ってても
なんか視界のなかで他の単語にうもれてときたま見逃してしまうから
>>449みたいにif ... thenでやっちゃうことが多いな


465:デフォルトの名無しさん
08/11/19 06:34:51
JScriptでADODB.Streamを使用してみてるんですが
Readで読んだバイナリ値をStringオブジェクトに格納できないでしょうか?

var oAD = new ActiveXObject("ADODB.Stream");
oAD.Type = 1;
oAD.Open();
oAD.LoadFromFile("C:\\hoge.bin");
var Str = oAD.Read(1);

WScript.echo(Str);//エラーは出ないが文字列に変換されて出力される
s1 = String(Str);//文字列ではありません
WScript.echo(Str.constractor);//null、またはオブジェクトではありません

466:デフォルトの名無しさん
08/11/19 10:30:27
>>248をみてもしかしたらと思って.NETのクラスつかったらできたよ
var asciienc = new ActiveXObject("System.Text.ASCIIEncoding");
var s1 = asciienc.GetString(Str);
WScript.Echo(typeof(s1));

467:デフォルトの名無しさん
08/11/19 10:33:13
あとレジストリみたらSystem.Text.ASCIIEncodingのほかに
System.Text.UnicodeEncoding
System.Text.UTF7Encoding
System.Text.UTF8Encoding
があったからここらへんも使えると思う

468:デフォルトの名無しさん
08/11/19 11:45:55
constractor???


469:デフォルトの名無しさん
08/11/19 11:52:58
var Str = oAD.ReadText(1);

470:465
08/11/19 12:03:56
constructorですね。間違えました

>>466-467
出来ました!ありがとうございます

が、0x80以降を格納すると変なことになりますね…

WScript.echo(s1.charCodeAt(),toString(16));//ASCIIだと3f、それ以外はfffdがずっと続く

>>469
テキストモードで開くのなら、iso-8859-1で開いて0x80~0x9fは置換するって方法があるみたいですね


とりあえず置換する方向で行きたいと思います。ありがとうございました



471:465
08/11/19 12:04:51
誤:WScript.echo(s1.charCodeAt(),toString(16));//ASCIIだと3f、それ以外はfffdがずっと続く
正:WScript.echo(s1.charCodeAt().toString(16));//ASCIIだと3f、それ以外はfffdがずっと続く

472:デフォルトの名無しさん
08/11/19 12:08:52
なにがしたいんだか

473:デフォルトの名無しさん
08/11/19 12:17:37
自分のマシンのローカルエリア接続に設定されている
デフォルトゲートウエイIPアドレスをWSHで取得する方法で頭打ってます。
どなたか知りませんか?

474:デフォルトの名無しさん
08/11/19 12:21:20
JScriptからバイナリの暗号化とか復号とかいろいろできたら便利だなぁ、とか思ってました

475:デフォルトの名無しさん
08/11/19 12:24:28
JScriptじゃ無理
VBScriptつかえよ

476:デフォルトの名無しさん
08/11/19 12:34:53
VBSで取得する方法でもいいです。
Google先生でもなかなか見つからない紋で。

477:デフォルトの名無しさん
08/11/19 12:38:55
Str = oAD.Read(-1)
For k=1 To LenB(Str)
WScript.Echo AscB(MidB(Str,k,1))
Next



478:デフォルトの名無しさん
08/11/19 12:44:52
早速ありがとう!
oADこのオブジェクトはどこから取得するのですか?

479:デフォルトの名無しさん
08/11/19 22:09:25
>>473
ちゃんとググッたのか?

default gateway wsh でググッたら、"Need to get default gateway via VBScript" って
言うほぼどんぴしゃのページがヒットするんだが...。

URLリンク(www.experts-exchange.com)

480:デフォルトの名無しさん
08/11/20 01:07:04
>>479
おれのプニル1.66が固まった(´;ω;`)ウッ…

481:デフォルトの名無しさん
08/11/20 02:34:44
>>454
> そんで例外処理すら省いた短いだけの不適合コードに満足する
僕は初心者ですが、どれぐらいがちがちに例外処理すべきなのかよくわからないんです。
普通は成功しそうな処理でもいちいちチェック、例えばこんな感じで↓
Set obj = Nothing
On Error Resume Next
Set obj = GetObject("winmgmts:\\.\root\cimv2")
'他にはSet obj = CreateObject("WScript.Shell")とか…
On Error Goto 0
If Not obj Is Nothing Then
'続き!
Else
WScript.Quit(1)
End If
してたらしてたらうっとうしいんじゃないかとか思ったり。

482:デフォルトの名無しさん
08/11/20 14:14:40
URLリンク(okwave.jp)
>CScriptのコンソール画面のクリア方法
できないって?
clsすりゃいいだけなのに

483:デフォルトの名無しさん
08/11/20 16:15:30
>>481
意味ないからやめろよ
必要なときだけやれ

484:デフォルトの名無しさん
08/11/20 16:16:36
理由
テストできないだろ?
テストできないコードを書くな

485:デフォルトの名無しさん
08/11/20 22:27:17
意味があるかどうかは状況次第。
>>481 の例だと、俺もわざわざエラーチェックはしないけど、ファイルを
開いたりする時はエラーチェックする。

テストしたいなら GetObject(), CreateObject() の文字列変えてテスト
するとかすればいいだけのこと。

あと、どうせエラーチェックするなら...

If obj Is Nothing Then
 WScript.Echo("GetObject(""winmgmts:\\.\root\cimv2"") Failed")
 WScript.Quit(1)
End If
'続き!

のようにした方がインデントも深くならないし、いきなり WScript.Quit()
されてもわけわからんので、なんかメッセージを出した方がいいと思う。

486:481
08/11/21 00:45:17
>>483, 485
アドバイスありがとうございます。

必要かどうか、状況を判断するのが難しいです。
修行がいるのだろうなぁ。

VBScriptって例外が発生して落ちたときに
終了コードをセットしないから外部からわからないんですよね。
今作ってるのは他のスクリプト内から実行される可能性があるので、
うっとうしいと思いながらも何が何でも例外は自分で拾って
WScript.Quit(1)するという方針で書いてます。

487:デフォルトの名無しさん
08/11/21 01:08:05
>479
ありがとうございます!

英語が読めないので日本語ページオンリーです。
恥ずかしっ!!


488:デフォルトの名無しさん
08/11/21 11:45:34
>>481
その方針は間違い

>VBScriptって例外が発生して落ちたときに
>終了コードをセットしないから外部からわからないんですよね。
→ QuitWithErrNumber.VBS

>今作ってるのは他のスクリプト内から実行される可能性があるので、
>うっとうしいと思いながらも何が何でも例外は自分で拾って
>WScript.Quit(1)するという方針で書いてます。
だけなら、
sub main()
end sub
on error ...
call main
if ... quit(1)
するだけ


489:デフォルトの名無しさん
08/11/23 00:27:15
>>481
そのやり方だと、どうしても漏れるよ
漏れたときに困るよ
正常時だけQuit(1)にすれば確実だよ

490:デフォルトの名無しさん
08/11/25 14:06:49
.urlファイルを書き換えても、プロパティで見ると書き換わってない
F5しても同じ
どうすれば反映される?

491:481
08/11/27 00:12:55
レス遅くてすいません。

>>488
> → QuitWithErrNumber.VBS
なるほど!スクリプト終了時のオブジェクトの解放時に
明示的にセットするという方法があるのですね。
自分では全く思いつきませんでした。ありがとうございます。

>>489
確かに仰る通りです。逆転の発想をするわけですね。
正常終了は%ERRORLEVEL%==0という固定観念がありました。
大変参考になりました。ありがとうございます。

結局、Main()全体にOn Error Resume Nextすることにしました。



492:デフォルトの名無しさん
08/11/27 22:12:29
>>491
> 結局、Main()全体にOn Error Resume Nextすることにしました。

なんでそんな結論に...

493:デフォルトの名無しさん
08/11/28 23:54:38
坊やだからさ

494:481
08/11/30 01:33:16
>>492
>>493
もしかして一番ダメな方法なのかな…
忠告ありがとうございます。もうちょっと考えてみます。

495:デフォルトの名無しさん
08/12/03 14:13:54
URLリンク(oshiete.nikkeibp.co.jp)
ぷっ

496:デフォルトの名無しさん
08/12/04 10:53:01
/MIN

497:デフォルトの名無しさん
08/12/04 10:54:55
start /MIN hoge.bat

498:デフォルトの名無しさん
08/12/04 17:19:09
JS教えたりして意地悪じゃないの
\\で嵌まるの目に見えてる

499:デフォルトの名無しさん
08/12/31 12:44:37


500:デフォルトの名無しさん
09/01/03 07:09:06
500

501:デフォルトの名無しさん
09/01/05 06:09:19
wshから(出来ればVBSで)エクスプローラを再起動させたいんですが
起動はいいのですが、プログラムを終了させる事って出来ないんでしょうか?

502:デフォルトの名無しさん
09/01/05 13:46:54
>>501
WMIつかえば出来るよ
使い方はググればサンプル含めて転がってる
又はコマンドライン型のプロセス終了ツールを使う手もある

503:デフォルトの名無しさん
09/01/06 23:29:03
>>501
XP 以降なら taskkill ってコマンドがある
プロセスIDや実行ファイル名でプロセスを殺せる

ex) taskkill /IM notepad.exe


504:デフォルトの名無しさん
09/01/06 23:46:47
>>503
home editionにはない

505:デフォルトの名無しさん
09/01/06 23:54:44
好きなの使えよ。
URLリンク(www.vector.co.jp)


506:デフォルトの名無しさん
09/01/07 00:07:11
PsKill - ローカルまたはリモートのプロセスを停止します。
URLリンク(technet.microsoft.com)(en-us).aspx

507:デフォルトの名無しさん
09/01/07 00:46:38
taskkill、PsKillってのが>>502の言ってるコマンドライン型のプロセス終了ツールでしょ。

508:デフォルトの名無しさん
09/01/07 04:04:31
tskillつかえよ

509:デフォルトの名無しさん
09/01/11 14:50:20


510:デフォルトの名無しさん
09/01/12 22:44:18
vbseditみたいに補完&デバッグできるフリーな奴無い?

511:デフォルトの名無しさん
09/01/15 07:17:05


512:デフォルトの名無しさん
09/01/16 07:47:10


513:デフォルトの名無しさん
09/01/17 23:37:18


514:デフォルトの名無しさん
09/01/20 21:26:39
URLリンク(www.atmarkit.co.jp)
上記のURLで紹介されている「SystemScripter」を使用されている方はいらっしゃいますか?

試しにインストールしてみたのですが、IMEで日本語を入力すると入力が重複してしまう
のですが...回避方法はないでしょうか?

515:デフォルトの名無しさん
09/01/21 12:55:06
Vistaやっと買ったら、自作のスクリプトが落ちます・・・

*******************************
'ファイル操作の宣言
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

'ファイルのオープン
Set objFile1 = objFSO.OpenTextFile(name1)

******************************
上の命令付近で、どうしても落ちます。
Vistaに何か入れれば、動くとか情報有りますか?



516:デフォルトの名無しさん
09/01/21 19:10:29
何が落ちるんだ?

517:デフォルトの名無しさん
09/01/21 19:15:02
> Vistaやっと買ったら、自作のスクリプトが落ちます・・・


518:デフォルトの名無しさん
09/01/21 19:27:40
反ウイルスソフトじゃないの?

519:デフォルトの名無しさん
09/01/21 19:28:43
どこに落ちるんだ?

520:デフォルトの名無しさん
09/01/21 22:20:36
>515
Vistaは知らんが、CreateObject("Scripting.FileSystemObject") に
"WScript"を付ける奴は初めて見た。   WinXP&WSH5.6ユーザーより

521:デフォルトの名無しさん
09/01/21 23:54:00
そうか?
視野が狭いだけだろ?

522:デフォルトの名無しさん
09/01/22 09:11:37
付近とかまたアバウトな・・・

523:デフォルトの名無しさん
09/01/22 10:10:43
>>520
WSHのWScript.CreateObject
> object.CreateObject(strProgID[,strPrefix])
と、VBSのCreateObject
> CreateObject(servername.typename [, location])
は一応別物だよ

つまり>>515は「CreateObjectにWScriptを付けている」のではなく
「VBSではなくWSHのCreateObjectを使っている」という表現が正しい

まあ基本的には同じ様なものなので、必要性を感じなければ使い分けなくても良いだろう
必要性を感じたら、自分で細かい仕様を調べて使い分ければ良い

524:デフォルトの名無しさん
09/01/22 22:44:44
大量の文書の置換をしたいのですが、どのような形で組めばいいのでしょうか?
置換対象文書はすべて一つのフォルダのサブフォルダに入っているのでサブフォルダ内から抽出するなり再帰的に実行するなりすればよいでしょうが…

置換自体のスクリプトは以下のITPROの記事を参考に作りました。
URLリンク(www.atmarkit.co.jp)

後はこのスクリプトを起動するスクリプトを作成するか、読み込むファイルを抽出する部分を工夫すればいいのですが、
何か手はないでしょうか?

525:デフォルトの名無しさん
09/01/22 22:48:01
>>524
for

526:デフォルトの名無しさん
09/01/22 23:04:00
>>524
自分がフォルダ階層を辿るときはディレクトリの再帰処理を書くのが
面倒なんでこんな感じのをよく使う
以下の foo() でファイル毎の処理を書く
実際には dir の '*' はコマンドラインからパラメタで与えたりもう少しは
工夫するけど

var objShell = WScript.CreateObject ("WScript.Shell");
var objFS = WScript.CreateObject ("Scripting.FileSystemObject");
function foo(filename)
{
 WScript.Echo(filename);
}
var execDir = objShell.Exec("cmd /c dir /b /s /a-d *");
while (! execDir.StdOut.AtEndOfStream) {
 var file = execDir.StdOut.ReadLine();
 if (! objFS.FileExists(file)) {
  continue;
  }
  foo(file.replace(objShell.CurrentDirectory, "").replace(/^\\/, ""));
}


527:デフォルトの名無しさん
09/01/23 23:23:05
>>526
遅くなりましたが、参考にさせていただきました。
ありがとうございました。

528:デフォルトの名無しさん
09/02/02 11:56:09
ho

529:デフォルトの名無しさん
09/02/05 00:15:34
レジストリキーが存在するかを確認したい

URLリンク(www.atmarkit.co.jp)
のサンプルCheckReg.vbsを参考にした
キーの既定に空白でもなんでも値が入っていれば正常に判断できるが、
既定が(値の設定なし)だとキーが存在していても無いと判断されてしまう。

URLリンク(okwave.jp)
で同様の状態についてやりとりがあり、解決済みだと言うサンプルが置いてある(IsNullを使ったもの)
…けれど、やはり同様に(値の設定なし)だとキーが存在していても判断に失敗する

既定が値の設定なしで、他にエントリもないレジストリキーの存在を
確実に確認する手段はございませんでしょうか

530:デフォルトの名無しさん
09/02/05 00:49:44
>>529
このあたりはどう?
URLリンク(www.microsoft.com)


531:デフォルトの名無しさん
09/02/05 01:00:13
スクリプト センター > スクリプト一覧 > オペレーティング システム
レジストリ
URLリンク(www.microsoft.com)

532:デフォルトの名無しさん
09/02/05 02:21:17
>>530
そこのスクリプトでも結果が同じで
  エントリ名が入る変数strValueNameを空白にすると
 strKeyPathで設定した場所(キー)の既定エントリを覗くようですが
既定エントリの値を (値の設定なし)→空白にするとexistになります
(値の設定なし)に戻すとやはりnot existになります

>>531
学習します

533:デフォルトの名無しさん
09/02/05 03:15:30
もっと他のやり方がありそうなんだけど一応

const KEY_QUERY_VALUE = &H0001
const HKEY_CURRENT_USER = &H80000001
const HKEY_LOCAL_MACHINE = &H80000002
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
strKeyPath = "SOFTWARE\developer\app\key"
Result = objReg.CheckAccess(HKEY_CURRENT_USER, strKeyPath, KEY_QUERY_VALUE, bHasAccessRight)
If Result = 0 Then
Wscript.Echo "key found."
ElseIf Result = 2 Then ' WBEM_E_NOT_FOUND
Wscript.Echo "key not found."
Else
Wscript.Echo "other error."
End If


534:デフォルトの名無しさん
09/02/05 03:43:06
>>533
これは(値の設定なし)でもキーの存在を的確に判断してくれます
大変有難いことです。感謝

535:デフォルトの名無しさん
09/02/06 16:50:11
WSHでOutlookの予定や仕事の本文のフォントを一括で変更できる方法ってありますか?

536:デフォルトの名無しさん
09/02/06 19:28:41
もしOutlookVBAでできるなら、WSHでもできるよ

537:デフォルトの名無しさん
09/02/06 21:50:15
WSH(使用言語はjscript)でWin32apiのLoadLibrary()ってどうやって使うんですか!?


538:デフォルトの名無しさん
09/02/06 21:55:37
無理

539:デフォルトの名無しさん
09/02/06 22:03:58
そういうCOM使えばええがな

540:デフォルトの名無しさん
09/02/06 23:01:41
糞スレ晒し上げ

541:デフォルトの名無しさん
09/02/07 01:55:39
なるほど
ありがとうございました

542:デフォルトの名無しさん
09/02/07 05:31:22
サービスのスタートアップの種類(自動・手動・無効など)を調べるスクリプトを書いており、
Vistaの自動と自動(遅延開始)を識別する方法を探しています。
WMIのWin32_ServiceクラスのStartModeプロパティには、両方ともAutoが設定されています。
MSDNでは他にそれらしいプロパティは見付かりませんでした。
レジストリ値を直接読んで識別するしかないのでしょうか?

543:デフォルトの名無しさん
09/02/07 05:42:58
ここはWSHスレです。

VB6でもRubyでもC#でもDelphiでもVBAでも使える
汎用コンポーネント(WMIなど)の話はお控え下さい。

544:デフォルトの名無しさん
09/02/07 05:55:18
あれま。そういう棲み分けでしたか。失礼しました。

545:デフォルトの名無しさん
09/02/07 07:05:52
自動(遅延開始)は依存関係で他のサービスが立ち上がってから立ち上がるもの
つまり依存するサービスを所有していればそれで判別可能

546:デフォルトの名無しさん
09/02/07 07:11:45
>>543 >>539
COMもVB6でもRubyでもC#でもDelphiでもVBAでも使えるから
ここで話題振るのは禁止なんですよね

547:デフォルトの名無しさん
09/02/07 14:17:16
複雑だと思うならつかわなきゃいいんじゃねーの?
なんでアホはあるもの全部使わなきゃ気がすまねーの?

548:デフォルトの名無しさん
09/02/07 15:36:14
がんばれよ

549:デフォルトの名無しさん
09/02/07 19:22:53
がんばりまっちゅ

550:デフォルトの名無しさん
09/02/07 19:31:19
WSHもCOMだろ?

551:デフォルトの名無しさん
09/02/07 19:43:36
いいえ、WSHはCOMじゃありませんよ
WMIはCOMですけど

552:デフォルトの名無しさん
09/02/07 19:54:14
>>545
どうしてそんなすぐ分かる嘘を付くのですか?

553:デフォルトの名無しさん
09/02/07 19:55:36
WSH.Echo TypeName(WSH)

554:デフォルトの名無しさん
09/02/07 20:07:58
>>553
いきなりどうしたの?

555:デフォルトの名無しさん
09/02/07 23:59:10
なるほどね

556:デフォルトの名無しさん
09/02/08 00:18:45
もしかしてObject=COMだと思ってるんじゃないの?

557:デフォルトの名無しさん
09/02/08 00:24:41
やめときゃいいのに

558:デフォルトの名無しさん
09/02/08 00:37:35
だよね
あんなの書かなきゃ恥かかなかったのに

559:デフォルトの名無しさん
09/02/08 00:57:24
ぷっ

560:デフォルトの名無しさん
09/02/08 02:59:09
MsgBox "Object"="COM"

561:デフォルトの名無しさん
09/02/08 03:13:19
たしかにちがうな

562:デフォルトの名無しさん
09/02/08 03:14:34
MsgBox "WMI"="COM"

563:デフォルトの名無しさん
09/02/08 10:06:41
WSHとPowerShellはどういう関係なのでしょうか?
PowerShellが使えたらWSHはもう要らないものでしょうか?

564:デフォルトの名無しさん
09/02/08 14:19:11
>>563
大雑把に言うと、WSHはいわゆる「スクリプト言語」からオートメーションコンポーネントをいじるためのホスト環境で
VBScript, JScript, PerlScriptなど各種インタープリタが存在する。
PowerShellはPowerShellスクリプトで.NETコンポーネントをいじるためのインタープリタそのもので、オートメーションコンポーネントをいじるための機能も備えている。

WSHとPowerShelllは主な使用用途が似ているから比較されるだけで、直接な関係はない。
WSHで使えるスクリプト言語になるためにはActiveScriptというルールにのっとったインタープリタを作らなきゃダメで、
PowerShellインタープリタがもしもActiveScriptとしても実装されたら、WSHでPowerShellが使えたりもするようになるし、
逆に.NETでActiveScript相当のルールができてVBScriptやJScriptのインタープリタができたら、.NET用のWSHみたいな物ができるかもしれない。

WSHの使用用途については、PowerShellが大部分を食っていくと思われ。
しかしPowerShellはWindows XP以降でしか使えないが、WSHは9x系でも使える。
VBScriptなどPowerShell以外のスクリプト言語が使いたい場合まだWSHでないと無理。
そのあたりWSHの用途をカバーするものが別途出てきたらいらなくなると思う。

565:デフォルトの名無しさん
09/02/08 14:38:23
スルーしような

566:デフォルトの名無しさん
09/02/08 14:38:28
JRubyとかIronRubyとかIronPythonとかあって訳若芽です><

567:デフォルトの名無しさん
09/02/08 14:50:36
ここはWSHスレです。

IEでもHTAでもSCでも使える
汎用スクリプト言語(VBScript,JScriptなど)の話はお控え下さい。


568:デフォルトの名無しさん
09/02/08 15:03:29
あれま。そういう棲み分けでしたか。失礼しました。

569:デフォルトの名無しさん
09/02/08 15:10:00
WSH.Echoも、VB6でもRubyでもC#でもDelphiでもVBAでも使えるんですがどうしましょ?

570:デフォルトの名無しさん
09/02/08 15:10:59
COMは専用スレあるからスレ違いでいいけど
アクティブスクリプトは専用スレあったっけ?

571:デフォルトの名無しさん
09/02/08 15:18:22
>>569
WSH.Echoも、IEでもHTAでもSCでも使えるけど、いいんじゃね

572:デフォルトの名無しさん
09/02/08 15:27:32
>>569
VBAかVB6でWSH.Echoを使うサンプルコード書いて

あ、もちろんWrapper的なのを噛ますのは無しね
dllやらwscやら噛ませるのは、そのホスト上でWSHオブジェクトが使えてるわけではなく
そのやdllやらwsc上でWSHオブジェクトが使えてるだけだから

573:デフォルトの名無しさん
09/02/08 15:34:44
WSCでWSHオブジェクトが使えてるのか?

574:デフォルトの名無しさん
09/02/08 15:55:24
。。。

575:デフォルトの名無しさん
09/02/08 16:18:48
ぷっ

576:デフォルトの名無しさん
09/02/08 16:19:24
ぽっ

577:デフォルトの名無しさん
09/02/08 16:21:25
WSHはCOMだからオブジェクト参照さえ渡せばWSCだろうとIEだろうと使えるよ

578:デフォルトの名無しさん
09/02/08 16:27:30
ぷっ

579:デフォルトの名無しさん
09/02/08 16:35:32
ActiveほにゃららってWindows版の各スクリプト言語処理系の頭に付くのは何故なんだろうって最初は不思議でした

580:デフォルトの名無しさん
09/02/08 17:02:07
>>572
>VBAかVB6で
スレ違いだろ?

581:デフォルトの名無しさん
09/02/08 17:05:35
ぷっ

582:デフォルトの名無しさん
09/02/08 17:11:19
>>577
いいえ、WSHはCOMじゃありませんよ
WMIはCOMですけど

583:デフォルトの名無しさん
09/02/08 17:30:05
結局具体的には書けないんだね

584:デフォルトの名無しさん
09/02/08 18:15:05
具体的に書いてやらないとわからないんだね

585:デフォルトの名無しさん
09/02/08 18:23:58
うん、わからないからちゃんと書いて

586:デフォルトの名無しさん
09/02/08 18:31:26
いやだよ

587:デフォルトの名無しさん
09/02/08 18:54:22
WSHは外部からCreateInstanceはできないだけで、COMじゃないわけはないだろ。

588:デフォルトの名無しさん
09/02/08 19:09:22
いいえ、WSHはCOMじゃありませんよ
WSHはEXEですけど


589:デフォルトの名無しさん
09/02/08 19:12:17
ヒントだよ
Set hoge=WSH
hoge.Echo TypeName(hoge)
これでわからないならあきらめるんだな

590:デフォルトの名無しさん
09/02/08 21:22:29
実はヒントにもなってない件と
実は本人も解ってない件w

591:デフォルトの名無しさん
09/02/08 21:28:49
htaでWScript.Sleep使いたいんだが・・・ いや、まじで。

592:デフォルトの名無しさん
09/02/08 21:53:34
つかってるけど?

593:デフォルトの名無しさん
09/02/08 22:04:56
>>590
もそっとCOMを勉強したほうがよくないか?

594:デフォルトの名無しさん
09/02/08 22:05:48
fso = win32com.client.Dispatch('Scripting.FileSystemObject')
folder = fso.GetFolder('C:\\')
for file in folder.Files:
print file.Name


595:デフォルトの名無しさん
09/02/08 22:12:18
>>592
どうやるの? さっさと吐け!

596:デフォルトの名無しさん
09/02/08 22:18:49
Set w = WScript.CreateObject("WScript.Shell")
w.Popup "Ready",3,"1,2,3"
w.LogEvent 1, "DaahhhHHH!"

597:デフォルトの名無しさん
09/02/08 22:21:13
>>596
それWScript.Sleep 3のつもり?
WScript.CreateObjectでエラーになるけど?

598:デフォルトの名無しさん
09/02/08 22:24:13
それに
WScript.ShellのPopupはGUIアプリで使うと待ちが解けないみたいよ?

599:デフォルトの名無しさん
09/02/08 22:32:57
>>591
>htaでWScript.Sleep使いたいんだが・・・ いや、まじで。
つかえるけど、画面が凍るのでやめとけ・・・ いや、まじで。

600:デフォルトの名無しさん
09/02/08 22:54:02
VBとかC#から
WScriptのインスタンスを生成するにはどうすればよいですか?


601:デフォルトの名無しさん
09/02/09 00:13:39
outprocessserverの場合と似たようなことをやればよい
ShellやProcess.Startで起こして、
そのスクリプトからWScriptオブジェクトを外部から見えるところに設定

602:デフォルトの名無しさん
09/02/09 01:40:52
Windows Script Host(WSH)の機能全体の話とWScriptオブジェクトと
Windows Script Host Object Modelの各オブジェクトと、
WScript/CScriptコマンドが錯綜してる気がする

まず、Windows Script Host Object Modelで説明されるオブジェクトは
あくまで WSHの構成要素であって、WSHそのものではない。

なので、外部からWSHの構成要素の一部のオブジェクトをインスタンス化
できる、という説明は正しいが、
WSH自体を操作できる、という説明は正しくない

次に、COMをIUnknown、IDispatchのインタフェースを持ち、GUIDで
識別されるもと定義するなら、Windows Script Host Object Model
に含まれるオブジェクトはすべてCOMであり、これにはWScriptも含まれる。

ただし、WScriptを除く各オブジェクトは単体で外部からインスタンス化
できるのに対して、WScriptオブジェクトは外部からインスタンス化することは
できないという違いがある。

で、結局WScriptオブジェクトはWSHの環境内でのみ使用できるオブジェクトなので、
外部からは使えません。

>>601は具体的なコードを示してほしい

603:デフォルトの名無しさん
09/02/09 02:27:18
.NET についてもひとことおねがいします

604:デフォルトの名無しさん
09/02/09 03:02:48
コード? 技術者だったらヒントから考えろ
WSHからVBAの関数を呼べるだろ?
VBAでsub hoge(wsh)作ってWSHから呼べ
そしたらVBAからWSH使い放題
IEも同じ 関数作って呼ぶか、プロパティにセットするか
HTAはWSHから呼べないから、間にIEをはさむなりしろ

605:デフォルトの名無しさん
09/02/09 03:59:15
姫様ズーム・イン

606:デフォルトの名無しさん
09/02/09 04:01:26
ヒントだと思い込んで出してる情報が実は間違いでしたとさ

607:デフォルトの名無しさん
09/02/09 04:55:18
おやすみ

608:デフォルトの名無しさん
09/02/09 07:53:52
あるあるw

609:デフォルトの名無しさん
09/02/09 08:34:58
ごめん、自分には素のWindows環境で
WSHからVBAを呼ぶという時点でかなりの難易度
IEからHTAを呼び出すのもできません
ぜひ、具体例をお願いします

610:デフォルトの名無しさん
09/02/09 08:58:20
やり方を知らない人に聞いても無駄です。
無意味なヒント出されたり、自分で調べろとか
言われたりして誤魔化されるだけです。

611:デフォルトの名無しさん
09/02/09 18:20:04
あれでわからないならあきらめろってw無理すんなw

612:デフォルトの名無しさん
09/02/09 18:55:43
予想通りの反応w

613:デフォルトの名無しさん
09/02/09 19:28:27
度し難いなぁ
って意味わかるかなぁ

614:デフォルトの名無しさん
09/02/09 19:46:05
解るよ
どういう雰囲気を作りたがってるかは

上から目線で、呆れてる様を表現し
やり方を知らないから具体的な情報を出せないのではなく
もう何も言う気になれないのだよという雰囲気を作りたいのですね

でも、実際に知らないのはもうバレバレで
今更雰囲気作りに拘っても無意味っす

615:デフォルトの名無しさん
09/02/09 19:52:31
ごめんね
WSHはCOMじゃないよ
これでいい?

616:デフォルトの名無しさん
09/02/09 20:01:09
今度は「仕方ないから大人な俺が折れてあげるよ」という雰囲気作りですか
しかも論点間違ってるし

折れなくていいからさ、件の具体例出して俺等を打ちのめしてよ
打ちのめす実力が本当に有るのなら

617:デフォルトの名無しさん
09/02/09 20:18:16
ないよ
これでいい?

618:デフォルトの名無しさん
09/02/09 20:23:24
まぁ「これでいい?」を付け加えることで
本当はあるけど無いことにしておくって雰囲気を作りたいんだろうけど
それが負け惜しみなのは誰の目から見ても明らかだし
負け惜しみを吐くくらいのことは許してあげますかな

ただ、これ以上負け惜しみ吐いて醜態は晒さないようにね

619:デフォルトの名無しさん
09/02/09 20:41:25
結局出来ないのかorz
wktkして待ってたのに。

620:デフォルトの名無しさん
09/02/09 21:08:53
なんでここIDないの

621:デフォルトの名無しさん
09/02/09 21:16:42
そういう設定の板だから。

運営に申請することで変更は可能なので
変更を希望するならまず自治スレで議論し可決を取ること。
スレリンク(tech板)
運営では可決された経緯まで吟味した上で変更が検討されるから
勝手に申請だけしてもダメ。

以後、IDに関する質問や議論は自治スレで。

622:デフォルトの名無しさん
09/02/09 23:33:58
>>619
スレリンク(tech板:619番)

623:デフォルトの名無しさん
09/02/09 23:46:52
どうしたの?

624:デフォルトの名無しさん
09/02/10 02:13:22
結局向こうでも出来なかったみたいだね。

625:デフォルトの名無しさん
09/02/10 03:01:25
失敬なやつだな

626:デフォルトの名無しさん
09/02/10 03:17:54
>>591
URLリンク(pc11.2ch.net)
教えてやろうと思ったがやめた

627:デフォルトの名無しさん
09/02/10 08:08:59
無理すんな

628:デフォルトの名無しさん
09/02/10 12:41:12
教えてくれたら神だ仏だと崇め奉った上に、とっておきのエロ画像をプレゼントしようと思っていたのになあ・・・・

629:デフォルトの名無しさん
09/02/10 16:04:32
ふーん、そういうことがうれしいひとがいるんだ

630:デフォルトの名無しさん
09/02/10 16:11:56
弄られてるだけって事に気付けないのか?

631:デフォルトの名無しさん
09/02/10 17:46:36
>>591
ほれ
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(detail.chiebukuro.yahoo.co.jp)
URLリンク(oshiete1.goo.ne.jp)


632:デフォルトの名無しさん
09/02/10 18:06:22
>>631
期待せずに一応見てみたが、予想通り的外れのことしか書いてなかった。
そんなんではzipはやれんぞ。

出来ない人は黙っててくれないかなぁ~

633:デフォルトの名無しさん
09/02/10 19:23:03
処理を一時的に止めたいという実用上の話ではなく
WScriptオブジェクトをインスタンス化出来るかという
技術上の話だってことも理解できないのか?

634:デフォルトの名無しさん
09/02/10 20:03:34
いいえ、WSHはCOMじゃありませんよ

635:デフォルトの名無しさん
09/02/10 21:03:07
どうしたの?

636:デフォルトの名無しさん
09/02/10 23:01:50
Set hoge=WSH
hoge.Echo TypeName(hoge)
インスタンス化できてるだろ

637:デフォルトの名無しさん
09/02/11 01:12:11
マジレスしとくとそれは元々あるインスタンスを別名で参照してるだけ

638:デフォルトの名無しさん
09/02/11 17:23:37
マジっすか?
インスタンすか?

JScriptのArrayオブジェクトはCOMっすか?
JScriptのArrayオブジェクトは外部からインスタンス化できっすか?
JScriptのArrayオブジェクトはJScript内でのみ使用できるオブジェクトなので、
VBScriptからは使えませんすか?

639:デフォルトの名無しさん
09/02/11 17:32:30
"WScript" の代わりに "WSH" が使えるなんて初めて知ったよw

640:デフォルトの名無しさん
09/02/11 18:23:35
ちょっと他のスレッドで発見したのですが
     ↓
ラーメンタイマーでも作ってみれ。
カップヌードル用(3分)とどんべい用(5分)に分ける。
できればタスクバーに駐在する奴。

こういうのってサクっと作れますか?

641:デフォルトの名無しさん
09/02/11 19:07:33
タスクトレイ常駐以外は、HTAにすればサックリできる気が。

642:デフォルトの名無しさん
09/02/11 19:14:16
タスクバーのツールバーにいれるとか

643:デフォルトの名無しさん
09/02/11 20:06:20
作ってみた。

<html><head>
<title>らーめんたいまー</title>
<HTA:Application ApplicationName="らーめんたいまー"
SingleInstance="yes" WindowState="Normal" ShowInTaskbar="no"
MaximizeButton="no" MinimizeButton="no" Border="thin" Scroll="no">
<script>
function timeup(name)
{
alert( name + "できたよー");
}
function setup(obj,t)
{
setTimeout("timeup('"+obj.value+"')",t*60*1000);
}
window.onload = function()
{
window.resizeTo(190,80);
document.f.t3.onclick=function(){setup(this,3);};
document.f.t5.onclick=function(){setup(this,5);};
}
</script>
</head><body><form name="f">
<input type="button" value ="カップヌー㌦" name="t3"/>
<input type="button" value ="どんべい" name="t5"/>
</form></body></html>

644:デフォルトの名無しさん
09/02/11 21:29:07
IEの操作をWSHで自動化しようとしたのですが、iframeの中の要素がどう頑張っても触れません。
なんかXSS対策でそういう仕様みたいですが、なんとか回避方法は無いのでしょうか?
あるアプライアンスのGUI操作を自動化したいんです。

645:644
09/02/11 22:22:38
とりあえずnetshのportproxyを使ってlocalhost宛のアクセスで操作できるようにして誤魔化せました。
もしもっとスマートな方法が有れば御教授をお願い致します。

646:デフォルトの名無しさん
09/02/12 01:35:46
iframeの中の要素も触れたと思う

647:デフォルトの名無しさん
09/02/12 18:27:32
>>644
mshta.exeで開けばよい

648:デフォルトの名無しさん
09/02/13 04:00:13
>>639
ほんまや。どこに書いてあるんだこれ

649:デフォルトの名無しさん
09/02/13 15:43:46
for(var p in this) WScript.Echo(p);

650:デフォルトの名無しさん
09/02/13 17:49:12
いきなりどうしたの?

651:デフォルトの名無しさん
09/02/13 17:50:35
すみません。
jscriptでwshを学ぶ本ってないですか?

652:デフォルトの名無しさん
09/02/13 17:55:27
ぐぐれば?

653:デフォルトの名無しさん
09/02/13 18:08:17
なるほど
ありがとうございました

654:デフォルトの名無しさん
09/02/13 21:02:00
あるシミュレーションソフトの稼働率を出すことを考えています。
稼動していると判定したい条件は下記のOR判定としたいです。
(1)コンピュータを操作中(アイドル状態でない)
(2)当該ソフトが起動していて、かつCPU使用率が一定値以上(無人で計算実行中)
上記の時間をカウントするWSHを作れないか考えていますが、
WSHで実現可能ですか?
とくに(1)を拾える関数etcはあるのでしょうか?

655:デフォルトの名無しさん
09/02/13 21:41:06
これとか?
URLリンク(ja.wikipedia.org)

656:デフォルトの名無しさん
09/02/14 00:08:46
WMIはCOMですけど

657:デフォルトの名無しさん
09/02/14 01:03:53
COMだからWSHで使えるでしょ。

658:デフォルトの名無しさん
09/02/14 02:15:52
COMだからWSH以外でも使える

659:648
09/02/14 03:49:44
>>649
ウホッthx

660:デフォルトの名無しさん
09/02/15 01:37:00
画面をキャプチャしてjpg保存したいのですが、良い方法は無いでしょうか。
imagemagickを使えば可能だと思いますが、できるだけ汎用的に使える方法でやりたいです。
wia.scriptを使えばなんとかならないだろうかと思いつつ、よく分からず悩んでいます。

661:デフォルトの名無しさん
09/02/15 02:12:28
>660
URLリンク(www.vector.co.jp) がコメント・評価欄ともども
参考になる気が・・・と思ったが、"imagemagick"のようにバッチファイルで使えるツールで
いいのなら"IrfanView"をオススメ。画像表示だけのツールじゃないからね。

662:デフォルトの名無しさん
09/02/15 03:05:54
URLリンク(www.vector.co.jp)

663:デフォルトの名無しさん
09/02/15 06:08:23
doodleとか以前はテンプレに入ってたと思うんだけどな

664:デフォルトの名無しさん
09/02/15 06:53:05
それはWindows板のスレだ

665:デフォルトの名無しさん
09/02/15 07:28:45
ああそうか、勘違いしたスマヌ

666:デフォルトの名無しさん
09/02/15 18:00:24
666

667:デフォルトの名無しさん
09/02/16 16:56:49
VBSをはじめて使うのですが
RunメソッドやExecメソッドで起動したソフトをSendKeysではない方法で
制御(入力フォーラムに書き込んだり)することは可能でしょうか?

668:デフォルトの名無しさん
09/02/16 17:01:38
可能

669:667
09/02/16 17:21:54
>>668
早速の回答どうもです。
ググッたりして探してみます

670:デフォルトの名無しさん
09/02/19 02:21:16
ほんまかいな

671:デフォルトの名無しさん
09/02/19 15:16:14
不可能?

672:デフォルトの名無しさん
09/02/19 15:52:25
そんなこと無いけど

673:デフォルトの名無しさん
09/02/19 16:16:38
可能?

674:デフォルトの名無しさん
09/02/19 22:10:50
どっち?

675:デフォルトの名無しさん
09/02/19 23:48:06
可能

676:デフォルトの名無しさん
09/02/20 00:14:10
なるほど
ありがとうございました

677:デフォルトの名無しさん
09/02/20 05:44:37
そんな事できるならSendKeysいらなくね?

678:デフォルトの名無しさん
09/02/20 07:05:54
そんなことない

679:デフォルトの名無しさん
09/02/20 13:10:10
なるほど
ありがとうございました

680:デフォルトの名無しさん
09/02/20 13:42:14
SendKeysできるならそんな事いらなくね?


681:デフォルトの名無しさん
09/02/20 18:58:24
そんなことない

682:デフォルトの名無しさん
09/02/20 19:26:17
なるほど
ありがとうございました

683:デフォルトの名無しさん
09/02/21 17:10:57
SendKeys "日本語だめだし"

684:デフォルトの名無しさん
09/02/22 18:58:29
ABC.vbs(←自作)の二重起動を防止したいのですが、
後から起動したVBSを無効にする(起動してもすぐに終了させる)方法は見つけたのですが、
二重起動した場合、初めに起動しているvbsを強制終了させて、後から起動したvbsを有効にする方法はありませんか?


もう一つ。

vbsを実行して、vbsが待機中であれ、何かの処理中であれ、
実行して(約)10秒後に、強制終了する方法ってありますか?

685:デフォルトの名無しさん
09/02/22 20:40:39
> vbsを実行して、vbsが待機中であれ、何かの処理中であれ、
> 実行して(約)10秒後に、強制終了する方法ってありますか?

使ったことないけど、cscript //T: オプションではだめか?

686:デフォルトの名無しさん
09/02/22 21:17:17
WScript.Timeout

687:デフォルトの名無しさん
09/02/22 23:00:11
>>684
前者はWMI使って、Win32_ProcessのName='Wscript.exe'の中で
CommandLineにWScript.ScriptFullNameを含む物が2つ有ったら
CreationDateが古い(小さい)方をTerminateすれば良い

688:デフォルトの名無しさん
09/02/23 03:48:29
外からWScript.QuitやWScript.Timeoutできればいいのに

689:デフォルトの名無しさん
09/02/23 06:43:11
WSHがCOM(ActiveX.exe)だったら、それも出来たんだろうけどな

690:デフォルトの名無しさん
09/02/23 15:50:48
WSHはCOMだから出来るよ

691:デフォルトの名無しさん
09/02/23 17:02:52
知らないものは存在しない

692:デフォルトの名無しさん
09/02/23 22:13:47
出来ないことでも、出来ると言い張ってゴネるだけなら簡単

693:デフォルトの名無しさん
09/02/23 22:21:22
ぐぐれば?

694:デフォルトの名無しさん
09/02/23 23:55:19
ぐぐればわかることでも、出来ないと言い張ってゴネるだけなら簡単


695:デフォルトの名無しさん
09/02/24 01:11:36
ググってみたら解った
やはり出来ないようだ

696:デフォルトの名無しさん
09/02/24 01:17:03
>>695には無理だってw

697:デフォルトの名無しさん
09/02/24 02:19:01
不毛だ

698:デフォルトの名無しさん
09/02/24 02:26:15
出来ると言ってる奴は、出来るという証拠を出すだけで
簡単にで出来ないと言ってる奴を有無を言わさず論破出来るのに
そんな簡単なことすらしないということは・・・・・( ̄ー ̄)ニヤリッ

699:デフォルトの名無しさん
09/02/24 03:28:49
できないと思っているなら放置すればよいのにw

700:デフォルトの名無しさん
09/02/24 03:35:57
負け惜しみ?

701:デフォルトの名無しさん
09/02/24 04:37:10
一度出来ると言ってしまった手前、引っ込みが付かなくなってしまったんですね。わかります。


702:デフォルトの名無しさん
09/02/24 15:10:44
一度出来ないと言ってしまった手前、引っ込みが付かなくなってしまったんですね。わかります。


703:デフォルトの名無しさん
09/02/24 15:11:30
勝ち惜しみ?

704:デフォルトの名無しさん
09/02/24 16:46:17
で、どっち?

705:デフォルトの名無しさん
09/02/24 18:46:34
不可能?

706:デフォルトの名無しさん
09/02/24 18:54:22
そんなこと無いけど

707:デフォルトの名無しさん
09/02/24 19:13:57
ハッカー師兄の人たち教えてください。
あるサイトに動画ファイルを置いて、自分のブログからリンクした時に
動画が開かずに、ファイルに直接リンクするなと警告ページが表示されます。
ブラウザ(IE6)のRefererがリンク先ではなく私のブログサイトになって
いるのが原因ですが、リンク開く前にプログラムからRefererを変更することは
できないでしょうか?

1.今までの調べでは単純にJavaScriptで
  document.referer="URLリンク(www.aaa.com)";
と書き換えるのは無理でした。(document.refererは参照のみ可)

2.createobjectからxml2requestのoleを使ってrefererを書き換えて
バイナリデータを取得できましたが、この方法だと取得したバイナリを
どのようにwindow.documentオブジェクトで表示させれば良いかが
分かりません。

もう少しで出来そうな気がするのですがググっても解決方法が
見つかりません。アドバイスをお願いします。


708:デフォルトの名無しさん
09/02/24 19:22:41
>>706
さんくす
ではやふって探してみます
ぐぐっても見つからないようなので

709:デフォルトの名無しさん
09/02/24 19:28:14
>>687
やったことないし思いつきですが非同期でプロセス起動する方法を
調べたら良いのでは?子プロセス起動10秒後に親が子を消すように
すればできる気がします。


710:デフォルトの名無しさん
09/02/24 21:55:13
強制終了はよくないって聞くけど本当なの?

711:デフォルトの名無しさん
09/02/24 22:41:07
強制終了が何故良くないのか解ってない人にとっては良くないね。
解ってればある程度の事前対処も出来るのだが。

まぁWSHに限らずの話でスレ違いになるから詳細は伏せる。

712:デフォルトの名無しさん
09/02/24 22:48:50
>>707
Document.Refererはドキュメント取得時のRefererが記録された、言わばログなので書き換えても無意味。
書き換えるならHttpRequestHeaderの送信情報を書き換えないといけない。
HttpRequestHeaderを指定できるJavascriptライブラリなど探せば幾らでもあるだろ。
例えばこれとかな↓

URLリンク(www.s2factory.co.jp)


713:デフォルトの名無しさん
09/02/24 23:13:27
>>707
window.navigate2 によるページ遷移ならパラメタにリクエストヘッダ指定できる
ただし、セキュリティの問題とかのからみがあるので正常動作するかは知らん


714:デフォルトの名無しさん
09/02/25 00:41:18
>>705
肯定

715:デフォルトの名無しさん
09/02/25 00:53:39
強制終了するとCOM参照の解放が行われないから、
アウトプロセスサーバが終了しないで残ったりするから、
やめといたほうがいいよ。

716:デフォルトの名無しさん
09/02/25 03:10:57
Timeoutの終了だとCOM参照の解放が行われるようだから
>>688方式がお勧めだよ

717:デフォルトの名無しさん
09/02/25 03:22:07
出来ない方法がオススメって・・・・・
あっ、「もし出来るのなら」ってことか

718:デフォルトの名無しさん
09/02/25 03:34:30
COMがどういうものか解ってない人にとっては出来ないかもね。


719:デフォルトの名無しさん
09/02/25 03:39:08

出来ると言い張る奴は居るが
出来ることを事実として示せる奴は居ない件について

自分だけは解ってるようなことを言う奴は居るが
具体的な理論を述べられる奴は居ない件について


720:デフォルトの名無しさん
09/02/25 03:46:40
>>718
まぁWSHに限らずの話でスレ違いになるから詳細は伏せる。

721:デフォルトの名無しさん
09/02/25 07:08:03
本当は自分でも間違ったことを言ってることに気付いてるが
引き下がれず必死に誤魔化そうとする姿は滑稽だな。

722:デフォルトの名無しさん
09/02/25 08:10:36
初心者なんだから許してやれよw


723:デフォルトの名無しさん
09/02/25 08:59:36
>>720
残念、WSHに限った話だ

724:デフォルトの名無しさん
09/02/25 09:09:09
WSHスレってどういうことを語り合うの?

WSHを利用するのはスクリプト言語で、****scriptの話をしちゃいけないっていうじゃない。

じゃ何を話すの?

725:デフォルトの名無しさん
09/02/25 09:15:35
話題転換?

726:デフォルトの名無しさん
09/02/25 09:32:58
>>724
WSHで実行したスクリプトから、WSHで実行されてる別のスクリプトを
WScript.Quitする話とか。

これは言語の話ではなく、純粋なWSHの話だ。

727:デフォルトの名無しさん
09/02/25 11:21:59
話題転換失敗
出来る厨、涙目w

728:デフォルトの名無しさん
09/02/25 19:16:06
WScript.QuitはWScript.Sleep中は効くけど、MsgBox中などは効かない。
WScript.TimeoutならMsgBox中も効くので、使い分けてね。

729:デフォルトの名無しさん
09/02/26 13:37:29
なるほど
ありがとうございました

730:デフォルトの名無しさん
09/02/27 10:47:05
Windows XP SP3、WSH 5.7、Access 2003 VBA

フォームにCommandButtonとListBox(値リスト)を貼り付けて、

Private Sub コマンド0_Click()
Dim objShell As Object
リスト1.AddItem "AAA"
Set objShell = CreateObject("WScript.Shell")
Call objShell.Run("%ComSpec% /C SYSTEMINFO", , True)
Set objShell = Nothing
MsgBox "おわり"
End Sub

リスト1.AddItem "AAA" を

・コメントアウトするとRunが実行完了まで待機する
・コメントアウトしないとRunが実行完了まで待機しない

みんな、この現象が起きる?

731:デフォルトの名無しさん
09/02/27 16:39:35
すれ地外が出てきませんように

732:デフォルトの名無しさん
09/02/27 17:39:16
Excel2007では起きない
.Popup "aaa",5 はだめだけど

733:デフォルトの名無しさん
09/02/28 22:50:09
VBSを使って、親ディレクトリ配下のサブディレクトリの中身の表示方法を「縮小版」に変更しようと思う。
ディレクトリの表示を変更するため、Windowsを制御する「 Windows API関数」を使えばいいというのは
分かったんだけど、肝心の「フォルダの表示方法を変更する関数」が見つかりません。
そこで以下の質問。

Q1.そもそもVBSで実現することは可能か?
Q2.「 Windows API関数」で縮小版の制御はできるのか?

調べてはいるんですが、何の成果もあがりません。
質問スレで聞いたらここに誘導されたので・・・。
お願いします。

734:デフォルトの名無しさん
09/02/28 22:59:49
>>733
よく分からん
既存のエクスプローラの挙動を変えたいのか、
縮小表示のエクスプローラを起動したいのか、
自前のアプリに縮小表示の機能を作りこみたいのか
まず、何をしたいのかをはっきりさせてくれ

735:デフォルトの名無しさん
09/02/28 23:06:42
>>733
A1.WSHとVBSの機能では不可能
A2.そもそもWSHやVBSはWinAPIを呼べない

COMと呼ばれる汎用コンポーネントを介すことで
実現自体は不可能じゃないけどね
どうしてもやりたければ、WSHやVBSではなくそっち方面を調べること

736:デフォルトの名無しさん
09/02/28 23:08:53
WSHはCOMですけど?

737:デフォルトの名無しさん
09/02/28 23:09:54
WindowsAPIじゃなくてExplorerAPI使わないとね!

そんなんあるのか?

738:デフォルトの名無しさん
09/02/28 23:12:32
ActivePerlからWin32API呼べますけろ?

739:デフォルトの名無しさん
09/02/28 23:14:13
URLリンク(www.atmarkit.co.jp)

740:デフォルトの名無しさん
09/02/28 23:14:58
>>736
知ってますよ
幾人かの妄想上ではWSHがCOMだってことくらい

現実世界ではそれを証明できずに論破されましたが

741:デフォルトの名無しさん
09/02/28 23:21:48
「知る」と「分かる」の違い?

742:デフォルトの名無しさん
09/02/28 23:28:03
URLリンク(ja.wikipedia.org)
正確にはWSH=ActiveScripting(COMを利用してる)のホスト。

広義ではCOM(COMに関係する)だけど、狭義ではCOMそのものではない。

743:デフォルトの名無しさん
09/02/28 23:33:47
関連する、と、広義に当てはまる、は違う件について。

というか、外からWScript.QuitやWScript.Timeout出来るって話はどうなったの?
これの具体例出せれば、WSHがCOMだという現在敗色濃厚な主張も一発逆転じゃん。

744:デフォルトの名無しさん
09/02/28 23:42:10
COMの話はどうでもいいが、本当にそれが出来るなら俺も知りたいね

745:デフォルトの名無しさん
09/03/01 00:24:06
エクスプローラはCreateObjectできないけれど、
COMだからオブジェクト参照は別途入手して、
その内部オブジェクトのShellFolderViewのオブジェクト参照を
WSHの変数に設定すれば、
objFolderView.CurrentViewMode = viewMode
のように使えるのだ。わかるか?

746:デフォルトの名無しさん
09/03/01 00:41:43
知ってるけどそれがどうかしたの?

747:デフォルトの名無しさん
09/03/01 00:44:01
知っててわからんとは
まっ多少なりとも応用力がないと役に立たんみたいやね


748:デフォルトの名無しさん
09/03/01 00:46:34
URLリンク(ja.wikipedia.org)

749:デフォルトの名無しさん
09/03/01 00:48:20
>>747
何勘違いしてるの?

750:デフォルトの名無しさん
09/03/01 00:52:04
>>743
ScriptContorlでWScriptを渡すのはいいのかな?
元々の要望通りになるとは思えないけど。

751:デフォルトの名無しさん
09/03/01 01:02:19
>>748のCOMの定義にあるインターフェイスを介す方法でよろしく
それ以外の方法で参照を取って操作したところでCOMとは言えないし

752:デフォルトの名無しさん
09/03/01 02:12:07
え~と、IUnknownを実装していてoleview.exeやExcelの参照設定からでもオブジェクトの内容を見れたとしても、それでもCOMではないと言い張るんだ?
Windows Script Hostの略称「WSH」とスクリプトからグローバルに参照できるインスタンス「WSH」を混同してるわけ?

753:デフォルトの名無しさん
09/03/01 02:15:32
はぁ?

754:デフォルトの名無しさん
09/03/01 02:18:40
ふわぁ~眠

755:デフォルトの名無しさん
09/03/01 02:28:40
COM serverはCOMだけど、COM ClientはCOMじゃない、みたいな言い方だな。

748をじっくり読めば分かるけど、COMってのはインターフェース等の通信規格の事で、
COM ClientがCOMじゃないって言うなら、COM ServerもCOMじゃないんだが。

756:デフォルトの名無しさん
09/03/01 03:24:39
何見当違いなこと言ってキレてるんだ?

757:デフォルトの名無しさん
09/03/02 19:14:29
>>735が恥ずかしさのあまり誤魔化そうと暴れまわってるんじゃなかろうか

758:デフォルトの名無しさん
09/03/02 19:17:14
WScript.Quitと言えばこんなことも
URLリンク(blog.livedoor.jp)

759:デフォルトの名無しさん
09/03/02 21:02:59
>>757
残念ハズレ

760:デフォルトの名無しさん
09/03/02 22:00:56
          . '   _ 二二 _ .、
          /    /´ -‐…‐- .`\
        /     /´    i   !`ヽト、
.    ,ヘ  ,'   i    !  !  | |i  |ハ i ヽ キリッ
   /  ゝ!  ノ|  ! !::__!::ノ ´  ̄  i::.i |!
   \  .| .:i i :i i |´   \  / `!、ハ:!
      `ヽi  从 i i | ニニミ    .ニニ !:::::|
.       |  YハiハN  {r::リ`  ´{r::リ '::::N    < 残念ハズレ
.       |  ヽゝ   ´´     ``ハ!`      
.       |∧   Ⅵ!        ′ ,':::|
       j/∧  _!::} 、   ⊂' ..イ:::::|
      ///∧´ ∨  `  ,.... ィ´゙Y:::::|
.     /////∧ ヽ    {ト、∧ |::::::!
     ,< ̄ ̄∧  } `ヽ  >''} { ̄`ヽ
.    /   `ヽ:::::::::Y´ヽ      i´`∨::::∧
   /      ∨:::::| .:: !       i .:.: !::::/ i
           _ ___
        ,. :'´: :,. -―‐-ミ:ヽ、
      /: : : :厶ィ': ´ ̄ ̄ヾ : :\
      /: : : : : :.!: :M: : : : : }、: ヽト、:.\   <じゃっておwww
     i: : :.!: : : レ‐' ` ̄⌒ ⌒" トヘ:ハ!
   ト--|: : :.!: : 、|  ー‐'' ´ `'ー  }: :.ト
  ミ ミ ミ : :!: : : :! z=≡   ≡z.{: :.ハ    ミ ミ ミ
 /⌒)⌒)⌒.ハ :_Nとつ \\\ C VVリ   /⌒)⌒)⌒)
 | / / /:弋こ \ヽ __,.   } (⌒)/ / / //
 | :::::::::::(⌒) : :}\  /   1  /  ゝ  :::::::::::/
 |     ノくf⌒Y ` {_  _,ノイ|    /  )  /
 ヽ    /  ヽ ヘ,、  _「 |::!:::::}   /    /     バ
  |    |   l||l 从人 l||l.!::|イ:::ヽ_./ l||l 从人 l||l  バ  ン
  ヽ    -一''''''"~~``'ー--、/:::::イ;  -一'''''''ー-、    ン

761:デフォルトの名無しさん
09/03/02 22:32:15
必死になってAA探してくるほど悔しかったの?

762:デフォルトの名無しさん
09/03/02 23:00:23
>>761
かわいそうだからそっとしておけ。

763:デフォルトの名無しさん
09/03/02 23:24:22
A1.WSHとVBSの機能では不可能
A2.そもそもWSHやVBSはWinAPIを呼べない

COMと呼ばれる汎用コンポーネントを介すことで
実現自体は不可能じゃないけどね
どうしてもやりたければ、WSHやVBSではなくそっち方面を調べること

764:デフォルトの名無しさん
09/03/02 23:54:32
そんなに怖い顔してモニターを睨まないでください

765:デフォルトの名無しさん
09/03/03 00:49:54
反撃したいなら、間違ったこと書いてるレスをコピペしないと反撃にならないぞ

766:デフォルトの名無しさん
09/03/03 01:37:17
VBSもCOMですけど

767:デフォルトの名無しさん
09/03/03 01:39:21
JScriptもCOMですけど

768:デフォルトの名無しさん
09/03/03 03:01:44
┐(´ー`)┌

769:デフォルトの名無しさん
09/03/03 03:09:20
COMMAND.COM も COM ですけど

770:デフォルトの名無しさん
09/03/03 03:40:59
完全に論破されて壊れちゃったんだね

771:デフォルトの名無しさん
09/03/03 12:55:13
>733
 AppActivate() で目的のウィンドウを手前に持って来る
 → SendKeys()
 
 …で十分みたいな気がするのは俺だけか?

772:デフォルトの名無しさん
09/03/03 14:00:02
COMで確実に操作できるのにわざわざタイミングのむずかしいSendKeysを使うものか

773:デフォルトの名無しさん
09/03/03 14:14:26
WScript.Echo('JScriptはCOM',typeof(new Object()),'ですけど');

774:デフォルトの名無しさん
09/03/03 14:30:12
sub sub1()
end sub
msgbox "VBScriptはCOM " & typename(getref("sub1")) & "ですけど"


775:デフォルトの名無しさん
09/03/03 14:57:00
MORE.COMはEXEですけど

776:デフォルトの名無しさん
09/03/03 19:23:16
結局勘違いして大法螺吹いてるだけだったわけだ。
何か俺等の知らない高いスキルでも持ってるのかと少しは期待したが
出てきた物は糞の足しにもならない言い訳がましい勘違い屁理屈ばかり。
格下と解りゃ煽っても踊らせても何も得る物は無いわけだから
あとは玩具として楽しめれば上等って話だな。

777:デフォルトの名無しさん
09/03/04 19:52:55
「ググレカス」は
大見得切ってみせたものの出す物出せない忍者ハッタリくんの
隠れ身の術の呪文なんだよ^^

778:デフォルトの名無しさん
09/03/05 20:32:59
真珠を投げないでください

779:771
09/03/05 20:53:21
>772
 
 ホントだ、試してみたら >>745 の CurrentViewMode を使う方が
 便利だわ。収穫だった、thx

780:デフォルトの名無しさん
09/03/05 23:21:47
>>778
"真珠"は投げられてない

781:デフォルトの名無しさん
09/03/06 02:31:06
>>745の中にキラッと光るものが、、、あっ真珠だ!

782:デフォルトの名無しさん
09/03/06 02:45:52
自分で垂れ流した糞を褒め称えてりゃ世話無いぜw

783:デフォルトの名無しさん
09/03/06 02:57:38
ヒントを与えすぎたかと思ったがわからんかったようやね?よかったよかった

784:デフォルトの名無しさん
09/03/06 03:10:25
ヒントどころかズバリ書いちゃってるじゃん
アレでわかんない奴なんて居ないよ

785:ショートカット
09/03/17 22:58:26
ショートカットの指してる先のファイルをNTFSパーティーション上で
移動したりすると
元のショートカットそのものも次にダブルクリックしたときに
自動的に更新するよね?
(知らなかった人は試してみ?)

そんでこの自動更新を一個一個ダブルクリック等せずに
WSHでやる方法ないですか?

画像のショートカットが大量にあって
リンクが外れてサムネイルがみれなくなってしまって困ってるんだ
(もちろんダブルクリックすれば見れるようになるんだけど、数がおおくてめどい)

これじゃおちおち画像の整理もできやしないよ!

786:デフォルトの名無しさん
09/03/17 23:03:03
WshShotcut Resolve

787:ショートカット
09/03/18 00:03:00
Resolveてなに?

788:ショートカト
09/03/18 00:48:35
WshShortcutオブジェクトでResolve試してみたけど

オブジェクトでサポートされていないプロパティまたはメソッドです XXX.Resolve

てなっちゃったよ
XXX.Resolve 4
XXX.Resolve = 4
両方同じ

具体的にどうやってResovlveすんの?
一応WSHは5.7でVBScript

789:デフォルトの名無しさん
09/03/18 00:56:33
shell.application
folderitem.getlink.resolve

790:デフォルトの名無しさん
09/03/18 01:00:56
元ファイルのフォルダごとリンク先を変えたのなら、
Shortcut Director というツールで一括変更できる。

WshShortcut の Resolve はリファレンスにあるけど、存在しない。

791:デフォルトの名無しさん
09/03/18 01:03:08
saveし直せばいいんじゃね

792:デフォルトの名無しさん
09/03/18 01:55:45
ショートカットファイルを複数D&D。
でも当方Vistaで削除しますか?っていわれちゃう。
-----------------------------
Option Explicit

Dim shellapp
Dim fso
Dim fc
Dim fcItem
Dim lnkFile
Dim objlnk
Dim e

Set shellapp = CreateObject("Shell.Application")
Set fso = CreateObject("Scripting.FileSystemObject")

For Each lnkFile In WScript.Arguments
Set fc = shellapp.NameSpace(fso.GetParentFolderName(lnkFile))
Set fcItem = fc.Items
For Each e In fcItem
If e.Path = lnkFile And e.IsLink Then
Set objlnk = e.GetLink
objlnk.Resolve(4)
objlnk.Save
End If
Next
Next

WScript.Echo "Done."
Set fso = Nothing
Set shellapp = Nothing


793:デフォルトの名無しさん
09/03/18 03:41:20
set e=fcItem.item(fso.GetfileName(lnkFile))


794:ショートカット
09/03/18 07:36:45
みんなありがとう
今日帰ったら早速試してみるよ
>>789-793

795:デフォルトの名無しさん
09/03/18 15:29:21
自宅のXPマシンだと出来た。
OSの追跡機能をOFFってるとそもそもだめなのね。
>>793反映版。

Set shellapp = CreateObject("Shell.Application")
Set fso = CreateObject("Scripting.FileSystemObject")

For Each lnkFile In WScript.Arguments
Set fc = shellapp.NameSpace(fso.GetParentFolderName(lnkFile))
Set fcItem = fc.Items
Set e = fcItem.Item(fso.GetFileName(lnkFile))
Set objlnk = e.GetLink
objlnk.Resolve(4)
objlnk.Save
Next

WScript.Echo "Done."

796:デフォルトの名無しさん
09/03/19 14:26:34
俺は追跡はウザイだけなので切ってるよ。

797:デフォルトの名無しさん
09/03/20 14:54:30
そもそもショートカットっていらなくね?

798:デフォルトの名無しさん
09/03/20 16:28:11
つかえないやつにかぎってそういうんじゃね?

799:デフォルトの名無しさん
09/03/20 17:58:52
データに対するショートカットって使わないな。
ハードリンク使うし。

800:デフォルトの名無しさん
09/03/20 18:10:22
うん。ランチャとジャンクション使うよ普通は

801:デフォルトの名無しさん
09/03/20 18:52:59
.wshのショートカットって使わないな。
.lnkのショートカット使うし。


802:デフォルトの名無しさん
09/03/20 18:54:51
WSHって使わないな。
PowerShell使うし。

803:デフォルトの名無しさん
09/03/20 19:37:41
PowerShellって使わないな。
AppleScript使うし。

804:デフォルトの名無しさん
09/03/20 19:56:04
> AppleScript
どこら辺を笑えばいいの?

805:デフォルトの名無しさん
09/03/20 20:21:43
あまりの滑りっぷりの寒さ

806:デフォルトの名無しさん
09/03/21 11:46:27
#!/bin/bash
hostname
who is god
hostname | sed 's/^[^\.]*\.//'

# VBSでやるとしたら
#Option Explicit
#
#Dim WSHNetwork
#Set WSHNetwork = WScript.Createobject("WScript.Network")
#
#WScript.Echo "ドメイン名  :" & WSHNetwork.UserDomain
#WScript.Echo "ユーザー名  :" & WSHNetwork.Username
#WScript.Echo "コンピューター:" & WSHNetwork.ComputerName


807:デフォルトの名無しさん
09/03/21 11:47:47
#!/bin/bash
sed 's/ようこそ/Welcome/g' youkoso.txt > welcome.txt

# VBSでやるとしたら
#Set fso = CreateObject("Scripting.FileSystemObject")
#Set regEx = New RegExp
#Set inFile = fso.OpenTextFile("C:\TechEzo\Round23.txt")
#Set outFile = fso.CreateTextFile("C:\TechEzo\Round23_2.txt")
#
#regEx.Pattern = "ようこそ"
#repStr = "Welcome"
#Do Until inFile.AtEndOfStream
# tempLine = inFile.ReadLine
# repLine = regEx.Replace(tempLine, repStr)
# outFile.WriteLine repLine
#Loop
#
#inFile.Close
#outFile.Close

808:デフォルトの名無しさん
09/03/21 11:52:56
MSがWSHを半ば見限ってPowerShellを開発したのは当然のこと。
上記二例からわかる通り、WSHでは
非開発者の管理者やエンドユーザには負担が大きくなるからだ。

809:デフォルトの名無しさん
09/03/21 13:13:07
わかってないなぁ
M$は普通の人にPCを便利に使ってもらう必要はない
直感的に操作できるようにして便利だと錯覚させればOKだから

それに、一般人に簡便なスクリプト言語与えたら、簡単なツールで金取ってるような無能が失業するだろ
色んな意味で、馬鹿にはコンビューティングに目覚めないでもらったほうが都合がいいのさ

810:デフォルトの名無しさん
09/03/21 14:12:53
PowerShellなら
(cat youkoso.txt) -replace "ようこそ","Welcome">welcome.txt
でいいんだもんな。リダイレクションだとUnicodeになっちゃうからOut-Fileを使う方がいいんだろけど。
WSHはエディタの補完機能がないと全く書く気になれない。

811:デフォルトの名無しさん
09/03/21 14:24:17
> 上記二例からわかる通り
そんな不適切な例で、何が解るって言うつもりだ?

君がやってるのは、「四則演算は電卓の方が手軽だからPCはこの世に必要ないものです」と同じ事。
電卓側が手軽になる例だけ挙げて、その逆やましてや電卓で不可能なことには触れていない。

本気で書いてるなら「視野が狭い」と言うべきだが、きっと故意にやってるので「頭が悪い」と言った方が正しいな。

812:デフォルトの名無しさん
09/03/21 15:41:01
> 上記二例からわかる通り
「頭が悪い」

813:デフォルトの名無しさん
09/03/21 15:47:49
実にくだらない争いを見た。

814:デフォルトの名無しさん
09/03/21 16:57:26
PowerShellやbashより簡単になる例ってどんなのがあるの?

815:デフォルトの名無しさん
09/03/21 17:01:31
すれ違い

816:デフォルトの名無しさん
09/03/21 17:02:57
しつこい

817:デフォルトの名無しさん
09/03/21 19:00:47
>>807
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateTextFile("C:\TechEzo\Round23_2.txt").Write Replace(fso.OpenTextFile("C:\TechEzo\Round23.txt").ReadAll,"ようこそ","Welcome")


818:デフォルトの名無しさん
09/03/21 21:19:05
>>817
それでもbashより面倒なのがイタいな

819:デフォルトの名無しさん
09/03/21 21:25:09
そんなに行数、文字数減らしたかったら、
sed win32版を使えばいいだけ。あとはcygwinでも使え。
比較すること自体が嫌がらせ。荒らすなよ。

820:デフォルトの名無しさん
09/03/21 22:00:41
>>818はsedをbashだと思ってるのかな?

821:デフォルトの名無しさん
09/03/21 22:05:54
というか >>807 の「VBSでやるとしたら」のコードが面倒過ぎなだけだろうもん。

Set oShell = CreateObject("WScript.Shell")
oShell.Exec("cmd /c more > C:\TechEzo\Round23_2.txt").StdIn.Write _
sText = Replace(oShell.Exec("cmd /c type C:\TechEzo\Round23.txt").StdOut.ReadAll, "ようこそ", "Welcome")

822:デフォルトの名無しさん
09/03/21 22:06:54
間違った・・・・。

Set oShell = CreateObject("WScript.Shell")
oShell.Exec("cmd /c more > C:\TechEzo\Round23_2.txt").StdIn.Write _
Replace(oShell.Exec("cmd /c type C:\TechEzo\Round23.txt").StdOut.ReadAll, "ようこそ", "Welcome")

823:デフォルトの名無しさん
09/03/21 23:11:20
perl(Active) や PHPから使えばいいじゃん。

824:デフォルトの名無しさん
09/03/22 01:18:30
@if(0)==(0) CScript.exe //NoLogo //E:JScript "%~f0" <youkoso.txt > welcome.txt & GOTO :EOF & @end
WScript.StdOut.Write(WScript.StdIn.ReadAll().replace(/ようこそ/g,"Welcome"));

825:デフォルトの名無しさん
09/03/22 03:22:35
WSHでの正規表現の扱いは、確かに面倒ではある

826:デフォルトの名無しさん
09/03/22 03:45:23
その代わりに柔軟だけどね

827:デフォルトの名無しさん
09/03/22 04:26:12
> 上記二例からわかる通り
ほんとよく分かった。もっと勉強してから出直せよ

828:ショートカット
09/03/22 14:16:58
>>799
>>799

おーハードリンクいいですね

早速ショートカットをハードリンクに置き換えるスクリプトでも、、

と思ったんだけどひとつ素朴な疑問。

同じ内容の2ファイルが
ハードリンクなのか別コピーなのか識別する方法って
どうやるの?
(内容がFC /bとかで一致してるのがわかってるとして

829:ショートカット
09/03/22 14:17:56
さすがに
試しに片方のファイルに追記してみるとかはなしで

830:デフォルトの名無しさん
09/03/22 16:43:41
ハードリンクの意味わかってるか?

831:ショートカット
09/03/22 17:27:38
>>830
その質問は本人に聞いても意味ないでしょ

832:デフォルトの名無しさん
09/03/22 17:28:07
>>830
質問の意味わかってるか?


833:デフォルトの名無しさん
09/03/22 17:35:55
fsutil objectid query ファイル名
の結果が一致したら実体が同一ってことのはず。

834:デフォルトの名無しさん
09/03/22 17:45:30
リンクカウントは?

835:デフォルトの名無しさん
09/03/22 17:50:50
カウントだけじゃ
・AとBが同一内容で実体が別
・それぞれA=A'とB=B'のハードリンクが存在する
というケースで誤認するはず

836:デフォルトの名無しさん
09/03/22 17:54:17
そうじゃなくてリンクカウント調べるには?


837:デフォルトの名無しさん
09/03/22 18:14:17
objectidが一致するファイル名を数える

838:デフォルトの名無しさん
09/03/22 18:15:18
だからリンクカウントじゃハードリンクの存在しかわからないから
誤認する可能性があると言ってる。厳密にやる必要性については知らん。

839:デフォルトの名無しさん
09/03/23 00:11:43
GetFileInformationByHandle()つかうみたいね

840:618
09/03/23 00:52:03
>>836
「リンクカウント調べる の は?」
と空目してた。正直すまんかった

841:デフォルトの名無しさん
09/03/23 21:34:37
IE8 入れたけど、htmlfile から window オブジェクト取得して
userAgent 調べると MSIE 7.0 のままなんだけど、何故に?

IE から調べるとちゃんと MSIE 8.0 が表示される。

842:デフォルトの名無しさん
09/03/23 23:39:00
IE8、正式版と言うわりには色々おかしいような
WSH関係無いけど、SSLのクライアント証明書が使えなくなった

843:デフォルトの名無しさん
09/03/24 20:59:43
>>841
べつのdllなんじゃろうて
その理由はきっとこぴぺ開発
もっともらしく言えば既存環境に影響を与えないように環境を二重にしたとか

844:デフォルトの名無しさん
09/03/25 03:05:21
確かに htmlfile と IE の window オブジェクトは色々違いあるね。
前者は特にクリップボードに書き込みできないのが勿体無い。

845:デフォルトの名無しさん
09/03/25 10:17:45
それは単にセキュリティゾーンの設定

846:デフォルトの名無しさん
09/03/25 11:10:30
prompt()がだめとか

847:デフォルトの名無しさん
09/03/30 00:10:40
wsfの拡張子を他のに変えてWSHに渡すと
「ファイル拡張子 ".xxx" を持つスクリプト エンジンはありません。」
って言われるんだが、内容はwsfの様式で、拡張子が.wsfではないファイルを
wsfとして実行させるにはどうしたら良い?

.wsfはwscript.exeの通常実行のままで、他を拡張子毎にcscript.exe実行やデバッガ実行などを
既定動作にしたいんだが、.wsf時には正常に実行できるファイルでも、拡張子を変えた途端にエラーとなる。
デバッグの有無(//D)なら、<?job debug="true" ?>で済むが
デバッガ実行(//X)とかcscript.exe実行とかはxml要素での指定が出来ないし。

スクリプトで自身を実行し直したり、ラッパー噛ませたりと妥協策は有るには有るが
そういう姑息な方法ではなく、別拡張子を直接渡して問題なく実行できる方法が有ったら教えて欲しい。

848:デフォルトの名無しさん
09/03/30 00:15:15
ない

849:デフォルトの名無しさん
09/03/30 00:17:29
?script.exeの名前を変えてバイナリ書き換え

850:デフォルトの名無しさん
09/03/30 02:48:41
短いファイル名を使えばできるかも

851:デフォルトの名無しさん
09/03/30 03:47:59
拡張子を偽装するほうが、”姑息な方法” だと思うが。姉歯か?おまいは・・・

バッチで
CD /D %~dp1
IF %~x1==.wsf wscript.exe %1
IF %~x1==.vbs cscript.exe %1
IF %~x1==.unko cscript.exe //X %1
みたいなのを作って、ドラッグ&ドロップするのが簡単


852:デフォルトの名無しさん
09/03/30 03:54:39
知らないのに無理にレスすんな

853:デフォルトの名無しさん
09/03/30 16:51:02
ショートカットで我慢しろ

854:デフォルトの名無しさん
09/03/30 19:24:03
なるほど
ありがとうございました

855:847
09/03/30 19:50:17
>>848
ご存じありませんか。

>>849
それが出来るならそれでも良いんですが、バイナリをいくつかの文字コードで検索してみたところ、
使用方法説明の「//Job:xxxx Execute a 【WSF】 job」や、無関係な「Windo【wsF】older」しかヒットしません。

「もしかしたらこれで出来るかも」という思いつきなら、残念ながら出来ないようですということになりますが
間違いなく出来ると言うなら、書き換えるバイナリアドレスを教えてください。

>>851
取り違えられているようなので、今一度説明します。
問題は、拡張子によって実行コマンドを変える方法ではなく、
.wsfの拡張子を変更した物を渡して実行させる方法です。

他人の目を欺く偽装ではなく、自分の環境での話なので、
拡張子によって実行コマンドを変える部分は関連付けの変更により既に解決しています。
847でも書いた通り、問題は関連付けで既定動作(つまりダブルクリックやEnterキー押下で
wscript.exeやcscript.exeに渡るよう)にした上で、渡されたファイルが実行されないことです。

そのバッチも無意味で、.vbsを.unkoとしたものなら
IF %~x1==.unko cscript.exe //X //E:VBScript %1
で実行されますが、.wsfを.unkoとしたものでは>>847の2行目で書いたエラーが出るだけです。

>>853
妥協策としてはショートカットよりはラッパーを選びます。



今のところ、可能であるなら>>849が最有力候補です。
他人のPCで実行させる話ではなく自分のPCでの話なので、システムフォルダ内や関連付けは
自由に弄れますから、>>849が可能なら解決です。

856:デフォルトの名無しさん
09/03/30 19:57:32
なんでそんなことしたいん?

857:847
09/03/30 20:10:23
>>856
最初にも書いた通り、
> 拡張子毎にcscript.exe実行やデバッガ実行などを既定動作にしたい
からです。

vbsの拡張子をvbcに変えた物を既定でcscript.exe実行に定義する「VBCFile」と同じです。
URLリンク(www.vector.co.jp)
> .VBS、.JSファイルはWScript.EXEか、CScript.EXEのいずれか既定値で起動されます。
> 既定値は変更できますが、すべてのスクリプトファイル起動方法が一律に変わります。
> 例えば、大部分のスクリプトファイルはWScript.EXEで起動し、一部のスクリプトファイルだけを
> CScript.EXEで起動したい、というような使い分けが出来ません。
> そこで、CScript.EXEで起動する専用の拡張子を別に作ります。
> 「.VBS」に対して「.VBC」、「.JS」に対して「.JSC」です。

これを.vbsや.jsではなく.wsfでやりたいというだけの話です。

858:デフォルトの名無しさん
09/03/30 20:13:00
前スレか他スレで昔やってたやついたよ。

859:デフォルトの名無しさん
09/03/30 20:15:14
未解決の前例なんて無いのと同じ

860:デフォルトの名無しさん
09/03/30 20:25:38
wshext.dll内に.wsfがあるけど

861:847
09/03/30 20:42:51
>>858
確認してみましたが、>>859さんの言う通り、未解決のまま立ち消えのようです。

>>860
?script.exe以外だと、別拡張子が実行できるようになったとしても
今度は.wsfが実行できなくなって、本来の目的である使い分けが出来ないということになりませんか?

862:デフォルトの名無しさん
09/03/30 20:48:16
VectorにWSFFileがあるだろ

863:847
09/03/30 21:26:06
>>862
ありがとうございます。おかげさまで解決しました。
VBCFileと同じ作者のものなのに見逃してました。

864:デフォルトの名無しさん
09/03/31 00:57:39
吉岡さんは神

865:デフォルトの名無しさん
09/03/31 01:39:03
MVP落ち

866:デフォルトの名無しさん
09/03/31 23:43:58
バイナリ書き替えなくても>>850でできるのでは?

867:デフォルトの名無しさん
09/04/01 18:39:59
うん

868:デフォルトの名無しさん
09/04/01 18:55:59
無理

869:デフォルトの名無しさん
09/04/01 19:06:06
有理

870:デフォルトの名無しさん
09/04/01 22:03:54
実際に試してから書いた方がいいぜ

871:デフォルトの名無しさん
09/04/02 00:27:23
遅レスだけど、レジストリエディタで↓を参照。>847

HKEY_CLASSES_ROOT\.WSF
HKEY_CLASSES_ROOT\WSFFile\Shell\Open\Command

872:871
09/04/02 00:30:51
ちなみにVistaだとコンテキストメニューに「コマンドプロンプトで開く」ってのが
標準装備されてますな。

873:デフォルトの名無しさん
09/04/02 00:32:25
>>847を読み直したほうがいいぜ

874:デフォルトの名無しさん
09/04/02 14:37:34
なるほど

875:デフォルトの名無しさん
09/04/02 15:48:38
なるほど っていいたいだけだろ

876:デフォルトの名無しさん
09/04/02 15:56:29
なるほど

877:デフォルトの名無しさん
09/04/06 14:45:01
すみません、以前どこかで見たことがあるような気がするんですが
けっきょく捜しきれなかったので質問させていただきます

LAN内のほかのマシンで実行中のアプリ(MSAccess)をリモートから強制終了
させるVBSってのが知りたいのです

878:デフォルトの名無しさん
09/04/06 14:47:07
あれれ、質問なのにSageちゃった
ごめんなさい
あげさせてもらいますね

879:877
09/04/06 16:50:49
自己解決しました。

880:877
09/04/06 17:23:52
877です。
879は、私ではありません。

881: ◆877pupbpBk
09/04/06 17:33:07
本物の877です。
879は、私ではありません。
880も、私ではありません。

とは言え自己解決はしてますのでもう消えます。
この状況ではこの後も私の偽物が出てくるかも知れませんが
以後放置してくださって結構です。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch