WSH(・∀・)スレッド! Part 2 at TECH
[2ch|▼Menu]
[前50を表示]
150:デフォルトの名無しさん
07/08/04 07:47:47
セキュリティホール(笑)

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


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

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




154:デフォルトの名無しさん
07/08/05 14:29:55
color/?
または
powershell

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

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

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

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

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


159:デフォルトの名無しさん
07/08/16 22:12:13
素直にダウンローダ使っとけよ

160:デフォルトの名無しさん
07/08/16 23:45:03
>>158
当然出来るよ

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

161:デフォルトの名無しさん
07/08/16 23:48:27
>>160
そういうスレだよw

162:デフォルトの名無しさん
07/08/17 00:06:22
ここはいつからHTMLスレになったの?

163:デフォルトの名無しさん
07/08/17 00:13:26
>>161
ここはWSHスレだと思うが。

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


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

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

165:デフォルトの名無しさん
07/08/17 00:35:18
>>164
batスレの病気の人ですか?

166:デフォルトの名無しさん
07/08/17 00:38:50


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

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

169:デフォルトの名無しさん
07/08/17 00:50:27
WSHはIE4の付属コンポーネントだったよ。

170:デフォルトの名無しさん
07/08/17 00:52:38
で?

171:158
07/08/17 01:02:41
ちょ、おまいら落ち着こうぜ。

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

172:デフォルトの名無しさん
07/08/17 01:13:17
>>171
それが正解。

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

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

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

175:デフォルトの名無しさん
07/08/18 22:55:39
responseXML を適当に selectSingleNode とかで XPath 使って検索する

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

177:デフォルトの名無しさん
07/08/21 02:22:43
単純にHTMLをダウンロードしたいって話なら以下。ブラウザは直接関係しない。
URLリンク(www.f3.dion.ne.jp)

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

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

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

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


181:デフォルトの名無しさん
07/08/26 05:35:05
WSHからSQL薄幸とか可能?

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

183:デフォルトの名無しさん
07/08/26 07:21:21
>>181
可能
ADO使え

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

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

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

187:デフォルトの名無しさん
07/09/01 18:55:25
ありますよ
そのくらいは自分で調べようね

188:デフォルトの名無しさん
07/09/01 19:20:53
WM_SETTINGCHANGEとか?

189:デフォルトの名無しさん
07/09/01 22:03:38
>>187 >>188
ありがとございます。なんとかできそうです。

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

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


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

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

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

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

193:デフォルトの名無しさん
07/09/07 08:18:41
それはハズレ

194:デフォルトの名無しさん
07/09/07 20:47:38
プロセスが起動中ならまだ動いてるんだよ

195:デフォルトの名無しさん
07/09/07 20:52:19
宇宙開拓史ののび太並みの天才発言だな

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

197:デフォルトの名無しさん
07/09/11 10:56:39
Script56.CHMの目次が不完全な件

198:デフォルトの名無しさん
07/09/11 11:50:51
今更?

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


200:デフォルトの名無しさん
07/09/15 11:04:56
FSOをなんだと思ってるんだこいつ

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

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

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

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


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

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

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

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


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

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

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

211:デフォルトの名無しさん
07/09/19 19:39:31
素直にFLASH使えよw

212:デフォルトの名無しさん
07/09/19 20:51:42
>>211
あ、どうりで情報がないわけだ。
レスありがとう。

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

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

215:デフォルトの名無しさん
07/09/25 23:01:54
LSI-C86試食版てwwwwwww


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

216:デフォルトの名無しさん
07/09/27 05:54:38


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

218:デフォルトの名無しさん
07/10/09 19:41:30
実食した奴がどれくらいいるのか非常に気になる

219:171
07/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:デフォルトの名無しさん
07/10/10 08:43:27
スレ違い

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

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



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

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


224:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/10/15 21:19:28
気張って返事が遅れますた
もうしわけなかです。

ありがとうございました

227:デフォルトの名無しさん
07/10/23 21:30:14
// fc.js - 中身が同じファイルを見つける
var CapicomUtil = new ActiveXObject("CAPICOM.Utilities");
// ↑URLリンク(www.microsoft.com)
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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/10/24 08:30:05
いや、関数名以前に・・・・・w

230:デフォルトの名無しさん
07/10/25 18:55:18
if (Stream1.Read(-1) != Stream2.Read(-1)) {


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


232:sage
07/10/27 10:52:08
>>204
.NetFrameWorkってwshから使えるの?

233:デフォルトの名無しさん
07/10/27 12:34:50
>>232
204ではないが、.NetFrameworkとWSHは別物

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

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

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

236:デフォルトの名無しさん
07/10/27 22:09:40
つopener

237:デフォルトの名無しさん
07/10/27 22:15:18
それは子から親であって親から子ではないんじゃね?

238:デフォルトの名無しさん
07/10/27 22:30:35
>>232
たいしたものは使えんよ。
PowerShellなら.NETもWin32APIも使い放題だわ

239:デフォルトの名無しさん
07/10/27 22:46:03
>>231
NewWindow3 Event

240:デフォルトの名無しさん
07/10/28 21:48:45
WSHじゃ無理だけど
BeforeNavigate2でCancelして別のIEでNaviagte

241:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/10/29 21:09:11
Runするのにフルパスは要らん

244:デフォルトの名無しさん
07/10/29 21:23:50
>>242
runしたらその情報が自動的に使われるのでは?

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

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

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

247:デフォルトの名無しさん
07/10/30 02:39:14
だいじょうぶ?

248:デフォルトの名無しさん
07/10/30 04:34:44
標準入力

249:241
07/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:デフォルトの名無しさん
07/10/30 15:51:10
わからんやっちゃ

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

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

253:デフォルトの名無しさん
07/11/01 09:13:48
理解してないだろうね
こういう子には

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

ということで

254:デフォルトの名無しさん
07/11/02 14:43:43
Win32_Thread.Name

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

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

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

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

258:デフォルトの名無しさん
07/11/11 04:33:32
>>255
スレリンク(tech板:370-376番)

259:デフォルトの名無しさん
07/11/11 10:24:32
>>258
それ、HTAの場合だよね?

260:デフォルトの名無しさん
07/11/11 20:53:36
WSHに翻訳できない?

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


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


263:デフォルトの名無しさん
07/11/14 19:16:23
Etements 複数形だし

264:デフォルトの名無しさん
07/11/16 20:00:56
XPsp2の環境に

>URLリンク(www.imagemagick.org) から
>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:デフォルトの名無しさん
07/11/16 20:54:37
FileSystemObjectはOS標準だな

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

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

268:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/11/16 23:10:16
with(WScript.CreateObject("Scripting.FileSystemObject").CreateTextFile("chintama.txt")) {

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

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


272:デフォルトの名無しさん
07/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
07/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
07/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
07/11/17 00:33:50
おkです。
>>271の比較も、ポインタが等しいかどうか比較しているようなもの?
でしょうか?

276:272
07/11/17 00:48:49
>>275
というよりJScriptがDateLastModifiedの型をサポートしてないってことのような

277:271
07/11/17 17:41:07
WScript.Echo(f.DateLastModified-f.DateLastModified);

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

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

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

279:デフォルトの名無しさん
07/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
07/11/18 00:01:07
それなら
WScript.Echo(Number(f.DateLastModified));
ところが、
WScript.Echo(Date(f.DateLastModified));
が変。ずれる。なんでだろ?

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

282:264、268
07/11/19 04:28:00
>>269
>>270
レスありがとうございます。感謝します。

283:デフォルトの名無しさん
07/11/20 20:04:29
>>280
Numberは型だけどDateはオブジェクトだから

284:デフォルトの名無しさん
07/11/21 04:53:30
Win2KやWinXP SP2とかだと、
URLリンク(www.microsoft.com)

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

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


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


286:デフォルトの名無しさん
07/11/21 16:33:08
>>284
ブラウザ終了してないと駄目だよ


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

288:デフォルトの名無しさん
07/11/21 19:48:38
Hey, Scripting GuyのやつはVBSなので
JSに書き換えて使ってる

289:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/11/21 20:02:12
>>284
objFSO.DeleteFolder
の間違いじゃないの

291:デフォルトの名無しさん
07/11/21 20:46:42
>>286
ブラウザを終了させてやってみました。

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


292:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/11/21 22:02:13
>>292
有難う御座います。
綺麗サッパリと消えてくれました。


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


295:デフォルトの名無しさん
07/11/22 15:33:50
出ないけど?

296:デフォルトの名無しさん
07/11/24 15:23:03
directory\backgroundのverbsを調べてinvokeverbする方法はありませんか?


297:デフォルトの名無しさん
07/11/24 17:33:51
有りますが?

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

299:デフォルトの名無しさん
07/11/26 20:16:40
>>298
そういう機能のCOM作ればOKだよ

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

300:デフォルトの名無しさん
07/11/26 23:46:57

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

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

302:デフォルトの名無しさん
07/11/26 23:56:30
299も300もどっちもどっち、そしてこのレスも。

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

304:デフォルトの名無しさん
07/11/27 09:09:22
そうでもないか

305:デフォルトの名無しさん
07/11/27 10:16:24
うんこが長すぎて切れない
どうすればいい?

306:デフォルトの名無しさん
07/11/27 11:16:54
そのために神は
はさみを作り給うた

307:デフォルトの名無しさん
07/11/27 14:33:36
>>298
wordを使う

308:デフォルトの名無しさん
07/11/27 16:55:28
つExcel

309:デフォルトの名無しさん
07/11/27 16:59:49
>>298
スレリンク(tech板:752-754番)

310:デフォルトの名無しさん
07/11/27 19:52:09
>>307-309
こういうのはスレ違いだろ? >>299

311:デフォルトの名無しさん
07/11/28 00:21:12
CIM_DataFileのInUseCountは実装されてないのかなぁ?
nullが返って来る。

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

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

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


313:デフォルトの名無しさん
07/11/28 23:54:22
素直にCで書いたほうがいいよ

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

315:デフォルトの名無しさん
07/11/29 00:21:42
>>312の2
自分をcscriptで再起動

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

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


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

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


319:デフォルトの名無しさん
07/11/29 01:57:30
exec("cmd /c hoge 2>&1")

320:デフォルトの名無しさん
07/11/29 02:08:50
>>319
基本でしたw
tnx

321:デフォルトの名無しさん
07/11/29 02:22:16
>>317
runas /user:ドメイン名\ユーザー名 hogehoge.exe


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

323:デフォルトの名無しさん
07/11/29 23:44:24
イラつくよお前

324:デフォルトの名無しさん
07/11/29 23:53:11
お前火病るの早すぎwwwwww

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

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

327:デフォルトの名無しさん
07/12/01 02:35:35
>>326
もう二度と来んな!

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

329:デフォルトの名無しさん
07/12/01 05:44:51

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

興味ないから



330:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/01 15:20:48
>WScript.Echo(e.StdOut.ReadLine());

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


332:デフォルトの名無しさん
07/12/01 16:45:06
男は黙ってecho

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

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


334:デフォルトの名無しさん
07/12/02 01:13:43
男は黙ってcscript

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

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

環境依存か知らんが。

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

338:デフォルトの名無しさん
07/12/03 03:11:23
低脳言語と一緒にすんなよ。

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

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

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

341:デフォルトの名無しさん
07/12/03 10:36:12
>>339
msscript.ocx を忘れてるだけだと思われ

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

343:デフォルトの名無しさん
07/12/03 12:44:31
↓こっちの方が有名だと思ってたけど、違うのか
"MakeExe"
URLリンク(www.vector.co.jp)
WMIのイベント系メソッドには弱いらしいけど
URLリンク(maglog.jp)

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

344:デフォルトの名無しさん
07/12/03 14:45:09
改ざん防止は署名だろ

345:デフォルトの名無しさん
07/12/03 16:19:24
難読化はスクリプトエンコードだろ

346:デフォルトの名無しさん
07/12/03 17:43:46
jscriptにすればコンパイルできるよ

347:デフォルトの名無しさん
07/12/03 18:14:11
VBにすればコンパイルできるよw

348:デフォルトの名無しさん
07/12/03 20:53:14
COMクライアントのプログラムをCで書いてみるといいよ


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

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

351:デフォルトの名無しさん
07/12/03 23:44:59
>>337
,null,

352:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/04 00:22:34
おちんちん

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

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

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

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


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




355:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/04 18:05:19
自慢うざい

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

358:デフォルトの名無しさん
07/12/04 19:17:48
ここは自慢スレじゃ無いぞ。

359:デフォルトの名無しさん
07/12/04 20:19:12
>>358
どうしたの?

360:デフォルトの名無しさん
07/12/04 20:38:30
自慢すんな

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

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


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

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

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

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

365:デフォルトの名無しさん
07/12/04 21:35:30
cscript hoge.vbs fuga hage
cscript hoge.vbs fuga hige

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

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


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4371日前に更新/234 KB
担当:undef