WSH(・∀・)スレッド! Part 4at TECH
WSH(・∀・)スレッド! Part 4 - 暇つぶし2ch305:デフォルトの名無しさん
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 のスクリプト ってどれよ?

650:648
11/06/07 15:49:30.04
>>649
レスありがとう。そして間違えました。
URLのつもりがキャッシュフォルダのパスを書きました。
正しくは下のやつです。

URLリンク(gallery.technet.microsoft.com)

なお、Content.IE5 以下のフォルダを WSHで削除しようとしても、
「書き込みできません」とエラーが発生します。

何卒、お知恵をお貸しください。

651:デフォルトの名無しさん
11/06/07 16:34:27.94
確かに出るね
IEを終了させたら出なくなったから
使用中のキャシュは消せないんだろうね

652:デフォルトの名無しさん
11/06/07 18:03:52.91
Scripting Guy!はあほじゃね?
cache.vbsとかみたほうがよくね?

653:デフォルトの名無しさん
11/06/07 18:28:31.84
>>651-652
レスありがとうございます。

こちらではIEの起動の有無にかかわらず
「書き込みできません」のエラーがでました。

また、cache.vbs の CacheClear.VBS を試してみましたが、
同スクリプトの17行あたりで
「エラーを特定できません」とのエラーダイアログ表示され、
エクスプローラーでキャッシュフォルダが開かれるだけでした。

そこで該当部分をコメントアウトして実行してみたところ、
エラーは表示されないものの、キャッシュフォルダ内のファイルなどは
一切消されないままでした。

引き続きご教示をよろしくお願いします。

654:デフォルトの名無しさん
11/06/07 19:02:11.42
cacheclear.vbsパッケージのcacheclear2.vbsなんかどう?

655:650
11/06/07 19:36:13.03
>>654
ありがとうございました。
CacheClear2.VBS でうまく削除できました。
あぁ、本当に助かりました。4日くらい試行錯誤しまくっていました。

656:デフォルトの名無しさん
11/06/07 20:49:47.42
C.C.クリーナーみたいなソフトはインストールしたくない、或いは、サクっとキャッシュだけ削除したいから、スクリプトなのかな?
なんか、必死なワリにはググる事しないんで、なんか変だなと思って。w

657:デフォルトの名無しさん
11/06/07 23:42:55.23
Scripting Guy!が出鱈目書いてると思わなかったんだろ
さっさとこっちで聞けば教えてやったのに

658:デフォルトの名無しさん
11/06/08 01:13:27.47
なるほど…

659:デフォルトの名無しさん
11/06/13 19:56:37.20
ぽるぽと…

660:デフォルトの名無しさん
11/06/17 22:30:04.22
InternetExplorer.Applicationオブジェクトで質問なのですが、
・JavaScriptを実行させる
・ページの一番下までスクロールさせる
にはどうやればいいでしょうか?

661:デフォルトの名無しさん
11/06/17 23:34:40.57
Document.Scriptか
Document.parentWindowがwindowオブジェクトなので
そこからevalか何かでどうぞ

662:デフォルトの名無しさん
11/06/18 00:13:12.39
スクロール
ie.document.parentWindow.scrollTo(0, ie.document.body.scrollHeight)

JavaScript実行
ie.document.parentWindow.eval("alert(123)")
または
ie.document.parentWindow.execScript("alert(456)")

なお、該当ページにもともと一切のスクリプトが含まれていない場合、
ie.document.parentWindow.eval()
は失敗するので注意のこと
(IE8 with Windows7 で確認)

663:デフォルトの名無しさん
11/06/18 00:16:32.38
scrollIntoView


664:デフォルトの名無しさん
11/06/18 23:42:29.48
>>662
execScriptはスクリプト無効で使えんよ

665:デフォルトの名無しさん
11/06/19 02:13:51.98
>>664
意味が分からない

自分の環境では、下のスクリプトの実行結果が SUCCESS, SUCCESS, ERROR, SUCCESS ってなるんだけど
使えないってどういうこと?

function foo(url) {
ie.navigate(url);
WScript.Sleep(3000);
ie.document.parentWindow.WScript = WScript;
try {
ie.document.parentWindow.eval("WScript.Echo('eval() SUCCESS');");
} catch(e) {WScript.Echo("eval() ERROR");}
try {
ie.document.parentWindow.execScript("WScript.Echo('execScript() SUCCESS');");
} catch(e) {WScript.Echo("execScript() ERROR");}
}
ie = new ActiveXObject("InternetExplorer.Application");
ie.visible = true;
foo("URLリンク(www.yahoo.co.jp)");// scriptが含まれるページ
foo("URLリンク(www.jaipa.or.jp)");// scriptが含まれないページ


666:デフォルトの名無しさん
11/06/19 03:32:32.70
そのまんまスクリプト無効のゾーンでは使えん

667:デフォルトの名無しさん
11/06/19 07:49:43.41
ADODB.Steam.LoadFromFile()てファイル全部メモリに読み込むんだな
XPsp3(32bit 4GB)で1.8GB弱のバイナリファイル読ませたらメモリ不足になることがあった
wshでこういうファイルを扱ういい方法はないものか

668:デフォルトの名無しさん
11/06/19 08:10:54.77
部分的に読み込んだらいいんじゃない?

669:デフォルトの名無しさん
11/06/19 15:26:18.02
細かく分割してファイルにして書きだして後から操作する。
ちょっと時間かかるがしょうがない。

670:デフォルトの名無しさん
11/06/20 08:29:44.73
>>666
だったらスクリプト有効にすればいいだろ

671:660
11/06/20 09:31:05.44
>>661 >>662
できました。ありがとうございます。

672:デフォルトの名無しさん
11/06/21 17:59:22.78
>>670
ことわる

673:デフォルトの名無しさん
11/06/21 21:03:48.56
>>672
断れません

674:デフォルトの名無しさん
11/06/21 22:30:20.28
スクリプト無効でもできる方法あるのに断ればいいじゃん

675:デフォルトの名無しさん
11/06/22 14:09:25.19
どうやるのどうやるの

676:デフォルトの名無しさん
11/06/22 15:57:15.71
>>675
ことわる

677:デフォルトの名無しさん
11/07/03 15:43:12.47
WScript.Echoって、真偽値を"true" "false"みたいに
文字列で表示してくれないの?


WScript.Echo(func()); #=> 0 or -1

こうじゃなくって、trueかfalseで表示してほしいんだけど

678:デフォルトの名無しさん
11/07/03 16:14:23.83
trueかfalseで表示するようにすればいいだけじゃん

679:デフォルトの名無しさん
11/07/03 16:50:06.25
>>678
いちいち?

680:デフォルトの名無しさん
11/07/03 16:56:59.72
WScript.Echo(func()?'true':'false');

681:デフォルトの名無しさん
11/07/03 22:14:30.52
WScript.Echo(func().toString());
または
WScript.Echo(""+func());


682:デフォルトの名無しさん
11/07/03 22:29:51.52
>>681
ハラショー
EchoをラップしてtoStringの結果を出力する関数使うわ
ありがとう

683:デフォルトの名無しさん
11/07/04 11:13:20.06
1バイト分の16進数を10進数に直接変換する方法ってないかな?
現在、下のような処理を513行書いて凌いでるが、長すぎる…
X = objText.Read(2)'テキストファイルから16進数を呼び出してます
Select Case X
Case "FE"
Y = 254

684:デフォルトの名無しさん
11/07/04 12:18:46.24
Eval("&H"+X)

685:デフォルトの名無しさん
11/07/04 12:37:20.28
>>684
513行かかった処理が1行で終わるとは…感激したっす。激しく感謝!

686:デフォルトの名無しさん
11/07/10 02:58:11.11
NASにおいてある.jsファイルをダブルクリックすると出てくるセキュリティ警告がテラウザイ・・・
なんか良い警告の抑止方法はないですかね?

687:デフォルトの名無しさん
11/07/10 06:59:26.13
おまいらFileSystemObjectとかWScript.Shellとか使うとき
どんなオブジェクト名にしとる?
objFSOとかが多いみたいだけど。
俺は oFs、oWs みたいな感じ

688:デフォルトの名無しさん
11/07/10 07:13:03.17
FSO, WShellにしてる

689:デフォルトの名無しさん
11/07/10 09:03:35.98
>>687
俺は oFs、oSh な感じ
oWsはExcelのワークシートにしてる

690: 忍法帖【Lv=7,xxxP】
11/07/10 09:12:23.42
なでしこ勝利おめこ

691:デフォルトの名無しさん
11/07/10 09:14:28.05
スクリプトはエディタでの色分けの関係で、未だにハンガリアンでやってる
数値や文字列などの値型変数と、オブジェクトなどの参照型変数を色分けしたいのだが
FSOやWScript.Shellみたいに、1個作れば事足りるものばかりなら、単語登録すれば良いが
XML、HTTP、ADOStreamなどは複数のインスタンスを同地に使う場合もあるし
FSOでも下位のFile、Folderオブジェクトとかは複数作ることも多いので
やはり決まったプレフィックス付けて正規表現で色分けするのが手っ取り早いからな

普通のプログラム言語では、もうハンガリアン使ってないけど、
昔はプログラム言語もハンガリアンでやっていて、ハンガリアンはすっかり身に浸みているから、
スクリプトとプログラム言語で記法を変えても混乱はしない

692:デフォルトの名無しさん
11/07/10 21:31:53.75
要約して

693:デフォルトの名無しさん
11/07/11 00:59:08.69
2chの1レスの文字数制限無いに収まるカキコすら読めないような奴に
スクリプト、プログラム言語を扱うのは無理じゃね?

694:デフォルトの名無しさん
11/07/11 05:47:33.80
スクリプト、プログラムにしろ、無意味な長文は苦痛なだけ

695: 忍法帖【Lv=8,xxxP】
11/07/11 08:31:19.23
そうだぬ

696:デフォルトの名無しさん
11/07/11 11:52:25.84
意味のある文章や処理の意味を見いだせない奴を無能と呼ぶ

697:デフォルトの名無しさん
11/07/11 15:21:58.39
意味のない文章や処理をだらだら書く奴を無能と呼ぶ


698:デフォルトの名無しさん
11/07/12 06:04:47.91
自己紹介?

699:デフォルトの名無しさん
11/07/12 10:40:10.94
菅ガンス

700:デフォルトの名無しさん
11/07/13 11:34:10.87
米倉

701:デフォルトの名無しさん
11/07/13 20:38:22.49
向かい側に座ってる女の人のスカートが短か過ぎて困る

702:デフォルトの名無しさん
11/07/14 00:23:47.87
>>691
エディタ何使ってんの?
俺はemacs系エディタ
色分けは最低限でよくね?慣れだとは思うけど

変数名はFOやwsって感じで2文字が多いかなぁ

703:デフォルトの名無しさん
11/07/14 20:37:27.84
>>685
clng使えよ

704:デフォルトの名無しさん
11/07/19 20:03:10.02
parseInt使えよ

705:デフォルトの名無しさん
11/08/03 22:26:40.15
VBSで、ドライブ上のテキストファイル全てを対称に、キーワードを検索する処理を行う
処理としては、対象ファイルを一時ファイルにコピーして、一時ファイルから読み込んで検索、という感じ

ところが、現実に存在していて、アクセス中でも隠しファイルでもない普通のファイルが「見つからない」といって53のエラーをはき出す事が頻繁に発生する。

どんな理由が考えられる?
訳あって、コードは載せれないけど。

すごく困っているので教えて!! いや、教えて下さい。


706:デフォルトの名無しさん
11/08/03 22:40:40.59
ファイル名くらい載せろ

707:デフォルトの名無しさん
11/08/04 02:36:09.08
考えられることはコードが間違ってるってことだな
13行目7桁目を調べろ

708:デフォルトの名無しさん
11/08/04 05:40:59.53
>>705
アクセス権

つか、エラー発生行ぐらい載せられるだろ
みんなエスパーじゃねえんだ

709:デフォルトの名無しさん
11/08/04 22:42:01.24
見られたらまずいんだろ

710:デフォルトの名無しさん
11/08/06 13:52:56.48
>>705
フォルダー名が違うとか、そんなんじゃないの?

Pathの組み立てに、
Path = Folder & "\" & Filename
とか、安易にやっちゃってんじゃないの?
Path = FSO.BuildPath(Folder, Filename)
ってやった方がいいよ


711:デフォルトの名無しさん
11/08/06 14:29:32.35
えすパー自慢?

712:デフォルトの名無しさん
11/08/07 01:47:18.64
>>686
これどうよ?
URLリンク(journal.mycom.co.jp)

713:デフォルトの名無しさん
11/08/11 08:54:36.23
CopyHereって、失敗しても何も言わないの?
zipファイルの中にコピーしようとしてるんだけど、
コピーできてないのになんのエラーも出さずに終わる

ちゃんと圧縮待ちはしてるのに

714:713
11/08/11 10:05:47.92
追記
圧縮待ちは、下の2通りをためしました
・Items().Countが増えるまで待つ
 →いくら待っても増えなかった
・1秒待ってからOpenTextFile(zipfile,8,FALSE)でエラーなく開けるまで待つ
 →すぐに開けてしまった

715:デフォルトの名無しさん
11/08/11 21:22:37.44
まっそういうもんだな

716:705
11/08/13 18:07:34.54
えーと、705です。

社のPCにあるので、コード全文はのせられないん(持ち出せない)だけど、ファイルを検索する部分は
URLリンク(md1000.cocolog-nifty.com)
のコードを流用しています。
ファイルが見つかったら、のところで、

For Each temp2 In f.Files
Ext = LCase(FS.GetExtensionName(FoundFile))

Next


アクセス権にも問題はありません。



717:705
11/08/13 18:15:11.57
途中で書き込んでしもた

For Each temp2 In f.Files
Ext = LCase(FS.GetExtensionName(FoundFile))
if Ext="txt" then
TextCheck(temp2)
enf if
Next

みたいな感じで、このTextCheckというのが、テキストの全文検索ルーチンです。

引数のテキストファイルを一時ファイルにコピーして内容を検査する、という処理ですが、アクセス権にも問題が無く、実際に存在しているのに「書き込めません」とかってエラーになる。
でも、実際には一時ファイルはその都度作成しています。
いくつか検証したら、xpの場合、必ず同じフォルダでエラーを起こす。また、7の場合だと、"Application Data\Application Data...."の無限ジャンクションで処理を勝手に辞めてしまって終了してしまいます。
とにかく、ドライブ中の、アクセス権があるテキストファイルをまんべんなく検索して処理する、というのがうまくいっていないみたいです。

このTextCheckルーチン自体を単体のスクリプトとして動作させた場合には問題がないので、原因とは考えられません。

718:デフォルトの名無しさん
11/08/13 18:32:10.65
>>717
「GetExtensionNameで拡張子をとってみてtxtだったら
 TextCheck() というサブルーチンに投げてる」
ってだけ?
エラー内容の方が大事なんだが

>現実に存在していて、アクセス中でも隠しファイルでもない
>普通のファイルが「見つからない」といって53のエラーを
>はき出す事が頻繁に発生する。
どこでエラーが出てるか確認してみたら?
GetExtensionNameの時にエラーが出てるんか?
取ろうとしてるフォルダは普通の場所なんだよね。
Application Data とか普通じゃない雰囲気がぷんぷんするんだが。

719:デフォルトの名無しさん
11/08/14 21:06:52.69
FoundFileに何を設定してんのかな?

720:705
11/08/15 11:14:29.92
あ、失礼。Foundfileはtemp2。


721:デフォルトの名無しさん
11/08/15 16:11:15.08
temp2のデフォルトプロパティはなんだっけ?

722:デフォルトの名無しさん
11/08/15 17:34:31.19
つーか、書き込めないって事は、テンポラリーフォルダーへのコピーに失敗してるんじゃないの?

TextCheckのルーチン内に原因があったりしてな


723:デフォルトの名無しさん
11/08/15 21:41:07.64
圧縮ファイルをテンポラリに解凍して、解凍ファイルを読みに行く処理を書いた時
「ファイルが見つからない」ってなるユーザーがいて、その時はウエイトを掛けて
回避した。

724:デフォルトの名無しさん
11/08/16 15:40:06.08
>>716
>URLリンク(md1000.cocolog-nifty.com)
>のコードを流用しています。

みたけどやめとけ ましなサイトがあるだろ 

725:デフォルトの名無しさん
11/08/16 16:03:46.63
>>717
いたるところにログを書き出すルーチン組み込んでみれ。

726:デフォルトの名無しさん
11/08/16 19:22:32.45
ファイル列挙中のフォルダの配下のファイルを操作したせいで、
列挙処理がおかしくなってるとか


727:デフォルトの名無しさん
11/08/17 09:07:29.77
一つ疑問なんだが、一時コピーする必要はあるのか?
本体そのものにアクセスするんじゃまずいわけがあるの?

もしかして他のアプリが開いてる可能性のあるログファイルの類なんじゃ…
ロックされててアクセスできないとか。

728:705
11/08/18 21:25:22.77
皆さん、ありがとうございます。取り急ぎ、レスへの回答です。

>>727
えーと、一時コピーする理由は、本体を必要とする他のアプリに影響を与えないようにスナップショットを取るためです。
ただし、この処理を行うときは、他の常駐アプリやサービスはウィルス検査等も含め、停止させています。

>>726
それはないです。過去に作成したきりで、全くアクセスしていないファイルでも同じように発生します。

>>725
ログじゃないですが、stopでデバッガが起動する、という事らしいのですが私の環境ではデバッガのデの字も起動しません。
もちろん、デバッガ本体はインスコしてますが、7には非対応とか?

>>723
ウェイトと、あと無限ループでファイルのコピーが終わったら次の処理、というのは試してみましたが、結果は同じでした。

729:デフォルトの名無しさん
11/08/19 09:34:14.95
>>728
起動しないデバッガで、何をするつもりなの?
甘えてないで、ログ取れば?


730:デフォルトの名無しさん
11/08/19 10:27:26.30
>>705
そもそもどんなエラーメッセージが出力されているかもわからず回答できるわけが無い。
デバッガを起動できないならログ出力の関数を自作してデバッグすればいいだけのこと。
ログ出力の関数のコードすら書けないということなら論外。

もしかしてalertさえも使ったこと無いのか?

731:デフォルトの名無しさん
11/08/19 21:53:28.77
見てて、あると思うか?

732:デフォルトの名無しさん
11/08/20 06:47:48.55
>>731
無いと思うw

733:705
11/08/20 11:29:25.11
>>729
処理の至る所にログ吐き出し処理を入れてみました。やはり、ちゃんと存在していて、アクセスされていないディレクトリをを削除しようとしているときに「書き込みできません」になったりしてます。
でも、そのディレクトリを削除するためだけのスクリプトを別に作って削除したらちゃんと削除できるんですよね。
つまり、[削除前処理]→[フォルダ削除]ってやろうとしているときに、じつは[削除前処理]が終わっていないって事なんでしょうか。

>>730
alertは使ったことないですが、msgboxでErr.Descriptionを表示させてます。


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