WSH(・∀・)スレッド! Part 4at TECH
WSH(・∀・)スレッド! Part 4 - 暇つぶし2ch213:デフォルトの名無しさん
10/02/22 22:06:18
c(i).Value
c(i).Item()

214:210
10/02/22 22:17:28
>>213
プロシージャの呼び出し、または引数が不正です。


215:デフォルトの名無しさん
10/02/22 23:29:43
Shell.Application の FolderItems のほうを使ったら?

216:デフォルトの名無しさん
10/02/25 21:55:47
配列に入れて使え

217:デフォルトの名無しさん
10/02/25 22:13:00
For i = 0 To c.Count
j=0
 For Each f In c
If j=i Then Exit For
j=j+1
 Next
MsgBox f
Next

218:デフォルトの名無しさん
10/02/25 22:55:24
番号は使えないみたいだな
ItemクリックしたらDictionaryに飛んだ

URLリンク(msdn.microsoft.com)

219:デフォルトの名無しさん
10/03/01 21:36:27
test

220:デフォルトの名無しさん
10/03/05 12:44:09
WMI使ってリモートPCのIP変更したいんだが、変更後にRPCエラー待ちが発生して自動処理が難しい。
エラー待ちを無視するとか、なんかいい方法知ってる人がいたら助けて。

On Error Resume Next

strComputer = "10.1.1.1"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colNetAdapters = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

For Each objNetAdapter in colNetAdapters
errEnable = objNetAdapter.EnableDHCP()
Next

221:デフォルトの名無しさん
10/03/12 19:00:04
素朴な疑問なのですが・・・
JScriptの変数の宣言(var文)って書いても書かなくても動きますが
どちらが推奨されますか?

222:デフォルトの名無しさん
10/03/12 20:20:27
>>221
書いた場合と書かない場合は意味が違う
宣言時にはできるだけ書くべきと思う
--------------
a = 10;
function foo() {a = 20;}
foo();
WScript.Echo(a);
--------------
結果:20
--------------
var a = 10;
function foo() {var a = 20;}
foo();
WScript.Echo(a);
--------------
結果:10


223:221
10/03/14 04:11:27
>>222
なるほど。そう言う違いがあるのですか・・・
ありがとうございました

224:デフォルトの名無しさん
10/03/20 12:34:38
varといえば

var a = 10;
var a;

で、aがundefinedになると思い込んでいて
はまりかけたことがあった。

225:デフォルトの名無しさん
10/04/05 23:24:20
バッチファイルからWSHを呼び出す際、
バッチからサブルーチン呼出すみたいにパラメータ渡すことは可能ですか・

226:デフォルトの名無しさん
10/04/05 23:52:43
>>225
可能
渡されたパラメタはWScript.Argumentsで参照できる

227:デフォルトの名無しさん
10/04/06 00:13:23
有難う御座います!

228:デフォルトの名無しさん
10/04/09 10:28:58
WSHの何か良いリファレンスブックみたいなのってありますか?
言語は何の奴でもまぁ使えると思うんで何でも良いんですが

229:デフォルトの名無しさん
10/04/09 11:49:47
Scripting Guide 2000

230:228
10/04/10 01:11:59
すいません、日本語の書籍でお願いしますorz

231:デフォルトの名無しさん
10/04/10 01:32:23
>>230
初心者なら scd56jp.exe 内の script56.chm だけで良くねぇ?

232:228
10/04/10 02:27:18
>>231
おお、これは凄い便利ですね。
ありがとうございます、凄い役にたちそうなんで嬉しいんですが
オフラインで使える本も、それはそれで欲しいです。
書籍の持ち込みは可能だけどデータの持ち込みは厳しい場所に持ち込みたいので。

233:デフォルトの名無しさん
10/04/10 11:33:33
公式のヘルプを知らなかったって…

234:デフォルトの名無しさん
10/04/17 11:37:25
VWD2005でVBSのコード補完してくれるらしいから
インストールしたけどVBSは全く補完してくれないよ。
かんか設定必要?

235:デフォルトの名無しさん
10/04/24 04:06:49
CoInitialize は呼び出されていません。
こういう場合はどうすれば?

236:デフォルトの名無しさん
10/04/25 18:46:06
CoInitialize を呼び出せば?

237:デフォルトの名無しさん
10/04/29 21:04:56
ちょっと教えてください。

Wshからバッチファイルを呼び出す事は可能ですか?

238:デフォルトの名無しさん
10/04/29 22:01:02
ちょっと教えてください。

WshからCoInitializeを呼び出す事は可能ですか?

239:デフォルトの名無しさん
10/04/29 22:53:38
COMを挟めば可能

240:デフォルトの名無しさん
10/04/29 22:59:32
COMが呼べるってことは既にCoInitializeされてることを意味するので無意味

241:デフォルトの名無しさん
10/04/30 00:39:11
意味しないよ

242:デフォルトの名無しさん
10/05/01 18:16:08
explorerのnavigation paneのshow/hideはshowbrowsebarでできないのか?

243:デフォルトの名無しさん
10/05/01 21:52:27
セキュリティ対策だから無理だろ

244:デフォルトの名無しさん
10/05/28 18:03:17
Windowsスクリプティング環境比較:PowerShell vs WSH
URLリンク(www.atmarkit.co.jp)
>Windows XPがリリースされ、先日Windows Vistaがリリースされるまで何年も経過したにもかかわらず、
>WSHのバージョンはVer.5.6からVer.5.7へとマイナー・バージョンアップにとどまっている。
>実はWSHは今後メジャー・バージョンアップされない運命にあるのだ。

バージョンアップされないってホント?

245:デフォルトの名無しさん
10/05/28 22:30:32
うそ

246:デフォルトの名無しさん
10/05/28 22:47:28
>>244
なんか困るの?
つか、他の手段への以降してるんじゃないの?

247:デフォルトの名無しさん
10/05/28 22:50:33
移行だね。


248:デフォルトの名無しさん
10/05/29 16:07:55
バージョンアップしなくてもよいからインラインスクリプトをサポートしてほしいな

249:デフォルトの名無しさん
10/05/29 21:25:33
exec("cmd",0) も


250:デフォルトの名無しさん
10/06/14 11:44:46
質問です。
例えば、sample01.exeという単一ファイルに対して、コンテキストメニューでavast!の"検査(S) sample01.exe"を実行することは
FolderItems→FolderItem→InvokeVerbでできます。
一方、ファイルが複数選択された状態では、コンテキストメニューは、"選択した領域のウィルス検査(S)"となり、
これを実行すると選択された全てのファイルに対してまとめて処理が行われます。
この例のようにファイルを複数選択した状態で、"選択した領域のウィルス検査(S)"をWSHで実行するにはどうすればよいですか?

251:デフォルトの名無しさん
10/06/14 15:20:04
set items=folder.items
items.filter SHCONTF_NONFOLDERS,"*.exe"
items.invokeverbex "選択した領域のウィルス検査(S)"

252:デフォルトの名無しさん
10/06/14 15:22:56
ashQuick.exeを呼べばいいんじゃないの

253:デフォルトの名無しさん
10/06/14 16:29:09
>>251-252
ありがとうございます。

252のサンプル、大変参考になりました。



254:デフォルトの名無しさん
10/06/14 16:31:01
>>253
失礼。まちがえました。
× 252のサンプル、大変参考になりました。
○ 251のサンプル、大変参考になりました。

255:デフォルトの名無しさん
10/06/20 19:09:05
JavaScriptを使ったWSHでIEを操作してハイパーリンクをクリックさせるってどうやってる?

256:デフォルトの名無しさん
10/06/20 20:36:09
>>255
自己解決した


と思ったら次の問題が発生した

<form action="..." method="post" >
<input type="text" name="text">
<input type="submit" name="exec" value="test">

のフォームをVBSで操作したいんだが
objIE.Document.Forms(0).test.value = test
objIE.Document.Forms(0).exec.click
だとエラーになる

objIE.Document.Forms(0).test.value = test
objIE.Document.Forms(0).exec.click
objIE.Document.Forms(0).Action="./_msg_post"
objIE.Document.Forms(0).Method="POST"
objIE.Document.Forms(0).Submit
でも同じようにエラーになるんだけどなぜ?

257:デフォルトの名無しさん
10/06/20 21:36:56
>>256
エラーの質問の時は環境とエラー詳細を書け

まさか
×test
○text
なんてことはないよね

258:デフォルトの名無しさん
10/06/21 18:54:32
>>257
Windows7
エラーは詳細不明 エラー番号が8004005

259:デフォルトの名無しさん
10/06/21 19:11:02
>>258
80004005だよ・・・orz

260:デフォルトの名無しさん
10/06/21 19:43:57
Dim K As Long

For K = 0 To 5
MsgBox "今" & K & "周目"
Next K

これ
7で動かないんだけど7以外で動く人いる?

261:デフォルトの名無しさん
10/06/21 19:52:13
>>260
それは vba の書き方じゃないの?
vbscript なら以下

Dim K

For K = 0 To 5
MsgBox "今" & K & "周目"
Next

262:デフォルトの名無しさん
10/06/22 14:23:24
>>260
いない

263:デフォルトの名無しさん
10/06/24 18:25:10
JavaScriptのWSHにVBScriptで取得した文字列を渡す方法ってある?

264:デフォルトの名無しさん
10/06/24 19:29:43
つwsf

265:デフォルトの名無しさん
10/06/24 20:06:17
sss="xxx"
createobject("wscript.shell").run "aaa.js " & sss

266:デフォルトの名無しさん
10/06/24 20:11:05
runするならプロセス環境変数で渡してもOKだな

267:デフォルトの名無しさん
10/06/24 22:20:36
ちょっと難しい質問


WSHで起動したExcelのInputBoxに入力された数値を別のWSHに渡すことはできる?


WSH1.vbsでExcelのInputBoxを起動して数値を入力
その数値を
WSH2.vbsに渡す




268:デフォルトの名無しさん
10/06/24 23:27:10
>>267
普通にできる
逆に「どーやったらできない」のか聞きたいくらいだ

269:デフォルトの名無しさん
10/06/24 23:59:10
>>268
どうやればいいんだ…orz

270:デフォルトの名無しさん
10/06/25 00:24:25
sss=inputbox()
createobject("wscript.shell").run "wsh2.vbs " & sss


271:デフォルトの名無しさん
10/06/25 00:36:54
wsh2.vbsにも指定したsssにはwsh1で入力した数値が入ってるんだね?
参考になった!本当にありがとう!

272:デフォルトの名無しさん
10/06/25 00:45:02
sssに入ってるというより、sssに渡したい値を引数として入れて
別のスクリプトを起動するっつうことだろ。
その結果、受けるほうはWScript.Argumentsで引数として受け取る。
またはWScript.CreateObject("WScript.Shell").Environment("Process")で渡して、受け取る。
テキストファイルを使っても渡せることは渡せる。

273:デフォルトの名無しさん
10/06/25 00:48:40
「~できる?」
  ↓
「どうやればいいんだ…orz」
  ↓                 ←今ココ
「全部ソース書いて」

274:デフォルトの名無しさん
10/06/25 00:52:37
JScriptは永遠に不滅です!

275:デフォルトの名無しさん
10/06/25 11:46:42
>>272
Processに入力されたデータを入れるには?

276:デフォルトの名無しさん
10/06/25 15:27:41
それはとっても難しい質問だね

277:デフォルトの名無しさん
10/06/25 15:41:12
どうやればいいんだ…orz

278:デフォルトの名無しさん
10/06/25 16:20:56
>>275
> ○○に入力された××を入れるには?

「誤字」と言うよりは「理解不足」だと思う
って言うか、もう少し「人間としてのレベル」を上げて来い



以下に示す程度のガキは相手にされないことが多い
・どこまで分かるのか書かない        ←「オレが分かるように答えろ」というレベル
・「どうやればいいんだ…orz」を多用     ←「助けてママ~」というレベル
・スレ内を検索できない
・ググれない
・scd56jp.exeをDLしてマニュアルを読むことができない

279:デフォルトの名無しさん
10/06/25 22:46:06
>>278
>scd56jp.exeのマニュアル見てやっとわかった ありがとう

280:デフォルトの名無しさん
10/06/26 11:09:02
>>279
そうか。具体的にどう解決できた?サンプルを書いてみて。

281:デフォルトの名無しさん
10/06/26 12:51:16
>>280
WSH = WScript.CreateObject("WScript.Shell").Environment("Process")a = Inputbox
WSH = Item("A") = a

282:デフォルトの名無しさん
10/06/26 13:30:20
>>281
ごめん携帯からあわてて書いたからおかしくなったわ

1.vbs
WSH = WScript.CreateObject("WScript.Shell")
env = WSH.Environment("Process")
A = InputBox()
env.Item("a") = A

2.vbs
WSH = WScript.CreateObject("WScript.Shell")
env = WSH.Environment("Process")

A = + env.Item("a")
WScript.echo(A)

283:デフォルトの名無しさん
10/06/26 14:13:16
WSHのコードやよく使う関数をdllにできたらすごく便利だね うふ

284:デフォルトの名無しさん
10/06/26 14:17:06
classでまとめておくのはやってる。

285:デフォルトの名無しさん
10/06/26 14:25:54
>>282
vbsだからset 使わんと駄目なんだろう。あとWSHもオブジェクトだからたぶん駄目だろ。あとはrun付け足せばいいはず。
WScript.CreateObject("WScript.Shell").Run "wscript.exe " & WScript.CreateObject("ファイルシステムなんちゃら").GetParentなんちゃら(WSH.ScriptFullName) & "\2.vbs"

vbs全然つかってねえやw

286:デフォルトの名無しさん
10/06/26 14:39:49
>>285
だってこれJScript用だし

287:デフォルトの名無しさん
10/06/26 14:56:09
>>286
>>だってこれJScript用だし
>>282 に >>1.vbs
って書いてあるのに、それはねえべよ~w こんな後だしジャンケンは初めてみたわw

288:デフォルトの名無しさん
10/06/26 15:16:12
>>287
うん
そりゃね
VBSで動作実験してからJScript用に変えたから…



先にそれを書いておくべきだった すまない

289:デフォルトの名無しさん
10/06/26 15:39:06
今回は >>278 の忠告を聞かない>>287が悪い。

290:デフォルトの名無しさん
10/06/26 16:08:30
wscript.exe //e:jscript 2.vbs
で起こすから…

291:デフォルトの名無しさん
10/06/26 17:35:03
審判長「ただ今の協議について説明いたします。
行事は、忠告を聞かなかった>>287の右足が俵を割ったと判定して
>>286に軍配を上げましたが、
>>290 のカウンターが>>287のあごにヒットしたため、
>>290の勝ちと判定いたします。」

292:デフォルトの名無しさん
10/06/26 20:10:52
URLリンク(memoofwork.seesaa.net)

のリンク数分回すのがうまく動かない


Length はリンク個数を取得してるのはわかるんだが・・・
なんで次へ のリンクに飛ばないんだ?

293:デフォルトの名無しさん
10/06/26 20:31:48
>>292
わすれてた
リンクの場所はGoogleの検索結果です


294:デフォルトの名無しさん
10/06/26 20:47:07
>>292
ちょっと見た感じ、元のページの内容が怪しそう
hrefってURLを表してるんじゃないの?

×If objIE.Document.links(i).href = "次へ" Then
○If objIE.Document.links(i).innerText = "次へ" Then
これならどう?


295:デフォルトの名無しさん
10/06/26 20:58:08
>>294
できました!ありがとうございます!


296:デフォルトの名無しさん
10/06/26 22:05:16
ごめんなさい 追加で質問です・・・
>>292をJScriptで同じようなことをさせてみようと思ったんですけどうまくできないんです

var IE,i,a
IE=new ActiveXObject('InternetExplorer.Application');IE.Visible=true;
IE.navigate2("URLリンク(www.google.co.jp)");
WScript.sleep(1000);
a = IE.Document.links.length;
for (i = 0; i < a; i++) {
IE.Document.links(i).innerText=("次へ");
IE.Document.links(i).Click();};

これだと動かないんですがどうしたらいいでしょうか・・・

297:デフォルトの名無しさん
10/06/26 22:26:35
>>297
これで動いた

var IE,i,a
IE=new ActiveXObject('InternetExplorer.Application');IE.Visible=true;
IE.navigate2("URLリンク(www.google.co.jp)");
WScript.sleep(1000);
a = IE.Document.links.length;
for (i = 0; i < a; i++) {
if ((""+IE.Document.links[i].innerText)==("次へ")) {
IE.Document.links[i].click();
break;
}
};


298:デフォルトの名無しさん
10/06/26 22:33:41
>>298
ありがとうございました

299:デフォルトの名無しさん
10/06/26 22:59:09
>>297
>if ((""+IE.Document.links[i].innerText)==("次へ"))
このような方法は知りませんでした

もっと勉強します ありがとうございました!

300:デフォルトの名無しさん
10/06/26 23:03:25
ああ、失礼
最初の ""+ はなくてもよいかも
オブジェクトが null になる可能性がある場合、これをいれておくととりあえあず文字列になって
エラーにならないので入れてみた(最初に>>296を起動したときエラーになったので念のために)
正しくオブジェクトが取得できる前提なら不要


301:デフォルトの名無しさん
10/06/27 00:13:58
>>300
エラーになったみたいです・・・
一行目の1文字目の文字が正しくないって・・・
どういうことなんでしょうか

302:デフォルトの名無しさん
10/06/27 03:19:22
1行目1文字目はいくらなんでもおかしい

文字が全角になってるとか、
ファイルがBOM付きのUTF-8になってるとか、
構文以前の基本的な個所でエラーになってる可能性がないか?

303:デフォルトの名無しさん
10/06/28 03:00:29
WSHでOperaやFireFoxにURLを渡すのは不可能なんだろうか…


スレイプニルはできるのになぁ

304:デフォルトの名無しさん
10/06/28 03:14:35
bugbrowser や Nilbrowserも出来るね。

305:デフォルトの名無しさん
10/06/28 03:15:26
>>303
釣りとしか思えないなぁ・・・

バカが「OperaやFireFoxにURLを渡すのは不可能なんだろうか」って言うようなソースを晒してくれ

306:デフォルトの名無しさん
10/06/28 03:33:17
>>305
ActiveXがないからWSHが使えないだけでActiveXがあればWSHが使えるんだからOperaやFireFoxにもActiveXが搭載できればいいんじゃないかと思うんだが

307:デフォルトの名無しさん
10/06/28 03:47:18
>>306
コレは完全に釣りだな
面白いからソース晒せ

308:デフォルトの名無しさん
10/06/28 03:56:58
>>307
RunでOpera.exeだのFireFox.exeを起動させただけのソースコードがみたいとは奇っ怪な

309:デフォルトの名無しさん
10/06/28 04:07:27
>>308
「Sleipnirではできる」のに「OperaやFireFoxではできない」って言う奇怪なソースを早く晒せ

釣りには「ノリ」も必要だぞ

310:デフォルトの名無しさん
10/06/28 09:43:40
恥ずかしい後釣り宣言来ました

311:デフォルトの名無しさん
10/06/28 14:35:12
つDDE

312:デフォルトの名無しさん
10/06/28 14:44:54
>>303
で何したいン?ただ外部のスクリプトからFirefoxでURLを開ければいいのか、FireFoxをスクリプトでいろいろ制御したいのか?

313:デフォルトの名無しさん
10/06/28 19:25:00
IEで開いたページにあるリンクのURLをSendKeyを使ってメモ帳に書き込むコードを作ってみたのですが

一括で書き込んでるから途中で内容がぐちゃぐちゃになってしまいます


0.01秒ごとに書き込みすることはできないでしょうか?

以下 ソースコード

var ie,i,a,aaa,d,s;
var WSH;WSH = WScript.CreateObject("WScript.Shell");
IE=new ActiveXObject('InternetExplorer.Application');
IE.Visible=true;
aaa = "";
s = WScript.sleep(100);
d = 0;
while(d < 10){
d = d + 1;
ie.navigate2("★");
WScript.sleep(3000);
a = ie.Document.links.length;
for (i = 0; i < a; i++) {
if ((ie.Document.links[i].innerText)==("★")) {
test = ie.Document.links[i].search;
aaa = aaa + test~";
break;}};};

WSH.AppActivate("無題");
WSH.SendKeys(aaa);

314:デフォルトの名無しさん
10/06/28 19:31:11
>>313
なんでSendKeys?
FSO使えばいいだろ
あと変数名が酷いなw

315:デフォルトの名無しさん
10/06/28 19:37:26
個人で作って使ってんだ。
変数名なんて本人の好きで構わんだろ。


316:デフォルトの名無しさん
10/06/28 19:45:00
これは難読化されたコードなんだよ

317:デフォルトの名無しさん
10/06/28 19:47:44
>>314
FSOですか・・・それは知りませんでした

あと 変数名は適当に決めています


318:デフォルトの名無しさん
10/06/28 19:52:35
変数と言うぐらいだから変な名前で何が悪い!

319:デフォルトの名無しさん
10/06/28 20:40:07
変な名前では無いと思うが。w

320:デフォルトの名無しさん
10/06/28 21:08:39
FSOに変えてみました

var IE,i,a,t,aaa,d,abc,test;
var WSH;WSH = WScript.CreateObject("WScript.Shell");
var FSO;FSO = WScript.CreateObject("Scripting.FileSystemObject");
IE=new ActiveXObject('InternetExplorer.Application');
IE.Visible=true;
aaa = "";
d = 0;
while(d < 2){
d = d + 1;
IE.navigate2("★");
WScript.sleep(3000);
a = IE.Document.links.length;
for (i = 0; i < a; i++) {
if ((IE.Document.links[i].innerText)==("★")) {
test = IE.Document.links[i].search;
aaa = aaa + test;
break;}};};

abc = FSO.OpenTextFile("abc.txt", 8, true);
abc.WriteLine(aaa);
abc.Close();


これだと改行をしてくれないようです
Write.Line は改行をしてくれるはずだったんですが・・・

321:デフォルトの名無しさん
10/06/28 21:52:44
>>320
WriteLine()は最後に1つだけ改行する

aaa="";
while(...) {
aaa = aaa+なんとか;
}
の代わりに以下のようにすればよい
aaa=[]; // 配列にする
while(…) {
aaa.push(なんとか); //配列への要素の追加
}

abc.WriteLine(aaa.join("\r\n")); // 配列の各要素を改行で連結し、それを書き込み

322:デフォルトの名無しさん
10/06/29 21:01:01
SeraphyScriptDialogは新しいのが出て64bitWindows7にも対応してた。AutoItXも更新してる。
みなさんは使ってますか?

323:デフォルトの名無しさん
10/06/29 22:43:15
いいえ

324:デフォルトの名無しさん
10/06/29 22:46:49
いいえ

325:デフォルトの名無しさん
10/06/29 23:02:55
つかってるがぜよ

326:デフォルトの名無しさん
10/06/30 14:04:56
>>312
後者

327:デフォルトの名無しさん
10/06/30 16:32:44
大変だから止めた方がいい

328:デフォルトの名無しさん
10/07/01 05:52:09
Opera,FireFoxも「JavaScript系で簡単に制御」できる
WSHじゃないのでスレチ


>>322
レジストリ使う時点で糞なので使わんだろ
汎用GUIからScriptControlでWSHを使うのが普通だな

329:デフォルトの名無しさん
10/07/01 07:39:59
>>328
そのスレはどこに?

330:デフォルトの名無しさん
10/07/01 09:26:23
>>329
「何をしたい」のか明記せずに糞みたいな質問ばかりすんな
とりあえず >>278 を読み直して内容を理解しろ
そして質問し直せ

それが出来なければ、自分でスレを探せ

331:デフォルトの名無しさん
10/07/01 16:13:45
糞みたいなレスばかりすんな

332:デフォルトの名無しさん
10/07/02 12:40:39
>>328
XPのmanifest使えばインストール無しでもDllは使える。
起動時のwscript.exeは、マニフェストがあるパスのwscript.exeを使わなきゃいけないけど。
システムを汚さなくても使うことは出来る。
エディタのマクロやブラウザのマクロのjscriptでも同じように使える。
システムへのインストールはいらない。

お前ら、wsh使ってますか? Part7
スレリンク(win板:715番)

715 名前:名無し~3.EXE[sage] 投稿日:2009/12/05(土) 17:35:36 ID:/VdO4Ha3
XPとWScriptのJscriptで、manifest使ってレジストリ登録なしでAutoItXが使えたんでメモしとく。
まずWScript.ExeとCScript.Exeをコピーして適当なフォルダに入れとく。
AutoItX3.dllも同じところに入れとく。
同じ場所にテキストファイルを3つ作る。
wscript.exe.manifest
cscript.exe.manifest
AutoIt.AutoItX3.manifest


333:デフォルトの名無しさん
10/07/02 14:05:58
>>332
ソレ知ってる
SeraphyScriptDialogとAutoItXは「機能不足なので使わない」って方が正しい
>>328 を分かりやすくしておく

 レジストリ使う時点で糞なので使わんだろ
    ↓
 レジストリ使わなくても鼻糞なので使わんだろ

334:デフォルトの名無しさん
10/07/02 16:03:24
>>333
ならそう書けよ。後出しジャンケン好きはプライドだけは高いから困るんだw
会社でもそういわれてるだろ?違うかい?
それで低機能ならSFCminiでも使ってみりゃいいさ。

335:デフォルトの名無しさん
10/07/02 16:09:06
会社でも近所でも鼻つまみ者です

336:デフォルトの名無しさん
10/07/03 02:10:03
>>334
自作の汎用GUIは「GUI/DLL絡みは外部テキストファイル定義」で、WSHからもコントロール可能にしてある
だから SeraphyScriptDialog,AutoItX,SFCmini のような「WSHにベース機能を提供するもの」は使わんよ

「他人がする評価」については否定も肯定もしない
因みにオレは未成年で学生だ
社会人扱いは止めてくれ

337:デフォルトの名無しさん
10/07/03 13:51:54
>>336
ちなみにwin32APIにアクセスしたいときはどうしてるん?プロセス間通信とか、外部のアプリにメッセージ投げたいときとか?

338:デフォルトの名無しさん
10/07/03 16:10:54
学校でも家庭でも鼻つまみ者です

339:デフォルトの名無しさん
10/07/03 18:29:24
わざわざ外部ソフト入れんでも.NETやPowerShell使えばええやん

340:デフォルトの名無しさん
10/07/03 22:24:23
>>339
標準語でおk

341:デフォルトの名無しさん
10/07/03 23:33:34
またPowerShellかよw このスレの意味がない。

342:デフォルトの名無しさん
10/07/03 23:55:49
>>337へのレスが無いね。
質問しといて遊び呆けて無ければ良いが…

343:デフォルトの名無しさん
10/07/04 00:41:11
2chは煽るばっかりで難しい質問には答えられません

344:デフォルトの名無しさん
10/07/04 01:14:33
VBScript コマンドから Windows PowerShell コマンドへの変換

345:デフォルトの名無しさん
10/07/04 11:21:04
GUIはHTAでもいいかも。
足りない部分は外部のDll使おうが、PowerShell使おうが、
そこを関数化しておけばいいんじゃないの?
あとで簡単に置換え出来るでしょ。
Postmessageが使えるだけでもWSHやHTAから出来ることは大きく広がる。

346:デフォルトの名無しさん
10/07/04 15:46:37
TextStreamオブジェクトをFunctionとかで呼んで戻すことができない・・

347:デフォルトの名無しさん
10/07/04 16:40:06
>>346
あほにはできない・・

348:デフォルトの名無しさん
10/07/04 19:22:33
>>346
できるよ・・

349:デフォルトの名無しさん
10/07/04 21:33:20
そういやPowerShellのスレはないんだな

350:デフォルトの名無しさん
10/07/05 08:54:52
win板にあるあるよ

351:デフォルトの名無しさん
10/07/05 19:50:29
ボタンのあるHTMLをieオブジェクトで開いた時、
ボタンクリックのイベントをWSH側で拾うことは
可能ですか?

352:デフォルトの名無しさん
10/07/05 20:09:42
はい

353:351
10/07/07 08:05:20
ヒントちょうだい

354:デフォルトの名無しさん
10/07/07 12:34:28
JScriptでimportもどきって、こんなんでいいのかな?

function require(module){
  if(typeof this[module] == "undefined"){
    var  fso = new ActiveXObject("Scripting.FileSystemObject");
    eval(fso.OpenTextFile(module + ".js").ReadAll());
    this[module] = eval(module);
  }
}

355:デフォルトの名無しさん
10/07/07 12:56:52
>>354
それだと不便だろ?
ScriptControl使え

356:デフォルトの名無しさん
10/07/07 14:32:00
>>354
それだと不便だろ?
WSF使え

357:デフォルトの名無しさん
10/07/07 17:10:21
// wsfでいいんじゃねえの?.wsf
// scriptControlつかおうが、readallでeval使おうが、どっちみち
// スクリプトの中からファイル読込みしてやらんと駄目だろ。
// それならwsfのほうが楽だ。
// エディタのマクロには使えんけどな。
//
// <job id='main'> <script language='JScript' src='./subinclude.js'>
WScript.Echo('wsf');
// </script></job>

358:デフォルトの名無しさん
10/07/07 17:55:12
スクリプトを動的に変更する場合は、一般的にScriptControlを使用する

>>354 は必要なときにスクリプトを後付けする構造なので
何でもできるScriptControlにする方がベストだと思う

>>357 のやり方はスクリプトの一括読み込みなので構造が違う
無駄なスクリプトも全部読み込みたい場合はwsfでも良いけど
ファイル構成も異なるので使い難い

359:デフォルトの名無しさん
10/07/07 18:04:38
>>358
スクリプトコントロールを使うっていっても、その元になるスクリプトを書かれたファイルを読み込まなくていいのか?
たとえばどうやって書くわけよ?
vbsのinput使うみたいな形で、scriptcontrol使ってる例はあるわな。
どうしてもその言語じゃ処理できない場合に使う方法として。
その場合は、スクリプトのなかで記述しちゃってるよね。
>>354は、メインのスクリプトファイルから外部の関数やクラスをimportしたいんだろうから、
その都度読み込もうが、wsfでも何の問題もないと思うんだが。
ScriptControlを使う場合の方法と、そのメリットを判り安く解説してみてくれ。

360:デフォルトの名無しさん
10/07/07 18:12:49
vbsからjsならscriptcontrolかもしれんが、jsからjsならevalでええ、scriptcontrolつかうなんてあほくさ

361:デフォルトの名無しさん
10/07/07 18:16:58
だいたいimportしたいってのは、ファイル構成をわけて、
過去に作った関数を再利用しやすくするためのもんだと思うんだが・・・
ファイル構成をわけたくなきゃ、同じファイルにその関数をコピペすりゃいいだけだが、
それやってくと、それはそれで面倒臭いこともある。

362:デフォルトの名無しさん
10/07/07 18:34:23
scriptcontrolつかいたければつかえば? どうぞどうぞ とめないよ

363:デフォルトの名無しさん
10/07/07 19:57:08
importしたい奴にScriptControlのほうがいいと薦めるのか?
意味がわからん。誰か解説ヨロ

364:デフォルトの名無しさん
10/07/07 21:34:04
断る

365:デフォルトの名無しさん
10/07/07 21:41:20
<?xml version="1.0"?><package><job id="fso"><script language="VBScript"><![CDATA[
rem objIEに走っているスクリプトを入れて関数を呼び出す Unicode で保存
Function obj(jobName) :Set Container = GetObject("new:{C08AFD90-F2A1-11D1-8455-00A0C91F3880}")
CreateObject("Wscript.Shell").Run "Cmd.exe /c Cscript.exe //Nologo " & _
"""" & Wscript.ScriptFullName & """" & " //job:" & jobName & " " & Container.HWND & _
" || (echo Error In JobInitialize. & pause) ", 6
On Error Resume Next :Do :Err.Clear:Set objScript = Nothing
Set objScript = Container.GetProperty(Container.HWND)
Loop While objScript Is Nothing : On Error Goto 0
If Err.Number <> 0 Then : Err.Raise Err.Number : End If
Set obj = objScript : Container.Quit : Set Container = Nothing :End Function
]]></script><script language="VBScript"><![CDATA[rem *** FUNCTIONS ***
Function objSelf() : Set objSelf = CreateObject("Scripting.FilesystemObject").GetFile(WScript.ScriptFullName)
End Function ]]></script><script language="VBScript"><![CDATA[If WScript.Arguments.Count = 0 Then
Set fso = obj("fso") : msgbox fso.objSelf.Path ,32 : fso.Quit
End If]]></script><script language="VBScript"><![CDATA[If WScript.Arguments.Count = 1 Then
PutPropertyMyself() : Zzz() : Sub PutPropertyMyself() : PropertyID = Wscript.Arguments(0) + 0
For Each objIE In CreateObject("Shell.Application").Windows : If objIE.HWND = PropertyID Then
objIE.PutProperty PropertyID, Me : Exit For
End if : Next : End Sub : Sub Quit() : WScript.Quit : End Sub : Sub Zzz() : Wscript.StdOut.WriteLine "id: " & WScript.Arguments(0)
Do : Wscript.Sleep 1000 : Wscript.StdOut.Write "Zzz..." : Loop : End Sub
End If]]></script></job></package>


366:デフォルトの名無しさん
10/07/07 22:46:31
つまらん

367:デフォルトの名無しさん
10/07/08 13:33:47
IEのハンドル調べて、オブジェクトとプロパティのやり取りしていろいろやるのか。凄いな。
で何が凄いんだが、解説ヨロ

368:デフォルトの名無しさん
10/07/08 19:10:09
面倒だからやだ

369:デフォルトの名無しさん
10/07/08 21:27:57
複数ジョブを走らせると
終了時にcmd.exe が成仏しないことに
気がつきましたので
差し替えさせていただきます

どーも すみません

370:デフォルトの名無しさん
10/07/08 21:28:51
<?xml version="1.0"?><package><job id="fso"><script language="VBScript"><![CDATA[
rem よそのスクリプトの関数を呼ぶ.wsf Unicodeで保存
Function obj(jobName) : Set container = GetObject("new:{C08AFD90-F2A1-11D1-8455-00A0C91F3880}")
CreateObject("Wscript.Shell").Run "Cmd.exe /c Cscript.exe //Nologo " & _
"""" & Wscript.ScriptFullName & """" & " //job:" & jobName & " " & container.HWND & _
" || (echo Error In JobInitialize. & pause) ", 6 : On Error Resume Next : Do : Err.Clear
Set script = Nothing : Set script = container.GetProperty(container.HWND) : Loop While script Is Nothing
On Error Goto 0 : If Err.Number <> 0 Then : Err.Raise Err.Number : End If
Set obj = script : container.Quit : Set container = Nothing : End Function
]]></script><script language="VBScript"><![CDATA[Function objHere()
Set objHere = CreateObject("Scripting.FilesystemObject").GetFile(WScript.ScriptFullName).ParentFolder
End Function]]></script><script language="VBScript"><![CDATA[If WScript.Arguments.Count = 0 Then
Set fso = obj("fso") : msgbox fso.objHere.Path, 32 : fso.Quit = TRUE
End If]]></script><script language="VBScript"><![CDATA[Dim Quit
If WScript.Arguments.Count = 1 Then : PutPropertyMyself() : Zzz() : End If
Sub PutPropertyMyself() : PropertyID = Wscript.Arguments(0) + 0
For Each objIE In CreateObject("Shell.Application").Windows
If objIE.HWND = PropertyID Then : objIE.PutProperty PropertyID, Me : Exit For : End if : Next : End Sub
Sub Zzz() : Do : Wscript.Sleep 1000 : Wscript.StdOut.Write Typename(Quit)
If Quit Then : Exit Do : End If : Loop : End Sub]]></script></job></package>

371:デフォルトの名無しさん
10/07/09 17:55:11
GetObject("new:つかってみたかったのか?
CreateObject(ie)でよかろうもん

372:デフォルトの名無しさん
10/07/09 18:28:23
どっちもいらんけどな

373:デフォルトの名無しさん
10/07/16 21:18:50
おまいらWSHのデバッグどうしてる?
エラーダイアログ見て直す?あと個別に変数表示させる?
またはスクリプトデバッガいれてレジストリ直して//xでやってる?
もっと他にいい方法あるかな?
自分でツール作ってやってる人いるかな?

374:デフォルトの名無しさん
10/07/16 22:43:29
>>373
いわゆる printf デバッグ

ただ、WScript.Echo() のままでは面倒なので、
msgout("a={0}, b={1}", [a, b])
みたいに使えるヘルパ関数は自作してる

375:デフォルトの名無しさん
10/07/16 22:53:26
よく使うのは
msgbox escape()
msgbox typname()
だね

376:デフォルトの名無しさん
10/07/16 23:09:08
正規表現とかの文字列処理は組み込んでからデバッグするんじゃなくて
該当部分だけ先にインタプリタ系ツールで試して問題ないことを確認してから
プログラムの本体に組み込む

377:デフォルトの名無しさん
10/07/17 00:36:58
なるほどなるほど・・・
MSのスクリプトデバッガつかってるひとはいないのか。
試してみて、使いやすいとは思えなかったんでエディタと連携させて
自分で適当な関数を作ったほうがいいのかもしれんと思ったのだが・・・

デバッグに絡んで、関数の中で、実行中のその関数の名前を取得したいと思って
いろいろ試してるんだが、
functest=function(a){
s1=arguments.callee.toString() ;//だとfunction以降の中身が表示されて、関数の名前は表示されない。
s2=arguments.callee.name;// だとnetscapeでは関数の名前が表示されるらしいがJscriptでは使えない。
WScript.Echo(s1 +"\n"+ s2);
};
functest();

ということでいろいろ聞きたかったんだが
function functest(a){
とやることで名前を取得できるメドが立ちましたw
一応チラ裏ってことでメモ。

378:デフォルトの名無しさん
10/07/17 13:59:43
IE8に標準のデバッガ使うのはどうだ?ラッパー関数つかって誤魔化せばどうにかなりそうだが。

379:デフォルトの名無しさん
10/07/20 00:33:11
JScript(HTA)で
20→"\x20\00\00\00" // 32bitリトルエンディアン
みたいな変換をする方法があったら教えてください
バイナリ列を扱おうとして詰まった・・・(´・ω・`)

380:デフォルトの名無しさん
10/07/20 01:05:23
>>379
20 => "\x14\x00\x00\x00" でよいのかな?
それでよいなら無理やりだけど以下

function SaveBin(filename, bin) {
var stm = new ActiveXObject("ADODB.Stream");
stm.Type = 1; // 1=adTypeBinary;
stm.Open();
stm.Write(bin);
stm.SaveToFile(filename, 2); // 2=adSaveCreateOverWrite
}
function CodeToBinary(code) {
var uc1 = String.fromCharCode(code & 0xffff);
var uc2 = String.fromCharCode((code >> 16) & 0xffff);
var stm = new ActiveXObject("ADODB.Stream");
stm.Type = 2; // 2 = adTypeText
stm.Charset = "UNICODE";
stm.Open();
stm.WriteText(uc1);
stm.WriteText(uc2);
stm.Position = 0;
stm.Type = adTypeBinary;
stm.Read(2);
return stm.Read(4);
}
SaveBin("binary1.dat", CodeToBinary(20))
SaveBin("binary2.dat", CodeToBinary(65536))

381:379
10/07/20 02:32:44
>>380
レスありがとうございます
>20 => "\x14\x00\x00\x00" でよいのかな?
そうです。>>379は誤りですorz
そのような力業しかないのですか・・・
がんばってみます

382:デフォルトの名無しさん
10/07/20 03:45:38
こういうのじゃだめなん?

function toString32LE(code){
  var s = "";
  for (var i = 0; i < 4; ++i) {
    var  n = code & 0xff;
    code = code >> 8;
    s += String.fromCharCode(n);
  }
  return s;
}

function parseString32LE(str) {
  return (
    str.charCodeAt(0) +
    (str.charCodeAt(1) << 8) +
    (str.charCodeAt(2) << 16) +
    (str.charCodeAt(3) << 24)
  ) >>> 0;
}


383:380
10/07/20 13:13:50
>>382
以前試したとき、文字列で保持するとファイル読み書きが
うまくできなかった気がした
バイナリファイルの解析みたいなものだとそれがネックになる

逆にいえば、それを気にしないか、あるいは読み書きがクリアできるなら
確かに文字列の方が楽だと思う
JavaScriptで画像解析みたいなネタもどこかで見たので、
ひょっとするとそもそもそんな難しい問題ではないのかもしれないが

384:デフォルトの名無しさん
10/07/21 03:22:23
JScriptのバイナリファイルアクセスは鬼門だよな。
書き出しはADODB.Streamをlatin-1で使えばいいとして、読み込みがしんどい。
バイナリタイプでは手も足も出ないからテキストタイプを使うしかないけど、
latin-1で読み込むと0x80-0x9fがutf-16の対応する文字に変換されちゃうし(逆変換で対応)、
utf-16で読み込むと先頭がBOMに一致する場合の対処が必要だし、
他のキャラクタセットだともっとめんどいし。

385:デフォルトの名無しさん
10/07/21 15:29:48
そうかなぁ
ADODB.Stream使えば読むのも書くのも自由自在だけど
バイナリを1バイト置きにコピーしてUnicodeで見ればよい。

386:デフォルトの名無しさん
10/07/22 00:54:32
結局テキストファイルほど簡単にはいかなくて、>>380みたいな変換処理が必要になるのか。

387:デフォルトの名無しさん
10/07/22 02:41:08
00-ffを透過するコードページを使う

388:デフォルトの名無しさん
10/07/22 19:15:04
ADODB.Streamはマカフィーが問答無用で警告を出すのでちょっと使いにくい(特にスクリプトを配布する場合)

389:デフォルトの名無しさん
10/07/22 19:49:06
HTML+JavaScriptでアプリ作成の決め手になるの?Titaniumってやつ。
Windows, Linux, Mac, Andoroid,iPhoneまで同じ技術でカバー出来るらしいが。
HTAみたいなもんか? オマイらどう思う?

ここはAppcelerator Titaniumの日本語情報を整備するためのプロジェクトです。
クロスプラットフォームのアプリ開発としては非常に敷居が低く、javascriptだけでなくpythonやruby、phpなどを利用する事で、
webサービス系ライブラリの流用も可能であり、手軽なツールからサービスクライアントの作成が非常に容易になります。 * 2010/03/22 o 公開
URLリンク(www.appcelerator.com)

Titanium Desktopでアプリケーション開発中
URLリンク(blog.livedoor.jp)

Appcelerator Titanium DesktopでRuby,Python,PHPを使ったお手軽デスクトップアプリ開発その1
URLリンク(d.hatena.ne.jp)

390:デフォルトの名無しさん
10/07/24 09:49:36
謎のオブジェクトを発見

rem a.vbs
msgbox WSH Is WScript

391:デフォルトの名無しさん
10/07/24 15:39:44
>>390
ほれ

謎のオブジェクトを発見.js

for(var o in this){WScript.Echo(o);}

392:デフォルトの名無しさん
10/07/27 11:04:47
//なるほど。その方法でも関数の名前が取得できるね。

getfunctionname=function(obj){
var sname;for(sname in obj){;};
return(sname);
};

funtest=function(s){
var sret=getfunctionname(this);
WScript.Echo('1 '+ function(){var s='';for(var o in this){s=o;};return(s); }() );
return(sret);
};

WScript.Echo('この関数の名前は '+ funtest() );

393:デフォルトの名無しさん
10/07/28 10:14:25
ログをExecelシートに貼り付け~なんて非生産的な作業があって、これをKeyLoggerみたいなので
自動化できればと思いまして、WSHで作れるかなと思ったのですが。
あまり詳しくないんだけども、イベントを追跡してってソフトの起動、ボタンクリック等の操作を記録で
きますでしょうか?それが無理ならキーボードのキーやマウス操作を記録して操作の再現ができますか?


394:デフォルトの名無しさん
10/07/28 10:52:32
Excelのオブジェクトを操作するんじゃなくて、キー操作でうにゃうにゃしたいなら
UWSCでいいんじゃないの?日本語HELPもある。ポータブルでも動くし。
途中で複雑な判断いらない処理なら、UWSCでキー操作を記録して片付けるのがいい。
WSHに詳しくて、その技術を使って途中でいろいろ処理を分けたほうがいいとしたら、
他のソフトに絡むとこだけUWSCで記録しといたマクロをRunさせてまぜて使うとか。
またはAutoItXのDLL使って、ほかのソフトと絡む部分だけ処理させる。
USBのフォルダにシステムからコピーしたWScript.ExeやCscript.exeとmanifestとDLL使えば
UWSCと同じようにポータブルでも使える。

395:デフォルトの名無しさん
10/07/28 16:58:13
excelでやれば

396:デフォルトの名無しさん
10/07/28 22:50:48
ありがとうございますAutoItにUWSCですね。これはしかし動作を指定する必要がありますね。

癖とかありそうで結構手間がかかりそう。。

単純にWindows上の操作を一定期間記録して後で再現とか、できないんですかね。


397:デフォルトの名無しさん
10/07/29 02:52:53
すれ違いだよ

398:デフォルトの名無しさん
10/07/29 02:59:51
ソフト板で聞け

399:デフォルトの名無しさん
10/07/29 03:21:57
謎のオブジェクトを発見

rem a.vbs
msgbox typename(me)

400:デフォルトの名無しさん
10/07/29 05:19:19
>>396
こいつ、UWSCについて調べずに書き込んだな。

401:デフォルトの名無しさん
10/07/29 08:02:10
>>単純にWindows上の操作を一定期間記録して後で再現とか、できないんですかね。
UWSCってそういうことするためのソフトなんだが・・・

402:デフォルトの名無しさん
10/07/29 09:52:25
ゴメンさらっと見てそういう事ができると思わなかった。UWSC便利ですね。
複数のソフトをダウンロード&自動インストールなんて事もできるんだろうか・・
ちょっと使ってみます。どうも。

403:デフォルトの名無しさん
10/07/31 17:11:20
Document.body.innerTextでWeb上の文字列を取得し
その文字列に含まれるキーワードを検索して
発見した場合の処理と見つからなかった時の処理をするにはどうしたらいいでしょうか


if ((IE.Document.body.innerText)==("文字列")) { //処理1 } else { //処理2 };

これだと動かないのです

404:デフォルトの名無しさん
10/07/31 18:31:36
vbscriptならinstr()だな

405:デフォルトの名無しさん
10/07/31 19:08:06
>>404
ありがとうございます
JavaScriptではどうなのでしょうか


406:デフォルトの名無しさん
10/07/31 19:21:28
Stringオブジェクトのメソッドに同じようなものがあるだろ

407:デフォルトの名無しさん
10/07/31 19:33:28
match()?

408:デフォルトの名無しさん
10/07/31 21:22:20
if( /hogehoge/i.test(IE.Document.body.innerText)){ / * true * /;  ;}else{ / * false * / ;};

//正規表現のtestじゃだめか?

409:デフォルトの名無しさん
10/08/03 15:41:46
>>403
自分は、この方法で逃げている。

if ((IE.document.body.innerText).indexOf("文字列") != -1) { // 処理1} else { // 処理2 };

VBSはシラネ


410:409
10/08/03 15:53:02
match()を使うなら、

if ((IE.document.body.innerText).match(/文字列/) != null) { // 処理1 } else { // 処理2 };


411:デフォルトの名無しさん
10/08/03 17:43:08
Webページを操作するなら、スクリプト使うのが前提の
NilとかBugとかプニルつかって、そっちのオブジェクトつかったほうがいいんじゃない?
どうしてもIE使ったほうがいいの?

412:デフォルトの名無しさん
10/08/03 20:15:08
>>409のついでに質問してみる

innerHTMLで文字列を発見した時その行のリンクをクリックするのは可能?

413:409
10/08/03 20:51:08
>>412
可能だとは思う。
該当するinnerHTMLが含まれている、"a"タグを特定して、.click()で出来るのでは。

自分は泥臭い方法でやってるけど、スマートな方法が有ったら教えて欲しい。

自分がやっている方法:

for (var i = 0; i < IE.document.all.tags("a").length; i++) {
if ((IE.document.all.tags("a")[i].outerHTML).indexOf("文字列") != -1) {
IE.document.all.tags("a")[i].click();
// リンクをクリック後に行う処理
break;
}
}


414:デフォルトの名無しさん
10/08/03 20:54:03
>>412
リンクからたどればよい

for (i=0; i<ie.document.links.length; i++) {
if (ie.document.links[i].innerText=="リンク文字列") {
ie.document.links[i].click(); break;
}
}

もし、リンク文字列ではない文字列から近隣のリンクを探したいってことならもっと面倒になる

415:デフォルトの名無しさん
10/08/03 21:55:44
>>414
>もし、リンク文字列ではない文字列から近隣のリンクを探したいってことならもっと面倒になる
それがやりたいけど方法が思いつかないのよね

>>413のように
IE.document.all.tags("a")[i].click();
を使えばできるかもしれないけど
これだと 目的のリンクをクリックしてくれるとは限らないというね

416:デフォルトの名無しさん
10/08/03 21:59:15
>>415
indexOfで文字列を発見した所より前の文字列でIE.document.all.tags("a")[i].click();
を使う・・・あ できるかも

ちょっとソースコード書いてみる

417:409
10/08/03 22:09:17
>>415
>>もし、リンク文字列ではない文字列から近隣のリンクを探したいってことならもっと面倒になる
>それがやりたいけど方法が思いつかないのよね

文字列が、aタグの外に有る場合なの?
文字列0<a href="...">文字列1</a>文字列2
で、文字列1ではなく、文字列0や文字列2を探してクリックとか。

確かに面倒だね。
.parentNodeとか、.previosSiblingや.nextSiblingとか、ゴチャゴチャ使わないと駄目そうだね。


418:409
10/08/03 22:10:27
もう眠い。
今日は寝る。


419:デフォルトの名無しさん
10/08/03 22:13:23
>>417
<a href="...">文字列1</a>文字列2

文字列2を検索するのは
if ((IE.document.body.innerText).indexOf("文字列2") != -1)
文字列1を検索するには 文字列2より前の文字列を検索する必要がある




420:デフォルトの名無しさん
10/08/03 22:20:14
>>419
調べてみたら使えそうなものがあった
lastIndexOf

これでソースコードを完成できるよ みんなありがとう


421:デフォルトの名無しさん
10/08/03 22:43:38
for (i=0;i< IE.document.all.tags("a").length; i++) {
if ((IE.document.all.tags("a")[i].outerHTML).lastIndexOf("文字列2") != -1) {
IE.document.all.tags("a")[i].click();

これじゃだめなのか・・・

422:409
10/08/04 06:50:25
>>421
それ、後方から文字列を探すやつ。
前方から探すより、後方から探す方が探す時間が短い場合が有るから、そういう時に自分は使っている。
例えば、文字列1と文字列2が、非常に酷似していて、最後の数文字だけが異なる様な場合、比較回数が多分少ないのではないかと…

<a href="...">[文字列A][文字列1][文字列B][文字列2][文字列C]</a>

とかの場合。


423:409
10/08/04 15:22:56
>>421
HTMLのタグ構造がどうなっているか示さないと、一体何をしたいのか分からないと思うよ。

(1) <div><a href="...">文字列1</a>文字列2</div>
となっているのか、
(2) <a href="...">文字列1</a><p>文字列2</p>
となっているのか等。

(1) の場合、
for (var i = 0; i < IE.document.all.tags("a").length; i++) {
if ((IE.document.all.tags("a")[i].parentNode.indexOf("文字列2") != -1) {
IE.document.all.tags("a")[i].click();
break;
}
}


(2) の場合、
for (var i = 0; i < IE.document.all.tags("a").length; i++) {
if ((IE.document.all.tags("a")[i].nextSibling.outerHTML).indexOf("文字列2") != -1) {
IE.document.all.tags("a")[i].click();
break;
}
}

とかじゃ駄目かな?
試してないから分からないけど。


424:409
10/08/04 15:29:47
それより、JScriptからファイルをランダムアクセスする事って出来ないのかなぁ?
JScriptから利用出来るフリーのDLLとか有れば良いんだけど。

Perl等のファイルにランダムアクセス可能なスクリプトからIE操作すれば、一番良いんだろうけど、
PerlもVBも分かんねーし。


425:デフォルトの名無しさん
10/08/04 18:06:24
>>ファイルをランダムアクセスする
???

426:デフォルトの名無しさん
10/08/04 21:24:12
>>424
adodb.streamは?

427:デフォルトの名無しさん
10/08/05 08:18:18
IEのボタンクリック
VBSだとちゃんとできるのにJScriptだとできないなぜだぁぁぁぁ


<form action="." method="post" >
<input type="hidden" name="...." value="..." class="">
<input type="hidden" name="..." value="..." class="">
<input type="hidden" name="..." value="..." class="">
<input type="hidden" name="..." value="..." class="">
<input type="hidden" name="..." value="..." class="">
<input type="hidden" name="..." value="...." class="">
<center>
<input type="submit" value="..." class="...">
</center>
</form>

VBS : IE.Document.Forms(0).Item(6).click
JScript : IE.Document.forms(0).Item(6).click();



428:デフォルトの名無しさん
10/08/05 09:31:37
これも反応しない

<input type="text" value="" size="20" class="test">

IE.Document.forms(0).Item(0).value = "あああ"

429:デフォルトの名無しさん
10/08/05 10:22:11
そういうことなら、その部分だけとりあえずはスクリプトコントロールで逃げといて、あとでじっくり考えるw

430:デフォルトの名無しさん
10/08/05 22:30:49
JScriptで普通にいけるんじゃないの?

ie = new ActiveXObject('InternetExplorer.Application');
ie.visible = true;
ie.navigate('URLリンク(www.google.co.jp)')
WScript.Sleep(2000);
ie.document.forms(0).item(2).value='WSH';
ie.document.forms(0).item(3).click();


431:デフォルトの名無しさん
10/08/06 08:25:47
>>430
どうもそのページだけできないんだ

入力フォームをクリックするとフォームの横に文字が表示されるものだから Inputタグのclassが怪しいと思うんだが


432:409
10/08/06 12:13:20
>>431
nameやclassの属性がformsになっていたりしない?


433:デフォルトの名無しさん
10/08/06 12:30:33
>>432
なってない
さすがにそんなミスはない



434:デフォルトの名無しさん
10/08/06 13:04:00
wshでツールチップを指定した座標位置に表示させることは可能ですか?

435:デフォルトの名無しさん
10/08/06 13:16:46
AutoItX使えば出来る。
oAutoIt = new ActiveXObject( "AutoItX3.Control.1" );
oAutoIt.ToolTip("WSH★★★こんばんみ★★★Part7",500,500);

436:デフォルトの名無しさん
10/08/08 11:53:00
if文でWEB上にボタンがある時の処理とない時の処理をする方法ってある?



437:409
10/08/08 19:39:00
>>436
outerHTMLを取得して、解析すれば良いだけでは?
ボタンがFlashとか、HTML以外だと厄介だけど。
見た目がボタンでも、 type = "button" の場合と、 type = "image" の場合が有るから、また厄介だけどね。


438:デフォルトの名無しさん
10/08/08 21:17:28
>>437
なるほどそれがあったか・・・
と なると

if ((IE.Document.body.outerHTML)==(IE.Document.forms[0])) {
WScript.echo("YES")} else{WScript.echo("No")}

こうかな・・・

439:409
10/08/08 21:33:13
>>438
それだと、うまくいかないでしょ。


440:デフォルトの名無しさん
10/08/08 21:58:08
>>439
となると

if ((IE.Document.body.innerText)==(IE.Document.body.innerText.indexOf("form"))){ //処理 } else { //処理2 }

こう・・・でもないな

441:デフォルトの名無しさん
10/08/08 22:07:32
innerTextでページ内のHTMLを・・・

・・・あれ?


if ((IE.Document.body.innerHTML)==(IE.Document.body.innerHTML.indexOf("form")))
これでもだめ?


442:デフォルトの名無しさん
10/08/08 22:13:58
innerHTMLでページ内のHTMLを全部取り出すんだから
innerHTML.indexOf("文字列") で検出した文字列とinnerHTMLのソースと照らし合わして処理・・・じゃないのか?
ならなんで動かないのかと

443:409
10/08/08 22:15:05
>>441
その条件式では、左辺値と右辺値は永遠にイコールにはならないから。


444:デフォルトの名無しさん
10/08/08 22:22:21
>>443
IE.Document.body.innerHTML.indexOf("form")は文字列を検出して表示するんじゃないのか?

文字列があるならその文字列を表示してなければ-1だったはずだが
それと左辺値を比較して左辺値の文字列の中に右辺値の検出した文字列があれば処理1 なければ処理2じゃないのか?



445:デフォルトの名無しさん
10/08/08 22:33:22
あぁ・・・そういうことね

左辺値からすでに間違えていたのか俺は

if((IE.Document.body.innerHTML.match("form")==("form"))

左辺値がソース全体だったら右辺値はformだけでソースとまったく一致しない
ならば左辺値をソース全体からformだけを検出し なければnull それを右辺値と比較

こんな簡単なことに気付かなかった自分が恥ずかしいわ。。。


446:409
10/08/08 22:39:18
>>444
indexOfの説明を良く読んだ方がいいと思う。

URLリンク(www.microsoft.com)
から、 scd56jp.exe をダウンロードし、インストールすればヘルプファイルがインストールされると思う。

直リンクはこちら
URLリンク(download.microsoft.com)

結構役に立つ。
あと、 IE Developer Toolbar も便利。
URLリンク(www.microsoft.com)


447:デフォルトの名無しさん
10/08/09 01:17:32
URLリンク(www.mbga.jp)
URLリンク(www.mbga.jp)
この子ね

>>403 と全く同じ質問しててワラタ
ポイント稼ぐために、必死こいてスクリプト組んでるみたいよw

448:デフォルトの名無しさん
10/08/09 09:59:26
>>447
ワロタ
なんだこのハゲ リアルでのハゲなのか?w

449:デフォルトの名無しさん
10/08/09 13:35:23
IEで
document.location.reload() はできて
document.location.back() はできないんだな

450:デフォルトの名無しさん
10/08/09 13:51:43
document.histry が使えないって・・・

451:409
10/08/09 18:45:15
ところで、WSH使いって、仕事の案件等の為に使っている人と>>447みたいな人とどっちが多いの?

自分は>>447の様な理由でやってるだけだけどさ。
プログラムは20年近く昔に学生の頃に授業でFortran77とLispのS式を習った程度。
学生時代、一緒だった人は何だか未踏のスーパークリエイターで表彰台に上っている写真がIPAのサイトに掲載されてたけどさ。

楽天のメルマガが1週間で2千通を超えるので、メルマガ解除用のスクリプトでも書くか…


452:デフォルトの名無しさん
10/08/11 17:17:28
過疎だなぁ

WSHってそんなにマイナーかな

453:デフォルトの名無しさん
10/08/11 17:25:57
作者タンがカキコしてくれないからな。

454:デフォルトの名無しさん
10/08/11 17:40:27
ハゲでも誰でもいいから来てくれ…

455:デフォルトの名無しさん
10/08/13 01:19:09
みんな暇そうだから質問投下


VBSで多重起動を防止するのをJSでできるか


FSOだとロックファイルの作成と削除はできるけど 重複した時の処理が分からない

456:デフォルトの名無しさん
10/08/13 04:56:28
>VBSで多重起動を防止するのをJSでできるか
この意味が分からないけど、
単純に多重起動を抑止するなら、

1. アプリ起動時にロック用フォルダを作成
2. アプリ起動時にロック用フォルダを削除

1. のフォルダ作成に失敗したらほかのインスタンスが起動中なので、メッセージを表示して終了
でダメなの?

457:デフォルトの名無しさん
10/08/13 17:11:53
URLリンク(blogs.msdn.com)

Nanalich 5 Aug 2010 7:50 PM
Is it still possible to use the new JScript engine with ECMAScript 5 features outside of IE?
Like in WSH and/or HTA?

EricLaw [MSFT] 6 Aug 2010 6:55 AM
JScript9.dll is not presently supported for use outside of IE9, HTAs, and Web Browser controls,
so no, it won't be loaded by WSH.



もしかしてWSH切り捨て?

458:455
10/08/14 20:10:13
VBSでいう Err.Number はJSではどういう使い方?


VBSでの二重起動防止の方法をJSに直してみたんだけど Err.Numberだけ使えないんだ

459:デフォルトの名無しさん
10/08/14 20:57:05
VBScript
何らかの処理
If Err.Number <> 0 Then
エラーの処理
End If

JScript
try {
何らかの処理
} catch (e) {
エラーの処理
}

vbs ではオプションによるが、エラーが発生したときでも、
処理は継続し、その代りにエラーコードが Err.Number にセットされる
js ではエラーが発生すると例外が発生し、try~catchで捕まえないとアプリケーションが終了する


460:455
10/08/14 21:23:35
>>459
サンクス
ScriptControlで on error resume next を呼び出してErr.Numberの代わりにすることにした


あと
FSOでファイルを削除するプログラムをmakeexeでexeにすると うまく動かないのは俺だけ?


Test.js
(略)
FSO.DeleteFile("Test.exe",true)


これをexeにして起動しても削除できないようです

461:デフォルトの名無しさん
10/08/16 13:57:47
>>457
つまりWSHの進化はこれで止まって、枯れた技術になり、仕様の変更とかややこしいこと考えなくて済むようになるってことか?

462:デフォルトの名無しさん
10/08/16 20:21:32
馬鹿っぱやいJScriptのHTAとかは作ってみたかったかも

463:デフォルトの名無しさん
10/08/20 19:42:58
IEオブジェクトを使ってスクリプトとスクリプトの間で共有メモリみたいな感じで通信=相互にデータのやり取りしようと思ってます。
データのやり取り専用のIEオブジェクトを最初に1つ作っといて、終了せずにずっと使い続けるって形です。
Shell.ApplicationでそのIEのオブジェクトを探して、そこにプロパティ付けて通信するってことです。
XPとIE8だと、new ActiveXObject('InternetExplorer.Application')でIEオブジェクトをつくって
そこにプロパティを付けて、値を設定すればスクリプト間でデータのやり取りができました。
で、Vistaでも試したら問題なく動きました。
ところが、XPとIE6の古いPCではすぐにIEオブジェクトが消えてしまうようでうまく行きません。
ウィンドウを開いた普通のブラウザのIEオブジェクトに対してならデータのやり取りは出来ましたが、
ユーザーが何の気なしにそのウィンドウを閉じたらオシマイです。
ウィンドウなしのIEオブジェクトならそんな心配がないのでいい方法だと思ったんですが、
うまくいかない環境があるようです。結局、このPCはWindowsUpdateしてIE8の環境にまであげたらIEオブジェクトは消えずに通信できました。
となると、この先もなんらかのUPDATE次第で、IEオブジェクトを使った通信は出来たり出来なくなったりするのでしょうか?
簡単に動いたから勿体ない気持ちもあるけど、こんな方法は邪道だから辞めた方がいいのかなw
テキストファイルを使うか、SFCminiを使って共有メモリの関数作っちゃったほうがいいんでしょうかね?

464:デフォルトの名無しさん
10/08/20 20:08:54
>となると、この先もなんらかのUPDATE次第で、IEオブジェクトを使った通信は出来たり出来なくなったりするのでしょうか?

yes

>簡単に動いたから勿体ない気持ちもあるけど、こんな方法は邪道だから辞めた方がいいのかなw

yes

>テキストファイルを使うか、SFCminiを使って共有メモリの関数作っちゃったほうがいいんでしょうかね?

no

465:デフォルトの名無しさん
10/08/22 13:32:25
>となると、この先もなんらかのUPDATE次第で、IEオブジェクトを使った通信は出来たり出来なくなったりするのでしょうか?

yes

>簡単に動いたから勿体ない気持ちもあるけど、こんな方法は邪道だから辞めた方がいいのかなw

yes

>テキストファイルを使うか、SFCminiを使って共有メモリの関数作っちゃったほうがいいんでしょうかね?

no

そのものズバリのオブジェクトを公開するコンポーネントってのがある。こっちのほうが簡単。
>>このコンポーネント(COMサーバー)は、指定した COMオブジェクトを外部に公開し、
>>他のアプリケーションからアクセス出来るようにするものです。
RunObj.exe /RegServer で40KBのファイルを入れるだけ。
var ro = new ActiveXObject('Hyon.RunObject');
URLリンク(hyons.hp.infoseek.co.jp)
これでオブジェクトを作った側のプロセスが生きてる限り、オブジェクトのプロパティを共有できる。
相互に通信したいならこれで行ける。

466:デフォルトの名無しさん
10/08/23 13:36:56
DDE通信なら田楽サーバと田楽DLLでもいいんじゃね?

467:デフォルトの名無しさん
10/08/24 11:31:25
質問。 ScriptControlのAddObjectって一回に1つのオブジェクトしか追加できないんですか?

468:デフォルトの名無しさん
10/08/24 23:05:27
IScriptControl.AddObjectの定義を見ると1つだけのようだ。
[id(0x000009c4), helpstring("Add an object to the global namespace of the scripting engine"), helpcontext(0x00113f4d)]
void AddObject(
[in] BSTR Name,
[in] IDispatch* Object,
[in, optional, defaultvalue(0)] VARIANT_BOOL AddMembers);

469:デフォルトの名無しさん
10/08/25 14:01:43
サンクスです。ScriptControl AddObject でググッても多くの資料は出てこないようですが、
どこかに判りやすい解説をしてるページはありますか?

470:デフォルトの名無しさん
10/08/26 00:28:57
ググッたんなら↓見たろ? これじゃダメかい?
スクリプト コントロールの AddObject メソッドを使用する方法
URLリンク(support.microsoft.com)


471:デフォルトの名無しさん
10/08/26 01:01:56
そもそもCOMに可変長引数ってあるの?

472:デフォルトの名無しさん
10/08/26 01:25:28
ScriptControl.Run("Name", arg1, arg2, ... argn) とか、ふつうにやるじゃんか。
MIDL上はSAFEARRAY(VARIANT)になってるみたいね。
[id(0x000007d3), vararg, helpstring("Call a procedure defined in the global module"), helpcontext(0x00113f09)]
VARIANT Run(
[in] BSTR ProcedureName,
[in] SAFEARRAY(VARIANT)* Parameters);

473:デフォルトの名無しさん
10/08/30 22:05:56
WSHShell.Environment("Process");

でItemを作って他のファイルに変数を渡そうとしてるんだけど 文字化けして
-1.#IND
になってしまうのですがどうすればいいでしょうか

474:デフォルトの名無しさん
10/08/30 22:43:40
>>473
他のファイルってのが何かわからないけど、
環境変数はプロセス毎のもので子プロセスにしか
引き継がれないからではないだろうか

475:デフォルトの名無しさん
10/09/04 20:46:22
てs

476:デフォルトの名無しさん
10/09/04 20:47:30
Open OfficeのプログラムIDってありますか?

477:デフォルトの名無しさん
10/09/04 20:49:32
サゲ進行なんですかね
失礼

478:デフォルトの名無しさん
10/09/04 21:04:18
>>476
やったことないけどこのへん参考になるのかな
URLリンク(wiki.services.openoffice.org)

479:467
10/09/04 21:13:49
>>478
ありがとうござます
公式にページがあったんですね。

エクセルよりめんどくさそう…

480:デフォルトの名無しさん
10/09/14 06:26:28
WMIか何かで、起動中のプロセスのコマンドラインオプションを得る方法はないでしょうか?
Win32_Process では取得できないみたいで…

481:デフォルトの名無しさん
10/09/14 06:48:14
Win32APIのならわかるが

482:デフォルトの名無しさん
10/09/14 07:05:10
SFC miniとか使ってやるのでしょうか?
Win32APIは使ったことがないので、教えてください

483:デフォルトの名無しさん
10/09/14 10:50:32
>>480
XP以降ならWin32_ProcessのCommandLineで取れるよ

484:デフォルトの名無しさん
10/09/14 13:49:05
ありがとうございます。それで取れました。
URLリンク(www.anchorsystems.jp)
に載ってなかったので、そもそも無いのかと思ってました。

485:デフォルトの名無しさん
10/09/14 14:19:09
URLリンク(www.microsoft.com)


486:デフォルトの名無しさん
10/10/09 17:41:15
Windows Script Host のエラーダイアログを非表示にすることはできませんか?

487:デフォルトの名無しさん
10/10/09 17:56:45
try catchとかon error resume nextとかやればいいんでないの

488:デフォルトの名無しさん
10/10/09 18:19:36
try catchでもエラーが出るようなんです

underfined はNull またはオブジェクトではありません


489:デフォルトの名無しさん
10/10/09 18:53:24
そりゃ underfined はそうだろうね。

490:デフォルトの名無しさん
10/10/10 20:06:36
そうだね、ごめん。

491:デフォルトの名無しさん
10/10/24 14:40:44
001.txtから150.txtまでの空のテキストファイルを任意のフォルダに一括作成する方法を教えてください


492:デフォルトの名無しさん
10/10/24 14:48:19
そんなのをWSHでやるのは面倒臭い

493:デフォルトの名無しさん
10/10/24 14:48:55
set fso = wsh.CreateObject("Scripting.FileSystemObject")
for i = 1 to 150
 fso.CreateTextFile(right("00" & i, 3) + ".txt")
next


494:デフォルトの名無しさん
10/10/24 14:49:15
>>492
何でやれば楽なんですか?
よろしけば教えてください

495:491
10/10/24 14:54:40
>>493
できました。
ありがとうございます。

496:デフォルトの名無しさん
10/10/24 14:56:47
逝ってヨシ

497:デフォルトの名無しさん
10/10/24 15:00:14
コマンドプロンプトのバッチでやるとかどう?

498:デフォルトの名無しさん
10/10/24 15:14:20
>>497
スレ違い
スレリンク(tech板)

499:デフォルトの名無しさん
10/10/24 23:36:14
30分くらいのやり取りで完結してしまうとかスタックオーバーフロー並だな
過疎スレの癖にw

500:デフォルトの名無しさん
10/10/24 23:38:44
m9

くやしいのう くやしいのう

501:デフォルトの名無しさん
10/10/25 00:39:32
>>493
right("00" & i, 3)
コレに気づかず
if a < 100 then gyoubangou = "0" + a
if a < 10 then gyoubangou = "00" + a
なんて事してた。
サンクス。

502:デフォルトの名無しさん
10/10/25 01:24:06
2ch は心の荒んだ人の溜り場だな

503:デフォルトの名無しさん
10/10/31 13:54:53
△心の荒んだ人の溜り場
○ヒトが心の歪みを、吐き出す場所。

504:デフォルトの名無しさん
10/11/01 20:30:07
32bitで動いてるか64bitで動いてるかどうやって判定する?

505:デフォルトの名無しさん
10/11/01 20:38:35
wscript.fullname

506:デフォルトの名無しさん
10/11/01 21:41:24
タスクマネージャ見れば32bitで動いてるプロセスは
firefox.exe * 32
みたいになってる

507:デフォルトの名無しさん
10/11/01 22:18:52
貧乏人は32bit。所得が高い人は64bit。顔を見れば判る。

508:デフォルトの名無しさん
10/11/02 01:07:29
>>504
URLリンク(blog.livedoor.jp)

509:デフォルトの名無しさん
10/11/02 01:13:13
if( typeof( koumuin ) == "object" ){
WScript.Echo("あなたは勝ち組64bitです")
}else{
WScript.Echo("あなたは消費とは無縁な32bitです")
}

510:デフォルトの名無しさん
10/11/02 16:54:11
32bit winの32bit ieと64bit winの64bit ieが区別でけんな

511:デフォルトの名無しさん
10/11/02 18:11:28
folderexist("c:\windows\syswow64")

512:デフォルトの名無しさん
10/11/22 21:12:19
WindowsXPでコマンドプロンプトを使用しています。
colorコマンドや、cmd /t:である程度色は変更可能ですが、
ショートカットファイルでの設定
URLリンク(cmd-pro.com)
のように、もっと色を細かく指定したいと考えています。

WSHのCreateShortcutで、色を指定したショートカットファイルを作ることはできないでしょうか?
よろしくお願いします。

513:デフォルトの名無しさん
10/11/22 23:48:36
\HKEY_CURRENT_USER\Console
の中に ColorTable00 ~ ColorTable15 っていうのがデフォルト 16 色

個別の設定は標準の cmd.exe なら
\HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe

C:\hoge\fuga\hage.exe なら
\HKEY_CURRENT_USER\Console\C:_hoge_fuga_hage.exe

に ColorTableNN を追加

514:512
10/11/23 06:35:27
>>513
ありがとうございます。
いけました。

515:デフォルトの名無しさん
10/11/23 09:08:57
Vistaだとうまくいかないみたいだけどwindows7ではどうなんだろう?

516:デフォルトの名無しさん
10/11/23 09:43:25
\HKEY_CURRENT_USER\Console\ショートカット名(.lnkを除く)

の ColorTableNN を上書き
で逝けました

517:デフォルトの名無しさん
10/11/23 10:10:12
ありがとうございます。
いけました。

518:デフォルトの名無しさん
10/11/23 11:14:45
>>516
それWindows7での話?

519:デフォルトの名無しさん
10/12/04 19:35:44
cscriptから起動してるときにウィンドウのタイトルをjscriptから変えるにはどうしたらいいんだろ?

520:デフォルトの名無しさん
10/12/05 03:46:26
new ActiveXObject("WScript.Shell").Exec("cmd.exe /c title newtitle")

521:デフォルトの名無しさん
10/12/05 13:39:12
ありがとうございました。いけました。

522:デフォルトの名無しさん
10/12/06 22:47:48
IEをバージョンアップしてjscript.dllが新しくなったらWSH上のJScriptも早くなるの?

523:デフォルトの名無しさん
10/12/06 23:07:55
IE9からはJSscriptがIE内臓になって、COMの形で提供されなくなるらしい

524:デフォルトの名無しさん
10/12/06 23:18:07
それならそれでいいや。htaの動作や仕様はそこで固まるってことでいいわけ?

525:デフォルトの名無しさん
10/12/08 13:59:36
vbscriptも?

526:デフォルトの名無しさん
10/12/11 19:29:48
スクリプトエラーがexitcodeで判定できないの?

527:デフォルトの名無しさん
10/12/12 16:48:40
スクリプトでは0以外返せば、0ならエラーと分るな

528:デフォルトの名無しさん
10/12/14 16:51:05
なるほど 裏をかくわけですね

529:デフォルトの名無しさん
10/12/15 05:58:57
「ファイル名を指定して実行」をコマンドから起動したいのですが、
方法が解りません。なにか方法はないでしょうか?


530:デフォルトの名無しさん
10/12/15 07:48:11
send,#r

531:デフォルトの名無しさん
10/12/15 12:59:41
「ファイル名を指定して実行」をコマンドから起動でぐぐれ

URLリンク(scripting.cocolog-nifty.com)

532:デフォルトの名無しさん
10/12/15 13:41:54
すれ違いだろ このすれではshell.filerunだろ

533:デフォルトの名無しさん
10/12/15 14:35:13
なんでそんな事したいのか解んねw

534:デフォルトの名無しさん
10/12/15 19:39:35
コマンドでもスクリプトでもどっちでもよいが、コマンドラインを「ファイル名を指定して実行」に送れるとよいのだが、無理だろな

535:デフォルトの名無しさん
10/12/15 20:51:29
startじゃだめなん?

536:デフォルトの名無しさん
10/12/15 21:29:54
昔はsendtoxがあったけどな

537:デフォルトの名無しさん
10/12/16 12:19:40
うほおお
ありがとう!>>530-536

538:デフォルトの名無しさん
10/12/17 17:36:46
>>534
MRU書き換えてから開けば?

539:デフォルトの名無しさん
10/12/18 18:41:41
今は Send To Toys 2.6 てえのがある

540:デフォルトの名無しさん
10/12/27 21:43:22
wshからexcelブック開いて
あるシートの最終行を取得したいんだけど
どうしたらいいかな?
LastRow = objExcel.Range("$A$1").End(xlDown).Rowとか
.objExce.Cells.SpecialCells(xlLastCell).Address とかやると
rangeプロパティのcellsオプションがとってこれねぇ!
って怒られるんだけど。(objExcelはエクセルオブジェクトね)

541:デフォルトの名無しさん
10/12/27 21:57:35
work(current)book,work(current)sheetの指定が必要


542:デフォルトの名無しさん
10/12/27 22:51:31
ありがとう
そして今度はまた違うエラーが出るんだが

objExcel.workbooks("C:\test.xlsm").worksheets("data").Range("A5").End(xlDown).Row

未知の実行時エラー 800A03EC

マイクロソフトのページによるとアカウントの権限が
なんちゃらかんちゃら
よくわからんのだが

543:デフォルトの名無しさん
10/12/27 23:04:56
馬鹿には無理

544:デフォルトの名無しさん
10/12/27 23:05:14
すんまそん

545:デフォルトの名無しさん
10/12/27 23:16:08
UsedRangeが使えなかったっけ?
ってか、WSH?

546:デフォルトの名無しさん
10/12/27 23:17:38
ってか釣り

547:デフォルトの名無しさん
10/12/27 23:32:52
悲しいかな釣りではない
今オブジェクトライブラリの設定してる

548:デフォルトの名無しさん
10/12/27 23:39:52
UsedRange.Rowで開始位置はとれた。
なんでEnd(xlDown)が使えないの…

お前らの反応からしてかなりあほな原因なんだろうな

549:デフォルトの名無しさん
10/12/27 23:42:59
xlDownに値が入ってないんだろうな

550:デフォルトの名無しさん
10/12/27 23:53:15
とれた。
ありがとう
いいヒントだった

551:デフォルトの名無しさん
10/12/28 01:00:42
予想通りかなりあほな原因だったな

552:デフォルトの名無しさん
10/12/28 15:27:59
でもさ、いろんなサイトで
(xlDown)ってそのまま使ってるんだぜ?
何あれ、エクセルマクロVBA専用なのか?

553:デフォルトの名無しさん
10/12/28 15:36:19
>>545
これってWSHっぽくない書き方なの?

554:デフォルトの名無しさん
10/12/28 15:40:56
>>553
option explicitを知らんのか

555:デフォルトの名無しさん
10/12/28 15:52:25
>>554
上のほうについちょるよ。
馬鹿で申し訳ないんだけど
explicitステートメントとWSHぽくない
関係がよくわからんのだけど

556:デフォルトの名無しさん
10/12/28 18:43:44
>>552
Yes, we can.

557:デフォルトの名無しさん
10/12/28 22:37:37
>>556
but I can't

まぁ、でも実家帰る前に解決してよかったわthx
じゃあお前らまた来年ノシ

558:デフォルトの名無しさん
10/12/29 18:11:24
wshって将来なくなるの?

559:デフォルトの名無しさん
10/12/29 20:52:26
powershellになるんじゃね?

560:デフォルトの名無しさん
10/12/29 20:54:36
psつまらん

561:デフォルトの名無しさん
10/12/30 13:01:55
そんな簡単にはなくならんだろ
趣味で使ってるヤツらは切ってしまえばグチグチいいながらもなんか他のに移るだろうけど
業務で使ってるヤツがごろごろしてるだろうからいきなり切ったらそういう人種が大騒ぎするぞ

562:デフォルトの名無しさん
10/12/30 16:39:44
cmd.exeがなくなったか?
command.comがなくなったか?

563:デフォルトの名無しさん
10/12/30 17:26:20
エントロピーは増大する

564:デフォルトの名無しさん
10/12/30 18:19:46
VBSなんですけど、例えばIEオブジェクトに自作のメソッドを追加することってできますか?


565:デフォルトの名無しさん
10/12/31 04:17:17
IEコンポーネント使ってます。
通常、ボタンのclickで新しいウインドウが開くページなのですが
「ポップアップはブロックされました。Ctrlキーを押しながら...」とステータスバーに表示されます。
ポップアップを表示させるにはどうすればよいでしょうか?
ちなみにそのポップアップは無視したままで構いません。

566:デフォルトの名無しさん
10/12/31 11:20:25
馬鹿か?

567:デフォルトの名無しさん
11/01/02 08:54:18
どうすれば良いと?

568:デフォルトの名無しさん
11/01/04 14:42:43
URLリンク(www.miraiz.bz)
にあるテンプレートを全て一括してダウンロードしたいです。wshでできますか?誰か作ってくれませんか?


569:デフォルトの名無しさん
11/01/04 22:01:34
馬鹿か?

570:デフォルトの名無しさん
11/01/05 13:35:18
>>569
貴方ほどバカではありません。

571:デフォルトの名無しさん
11/01/05 14:53:33
五十歩百歩ってこと?

572:デフォルトの名無しさん
11/01/05 21:01:56
言いたいだけだろうよ

573:デフォルトの名無しさん
11/01/07 08:31:25
バカですか?
YES→なら帰れ
NO→なら自分で作れ

574:デフォルトの名無しさん
11/01/07 16:25:20
サイトからリンクたどってダウンロードしてくれるソフトなんて、山ほど有るのに、wshでやりたいバカで、自分で作れないバカ。
馬鹿面ライダーダブルってカンジ?

575:デフォルトの名無しさん
11/01/07 16:42:11
>>574
途中でフォームの入力があるよ。
馬鹿?

576:デフォルトの名無しさん
11/01/07 19:53:56
お前ら罵り合ってないで
タイピングにいそしめよ

577:デフォルトの名無しさん
11/01/07 21:55:30
タイピストかよw

578:デフォルトの名無しさん
11/01/07 23:40:40
罵りあうのにタイピングしてる件

579:デフォルトの名無しさん
11/01/16 09:47:06
みんなWindows7つかってる?
WSHとかってXPの頃と変りなく使えてる?

580:デフォルトの名無しさん
11/01/16 10:10:46
Cygwinの動きがおかしい

581:デフォルトの名無しさん
11/01/16 17:06:03
>579
自分も知りたいです。
PCのハードが不調で、ついでに7に移行しようか検討中...

582:デフォルトの名無しさん
11/01/16 17:34:08
>>579
Windows 7 64bitでWSHもHTAも特に問題なく使えてる。

583:デフォルトの名無しさん
11/01/17 01:10:43
>>582
サンクス
HTAも問題ないってのは朗報だね。

でも、IEのバージョンが上がると
HTAの方で出来ることも変わったりするから
油断は出来ねぇ

584:デフォルトの名無しさん
11/01/17 03:41:06
でも、IEのバージョンが上がると
WSHの方で出来ることも変わったりするから
油断は出来ねぇ



585:デフォルトの名無しさん
11/01/17 20:43:56 BE:1455989478-PLT(23456)
IE9beta入れてるけど大抵のことはできること変わんないと思うよ。
あまり凝ったものは組んだことないけど、今までのものは普通に動いてる。

586:583
11/01/18 17:35:11
ごめん別にWSHがIEの影響を受けるって意味じゃなくて
WSH使ったプログラム書くときに
IEに関係する機能を利用してると って事で。

587:デフォルトの名無しさん
11/01/18 18:59:58
ビスタから7はあまり変わらんかもしれんがxpからビスタや7は大変よ
ie.navigate 保護モード無効のサイト
が初っ端から動かんからな


588:デフォルトの名無しさん
11/01/20 00:36:46 BE:2105984399-PLT(23456)
>>586
そういうことか。申し訳ない。

589:デフォルトの名無しさん
11/01/29 18:13:04
お前らプログラム組む時どんな感じなの?
サンプルコピペでちょっと変えて…
の繰り返しって感じ?

590:デフォルトの名無しさん
11/01/29 18:49:18
アプリケーションプログラムではそれもあるけど、スクリプトはほぼベタ書き
精々コードスニペットから自前の雛形引っ張ってくるくらい
スクリプトなんて、サンプル探すより自前で書いた方が早いようなことにしか使わないし

591:デフォルトの名無しさん
11/01/29 20:40:41
>>589
最初に、まずダーっと書く。
自分で用意してある関数群は使う場合があるけど
小さいプログラムやスクリプトの場合は使わない。

で、ある程度書いてから整理の方針を決めて
全体像を決めてから整理する。
主にGUI作るときはこんなん。

592:デフォルトの名無しさん
11/01/29 23:56:31
>>589
サンプルって言うか、自分の書き溜めたコードを雛形にして
書き起こしていくことが多いな・・・

593:デフォルトの名無しさん
11/01/30 05:40:13
書き捨て用のものと再利用を考慮したものでは書き方も変わってくる

594:デフォルトの名無しさん
11/01/30 19:34:34
WSHではあまり書き捨てはやらんな。
常に使っていればいいけど、
たまにしか使わなくなるとなると、メソッドとか思い出すのにちょっとめんどい。

595:デフォルトの名無しさん
11/02/06 15:56:59
最近、VBScript で書き上げても、移植性のなさ、この先のサポートを考えると、一抹の不安が残る今日この頃。

596:デフォルトの名無しさん
11/02/06 17:50:26
移植性のなさって具体的に何?

597:デフォルトの名無しさん
11/02/06 18:17:44
power shellに移行だな

598:デフォルトの名無しさん
11/02/07 00:45:34
>>595
移植性なんか心配してるヒマがあったら、
未来のおまいのために、コードをきれいに仕上げてコメント付けとけ。

599:デフォルトの名無しさん
11/02/07 14:56:34
言語を変えるのを移植とは言わんだろ

600:デフォルトの名無しさん
11/02/07 17:08:00
convertibility

601:デフォルトの名無しさん
11/02/08 10:09:16
>>599
うーん…
簡単にプログラミング言語を変えられない現状を鑑みれば、移植と言って良いと思うな。
そもそも、キミの言う移植がアセンブラレベルの意味合いっぽいじゃん?
もう、誰も、そんな事してないじゃん?

602:デフォルトの名無しさん
11/02/08 14:59:27
あたまわるそう

603:デフォルトの名無しさん
11/02/28 16:37:18.39
index=folderitem.getlink.geticonlocation(path)
pathはbyref string
wshでpathを得るにはどうすればよいのですか?
wshでは不可能ですか?

604:デフォルトの名無しさん
11/02/28 16:47:28.84
普通にやればいいだけだと思うけど

605:デフォルトの名無しさん
11/02/28 18:53:40.12
無理だろ 諦めろ

606:デフォルトの名無しさん
11/03/01 18:50:09.10
wshじゃ内部型stringのvariant型の参照渡しだもんな

607:デフォルトの名無しさん
11/04/17 00:11:31.36
IEが起動しているかどうか調べる方法ってございませんか?
起動してない場合に特定の処理したいので・・・

608:デフォルトの名無しさん
11/04/17 00:14:59.65
>>607
WMI使えば出来るよ

WMIはWSH専用ではない汎用ライブラリで
WSHとは別物でありスレ違いになるので、ここでの詳細解説は伏せる

609:デフォルトの名無しさん
11/04/17 00:59:27.00
>>607
shell.applicationのshellwindows

610:デフォルトの名無しさん
11/04/17 12:43:48.33
AppActivateでChromeをアクティブにしてSendkeysでF5を押してページをリロードしたいのですが、F5が効きません
IEとFirefoxは問題なくできました。
ただ、appActivateでChromeをアクティブにしてsleep 5000ぐらい待機させて、その間にアドレスバーにフォーカスを手動で移して晩生SendkeysでF5で更新ができました
なのでALT+Dを送信してからF5を押せばいいのかと思い"%D"を送ってみたのですがアドレスバーにフォーカスが移りません
Chromeでページをリロードできるところまで何とかやりたいのですが解決方法ございませんか?

611:デフォルトの名無しさん
11/04/17 12:44:34.31

晩生は打ち間違えですので読み飛ばしてください

612:610
11/04/18 00:19:37.81
どうやらF5が効かないのではなくてアクティブになってないようでした
ただ、コードを実行するとChromeが前面に表示されるのですが(Chromeを最小化した状態でも)、どうもChromeの上の青い箇所が薄くなってました(メモ帳で言えば灰色の状態)
Chromeの仕様上WSHでは無理なんでしょうか?


613:デフォルトの名無しさん
11/04/18 15:21:08.85
メモ帳だってappactivate直後のsendkeysは受付ねーが?
適当にsleepしろ


614:デフォルトの名無しさん
11/04/18 15:22:38.38
↑sleep 5000って書いてあんぞ

615:デフォルトの名無しさん
11/04/18 16:15:39.03
それがどうした?

616:デフォルトの名無しさん
11/04/18 16:29:18.91
質問者はsleep書いてるのにsleepしろは矛盾している

617:デフォルトの名無しさん
11/04/18 17:57:39.92
質問者はsleepしてsendkeysしたと書いてるかバカめ

618:デフォルトの名無しさん
11/04/18 18:49:42.87
>ただ、appActivateでChromeをアクティブにしてsleep 5000ぐらい待機させて、その間にアドレスバーにフォーカスを手動で移して晩生SendkeysでF5で更新ができました
>ただ、appActivateでChromeをアクティブにしてsleep 5000ぐらい待機させて、その間にアドレスバーにフォーカスを手動で移して晩生SendkeysでF5で更新ができました
>ただ、appActivateでChromeをアクティブにしてsleep 5000ぐらい待機させて、その間にアドレスバーにフォーカスを手動で移して晩生SendkeysでF5で更新ができました
>ただ、appActivateでChromeをアクティブにしてsleep 5000ぐらい待機させて、その間にアドレスバーにフォーカスを手動で移して晩生SendkeysでF5で更新ができました
>ただ、appActivateでChromeをアクティブにしてsleep 5000ぐらい待機させて、その間にアドレスバーにフォーカスを手動で移して晩生SendkeysでF5で更新ができました
>ただ、appActivateでChromeをアクティブにしてsleep 5000ぐらい待機させて、その間にアドレスバーにフォーカスを手動で移して晩生SendkeysでF5で更新ができました


619:デフォルトの名無しさん
11/04/18 20:45:09.98
>その間にアドレスバーにフォーカスを手動で移して晩生
これが見えぬか

620:デフォルトの名無しさん
11/04/18 21:14:18.24
手動にしないとF5が効かないって意味じゃないか。
>>619お前ずっと書き込みしてる人?静観してたけどお前がレスすると話がおかしくなるから黙ってがいいよ。

621:610
11/04/18 22:43:31.43
解決できました

622:デフォルトの名無しさん
11/04/18 23:39:08.17
FireFoxなら指定時間毎の自動更新が出来るけどChromeにはそういう機能はないの?

623:デフォルトの名無しさん
11/04/19 19:04:50.94
SendKeysはいいんだけどマウス動かす方法ないの?

624:デフォルトの名無しさん
11/04/19 23:40:59.55
MouseでなくWindowを動かせば?相対的なもんだろ?

625:デフォルトの名無しさん
11/04/19 23:52:03.13
Windows 転送ツールを使ってユーザープロファイルをコピーするのを、
WSHで定期的にタスクで自動実行したいのですが、簡単な方法はありますか?
代替えでAIKつかってコマンドでできるそうなのですが、
うまくイメージがとれませんでした。

626:デフォルトの名無しさん
11/04/20 11:52:54.52
>>624
windowの中をSendKeysで処理したい場合でTABキー移動もできない場合は?

627:デフォルトの名無しさん
11/04/21 01:18:09.34
sendkeys "% m{right}"

628:デフォルトの名無しさん
11/04/21 07:49:23.22
>>627
いや、だから…
例えばブラウザでサイト閲覧してて
SendKeysで入力フォームを自動入力させる処理があるとする
普通ならTABをSendKeysで送ってやれば入力フィールドから次のフィールドにフォーカスが当たる
しかし、FlashやTAB遷移できない要素はマウスでonFocusやonClickする必要がある
これをWSHでどうやればいいだろうかと

629:デフォルトの名無しさん
11/04/21 09:44:55.12
チーター乙

630:デフォルトの名無しさん
11/04/21 11:50:47.68
>>629
ゲーム等のbotプログラムをわざわざWSHでやろうとは思わんよ
業務自動化の使用範疇だよ

631:デフォルトの名無しさん
11/04/22 18:27:34.48
口調が気に食わない

632:デフォルトの名無しさん
11/05/17 19:23:55.22
wsh で c:\Program Files のように標準のプログラム保存フォルダを取得ってできないの?
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
見てみたけど無いんだよね。

633:デフォルトの名無しさん
11/05/17 19:39:21.95
%ProgramFiles%

634:デフォルトの名無しさん
11/05/17 19:56:48.72
>>633
ありがとうございます。

635:デフォルトの名無しさん
11/05/21 21:38:02.65
下記コードのhtmlにアクセスしたら、
指定のURLにリダイレクトさせたいんですが、
どうすればできるでしょうか?
『例』
<SCRIPT LANGUAGE="VBScript">
<!--
// リダイレクト先のパス指定
URLリンク(www.yahoo.co.jp)
-->
</SCRIPT>

636:デフォルトの名無しさん
11/05/21 22:52:30.15
スレ違い・・・・・じゃなかった板違い

637:デフォルトの名無しさん
11/05/22 13:00:28.56
ツールチップを表示したいのですが参考になるページございませんか?

638:デフォルトの名無しさん
11/05/23 10:32:32.56
Win7デスクトップで[並び替え]→[名前]を二回連続で繰り返すwshください

639:デフォルトの名無しさん
11/05/23 17:54:38.56
1回ものはどこかで見たがなぜ2回?

640:デフォルトの名無しさん
11/05/23 20:50:52.50
sendkeys

641:デフォルトの名無しさん
11/05/26 03:41:37.18
>>639
降順じゃね?

642:デフォルトの名無しさん
11/05/30 05:54:47.25
ファイル名を全角→半角にリネームする際にリネーム後のファイル名が重複した場合に
aaa(1).txtというように番号をふって対処したいのですがどのように書いたら良いでしょうか?

~~~
function rename(f) {
var new_name = full_to_half(f.Name);
var new_path = f.ParentFolder.Path + "\\" + new_name;



643:デフォルトの名無しさん
11/05/30 05:57:15.06
つづきです。

if (new_name != f.Name) {
if (fso.FolderExists(new_path) || fso.FileExists(new_path)) {
???
}
~~~

644:デフォルトの名無しさん
11/05/30 08:41:00.90
パスをカンマより前とカンマ以降に分けて変数に格納
c:\hoge\aaa.txt
なら
前="c:\hoge\aaa"  後=".txt"

次に連番化用の変数作って

var 連番文字変数 = "";
var 連番カウンタ変数 = 1;

あとはループ作って

new_path = 前 + 連番文字変数 + 後;
Exists(new_path) //がfalseなら抜け
連番文字変数 = "(" + 連番カウンタ変数 + ")";
連番カウンタ変数 += 1;

ループ抜けたらnew_pathにリネーム

これだけ


最初の「前 + 連番文字変数 + 後」では、連番文字変数が空だから
「"c:\hoge\aaa" + "" + ".txt"」=「c:\hoge\aaa.txt」

二回目は「連番文字変数」に「"(" + 連番カウンタ変数 + ")"」が入っているから
「"c:\hoge\aaa" + "(1)" + ".txt"」=「c:\hoge\aaa(1).txt」


645:642
11/05/30 13:51:29.91
>>644
ご丁寧にレスを下さり有難うございます。
早速試してみたのですが、
この場合だと全角のaaa.txtを半角へとリネームする際に
既にaaa.txtとaaa(1).txtが存在しているとaaa(2).txtとはならずに
aaa(1).txで重複のエラーになってしまいます。
このような場合に無限に連番で処理することは出来ないのでしょうか?

646:デフォルトの名無しさん
11/05/30 13:59:34.54
new_path = 前 + 連番文字変数 + 後;
Exists(new_path) //がfalseなら抜け
連番文字変数 = "(" + 連番カウンタ変数 + ")";
連番カウンタ変数 += 1;

はループ内に入れたか?
ループ内に入れてあれば
> 無限に連番で処理
されるはずだが、というか実際にされているが

647:642
11/05/30 22:09:05.71
>>646
すいません、できました。
親切にお答えいただき有難うございました。

648:デフォルトの名無しさん
11/06/07 13:53:05.03
質問します。
IEのキャッシュを削除するスクリプトを使用したいと思っています。
そこで、下の URL のスクリプトを実行してみましたが、

C:\Documents and Settings\(ユーザー名)\Local Settings\Temporary Internet Files

内のファイルは一切削除されませんでした。
Temporary Internet Files フォルダ自体を削除することを試してみましたが、
「書き込みできません」とエラーが発生しました。
WSHでIEのキャッシュを削除する方法をご存じの方は、ご教示ください。

(環境)
Windows XP SP3
IE 8



649:デフォルトの名無しさん
11/06/07 14:45:35.02
エクスプローラのツリーからは何故か見えないんだけど
実際には Temporary Internet Files\ の下に更に Content.IE5\
というフォルダがあって更にその中の複数のサブフォルダの中にファイルがある

下の URL のスクリプト ってどれよ?


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