こんなことコンピュータにやらせろよ。そう思ったことはありませんか?
簡易的な実行環境も含めて普通のOSだったら当たり前に備わっている自動実行。
Windowsの標準に備わっているそれがWSH(Windows Script Host)です。
また、ここではWSHだけに限らずWMI、ADSIなどのネタもOKです。
・煽りや荒らしは無視の方針で。基本的にsage進行です。
・ここでヒントを得て完成したスクリプトは、出来れば皆さんにお披露目してください。
同じことで悩んでいる人のためになります。
・質問する際は、OS及び使用するコンポーネントのバージョンもお忘れなく。
前スレ
お前ら、wsh使ってますか? Part7
http://hibari.2ch.net/test/read.cgi/win/1190548945/
お前ら、wsh使ってますか? Part8
■ このスレッドは過去ログ倉庫に格納されています
2010/12/19(日) 22:20:35ID:SZFqF39w
2011/02/14(月) 17:13:42ID:MBnaCfqF
コロンだっちゃ
2011/02/15(火) 02:33:03ID:5kt/fSLl
ちょっと教えてください。
時刻の文字列から、合計の秒数を計算して表示しようとしてるのだけれど、数字によって表示がおかしくなります。
何か大事なことを忘れてるんでしょうか?
わけがわからないです。
oshl=new ActiveXObject('WScript.Shell');
var nsec=33.48 ;
nsec=nsec + 60;
oshl.popup(nsec);/ * なにも文字を付け足さないと表示は問題ない * /;
oshl.popup(nsec +''+ " 60を足した結果に、文字を付け足すと数字がおかしくなる");
var nsec=33.48 ;
nsec=nsec + 100;
oshl.popup(nsec);/ * なにも文字を付け足さないと表示は問題ない * /;
oshl.popup(nsec +''+ " 100を足した結果に、文字を付け足しても数字がおかしくならない");
時刻の文字列から、合計の秒数を計算して表示しようとしてるのだけれど、数字によって表示がおかしくなります。
何か大事なことを忘れてるんでしょうか?
わけがわからないです。
oshl=new ActiveXObject('WScript.Shell');
var nsec=33.48 ;
nsec=nsec + 60;
oshl.popup(nsec);/ * なにも文字を付け足さないと表示は問題ない * /;
oshl.popup(nsec +''+ " 60を足した結果に、文字を付け足すと数字がおかしくなる");
var nsec=33.48 ;
nsec=nsec + 100;
oshl.popup(nsec);/ * なにも文字を付け足さないと表示は問題ない * /;
oshl.popup(nsec +''+ " 100を足した結果に、文字を付け足しても数字がおかしくならない");
5655
2011/02/15(火) 02:49:44ID:5kt/fSLl わかりにくいかもしれないんで、書き直します。たとえば、関数の戻り値がおかしくなっちゃうのです。
test=function(n){
return( "合計 "+ (33.48 + n)+ "" + " 秒です");
};
oshl=new ActiveXObject('WScript.Shell');
n=60;
oshl.popup( test(n));// この場合は、数字がおかしい。
n=100;
oshl.popup( test(n));// この場合は、数字は問題ない。
test=function(n){
return( "合計 "+ (33.48 + n)+ "" + " 秒です");
};
oshl=new ActiveXObject('WScript.Shell');
n=60;
oshl.popup( test(n));// この場合は、数字がおかしい。
n=100;
oshl.popup( test(n));// この場合は、数字は問題ない。
5755
2011/02/15(火) 03:13:19ID:5kt/fSLl ぐぐったら、これがjavascriptの仕様なんだとw そ、そんな馬鹿なと思ったけど。
少数を含む数値を1000倍にしといて整数にしてから計算して、1000で割ることにしました。まんどくせえw
test=function(n){
return( "合計 "+ (33.48 + n)+ "" + " 秒です");
};
test2=function(n){
return( "合計 "+ (((33.48)*1000 + (n*1000))/1000)+ "" + " 秒です");
};
oshl=new ActiveXObject('WScript.Shell');
n=60;
oshl.popup( test(n));// 数字がおかしい。
n=60;
oshl.popup( test2(n));// 数字は問題ない。
少数を含む数値を1000倍にしといて整数にしてから計算して、1000で割ることにしました。まんどくせえw
test=function(n){
return( "合計 "+ (33.48 + n)+ "" + " 秒です");
};
test2=function(n){
return( "合計 "+ (((33.48)*1000 + (n*1000))/1000)+ "" + " 秒です");
};
oshl=new ActiveXObject('WScript.Shell');
n=60;
oshl.popup( test(n));// 数字がおかしい。
n=60;
oshl.popup( test2(n));// 数字は問題ない。
2011/02/15(火) 11:21:20ID:KQK8NgNf
nが文字列になる瞬間に数字が変わってるね。
「return n;」だと異常ないのに、「return n+"";」だと循環小数になる。
こっちでもっと良い解決方法が無いか15分くらい探してみたけど、見付からなかった……。
あと、returnは関数ではなくて文なので、「return(n);」でなくて「return n;」の方が良いと思う。
「return n;」だと異常ないのに、「return n+"";」だと循環小数になる。
こっちでもっと良い解決方法が無いか15分くらい探してみたけど、見付からなかった……。
あと、returnは関数ではなくて文なので、「return(n);」でなくて「return n;」の方が良いと思う。
2011/02/15(火) 11:26:34ID:KQK8NgNf
「return n;」の前に「n+=33.48;」って書いて説明するの忘れてた……。
function test(n){
n+=33.48;
//return n;/*93.48*/
//return n+"";/*93.47999999999999*/
return "合計"+n+"秒です";
};
var oshl=new ActiveXObject('WScript.Shell');
oshl.Popup(test(60));
function test(n){
n+=33.48;
//return n;/*93.48*/
//return n+"";/*93.47999999999999*/
return "合計"+n+"秒です";
};
var oshl=new ActiveXObject('WScript.Shell');
oshl.Popup(test(60));
2011/02/15(火) 17:27:27ID:63WoE9G3
俺はVBSがメインでJSは多少しか使わないんだけど
MsgBox関数に相当するようなのはJSでは何?
デバッグ用によく使うんだけど、JS使うときいつも困る。
MsgBox関数に相当するようなのはJSでは何?
デバッグ用によく使うんだけど、JS使うときいつも困る。
2011/02/15(火) 18:31:31ID:Sw9YlaCV
WScript.Echo()
2011/02/15(火) 18:45:58ID:ohiLAigb
// スクリプトコントロールのVbscriptで逃げられるかと思ったら、引き算がアウトだった。
// nilscriptもjscriptと同じく駄目。dmscriptで試すと、引き算を除いて、問題なしだった。
oshl=new ActiveXObject('WScript.Shell');
ovbscript=new ActiveXObject('ScriptControl');
ovbscript.Language = 'VBScript';
ovbscript.AddCode("Function vbscriptexecute(scommand):dim sret:Execute scommand:vbscriptexecute=sret:End Function");
sreteval=function(scommand){return ovbscript.Run('vbscriptexecute',scommand);};
// nilscriptもjscriptと同じく駄目。dmscriptで試すと、引き算を除いて、問題なしだった。
oshl=new ActiveXObject('WScript.Shell');
ovbscript=new ActiveXObject('ScriptControl');
ovbscript.Language = 'VBScript';
ovbscript.AddCode("Function vbscriptexecute(scommand):dim sret:Execute scommand:vbscriptexecute=sret:End Function");
sreteval=function(scommand){return ovbscript.Run('vbscriptexecute',scommand);};
2011/02/15(火) 18:47:51ID:ohiLAigb
n=33.48; nplus=60;
oshl.popup( (n + nplus)); oshl.popup( (n + nplus) + "どうですかjs");
oshl.popup( sreteval('n=33.48:nplus=60:sret=(n + nplus) & "どうですかvbs"'));
oshl.popup( sreteval('sret= (33.48 + 60) & "どうですかvbs"'));
n=1.01; nplus=1.1;
oshl.popup( (n + nplus)); oshl.popup( (n + nplus) + "どうですかjs");
oshl.popup( sreteval('n=1.01:nplus=1.1:sret=(n + nplus) & "どうですかvbs"'));
oshl.popup( sreteval('sret= (1.01 + 1.1) & "どうですかvbs"'));
n=1.01; nplus=-1.1;
oshl.popup( (n + nplus)); oshl.popup( (n + nplus) + "どうですかjs");
oshl.popup( sreteval('n=1.01:nplus=-1.1:sret=(n + nplus) & "どうですかvbs"'));
oshl.popup( sreteval('sret= ((1.01 - 1.1)+0.01) & "どうですかvbs"'));
oshl.popup( (n + nplus)); oshl.popup( (n + nplus) + "どうですかjs");
oshl.popup( sreteval('n=33.48:nplus=60:sret=(n + nplus) & "どうですかvbs"'));
oshl.popup( sreteval('sret= (33.48 + 60) & "どうですかvbs"'));
n=1.01; nplus=1.1;
oshl.popup( (n + nplus)); oshl.popup( (n + nplus) + "どうですかjs");
oshl.popup( sreteval('n=1.01:nplus=1.1:sret=(n + nplus) & "どうですかvbs"'));
oshl.popup( sreteval('sret= (1.01 + 1.1) & "どうですかvbs"'));
n=1.01; nplus=-1.1;
oshl.popup( (n + nplus)); oshl.popup( (n + nplus) + "どうですかjs");
oshl.popup( sreteval('n=1.01:nplus=-1.1:sret=(n + nplus) & "どうですかvbs"'));
oshl.popup( sreteval('sret= ((1.01 - 1.1)+0.01) & "どうですかvbs"'));
2011/02/15(火) 19:02:44ID:ohiLAigb
@set @SHORT_CIRCUIT = true/* & (@title batdm:%~nx0) & (@dm.exe "%~f0" %*) & (@goto :eof) & @end */
// d-monkeyのdmscriptでも一行バッチが動いたわ。jscriptでも起動の部分だけ変えると動くね。
// d-monkeyのdmscriptでも一行バッチが動いたわ。jscriptでも起動の部分だけ変えると動くね。
2011/02/15(火) 22:18:48ID:qdYN7Y8/
2011/02/16(水) 14:03:18ID:9iSQ4aMo
>>60
関数作ればいいじゃん。
function msgbox(s,n){new ActiveXObject('WScript.Shell').Popup(s,n);};
msgbox("www");
関数作ればいいじゃん。
function msgbox(s,n){new ActiveXObject('WScript.Shell').Popup(s,n);};
msgbox("www");
2011/02/19(土) 10:10:15ID:QTF/dNrf
スクリプトコンポーネント(WSC)内部から
呼び出し元のコンテキスト(グローバルオブジェクト)を取得することってできるかな。
WSC内のグローバルオブジェクトと
呼び出し元(例えばWSH)のグローバルオブジェクトは異なるんだよね。
現状WSH側から明示的にthisを渡しているけど、
できればこれを暗黙的にやりたいんだ。
呼び出し元のコンテキスト(グローバルオブジェクト)を取得することってできるかな。
WSC内のグローバルオブジェクトと
呼び出し元(例えばWSH)のグローバルオブジェクトは異なるんだよね。
現状WSH側から明示的にthisを渡しているけど、
できればこれを暗黙的にやりたいんだ。
2011/02/19(土) 10:28:51ID:QTF/dNrf
2011/02/19(土) 23:30:19.14ID:QTF/dNrf
>>70
WSC側でexecuteglobalを呼び出す限り
WSCのグローバルコンテキストで実行されるだけなんだよね(eval系は全部同じ)。
ちなみにJScript使っているんだけど
WSC側でevalするとWSCのグローバルコンテキストで評価される。
WSHのグローバルを受け取って(仮に変数wshに入れておくとする)
WSC側でwsh.evalとするとWSH側のグローバルコンテキストで評価される。
これをしたいがためにWSH側のグローバルオブジェクトが必要だった。
WSH側から明示的には渡せるけど、
WSC側から暗黙的に取得することは可能なのかなと思った次第っす。
WSC側でexecuteglobalを呼び出す限り
WSCのグローバルコンテキストで実行されるだけなんだよね(eval系は全部同じ)。
ちなみにJScript使っているんだけど
WSC側でevalするとWSCのグローバルコンテキストで評価される。
WSHのグローバルを受け取って(仮に変数wshに入れておくとする)
WSC側でwsh.evalとするとWSH側のグローバルコンテキストで評価される。
これをしたいがためにWSH側のグローバルオブジェクトが必要だった。
WSH側から明示的には渡せるけど、
WSC側から暗黙的に取得することは可能なのかなと思った次第っす。
2011/02/20(日) 00:27:41.73ID:yeS7euVC
通りすがりです
>>71
>WSH側から明示的には渡せるけど、
>WSC側から暗黙的に取得することは可能なのかなと思った次第っす。
これいろいろ探したけどダメだったな
>WSC側でwsh.evalとするとWSH側のグローバルコンテキストで評価される。
オレもこれやったな
wsh 側のメソッドを wsc 側で再定義して利用したとき気がついた
>>71
>WSH側から明示的には渡せるけど、
>WSC側から暗黙的に取得することは可能なのかなと思った次第っす。
これいろいろ探したけどダメだったな
>WSC側でwsh.evalとするとWSH側のグローバルコンテキストで評価される。
オレもこれやったな
wsh 側のメソッドを wsc 側で再定義して利用したとき気がついた
2011/02/20(日) 22:06:10.54ID:w/qV1CAR
classはexecuteglobalできたがwscはだめみたいね
2011/02/20(日) 22:20:30.93ID:+TcATz3w
それってWSC側で、たとえばWSHのJscriptを使ってるときには、WSCの関数の中で勝手にWScriptオブジェクトを使い、
HTAから呼び出す場合は、locationを、エディタのマクロからだとEditorオブジェクトを使えるよう出来るって話でもある?
それが出来たらシンプルになるなぁ。
でも一回は外からオブジェクトを渡さないと無理なんでしょ?
HTAから呼び出す場合は、locationを、エディタのマクロからだとEditorオブジェクトを使えるよう出来るって話でもある?
それが出来たらシンプルになるなぁ。
でも一回は外からオブジェクトを渡さないと無理なんでしょ?
2011/02/20(日) 22:59:44.10ID:W5fSZz0V
>>69
もうちょっと教えてくれない? こういう処理でも問題ないのかな?
oshl=new ActiveXObject('WScript.Shell');
n=60;
s = "合計 "+ ((33.48 + n)-0) + " 秒です。 小数がだらだら続く・・・orz";
oshl.popup(s);
s = "合計 "+ ((33.48 + n).toFixed(13) -0) + " 秒です。.toFixed(13);トレビア〜ン!";
oshl.popup(s);
s = "合計 "+ ((33.48 + n).toFixed(14) -0) + " 秒です。.toFixed(14);・・・orz";
oshl.popup(s);
13桁にしとくと問題ないみたいだが。14桁だとまた出てくる。この境目に重大な謎が潜んでるですかね?
とりあえず((33.48 + n).toFixed(13) -0) って感じに書き換えて動かしていきます。ありがとう。
もうちょっと教えてくれない? こういう処理でも問題ないのかな?
oshl=new ActiveXObject('WScript.Shell');
n=60;
s = "合計 "+ ((33.48 + n)-0) + " 秒です。 小数がだらだら続く・・・orz";
oshl.popup(s);
s = "合計 "+ ((33.48 + n).toFixed(13) -0) + " 秒です。.toFixed(13);トレビア〜ン!";
oshl.popup(s);
s = "合計 "+ ((33.48 + n).toFixed(14) -0) + " 秒です。.toFixed(14);・・・orz";
oshl.popup(s);
13桁にしとくと問題ないみたいだが。14桁だとまた出てくる。この境目に重大な謎が潜んでるですかね?
とりあえず((33.48 + n).toFixed(13) -0) って感じに書き換えて動かしていきます。ありがとう。
2011/02/20(日) 23:27:24.33ID:e7HEvFyX
人間の考える小数とは違うんよ。
「浮動小数点数」ってのを知っとくといいよ。
「浮動小数点数」ってのを知っとくといいよ。
2011/02/21(月) 00:12:12.32ID:Tq0Q360t
>>76 いまぐぐってます。ありがとう。
とりあえず計算のあとには、 .toFixed(13)-0 をつけることにします。
とりあえず計算のあとには、 .toFixed(13)-0 をつけることにします。
2011/02/21(月) 01:39:52.68ID:We8Hkeyt
>>74
現状、既定のメソッドを定義して
new ActiveXObject('foo.bar')(this)
という一行で済ましているよ。
とりあえず呼び出し側のグローバルさえ渡せば
WSC内である程度自由にできるから。
呼び出し側とWSCの連係で厄介なのは
グローバルオブジェクトの交換はできても
両者のスコープは完全に独立しているってこと
関数をどちらのコンテキストで実行するかで
スコープチェーンが異なってくるんだよね。
arguments.callerとか使うとハマるwww
現状、既定のメソッドを定義して
new ActiveXObject('foo.bar')(this)
という一行で済ましているよ。
とりあえず呼び出し側のグローバルさえ渡せば
WSC内である程度自由にできるから。
呼び出し側とWSCの連係で厄介なのは
グローバルオブジェクトの交換はできても
両者のスコープは完全に独立しているってこと
関数をどちらのコンテキストで実行するかで
スコープチェーンが異なってくるんだよね。
arguments.callerとか使うとハマるwww
2011/02/23(水) 01:28:34.67ID:YNUK4o1U
@set @s=1;/* & (@title batjs:%~nx0) & (@"cscript.exe" //nologo //e:jscript "%~f0" %*) & (@goto :eof) & @end */;g=GetObject("script:"+"C:\\g.wsc").init(this);
g.popup("cscriptでwscを使うバッチを1行でまとめてみた。");
/* g.wscの中身
<?xml version="1.0" encoding="shift_jis" ?>
<component><?component error="true" debug="true"?><public>
<method name="popup"/>
<method name="init"/>
</public><implements type="Behavior" id="Behavior"/>
<script language="JScript"><![CDATA[
var oshl=new ActiveXObject('WScript.Shell');
function popup(smes,nsec){return oshl.popup(smes,nsec);};
function init(othis){
if(typeof(othis.WScript)=='object'){WScript=othis.WScript;
}else if(typeof(othis.location)=='object'){location=othis.location;
};return this;
};
]]></script></component>
*/
g.popup("cscriptでwscを使うバッチを1行でまとめてみた。");
/* g.wscの中身
<?xml version="1.0" encoding="shift_jis" ?>
<component><?component error="true" debug="true"?><public>
<method name="popup"/>
<method name="init"/>
</public><implements type="Behavior" id="Behavior"/>
<script language="JScript"><![CDATA[
var oshl=new ActiveXObject('WScript.Shell');
function popup(smes,nsec){return oshl.popup(smes,nsec);};
function init(othis){
if(typeof(othis.WScript)=='object'){WScript=othis.WScript;
}else if(typeof(othis.location)=='object'){location=othis.location;
};return this;
};
]]></script></component>
*/
2011/02/23(水) 01:48:39.04ID:8LTNmD8F
大したことではないけど
popup メソッドのディスパッチIDを0にしておけば、
メソッド名も省略して呼び出せるよ。
これはJScriptではなくCOMコンポーネントの規約。
popup メソッドのディスパッチIDを0にしておけば、
メソッド名も省略して呼び出せるよ。
これはJScriptではなくCOMコンポーネントの規約。
2011/02/23(水) 02:42:23.12ID:uWPO9giD
wscのほうで、 <method name="init" dispid="0"/>
にしておけば、スクリプトのほうで
g=GetObject("script:"+"C:\\g.wsc")(this);
でいいってことなんだ。
それが >>78 の
new ActiveXObject('foo.bar')(this)
の話なわけだ。
やっと理解できたw
やっぱり晒して添削を受けてみるもんだね。ありがとう。
さっきぐぐったら英語の記事で、dispid=0 in .WSC does not work in Vista がうんたらかんたらと出てきたがワケワカメ・・・
にしておけば、スクリプトのほうで
g=GetObject("script:"+"C:\\g.wsc")(this);
でいいってことなんだ。
それが >>78 の
new ActiveXObject('foo.bar')(this)
の話なわけだ。
やっと理解できたw
やっぱり晒して添削を受けてみるもんだね。ありがとう。
さっきぐぐったら英語の記事で、dispid=0 in .WSC does not work in Vista がうんたらかんたらと出てきたがワケワカメ・・・
2011/03/03(木) 17:58:00.79ID:yGt/TIu+
三陸産カットワカメ・・・
2011/03/03(木) 22:08:51.13ID:EjH1JmdG
おまえはどこのワカメじゃ!
2011/03/03(木) 22:56:09.53ID:3EDIrNbf
素人の質問ですみません。以下の記述で
〜〜〜
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
FilePATH = "C:\WINDOWS\system32\drivers\etc\hosts"
set PNTR_fullPATH = objFSO.GetAbsolutePathName( FilePath )
〜〜〜
オブジェクトがありません。: '[string: "C:\WINDOWS\system32\"]'
とエラーが返ってくるのですが、いまいち原因が分かりません。
すみませんが教えて下さい。
〜〜〜
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
FilePATH = "C:\WINDOWS\system32\drivers\etc\hosts"
set PNTR_fullPATH = objFSO.GetAbsolutePathName( FilePath )
〜〜〜
オブジェクトがありません。: '[string: "C:\WINDOWS\system32\"]'
とエラーが返ってくるのですが、いまいち原因が分かりません。
すみませんが教えて下さい。
2011/03/03(木) 23:07:48.07ID:1OyzSADG
set要らない
2011/03/04(金) 03:21:31.70ID:wiEZLKWL
あ・・・ありがとうございます!!
2011/03/04(金) 19:46:37.57ID:tFN5KqE3
@echo off
ruby -x "%~0"
goto :exit
#!ruby
puts "hello"
で.batとrubyを混在させることができますが
同様に.vbsファイル中にbatのコードを記述するやり方があったら教えてください。
ruby -x "%~0"
goto :exit
#!ruby
puts "hello"
で.batとrubyを混在させることができますが
同様に.vbsファイル中にbatのコードを記述するやり方があったら教えてください。
2011/03/04(金) 19:50:14.75ID:dFFRxivQ
はぁ?逆じゃね?
2011/03/04(金) 20:16:18.74ID:gkErHLUc
2011/03/04(金) 20:17:01.88ID:bG2qjjj3
100レスもないこのスレを読めばいいよ
2011/03/04(金) 20:30:56.41ID:3PGgX7eE
2011/03/04(金) 22:16:57.68ID:dFFRxivQ
中の概念崩壊?
2011/03/05(土) 00:32:27.66ID:AVPrJyfw
var str = "abc";
typeof str は "string"
str instanceof Object は False
なのに str.constructor はエラーにならず String と出る
constructor プロパティは Object のメンバーのはず。
暗黙的な new String はどこで行われている?
typeof str は "string"
str instanceof Object は False
なのに str.constructor はエラーにならず String と出る
constructor プロパティは Object のメンバーのはず。
暗黙的な new String はどこで行われている?
2011/03/05(土) 00:57:31.81ID:w8aZ0SFU
適当な考えだが、
バリアント型なんで評価時にクラスが決定されるんでないのかね。
var x ="123"; // これだと string
さらに
x++; // こうすると number になる
バリアント型なんで評価時にクラスが決定されるんでないのかね。
var x ="123"; // これだと string
さらに
x++; // こうすると number になる
2011/03/05(土) 07:18:20.64ID:XA/P3Nuj
>>96
ttp://msdn.microsoft.com/ja-jp/library/0y7dd8cx.aspx
> JScript の Object は特殊です。
> オブジェクトは Object コンストラクターで作成された場合にだけ
> Object のインスタンスであると見なされます。
つまり、StringはObjectの派生であるからObjectのメソッドが使えるのだが
incetanceofがObjectの直接のインスタンス以外を
Objectのインスタンスとして認めない、という話
JSではObjectを連想配列(ハッシュ、辞書)のように使うことがあるから
そのための配慮だと思われるが、ややこしいな
ttp://msdn.microsoft.com/ja-jp/library/0y7dd8cx.aspx
> JScript の Object は特殊です。
> オブジェクトは Object コンストラクターで作成された場合にだけ
> Object のインスタンスであると見なされます。
つまり、StringはObjectの派生であるからObjectのメソッドが使えるのだが
incetanceofがObjectの直接のインスタンス以外を
Objectのインスタンスとして認めない、という話
JSではObjectを連想配列(ハッシュ、辞書)のように使うことがあるから
そのための配慮だと思われるが、ややこしいな
2011/03/05(土) 12:00:42.65ID:AVPrJyfw
>>97,98
サンクスです。
仕様ということで頭に入れておけばいいのでしょうけれど
typeof や instanceof を使った条件分岐の際、
あいまいな理解だと予期せぬ動作を引き起こしそうですねw。
サンクスです。
仕様ということで頭に入れておけばいいのでしょうけれど
typeof や instanceof を使った条件分岐の際、
あいまいな理解だと予期せぬ動作を引き起こしそうですねw。
100名無し~3.EXE
2011/03/06(日) 16:57:59.80ID:rO7bjyyi javascriptのプロトタイプの例としてtrim()コマンドってのがあります。
ぐぐるとよく出てきます。
このようなprototypeをwscに登録して、関数やプロパティのように楽して使いたいのですが
よくわからんです。
いまの自分のwscの理解の状態は、関数やプロパティをwscに書いて、
jscriptやhtaのgetobjectから呼ぶことは出来るレベルです。
windows script component に詳しい人がいたらヒントをお願いします。
ぐぐるとよく出てきます。
このようなprototypeをwscに登録して、関数やプロパティのように楽して使いたいのですが
よくわからんです。
いまの自分のwscの理解の状態は、関数やプロパティをwscに書いて、
jscriptやhtaのgetobjectから呼ぶことは出来るレベルです。
windows script component に詳しい人がいたらヒントをお願いします。
101名無し~3.EXE
2011/03/06(日) 20:15:06.19ID:OTYUKE1n >>100
wscは既存のオブジェクトを拡張するための機能ではないよ。
新規にオブジェクトを設計してそれをスクリプトから再利用出来るようにするもの。
君の場合、jsやvbsで拡張用のコードを用意しておいて
それをwsfやhtaから利用するほうが楽なんじゃないかな?
scriptタグを使って読み込めるからね。
質問から察するにそちらのほうが正攻法だと思う。
もちろんWSCを使って呼び出し元のオブジェクトを
無理矢理拡張できないこともないけど。
wscは既存のオブジェクトを拡張するための機能ではないよ。
新規にオブジェクトを設計してそれをスクリプトから再利用出来るようにするもの。
君の場合、jsやvbsで拡張用のコードを用意しておいて
それをwsfやhtaから利用するほうが楽なんじゃないかな?
scriptタグを使って読み込めるからね。
質問から察するにそちらのほうが正攻法だと思う。
もちろんWSCを使って呼び出し元のオブジェクトを
無理矢理拡張できないこともないけど。
102名無し~3.EXE
2011/03/06(日) 22:39:37.78ID:0PSkRQeX WSC prototypeでぐぐって見たら、
ttp://moz-addon.g.hatena.ne.jp/ZIGOROu/?word=*[WSC]
が引っかかりました。wsc経由でも、prototypeが使えるらしい。 やった!w
・・・が細かい記述はなし。
あと、スクリプト内部の外部ファイル化も出来るらしい。試したら・・・出来た!w
<property name="test0"/>
<script language="JScript" src='./test0.js'/>
これ便利だわw
prototypeが出来るか?もうちょっと粘ってみます。
ttp://moz-addon.g.hatena.ne.jp/ZIGOROu/?word=*[WSC]
が引っかかりました。wsc経由でも、prototypeが使えるらしい。 やった!w
・・・が細かい記述はなし。
あと、スクリプト内部の外部ファイル化も出来るらしい。試したら・・・出来た!w
<property name="test0"/>
<script language="JScript" src='./test0.js'/>
これ便利だわw
prototypeが出来るか?もうちょっと粘ってみます。
103名無し~3.EXE
2011/03/06(日) 23:21:41.58ID:OTYUKE1n >>102
ひとつ言っておくけど
wscのグローバルコンテキストと呼び出し元のそれとは異なるからね。
つまりwsc内のStringオブジェクトのプロトタイプを拡張しても
呼び出し元のStringオブジェクトには使えないということ。
まあ試せるだけ試して、また来なさいな。
ひとつ言っておくけど
wscのグローバルコンテキストと呼び出し元のそれとは異なるからね。
つまりwsc内のStringオブジェクトのプロトタイプを拡張しても
呼び出し元のStringオブジェクトには使えないということ。
まあ試せるだけ試して、また来なさいな。
104名無し~3.EXE
2011/03/07(月) 00:34:09.18ID:cQcCMBvw たしかにw WSFかHTAでやったほうがいいね。WSFなら<job>と<script src=....>タグで包めばいいだけだものね。
<job><script src=./test0.js /><script src=./prototype0.js /><script>
s=" Trim WSH ";
oshl=new ActiveXObject('WScript.Shell');
test0.alert3("WSFから読み込んで実行" + "\n" + s +"\n" + s.trim());
test0.表示する2("---"+ s +"---\n" +"---"+ s.をトリム()+"---");
/*
// test0.jsの中身
test0={
alert3 : function(s){oshl.popup(s,3);},
表示する2 : function(s){oshl.popup(s+"\n\n"+s);}
};
// prototype0.jsの中身
trim = function(){return this.replace(/^[ \t ]+/,'').replace(/[ \t ]*$/,'');};
String.prototype.trim = trim; String.prototype.をトリム = trim;
*/
</script></job>
<job><script src=./test0.js /><script src=./prototype0.js /><script>
s=" Trim WSH ";
oshl=new ActiveXObject('WScript.Shell');
test0.alert3("WSFから読み込んで実行" + "\n" + s +"\n" + s.trim());
test0.表示する2("---"+ s +"---\n" +"---"+ s.をトリム()+"---");
/*
// test0.jsの中身
test0={
alert3 : function(s){oshl.popup(s,3);},
表示する2 : function(s){oshl.popup(s+"\n\n"+s);}
};
// prototype0.jsの中身
trim = function(){return this.replace(/^[ \t ]+/,'').replace(/[ \t ]*$/,'');};
String.prototype.trim = trim; String.prototype.をトリム = trim;
*/
</script></job>
105名無し~3.EXE
2011/03/07(月) 03:50:20.20ID:cQcCMBvw 結論を先に言うと、WSCに書いたprototypeのtrimを、WSC側だけでなく、スクリプト本体からも使えるようですw!
スクリプト本体からGetObjectでWSCに送るオブジェクト this にprototypeを付け足せばOKのようです。
で、下記のサンプルのjsファイルと同じフォルダに、別記のthistest.wsc ファイルと
wscに読み込むための test1.js ファイルを置いて試して見て下さい。
trimとコマンドラインの引数を表示するサンプルです。
とりあえず動くようなんでこれで問題ないかな?と思ってるんですけど、どうかな?
スクリプト本体からGetObjectでWSCに送るオブジェクト this にprototypeを付け足せばOKのようです。
で、下記のサンプルのjsファイルと同じフォルダに、別記のthistest.wsc ファイルと
wscに読み込むための test1.js ファイルを置いて試して見て下さい。
trimとコマンドラインの引数を表示するサンプルです。
とりあえず動くようなんでこれで問題ないかな?と思ってるんですけど、どうかな?
106名無し~3.EXE
2011/03/07(月) 03:52:33.62ID:cQcCMBvw main=function(){
s=" test ";
sTrim= "TrimBefore==="+s +"==="+"\n";
sTrim+="TrimAfter ==="+s.trim()+"==="+"\n";
sTrim+="TrimAfter ==="+s.をトリム()+"==="+"\n";
sTrim+="TrimAfter ==="+funsub(s)+"==="+"\n";
oshl.popup("trim()のテスト\n\n"+ s + "\n\n"+ sTrim);
test1.alert3(" --- コマンドラインの引数argcl=\n" + argcl.join("\n"));
test1.表示2( 3333 );
n = ( 999 + 1000 ).を表示(); sss=(" 終了です " + n ).を表示();
oshl.popup("---"+sss+"---");
};
pWscのパス=WScript.Scriptfullname.replace(/^(.+)[\\]([^\\]+)$/,'$1')+"\\thistest.wsc";
GetObject("script:" + pWscのパス)(this);
funsub=function(s){return s.trim();};
main();
/*** thistest.wsc から読み込む test1.js ファイルの中身。 thistest.wscは別記する。
test1={ alert3 : function(s){oshl.popup("==="+ s.trim()+"===",3);},
表示2 : function(s){oshl.popup(s+"\n\n"+s);}
};
***/;
s=" test ";
sTrim= "TrimBefore==="+s +"==="+"\n";
sTrim+="TrimAfter ==="+s.trim()+"==="+"\n";
sTrim+="TrimAfter ==="+s.をトリム()+"==="+"\n";
sTrim+="TrimAfter ==="+funsub(s)+"==="+"\n";
oshl.popup("trim()のテスト\n\n"+ s + "\n\n"+ sTrim);
test1.alert3(" --- コマンドラインの引数argcl=\n" + argcl.join("\n"));
test1.表示2( 3333 );
n = ( 999 + 1000 ).を表示(); sss=(" 終了です " + n ).を表示();
oshl.popup("---"+sss+"---");
};
pWscのパス=WScript.Scriptfullname.replace(/^(.+)[\\]([^\\]+)$/,'$1')+"\\thistest.wsc";
GetObject("script:" + pWscのパス)(this);
funsub=function(s){return s.trim();};
main();
/*** thistest.wsc から読み込む test1.js ファイルの中身。 thistest.wscは別記する。
test1={ alert3 : function(s){oshl.popup("==="+ s.trim()+"===",3);},
表示2 : function(s){oshl.popup(s+"\n\n"+s);}
};
***/;
107名無し~3.EXE
2011/03/07(月) 03:56:57.64ID:cQcCMBvw <?xml version="1.0" encoding="shift_jis" ?><component><?component error="true" debug="true"?><public>
<method name="init" dispid="0"/> <property name="test1"/>
</public><implements type="Behavior" id="Behavior"/>
<script language="JScript" src='./test1.js'/>
<script language="JScript"><![CDATA[
var oshl=new ActiveXObject('WScript.Shell');
var ofso=new ActiveXObject('Scripting.FileSystemObject');
trim = function(){return this.replace(/^[ \t ]+/,'').replace(/[ \t ]*$/,'');};
String.prototype.trim = trim; String.prototype.をトリム = trim;
を表示= function(){oshl.popup(this);return this;};
String.prototype.を表示 = を表示; bWScript=false; blocation=false;
function init(ooo,sopt){
if(typeof(ooo.WScript)=='object'){
bWScript=true; WScript=ooo.WScript; ppScriptfullname=WScript.ScriptFullname;
getArgcl=function(){var aaa=[];for(var iii=0;iii<WScript.Arguments.length;iii++){aaa.push(WScript.Arguments(iii));};return aaa;};
}else if(typeof(ooo.location)=='object'){
blocation=true;location=ooo.location;ppScriptfullname=location.pathname;getArgcl=function(){var aaa=[];return aaa;};
};
ooo.test1=test1; ooo.ppScriptfullname=ppScriptfullname; ooo.argcl=getArgcl(); ooo.oshl=oshl; ooo.ofso=ofso;
ooo.String.prototype.trim = trim; ooo.String.prototype.をトリム = trim;
ooo.String.prototype.を表示 = を表示; ooo.Number.prototype.を表示 = を表示;
return this;
}; ]]></script></component>
<method name="init" dispid="0"/> <property name="test1"/>
</public><implements type="Behavior" id="Behavior"/>
<script language="JScript" src='./test1.js'/>
<script language="JScript"><![CDATA[
var oshl=new ActiveXObject('WScript.Shell');
var ofso=new ActiveXObject('Scripting.FileSystemObject');
trim = function(){return this.replace(/^[ \t ]+/,'').replace(/[ \t ]*$/,'');};
String.prototype.trim = trim; String.prototype.をトリム = trim;
を表示= function(){oshl.popup(this);return this;};
String.prototype.を表示 = を表示; bWScript=false; blocation=false;
function init(ooo,sopt){
if(typeof(ooo.WScript)=='object'){
bWScript=true; WScript=ooo.WScript; ppScriptfullname=WScript.ScriptFullname;
getArgcl=function(){var aaa=[];for(var iii=0;iii<WScript.Arguments.length;iii++){aaa.push(WScript.Arguments(iii));};return aaa;};
}else if(typeof(ooo.location)=='object'){
blocation=true;location=ooo.location;ppScriptfullname=location.pathname;getArgcl=function(){var aaa=[];return aaa;};
};
ooo.test1=test1; ooo.ppScriptfullname=ppScriptfullname; ooo.argcl=getArgcl(); ooo.oshl=oshl; ooo.ofso=ofso;
ooo.String.prototype.trim = trim; ooo.String.prototype.をトリム = trim;
ooo.String.prototype.を表示 = を表示; ooo.Number.prototype.を表示 = を表示;
return this;
}; ]]></script></component>
108名無し~3.EXE
2011/03/07(月) 19:34:50.38ID:o0m549Gn109名無し~3.EXE
2011/03/08(火) 00:08:48.35ID:hefFAWy/ 昨日いろいろ試していて、>>78 new ActiveXObject('foo.bar')(this)
g=new ... というような戻り値を取らない意味がやっと理解出来ましたw
呼び出し元がWSHの場合は、thisに返すことも出来るってことですね。
>>102 のURLの中の人の解説も、今になると少しは理解できましたw
WSCを掘ってみようと思ったのは、WSHとは役目の違うAutohotkeyなどのスクリプト言語からもJscriptで作った関数を楽に使いたかったからです。
関数を一つ一つScriptControlするかという手もあるけど、ScriptControlからGetObjectで一括で取り込んでしまおう!というわけです。
WSCを経由することのスピードのロスは、自作のツールだから割り切れますんでね。
これで、Bat偽装のJscriptで作ったツールを、prototypeを除いてAutohotkeyやhtaboxコアからもほぼ同じように再利用出来ることがわかってよかったです。
このスレには、WSHやjavascript関係でググると出てくる方たちが何人か常駐してるんだろうねw
>>108 さんをはじめみなさんいろいろ教えてもらってありがとう!
g=new ... というような戻り値を取らない意味がやっと理解出来ましたw
呼び出し元がWSHの場合は、thisに返すことも出来るってことですね。
>>102 のURLの中の人の解説も、今になると少しは理解できましたw
WSCを掘ってみようと思ったのは、WSHとは役目の違うAutohotkeyなどのスクリプト言語からもJscriptで作った関数を楽に使いたかったからです。
関数を一つ一つScriptControlするかという手もあるけど、ScriptControlからGetObjectで一括で取り込んでしまおう!というわけです。
WSCを経由することのスピードのロスは、自作のツールだから割り切れますんでね。
これで、Bat偽装のJscriptで作ったツールを、prototypeを除いてAutohotkeyやhtaboxコアからもほぼ同じように再利用出来ることがわかってよかったです。
このスレには、WSHやjavascript関係でググると出てくる方たちが何人か常駐してるんだろうねw
>>108 さんをはじめみなさんいろいろ教えてもらってありがとう!
110名無し~3.EXE
2011/03/09(水) 05:55:35.07ID:Mqnv57Gr JScriptでcatchブロックの下にあるfinallyブロックを使い、
ソースコードを定期的かつ自動的に実行したいのですが
どのように記述しするべきなのでしょうか?
ちなみにfinallyブロックはこのように記述されていて、
IEブラウザが勝手に閉じてくれます
finally{
ie.Quit();
}
ソースコードを定期的かつ自動的に実行したいのですが
どのように記述しするべきなのでしょうか?
ちなみにfinallyブロックはこのように記述されていて、
IEブラウザが勝手に閉じてくれます
finally{
ie.Quit();
}
111名無し~3.EXE
2011/03/09(水) 09:22:51.55ID:yiJYnNja try〜catch〜finally はそういう用途で使うもんじゃないんでないの
112名無し~3.EXE
2011/03/09(水) 22:12:50.52ID:LlSweAWG WSHでクリップボードを使おうと思って次のようなコードを書きました。
値の取得はできるのですが、値の設定がうまくいかないんです。
xxxは表示されず、それ以前にクリップボードに入れた値が表示されます。
どうすれば値の設定ができるようになりますか?
var cb = new ActiveXObject("htmlfile").parentWindow.clipboardData;
cb.setData("text", "xxx");
new ActiveXObject("WScript.Shell").popup(cb.getData("text"));
値の取得はできるのですが、値の設定がうまくいかないんです。
xxxは表示されず、それ以前にクリップボードに入れた値が表示されます。
どうすれば値の設定ができるようになりますか?
var cb = new ActiveXObject("htmlfile").parentWindow.clipboardData;
cb.setData("text", "xxx");
new ActiveXObject("WScript.Shell").popup(cb.getData("text"));
113名無し~3.EXE
2011/03/10(木) 01:52:14.41ID:cSFmRFjD インターネットオプション セキュリティ インターネット 低
114名無し~3.EXE
2011/03/10(木) 05:07:35.87ID:OzXGAxB6115名無し~3.EXE
2011/03/10(木) 05:14:36.60ID:OzXGAxB6 ただこんな話もあるようですが・・・
ttp://d.hatena.ne.jp/Fio/20050321
データ実行防止
DynaCallを使って、WSHでクリップボードを直接操作したりすることをテストしているのですが、ほんのわずかのテキストだったらいいのですが、ちょっと数が多くなるとてきめんにデータ実行防止の画面が出てきてWSHを落とされます。
これはXPのSP2以降の機能のようですが、ウィルスでないWSHスクリプトをウィルスといっしょにすなーー
ttp://d.hatena.ne.jp/Fio/20050321
データ実行防止
DynaCallを使って、WSHでクリップボードを直接操作したりすることをテストしているのですが、ほんのわずかのテキストだったらいいのですが、ちょっと数が多くなるとてきめんにデータ実行防止の画面が出てきてWSHを落とされます。
これはXPのSP2以降の機能のようですが、ウィルスでないWSHスクリプトをウィルスといっしょにすなーー
116名無し~3.EXE
2011/03/10(木) 05:29:08.75ID:hGam45QR >>113
about:blankを信頼済みに追加して「スクリプトによる貼り付け処理の許可」を有効にしています。
ここを無効にするとクリップボードの読み取りも不可になるのでちゃんと反映されていると思うんですが。
WSHから呼び出したときabout:blankであることは以下のコードで確認しました。
var win = new ActiveXObject("htmlfile").parentWindow;
new ActiveXObject("WScript.Shell").popup(win.location);
IEのバージョン依存とかもあるんですかね。自分の環境はIE8です。
>>113 さんの環境では値の設定もできてますか?
>>114
参照先を見てみました。今の自分にはちょっと難しそうなのでこれから勉強してみます。
about:blankを信頼済みに追加して「スクリプトによる貼り付け処理の許可」を有効にしています。
ここを無効にするとクリップボードの読み取りも不可になるのでちゃんと反映されていると思うんですが。
WSHから呼び出したときabout:blankであることは以下のコードで確認しました。
var win = new ActiveXObject("htmlfile").parentWindow;
new ActiveXObject("WScript.Shell").popup(win.location);
IEのバージョン依存とかもあるんですかね。自分の環境はIE8です。
>>113 さんの環境では値の設定もできてますか?
>>114
参照先を見てみました。今の自分にはちょっと難しそうなのでこれから勉強してみます。
117名無し~3.EXE
2011/03/10(木) 05:55:38.56ID:/U/Q8ZHj GetObjectだとコンピュータゾーンになるらしいけど
ただ、どっちにしてもsetDataで設定できないみたいね
InternetExplorer.Applicationとかは
ただ、どっちにしてもsetDataで設定できないみたいね
InternetExplorer.Applicationとかは
118名無し~3.EXE
2011/03/10(木) 07:37:59.38ID:TVU14U2L about:blank の新規窓作ってスクリプトでコンテンツ作成するサイトもあるよ
120名無し~3.EXE
2011/03/10(木) 21:23:25.37ID:cSFmRFjD alert()はできてもprompt()はできないのと一緒
parentWindowは実際にosのwindowを持ってないからだめ
parentWindowは実際にosのwindowを持ってないからだめ
121名無し~3.EXE
2011/03/11(金) 00:20:10.33ID:V8ey7rJ7 >>112
WSH は元々クリップボードを扱うことを想定していないから、
OLE の初期化という処理をアプリケーション側で行っていないんだよね。
だからクリップボードに値を設定することができない。
HTA のように OLE の初期化を行っているスクリプトホストであれば
>>112 のコードは正しく実行される。
じゃあ WSH では不可能なのかというと、API を直接呼び出して
WSH 上で OLE の初期化をさせてしまうという強引な方法もある。
コードの理解には DynaCall や Win32API の知識が必要になるけど、
DynaCall を登録後、以下の三行をオマジナイとして
>>112 のコードの前に追加してみてください。
WSH でもクリップボードに値を設定できるはずだよ。
var dynwrap = new ActiveXObject('DynamicWrapper');
dynwrap.register('ole32','OleInitialize','f=s','i=l','r=l');
dynwrap.OleInitialize(0);
>>114
SfcMini だとこんな感じかな。
var API = new ActiveXObject('SfcMini.DynaCall');
API.LoadLibrariesW('ole32');
API.OleInitialize(0);
ちなみに OleInitialize の戻り値は WSH では 0 だけど HTA だと 1 になる。
これは HTA が既に OLE 初期化済みですよというエラーコード。
つまり 1 が返るスクリプトホストであれば OleInitialize は不要ってこと。
OleInitialize が何をしているかについてはかなり専門的な話になるので省略。
ネットで詳細な解説を見つけるのは難しいかも。興味がある人は以下の本を読むとよろし。
http://www.amazon.co.jp/dp/4756102379
WSH は元々クリップボードを扱うことを想定していないから、
OLE の初期化という処理をアプリケーション側で行っていないんだよね。
だからクリップボードに値を設定することができない。
HTA のように OLE の初期化を行っているスクリプトホストであれば
>>112 のコードは正しく実行される。
じゃあ WSH では不可能なのかというと、API を直接呼び出して
WSH 上で OLE の初期化をさせてしまうという強引な方法もある。
コードの理解には DynaCall や Win32API の知識が必要になるけど、
DynaCall を登録後、以下の三行をオマジナイとして
>>112 のコードの前に追加してみてください。
WSH でもクリップボードに値を設定できるはずだよ。
var dynwrap = new ActiveXObject('DynamicWrapper');
dynwrap.register('ole32','OleInitialize','f=s','i=l','r=l');
dynwrap.OleInitialize(0);
>>114
SfcMini だとこんな感じかな。
var API = new ActiveXObject('SfcMini.DynaCall');
API.LoadLibrariesW('ole32');
API.OleInitialize(0);
ちなみに OleInitialize の戻り値は WSH では 0 だけど HTA だと 1 になる。
これは HTA が既に OLE 初期化済みですよというエラーコード。
つまり 1 が返るスクリプトホストであれば OleInitialize は不要ってこと。
OleInitialize が何をしているかについてはかなり専門的な話になるので省略。
ネットで詳細な解説を見つけるのは難しいかも。興味がある人は以下の本を読むとよろし。
http://www.amazon.co.jp/dp/4756102379
122名無し~3.EXE
2011/03/11(金) 01:28:02.40ID:u15/Db+W 割り込みスマン。
出来たわ。そういう手もあるのか。
出来たわ。そういう手もあるのか。
123名無し~3.EXE
2011/03/12(土) 15:38:51.55ID:r5dmqnIa メルトダウンか・・・
124名無し~3.EXE
2011/03/12(土) 17:51:36.66ID:r5dmqnIa お〜い、おまいら生きてるか?
125名無し~3.EXE
2011/03/29(火) 15:01:07.19ID:LTJJZQ9e UTF-8のtarget.csv、Shift-JISのmaster.txtがある
master.txtにはtarget.csvで置換したい文字列が入っている
target.csv
1,2,3,fuga,5
1,piyo,4,5,5
...
master.csv
hoge
fuga
piyo
...
概要
master.csvの1レコード目の値を取得(変数keyとする)
keyでtarget.csvの1行目を検索する。
HITするならnullに置換。(要は削除したい)
HITしないなら2行目。
target.csv内でループ
master.csv内でループ
問題点
文字コードが違う為、print、write、ODAの使用ができない。
(ODAは文字コード関係ないって聞いた事があったのに…)
これではソースコード内で置換できても、出力ができない上に
文字列を取得する際も文字化けしてしまっている為、処理ができない。
JAVAなんかだと文字コード変換する関数があるけど
JSCRIPTではやっぱ無理?
master.txtにはtarget.csvで置換したい文字列が入っている
target.csv
1,2,3,fuga,5
1,piyo,4,5,5
...
master.csv
hoge
fuga
piyo
...
概要
master.csvの1レコード目の値を取得(変数keyとする)
keyでtarget.csvの1行目を検索する。
HITするならnullに置換。(要は削除したい)
HITしないなら2行目。
target.csv内でループ
master.csv内でループ
問題点
文字コードが違う為、print、write、ODAの使用ができない。
(ODAは文字コード関係ないって聞いた事があったのに…)
これではソースコード内で置換できても、出力ができない上に
文字列を取得する際も文字化けしてしまっている為、処理ができない。
JAVAなんかだと文字コード変換する関数があるけど
JSCRIPTではやっぱ無理?
126名無し~3.EXE
2011/03/29(火) 15:16:03.05ID:C2y6smjb FSOかADODB.Stream使えばいいんじゃね?
128名無し~3.EXE
2011/03/29(火) 17:11:32.48ID:C4uw/B/3 それはばけるでなくばかなんだろw
131名無し~3.EXE
2011/04/04(月) 21:15:15.89ID:yLz3Zj6h wshに渡した引数のダブルクォートが消えないようにするにはどうしたらいいでしょうか。
用途はだいなファイラーの補助スクリプトです。
マクロで変換後スクリプトには"a" "b"...のように渡るのですが、これがa b...になってしまいます。
渡す文字列に半角空白が含まれている場合に不都合です。
用途はだいなファイラーの補助スクリプトです。
マクロで変換後スクリプトには"a" "b"...のように渡るのですが、これがa b...になってしまいます。
渡す文字列に半角空白が含まれている場合に不都合です。
133名無し~3.EXE
2011/04/05(火) 10:02:45.94ID:Pf/rrN9p 個人寄付ランキング
100億 孫正義(ソフトバンク)
10億 柳井正(ユニクロ) 三木谷浩史(楽天)
6億 ブリトニー・スピアーズ(米・歌手)
5億 似鳥昭雄(ニトリ)
2億 久米宏(アナウンサー) 中居正宏(SMAP4億、内2億)
1.2億 レディー・ガガ(米・歌手)
1億 イチロー(マリナーズ)
8000万 サンドラ・ブロック(米・俳優)
7500万 ぺヨンジュン(韓・俳優)
5000万 安室奈美恵(歌手)
3500万 浜崎あゆみ(歌手)
3200万 ジャッキー・チェン ←New
100万 堀江貴文 (ホリエモン)
33万 蛯原友里(タレント)
6万9千 内田裕也(ロック)
体で支払い 江頭2:50(タレント)
折り鶴 アブネスチャン
100億 孫正義(ソフトバンク)
10億 柳井正(ユニクロ) 三木谷浩史(楽天)
6億 ブリトニー・スピアーズ(米・歌手)
5億 似鳥昭雄(ニトリ)
2億 久米宏(アナウンサー) 中居正宏(SMAP4億、内2億)
1.2億 レディー・ガガ(米・歌手)
1億 イチロー(マリナーズ)
8000万 サンドラ・ブロック(米・俳優)
7500万 ぺヨンジュン(韓・俳優)
5000万 安室奈美恵(歌手)
3500万 浜崎あゆみ(歌手)
3200万 ジャッキー・チェン ←New
100万 堀江貴文 (ホリエモン)
33万 蛯原友里(タレント)
6万9千 内田裕也(ロック)
体で支払い 江頭2:50(タレント)
折り鶴 アブネスチャン
134名無し~3.EXE
2011/04/05(火) 17:59:30.38ID:fuIR9JzL135131
2011/04/05(火) 23:27:40.19ID:bVidqRdy 回答ありがとう。またいろいろ調べて試してくる
136名無し~3.EXE
2011/04/16(土) 11:27:42.13ID:MufQ4JVW ダイアログを表示させずにファイルをごみ箱へ移動するスクリプトがw2kで正常に動きません(XPだと動く)
エクスプローラでこのスクリプトにファイルをD&Dすると、ファイルの移動先が"C:\Documents and Settings\ユーザー"へ
他のファイラ(X-Finder)だと、そのファイラの実行ファイルの有るフォルダに移動します
2000で動かす方法は無いですか
var fso=new ActiveXObject("Scripting.FileSystemObject");
var args = WScript.Arguments;
var Shell=new ActiveXObject('Shell.Application');
var Folder=Shell.NameSpace(fso.GetAbsolutePathName(fso.GetParentFolderName(args(0))));
var FolderItem=Folder.Items().Item(fso.GetFileName(args(0)));
Shell.NameSpace(10).MoveHere(FolderItem);
エクスプローラでこのスクリプトにファイルをD&Dすると、ファイルの移動先が"C:\Documents and Settings\ユーザー"へ
他のファイラ(X-Finder)だと、そのファイラの実行ファイルの有るフォルダに移動します
2000で動かす方法は無いですか
var fso=new ActiveXObject("Scripting.FileSystemObject");
var args = WScript.Arguments;
var Shell=new ActiveXObject('Shell.Application');
var Folder=Shell.NameSpace(fso.GetAbsolutePathName(fso.GetParentFolderName(args(0))));
var FolderItem=Folder.Items().Item(fso.GetFileName(args(0)));
Shell.NameSpace(10).MoveHere(FolderItem);
ゴミ箱のプロパティに、確認しないようにするチェック欄あるけど、2000だとそれないの?
138名無し~3.EXE
2011/04/16(土) 19:39:45.68ID:0UUwM/iL Shell.NameSpace("::{645FF040-5081-101B-9F08-00AA002F954E}")
139136
2011/04/16(土) 22:37:16.64ID:MufQ4JVW140名無し~3.EXE
2011/04/16(土) 23:14:45.38ID:CtNIy87X カレントディレクトリ変えるとか
141名無し~3.EXE
2011/04/16(土) 23:21:20.32ID:0UUwM/iL 非同期だから待ち合わせしないとあかんみたいよ
参考ソース
ttp://www.vector.co.jp/soft/winnt/util/se427319.html
参考ソース
ttp://www.vector.co.jp/soft/winnt/util/se427319.html
142136
2011/04/17(日) 00:02:04.93ID:uhTjQ+VV >>141
136はvector(Remove.CMD)のソースをテスト用に改変したものです。Remove.CMDも2000では動きません
非同期回避のループ文が有るとファイルが本来と違う場所に移動した後でエラーを吐きます
またD&D操作でなく、スクリプト内で削除するファイルを決め打ちにするとファイルは移動もしなくなります
2000のwshバージョンを5.7に上げても効果ありませんでした
136はvector(Remove.CMD)のソースをテスト用に改変したものです。Remove.CMDも2000では動きません
非同期回避のループ文が有るとファイルが本来と違う場所に移動した後でエラーを吐きます
またD&D操作でなく、スクリプト内で削除するファイルを決め打ちにするとファイルは移動もしなくなります
2000のwshバージョンを5.7に上げても効果ありませんでした
143名無し~3.EXE
2011/04/17(日) 00:35:04.26ID:4japXLT8 copyhereは?
144名無し~3.EXE
2011/04/17(日) 01:54:12.61ID:4japXLT8 ttp://www.roy.hi-ho.ne.jp/mutaguchi/bbs/list39.shtml
の
管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2001年 06月 22日 22時 45分 04秒
に既出やね
の
管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2001年 06月 22日 22時 45分 04秒
に既出やね
145名無し~3.EXE
2011/04/17(日) 09:13:00.95ID:hP33oYWG Shell Automation Service は
shell32.dll に実装されているけど
単にこれが古いというオチじゃないかな
まあW2K版shell32.dllのバグという見方もできるが。
強引にAPIのSHFileOperationでも使う?w
shell32.dll に実装されているけど
単にこれが古いというオチじゃないかな
まあW2K版shell32.dllのバグという見方もできるが。
強引にAPIのSHFileOperationでも使う?w
146名無し~3.EXE
2011/04/17(日) 09:19:07.96ID:hP33oYWG そうそう、久しぶりにMiTeC覗いたら
OLEViewerのバージョンが上がってたよ
といってもiviewers.dllは提供されていないから
基本的な性能は変わっていないんだけどw
他にも色々と有用なツールがあるから
興味がある人は覗いてみては?
http://www.mitec.cz/
OLEViewerのバージョンが上がってたよ
といってもiviewers.dllは提供されていないから
基本的な性能は変わっていないんだけどw
他にも色々と有用なツールがあるから
興味がある人は覗いてみては?
http://www.mitec.cz/
147名無し~3.EXE
2011/04/23(土) 02:18:54.08ID:4NAn1xc8 WSHでUSBポートの監視、制御ってできますか?
できるのであればAPIの宣言方法を教えて下さい
できるのであればAPIの宣言方法を教えて下さい
148名無し~3.EXE
2011/04/23(土) 08:31:31.29ID:i7wvdnoN 覚えた当時文字列処理系の関数が多かったからvbsにしたんだけど
世間じゃjsが流行ってんな〜
IEのjsエンジン高速化されまくってるみたいだけど
wshでもjsのが高速だったりするの?
世間じゃjsが流行ってんな〜
IEのjsエンジン高速化されまくってるみたいだけど
wshでもjsのが高速だったりするの?
149名無し~3.EXE
2011/04/23(土) 09:26:59.69ID:PDrnfeB9 >147
接続や切断ってことかい?
とりあえずRegisterDeviceNotification あたりから調べてみ。
ただ頭からケツまでAPIでゴリ押しする気なら
言語の選択を考え直したほうがいい。
C++とかで書く以上に面倒になると思うぜ。
接続や切断ってことかい?
とりあえずRegisterDeviceNotification あたりから調べてみ。
ただ頭からケツまでAPIでゴリ押しする気なら
言語の選択を考え直したほうがいい。
C++とかで書く以上に面倒になると思うぜ。
151名無し~3.EXE
2011/04/23(土) 10:58:21.98ID:PDrnfeB9 >148
オレは関数型言語がキライという理由かな
だからphpも好きじゃない
あくまで書き方に限った話だがw
オレは関数型言語がキライという理由かな
だからphpも好きじゃない
あくまで書き方に限った話だがw
152名無し~3.EXE
2011/04/23(土) 11:36:59.05ID:4NAn1xc8■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【詳報】備蓄米2000円台前半 政府、30万トン放出―随意契約で来月にも店頭へ [蚤の市★]
- 中居氏代理人 第三者委員会の回答に強く反発「到底承服いたしかねます」 さらなる説明要求も ★2 [ひかり★]
- 【SNS】「iPhone、米国で製造しないと25%関税」 トランプ氏が圧力 [少考さん★]
- 日産、横浜本社の売却検討 7工場削減などリストラ費用に [蚤の市★]
- 【サッカー】代表選出の佐野海舟がコメント発表「大変申し訳ございませんでした」 社会貢献活動も実施… 昨年7月に不同意性交容疑で逮捕 [冬月記者★]
- 【テレビ】小泉進次郎農相 備蓄米の店頭価格『2000円』と明言 26日に事業者向け説明会「とにかくスピード」 [冬月記者★]
- 中国の280円定食。美味そうすぎて貧困ジャップよだれタラタラ [271912485]
- 小泉進次郎「備蓄米の輸送費?国が負担しますよ」 [594040874]
- 小泉進次郎「コメは保管中に減価償却される」 [256556981]
- 【安倍の実】実質賃金、ずーとマイナス。どうすんのこれ? [219241683]
- ホロライブ総合スレ🏡
- アベノミクス3本の矢が全部ぶっ刺さって血ダルマの日本人「この道しかない!」 [667744927]