1 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 01:22:48 ] ( ´ゝ`) 誰か詳しい情報キボンヌ ●過去スレ WSH(・∀・)スレッド! pc11.2ch.net/test/read.cgi/tech/1055075469/ WSH(・∀・)スレッド! Part 2 pc11.2ch.net/test/read.cgi/tech/1176698934/ WSH(・∀・)スレッド! Part 3 pc12.2ch.net/test/read.cgi/tech/1208948450/ ●関連スレ お前ら、wsh使ってますか? Part7 pc12.2ch.net/test/read.cgi/win/1190548945/ HTAをもっと流行らせる計画 Part2 pc12.2ch.net/test/read.cgi/tech/1220874815/ ★WSHでCGI★JScriptVBScript pc11.2ch.net/test/read.cgi/php/1059745064/ ●公式サイト Windows Script www.microsoft.com/japan/msdn/scripting/ ●個人サイト Windows Scripting Host homepage3.nifty.com/aya_js/wsh/index.htm Windows Scripting Host Laboratory www.roy.hi-ho.ne.jp/mutaguchi/wsh/ Windows Script Wiki winscript.s41.xrea.com/wiki/index.php
282 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 14:13:16 ] WSHのコードやよく使う関数をdllにできたらすごく便利だね うふ
284 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 14:17:06 ] classでまとめておくのはやってる。
285 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 14:39:49 ] >>285 だってこれJScript用だし
287 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 14:56:09 ] >>286 >>だってこれJScript用だし >>282 に >>1 .vbs って書いてあるのに、それはねえべよ〜w こんな後だしジャンケンは初めてみたわw
288 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 15:16:12 ] >>287 うん そりゃね VBSで動作実験してからJScript用に変えたから… 先にそれを書いておくべきだった すまない
289 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 15:39:06 ] 今回は >>278 の忠告を聞かない>>287 が悪い。
290 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 16:08:30 ] wscript.exe //e:jscript 2.vbs で起こすから…
291 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 17:35:03 ] 審判長「ただ今の協議について説明いたします。 行事は、忠告を聞かなかった>>287 の右足が俵を割ったと判定して >>286 に軍配を上げましたが、 >>290 のカウンターが>>287 のあごにヒットしたため、 >>290 の勝ちと判定いたします。」
292 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 20:10:52 ] ttp://memoofwork.seesaa.net/article/13976209.html のリンク数分回すのがうまく動かない Length はリンク個数を取得してるのはわかるんだが・・・ なんで次へ のリンクに飛ばないんだ?
293 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 20:31:48 ] >>292 わすれてた リンクの場所はGoogleの検索結果です
294 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 20:47:07 ] >>292 ちょっと見た感じ、元のページの内容が怪しそう hrefってURLを表してるんじゃないの? ×If objIE.Document.links(i).href = "次へ" Then ○If objIE.Document.links(i).innerText = "次へ" Then これならどう?
295 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 20:58:08 ] >>294 できました!ありがとうございます!
296 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 22:05:16 ] ごめんなさい 追加で質問です・・・ >>292 をJScriptで同じようなことをさせてみようと思ったんですけどうまくできないんです var IE,i,a IE=new ActiveXObject('InternetExplorer.Application');IE.Visible=true; IE.navigate2("www.google.co.jp/search?hl=ja&source=hp&q=amazon&aq=0&aqi=g7g-r3&aql=&oq=a&gs_rfai= "); 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 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 22:26:35 ] >>297 これで動いた var IE,i,a IE=new ActiveXObject('InternetExplorer.Application');IE.Visible=true; IE.navigate2("www.google.co.jp/search?hl=ja&source=hp&q=amazon&aq=0&aqi=g7g-r3&aql=&oq=a&gs_rfai= "); 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 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 22:33:41 ] >>298 ありがとうございました
299 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 22:59:09 ] >>297 >if ((""+IE.Document.links[i].innerText)==("次へ")) このような方法は知りませんでした もっと勉強します ありがとうございました!
300 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 23:03:25 ] ああ、失礼 最初の ""+ はなくてもよいかも オブジェクトが null になる可能性がある場合、これをいれておくととりあえあず文字列になって エラーにならないので入れてみた(最初に>>296 を起動したときエラーになったので念のために) 正しくオブジェクトが取得できる前提なら不要
301 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 00:13:58 ] >>300 エラーになったみたいです・・・ 一行目の1文字目の文字が正しくないって・・・ どういうことなんでしょうか
302 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 03:19:22 ] 1行目1文字目はいくらなんでもおかしい 文字が全角になってるとか、 ファイルがBOM付きのUTF-8になってるとか、 構文以前の基本的な個所でエラーになってる可能性がないか?
303 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 03:00:29 ] WSHでOperaやFireFoxにURLを渡すのは不可能なんだろうか… スレイプニルはできるのになぁ
304 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 03:14:35 ] bugbrowser や Nilbrowserも出来るね。
305 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 03:15:26 ] >>303 釣りとしか思えないなぁ・・・ バカが「OperaやFireFoxにURLを渡すのは不可能なんだろうか」って言うようなソースを晒してくれ
306 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 03:33:17 ] >>305 ActiveXがないからWSHが使えないだけでActiveXがあればWSHが使えるんだからOperaやFireFoxにもActiveXが搭載できればいいんじゃないかと思うんだが
307 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 03:47:18 ] >>306 コレは完全に釣りだな 面白いからソース晒せ
308 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 03:56:58 ] >>307 RunでOpera.exeだのFireFox.exeを起動させただけのソースコードがみたいとは奇っ怪な
309 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 04:07:27 ] >>308 「Sleipnirではできる」のに「OperaやFireFoxではできない」って言う奇怪なソースを早く晒せ 釣りには「ノリ」も必要だぞ
310 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 09:43:40 ] 恥ずかしい後釣り宣言来ました
311 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 14:35:12 ] つDDE
312 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 14:44:54 ] >>303 で何したいン?ただ外部のスクリプトからFirefoxでURLを開ければいいのか、FireFoxをスクリプトでいろいろ制御したいのか?
313 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 19:31:11 ] >>313 なんでSendKeys? FSO使えばいいだろ あと変数名が酷いなw
315 名前:デフォルトの名無しさん [2010/06/28(月) 19:37:26 ] 個人で作って使ってんだ。 変数名なんて本人の好きで構わんだろ。
316 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 19:45:00 ] これは難読化されたコードなんだよ
317 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 19:47:44 ] >>314 FSOですか・・・それは知りませんでした あと 変数名は適当に決めています
318 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 19:52:35 ] 変数と言うぐらいだから変な名前で何が悪い!
319 名前:デフォルトの名無しさん [2010/06/28(月) 20:40:07 ] 変な名前では無いと思うが。w
320 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 21:52:44 ] >>320 WriteLine()は最後に1つだけ改行する aaa=""; while(...) { aaa = aaa+なんとか; } の代わりに以下のようにすればよい aaa=[]; // 配列にする while(…) { aaa.push(なんとか); //配列への要素の追加 } … abc.WriteLine(aaa.join("\r\n")); // 配列の各要素を改行で連結し、それを書き込み
322 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 21:01:01 ] SeraphyScriptDialogは新しいのが出て64bitWindows7にも対応してた。AutoItXも更新してる。 みなさんは使ってますか?
323 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 22:43:15 ] いいえ
324 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 22:46:49 ] いいえ
325 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 23:02:55 ] つかってるがぜよ
326 名前:デフォルトの名無しさん mailto:sage [2010/06/30(水) 14:04:56 ] >>312 後者
327 名前:デフォルトの名無しさん mailto:sage [2010/06/30(水) 16:32:44 ] 大変だから止めた方がいい
328 名前:デフォルトの名無しさん mailto:sage [2010/07/01(木) 05:52:09 ] Opera,FireFoxも「JavaScript系で簡単に制御」できる WSHじゃないのでスレチ >>322 レジストリ使う時点で糞なので使わんだろ 汎用GUIからScriptControlでWSHを使うのが普通だな
329 名前:デフォルトの名無しさん mailto:sage [2010/07/01(木) 07:39:59 ] >>328 そのスレはどこに?
330 名前:デフォルトの名無しさん mailto:sage [2010/07/01(木) 09:26:23 ] >>329 「何をしたい」のか明記せずに糞みたいな質問ばかりすんな とりあえず >>278 を読み直して内容を理解しろ そして質問し直せ それが出来なければ、自分でスレを探せ
331 名前:デフォルトの名無しさん mailto:sage [2010/07/01(木) 16:13:45 ] 糞みたいなレスばかりすんな
332 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 12:40:39 ] >>328 XPのmanifest使えばインストール無しでもDllは使える。 起動時のwscript.exeは、マニフェストがあるパスのwscript.exeを使わなきゃいけないけど。 システムを汚さなくても使うことは出来る。 エディタのマクロやブラウザのマクロのjscriptでも同じように使える。 システムへのインストールはいらない。 お前ら、wsh使ってますか? Part7 pc12.2ch.net/test/read.cgi/win/1190548945/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 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 14:05:58 ] >>332 ソレ知ってる SeraphyScriptDialogとAutoItXは「機能不足なので使わない」って方が正しい >>328 を分かりやすくしておく レジストリ使う時点で糞なので使わんだろ ↓ レジストリ使わなくても鼻糞なので使わんだろ
334 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 16:03:24 ] >>333 ならそう書けよ。後出しジャンケン好きはプライドだけは高いから困るんだw 会社でもそういわれてるだろ?違うかい? それで低機能ならSFCminiでも使ってみりゃいいさ。
335 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 16:09:06 ] 会社でも近所でも鼻つまみ者です
336 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 02:10:03 ] >>334 自作の汎用GUIは「GUI/DLL絡みは外部テキストファイル定義」で、WSHからもコントロール可能にしてある だから SeraphyScriptDialog,AutoItX,SFCmini のような「WSHにベース機能を提供するもの」は使わんよ 「他人がする評価」については否定も肯定もしない 因みにオレは未成年で学生だ 社会人扱いは止めてくれ
337 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 13:51:54 ] >>336 ちなみにwin32APIにアクセスしたいときはどうしてるん?プロセス間通信とか、外部のアプリにメッセージ投げたいときとか?
338 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 16:10:54 ] 学校でも家庭でも鼻つまみ者です
339 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 18:29:24 ] わざわざ外部ソフト入れんでも.NETやPowerShell使えばええやん
340 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 22:24:23 ] >>339 標準語でおk
341 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 23:33:34 ] またPowerShellかよw このスレの意味がない。
342 名前:デフォルトの名無しさん [2010/07/03(土) 23:55:49 ] >>337 へのレスが無いね。 質問しといて遊び呆けて無ければ良いが…
343 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 00:41:11 ] 2chは煽るばっかりで難しい質問には答えられません
344 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 01:14:33 ] VBScript コマンドから Windows PowerShell コマンドへの変換
345 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 11:21:04 ] GUIはHTAでもいいかも。 足りない部分は外部のDll使おうが、PowerShell使おうが、 そこを関数化しておけばいいんじゃないの? あとで簡単に置換え出来るでしょ。 Postmessageが使えるだけでもWSHやHTAから出来ることは大きく広がる。
346 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 15:46:37 ] TextStreamオブジェクトをFunctionとかで呼んで戻すことができない・・
347 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:40:06 ] >>346 あほにはできない・・
348 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 19:22:33 ] >>346 できるよ・・
349 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 21:33:20 ] そういやPowerShellのスレはないんだな
350 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 08:54:52 ] win板にあるあるよ
351 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 19:50:29 ] ボタンのあるHTMLをieオブジェクトで開いた時、 ボタンクリックのイベントをWSH側で拾うことは 可能ですか?
352 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 20:09:42 ] はい
353 名前:351 mailto:sage [2010/07/07(水) 08:05:20 ] ヒントちょうだい
354 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 12:56:52 ] >>354 それだと不便だろ? ScriptControl使え
356 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 14:32:00 ] >>354 それだと不便だろ? WSF使え
357 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 17:55:12 ] スクリプトを動的に変更する場合は、一般的にScriptControlを使用する >>354 は必要なときにスクリプトを後付けする構造なので 何でもできるScriptControlにする方がベストだと思う >>357 のやり方はスクリプトの一括読み込みなので構造が違う 無駄なスクリプトも全部読み込みたい場合はwsfでも良いけど ファイル構成も異なるので使い難い
359 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 18:04:38 ] >>358 スクリプトコントロールを使うっていっても、その元になるスクリプトを書かれたファイルを読み込まなくていいのか? たとえばどうやって書くわけよ? vbsのinput使うみたいな形で、scriptcontrol使ってる例はあるわな。 どうしてもその言語じゃ処理できない場合に使う方法として。 その場合は、スクリプトのなかで記述しちゃってるよね。 >>354 は、メインのスクリプトファイルから外部の関数やクラスをimportしたいんだろうから、 その都度読み込もうが、wsfでも何の問題もないと思うんだが。 ScriptControlを使う場合の方法と、そのメリットを判り安く解説してみてくれ。
360 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 18:12:49 ] vbsからjsならscriptcontrolかもしれんが、jsからjsならevalでええ、scriptcontrolつかうなんてあほくさ
361 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 18:16:58 ] だいたいimportしたいってのは、ファイル構成をわけて、 過去に作った関数を再利用しやすくするためのもんだと思うんだが・・・ ファイル構成をわけたくなきゃ、同じファイルにその関数をコピペすりゃいいだけだが、 それやってくと、それはそれで面倒臭いこともある。
362 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 18:34:23 ] scriptcontrolつかいたければつかえば? どうぞどうぞ とめないよ
363 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 19:57:08 ] importしたい奴にScriptControlのほうがいいと薦めるのか? 意味がわからん。誰か解説ヨロ
364 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 21:34:04 ] 断る
365 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 22:46:31 ] つまらん
367 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 13:33:47 ] IEのハンドル調べて、オブジェクトとプロパティのやり取りしていろいろやるのか。凄いな。 で何が凄いんだが、解説ヨロ
368 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 19:10:09 ] 面倒だからやだ
369 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 21:27:57 ] 複数ジョブを走らせると 終了時にcmd.exe が成仏しないことに 気がつきましたので 差し替えさせていただきます どーも すみません
370 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 17:55:11 ] GetObject("new:つかってみたかったのか? CreateObject(ie)でよかろうもん
372 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 18:28:23 ] どっちもいらんけどな
373 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 21:18:50 ] おまいらWSHのデバッグどうしてる? エラーダイアログ見て直す?あと個別に変数表示させる? またはスクリプトデバッガいれてレジストリ直して//xでやってる? もっと他にいい方法あるかな? 自分でツール作ってやってる人いるかな?
374 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 22:43:29 ] >>373 いわゆる printf デバッグ ただ、WScript.Echo() のままでは面倒なので、 msgout("a={0}, b={1}", [a, b]) みたいに使えるヘルパ関数は自作してる
375 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 22:53:26 ] よく使うのは msgbox escape() msgbox typname() だね
376 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 23:09:08 ] 正規表現とかの文字列処理は組み込んでからデバッグするんじゃなくて 該当部分だけ先にインタプリタ系ツールで試して問題ないことを確認してから プログラムの本体に組み込む
377 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 13:59:43 ] IE8に標準のデバッガ使うのはどうだ?ラッパー関数つかって誤魔化せばどうにかなりそうだが。
379 名前:デフォルトの名無しさん mailto:sage [2010/07/20(火) 00:33:11 ] JScript(HTA)で 20→"\x20\00\00\00" // 32bitリトルエンディアン みたいな変換をする方法があったら教えてください バイナリ列を扱おうとして詰まった・・・(´・ω・`)
380 名前:デフォルトの名無しさん mailto:sage [2010/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 mailto:sage [2010/07/20(火) 02:32:44 ] >>380 レスありがとうございます >20 => "\x14\x00\x00\x00" でよいのかな? そうです。>>379 は誤りですorz そのような力業しかないのですか・・・ がんばってみます
382 名前:デフォルトの名無しさん mailto:sage [2010/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; }