こんなことコンピュータにやらせろよ。そう思ったことはありませんか?
簡易的な実行環境も含めて普通の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
800796
2015/11/10(火) 22:41:08.95ID:HDYxoiSR801名無し~3.EXE
2015/11/14(土) 19:19:55.55ID:RNO50Lcc 横からだけど%*ってどういう意味だっけ
803名無し~3.EXE
2015/11/23(月) 23:05:48.47ID:nD0rlIIZ804名無し~3.EXE
2015/11/27(金) 07:18:59.11ID:dOr9jkTm var a;
a = eval("[\"abc\",\"def\"]");
WScript.Echo(a[0]);
→abc
は実行出来るけど
var a;
a = eval("{\"abc\":\"def\"}");
WScript.Echo(a["abc"]);
はevalでエラーになります。これはどうにもならないのかな・・・
a = eval("[\"abc\",\"def\"]");
WScript.Echo(a[0]);
→abc
は実行出来るけど
var a;
a = eval("{\"abc\":\"def\"}");
WScript.Echo(a["abc"]);
はevalでエラーになります。これはどうにもならないのかな・・・
806名無し~3.EXE
2015/11/27(金) 10:31:50.40ID:EYEBJY2Y >>804
ttp://language-and-engineering.hatenablog.jp/entry/20081022/1224597688
{x:1}
は,なんと「ラベル付きの文が中括弧でくくられている」とみなされ,
obj = eval( "{x:1}" );
の結果,objの値に数値1が代入される。
プロパティが複数ある場合には,
{x:1, y:2}
の最初の x: のあとの部分が「文」にならないので,「セミコロンがありません」というエラーになる。
一つの解決法は,丸括弧 () でくくること。
var str = "({x:1})";
とすれば,evalで評価した時にハッシュとして正常に解釈される。
丸括弧によって「中身はオブジェクトです」という意思表示ができるのである。
ttp://language-and-engineering.hatenablog.jp/entry/20081022/1224597688
{x:1}
は,なんと「ラベル付きの文が中括弧でくくられている」とみなされ,
obj = eval( "{x:1}" );
の結果,objの値に数値1が代入される。
プロパティが複数ある場合には,
{x:1, y:2}
の最初の x: のあとの部分が「文」にならないので,「セミコロンがありません」というエラーになる。
一つの解決法は,丸括弧 () でくくること。
var str = "({x:1})";
とすれば,evalで評価した時にハッシュとして正常に解釈される。
丸括弧によって「中身はオブジェクトです」という意思表示ができるのである。
807名無し~3.EXE
2015/11/27(金) 10:53:52.55ID:S4fdjd37 へー
808名無し~3.EXE
2015/11/27(金) 11:01:56.93ID:OG/mUtfI ('A`)
810名無し~3.EXE
2015/12/05(土) 13:10:21.50ID:HCxkbB1B ADODBのStreamで限定的ながらバイナリファイルを読み書き出来ますけど
裏技っぽい感じですしWSHが使えるすべてのWindowsで期待した動作をするのでしょうか?
この実装でバイナリファイルを正常に読めることを前提としたスクリプトの配布を
考えているのですがちょっと不安です
裏技っぽい感じですしWSHが使えるすべてのWindowsで期待した動作をするのでしょうか?
この実装でバイナリファイルを正常に読めることを前提としたスクリプトの配布を
考えているのですがちょっと不安です
811名無し~3.EXE
2015/12/05(土) 13:52:03.81ID:8/N/dh/l >>810
多分大丈夫っぽいけど、書き方によってはセキュリティソフトの一部(Aviraとか)で誤検出されるので注意
多分大丈夫っぽいけど、書き方によってはセキュリティソフトの一部(Aviraとか)で誤検出されるので注意
813名無し~3.EXE
2015/12/05(土) 21:39:57.73ID:TC+kSar6 むしろこれがないとバイナリ扱えないでしょ画像を扱えなくなる
裏技っぽいとか今更言われても困るわ
裏技っぽいとか今更言われても困るわ
814名無し~3.EXE
2015/12/05(土) 22:45:26.11ID:HCxkbB1B ありがとう。大丈夫らしいとのことなのでとりあえず組んでみるかな・・・
あまりにも遅かったらRubyにしよう
>>812
読み込んだ値をテーブルで変換したりビット演算したりしないと
正しい値を得られない仕様を正攻法と呼ぶのは違和感があります
このために1byteずつしか読み込めませんし
あまりにも遅かったらRubyにしよう
>>812
読み込んだ値をテーブルで変換したりビット演算したりしないと
正しい値を得られない仕様を正攻法と呼ぶのは違和感があります
このために1byteずつしか読み込めませんし
815名無し~3.EXE
2015/12/05(土) 23:05:01.61ID:4BdTphf4816名無し~3.EXE
2015/12/05(土) 23:23:02.80ID:8/N/dh/l817名無し~3.EXE
2015/12/05(土) 23:31:52.89ID:8/N/dh/l これは>>814のレス内容からの推測なので違ってるのかも知れない
jscriptだと勝手に思ったし、jscriptでも
wsfとかでvbscript連携して読むなり
Msxml2.DOMDocumentでhex文字列に変換するなり別の方法はあるとは思う
jscriptだと勝手に思ったし、jscriptでも
wsfとかでvbscript連携して読むなり
Msxml2.DOMDocumentでhex文字列に変換するなり別の方法はあるとは思う
818名無し~3.EXE
2015/12/06(日) 00:42:46.08ID:F68eazf1 VBScriptの記事だとこの辺か。
ttp://history-music.net/vbscript-base64-hex-binary/
ググると「iso-8859-1で...」みたいなページが多いから勘違いするのも仕方がないけど,
Microsoft.XMLDOMかMsxml2.DOMDocumentオブジェクト使って,
16進文字列とバイナリを相互変換する方がいいよ。
1byteずつなんて制限はないし,十分早いと思う。
ttp://history-music.net/vbscript-base64-hex-binary/
ググると「iso-8859-1で...」みたいなページが多いから勘違いするのも仕方がないけど,
Microsoft.XMLDOMかMsxml2.DOMDocumentオブジェクト使って,
16進文字列とバイナリを相互変換する方がいいよ。
1byteずつなんて制限はないし,十分早いと思う。
819名無し~3.EXE
2015/12/07(月) 17:51:14.07ID:vQfNZVDF ごめん、変換とかいうはなしはどこから出てくるんだろう。
「バイナリファイルを正常に読めることを前提」とあるから
まあバイナリファイルを読んで何かするんだろうけど。
「バイナリファイルを正常に読めることを前提」とあるから
まあバイナリファイルを読んで何かするんだろうけど。
820名無し~3.EXE
2015/12/07(月) 17:53:50.73ID:UNNqcniz821名無し~3.EXE
2015/12/07(月) 17:57:55.04ID:vQfNZVDF822名無し~3.EXE
2015/12/07(月) 18:05:05.11ID:vQfNZVDF この辺の話か。なるほど。
FileStream.js - binary file manipulation for WSH
http://hp.vector.co.jp/authors/VA033015/fsjs.html
前提条件/制約とのトレードオフだろうね。
「OSの素のままの状態でスクリプトだけで動く」必要があるならWSHでやるしかなかろう。
FileStream.js - binary file manipulation for WSH
http://hp.vector.co.jp/authors/VA033015/fsjs.html
前提条件/制約とのトレードオフだろうね。
「OSの素のままの状態でスクリプトだけで動く」必要があるならWSHでやるしかなかろう。
823名無し~3.EXE
2015/12/07(月) 18:12:43.86ID:UNNqcniz824名無し~3.EXE
2015/12/07(月) 18:32:53.45ID:vQfNZVDF >>823
まったくその通りだ。
おかげでこんなのを見つけた。ありがとう。
JScriptでBase64 on @Qiita
http://qiita.com/tnakagawa/items/beaec98fd64b20894245
まったくその通りだ。
おかげでこんなのを見つけた。ありがとう。
JScriptでBase64 on @Qiita
http://qiita.com/tnakagawa/items/beaec98fd64b20894245
825名無し~3.EXE
2015/12/10(木) 00:17:53.24ID:n+FmGR1Q >>822
そのプログラムにはバグがあります。
ファイル終端付近に 0xBF があると,数バイトを読み落とします。
たとえば,半角カタカナで
クソミソ
とだけ書かれたファイルを dump.js に与えると,最初の1バイトしか出力されません。
そのプログラムにはバグがあります。
ファイル終端付近に 0xBF があると,数バイトを読み落とします。
たとえば,半角カタカナで
クソミソ
とだけ書かれたファイルを dump.js に与えると,最初の1バイトしか出力されません。
826810
2015/12/13(日) 20:21:45.77ID:E2f6+XvN ありがとうございます。試していて大分かかりました
>>818
>ググると「iso-8859-1で...」みたいなページが多い
はい、その通りでiso-8859-1を使う方法しかないと思っていました
ADODB.Stream&Type=1でAviraが騒ぐ以外は問題なさそうなので
これでいこうと思います。ありがとうございました
byte列の長さを容易に得られない?のがちょっと面倒ですね
>>818
>ググると「iso-8859-1で...」みたいなページが多い
はい、その通りでiso-8859-1を使う方法しかないと思っていました
ADODB.Stream&Type=1でAviraが騒ぐ以外は問題なさそうなので
これでいこうと思います。ありがとうございました
byte列の長さを容易に得られない?のがちょっと面倒ですね
827名無し~3.EXE
2015/12/14(月) 01:24:17.95ID:ZAD57Ykk >>826
> byte列の長さを容易に得られない?のがちょっと面倒ですね
確かに。
バイナリオブジェクトには長さどころか,プロパティもメソッドも何もないように見えます。
ADODB.Stream で Read する前後の .Position の差を覚えておくのが最良ですが,
後から得ようとするのも,困難というほどでもないですね。
(1) ADODB.Stream で .Position = 0 からバイナリを Write した後の .Position を返す関数を作る。
(2) Msxml2.DOMDocument で .nodeTypedValue へバイナリをセットし,.text.length / 2 を返す関数を作る。
どちらもクロージャにした方が速いですね。
> byte列の長さを容易に得られない?のがちょっと面倒ですね
確かに。
バイナリオブジェクトには長さどころか,プロパティもメソッドも何もないように見えます。
ADODB.Stream で Read する前後の .Position の差を覚えておくのが最良ですが,
後から得ようとするのも,困難というほどでもないですね。
(1) ADODB.Stream で .Position = 0 からバイナリを Write した後の .Position を返す関数を作る。
(2) Msxml2.DOMDocument で .nodeTypedValue へバイナリをセットし,.text.length / 2 を返す関数を作る。
どちらもクロージャにした方が速いですね。
828名無し~3.EXE
2015/12/21(月) 08:04:57.72ID:oIXUP+md var fs = new ActiveXObject( "Scripting.FileSystemObject" );
fs.DeleteFile( "B:/VwCache/*.vch" );
fs = null;
これが該当ファイル無しのときエラー出なくしたい
こんなレベルの質問扱ってるスレ教えてください
fs.DeleteFile( "B:/VwCache/*.vch" );
fs = null;
これが該当ファイル無しのときエラー出なくしたい
こんなレベルの質問扱ってるスレ教えてください
829名無し~3.EXE
2015/12/21(月) 08:58:20.76ID:9BHMYjvS830名無し~3.EXE
2015/12/21(月) 15:26:06.84ID:tdjWLmvu いやjscriptだろ
try 〜 catch(e)で囲むだろ
だけど、*.vchがファイル名を隠しているんじゃなく、
ワイルドカードで複数ファイル指定のつもりならダメだろ
try 〜 catch(e)で囲むだろ
だけど、*.vchがファイル名を隠しているんじゃなく、
ワイルドカードで複数ファイル指定のつもりならダメだろ
831名無し~3.EXE
2015/12/21(月) 15:30:35.86ID:tdjWLmvu あ、ワイルカード使えるのか、知らんかった
833名無し~3.EXE
2015/12/23(水) 15:52:38.58ID:8RHLFxCl834名無し~3.EXE
2016/01/02(土) 02:41:57.72ID:8rznOPo8 JScriptで展開されていないコマンドライン文字列を取得することは出来ませんかね?
コマンドラインオプションを改変するラッパーを作りたいのですがWScript.Arguments
だと展開されて"が削除されていて再構成するのがかなり手間になってしまいます
コマンドラインオプションを改変するラッパーを作りたいのですがWScript.Arguments
だと展開されて"が削除されていて再構成するのがかなり手間になってしまいます
835名無し~3.EXE
2016/01/02(土) 18:34:26.41ID:J4AIyaR1 >>834
どうしても,というなら方法はないでもない。
WMIから自分自身のプロセスを見つけ出せば,
生のコマンドライン(Description)が得られるので,それを解析すればよい。
wsh WbemScripting.SWbemLocator Win32_Process
あたりをキーワードにググってください。
どうしても,というなら方法はないでもない。
WMIから自分自身のプロセスを見つけ出せば,
生のコマンドライン(Description)が得られるので,それを解析すればよい。
wsh WbemScripting.SWbemLocator Win32_Process
あたりをキーワードにググってください。
836名無し~3.EXE
2016/01/05(火) 17:47:40.34ID:tW2wW1r9 >>835
面白そうなので試してみた
自プロセスを特定するのと引数から無効なものを除外しなくてはならないのがマイナス点
・自プロセスの特定
wscript.exeまたはcscript.exeでイメージ名を検索するだけでも大抵は大丈夫だろうが
もう少し厳密にやろうとすると引数に自scriptファイル名があるかどうかをチェック
さらに多重起動の場合も考慮してもっと厳密に特定しようとするなら
何か子プロセスを起動(cmd.exeとか)し、そのPIDでクエリーを限定し、
親PID(これが自プロセスになる)を求める
もっと簡単な方法何かある?
・引数からcscript.exeの引数を削除する
例えば、 cscript xxx.js "a" 1 "b" //nologo "c"
とかだと、//nologoは取り除かないといけない
面白そうなので試してみた
自プロセスを特定するのと引数から無効なものを除外しなくてはならないのがマイナス点
・自プロセスの特定
wscript.exeまたはcscript.exeでイメージ名を検索するだけでも大抵は大丈夫だろうが
もう少し厳密にやろうとすると引数に自scriptファイル名があるかどうかをチェック
さらに多重起動の場合も考慮してもっと厳密に特定しようとするなら
何か子プロセスを起動(cmd.exeとか)し、そのPIDでクエリーを限定し、
親PID(これが自プロセスになる)を求める
もっと簡単な方法何かある?
・引数からcscript.exeの引数を削除する
例えば、 cscript xxx.js "a" 1 "b" //nologo "c"
とかだと、//nologoは取り除かないといけない
837834
2016/01/05(火) 21:10:05.30ID:MtYMuNGE ありがとうございます。作っている途中で親となるプログラムがcscript.exe hoge.jsな感じで
呼び出せないことが判りバッチファイルもどきになりました・・・
@if(0)==(0) ECHO OFF
set COMMANDLINE=%CMDCMDLINE%
cscript.exe //nologo //E:JScript "%~f0"
set COMMANDLINE=
GOTO :EOF
@end
var shell = new ActiveXObject("WScript.Shell");
var env = shell.Environment("Process");
command_line = env.Item("COMMANDLINE")
WScript.Echo(command_line);
呼び出せないことが判りバッチファイルもどきになりました・・・
@if(0)==(0) ECHO OFF
set COMMANDLINE=%CMDCMDLINE%
cscript.exe //nologo //E:JScript "%~f0"
set COMMANDLINE=
GOTO :EOF
@end
var shell = new ActiveXObject("WScript.Shell");
var env = shell.Environment("Process");
command_line = env.Item("COMMANDLINE")
WScript.Echo(command_line);
838名無し~3.EXE
2016/01/05(火) 21:41:47.92ID:tW2wW1r9839834
2016/01/05(火) 22:43:02.46ID:MtYMuNGE840名無し~3.EXE
2016/01/11(月) 22:00:15.25ID:J7oSqT1d var fso = new ActiveXObject("Scripting.FileSystemObject");
var ws = WScript.CreateObject("WScript.Shell");
WScript.Echo(fso.GetAbsolutePathName(args(0)));
「ハート?はーと.txt(?はユニコードのハートマーク)」と「ハート_はーと.txt」が同じフォルダに有る場合に、
ユニコードハートマーク付きのファイルを上記のバッチにD&Dするとアンダーバーの有る「ハート_はーと.txt」が返ってくる。
js vbs wsf 全部だめ。
アンダーバーだけでなく、ハートマークの場所にascii文字が一文字入る一字違いのファイルを誤検索しているみたい。
batファイルでフルパスをechoさせると正しい名前が返ってくるので、bat経由でjsに引数が渡すと正常になった。
でもbat使うのは癪なのでwshだけで回避する方法ありませんか?
var ws = WScript.CreateObject("WScript.Shell");
WScript.Echo(fso.GetAbsolutePathName(args(0)));
「ハート?はーと.txt(?はユニコードのハートマーク)」と「ハート_はーと.txt」が同じフォルダに有る場合に、
ユニコードハートマーク付きのファイルを上記のバッチにD&Dするとアンダーバーの有る「ハート_はーと.txt」が返ってくる。
js vbs wsf 全部だめ。
アンダーバーだけでなく、ハートマークの場所にascii文字が一文字入る一字違いのファイルを誤検索しているみたい。
batファイルでフルパスをechoさせると正しい名前が返ってくるので、bat経由でjsに引数が渡すと正常になった。
でもbat使うのは癪なのでwshだけで回避する方法ありませんか?
841名無し~3.EXE
2016/01/11(月) 23:36:21.38ID:kaus+mbm843名無し~3.EXE
2016/01/15(金) 14:05:01.93ID:1cRaToeH Windows7 64bitでIE10からIE11にしたら今まで使えていたログインスクリプトでエラーが出るようになりました
原因が分からないので助けてください
IE = WScript.CreateObject("InternetExplorer.Application");
IE.Visible = true;
IE.Navigate("https://hogehoge/login");
WScript.Sleep(10000);
IE.Document.forms(0).elements("id").value = "hogeID";
IE.Document.forms(0).elements("password").value = "hogePASS";//フォームに入力はできている
IE.Document.forms(0).all.tags("INPUT").item(2).click();//←IE11ではここでエラーが出るようになった
WScript.Quit(0);
エラーの内容は「IE.Document.forms(...).allはNullまたはオブジェクトではありません」です。
よろしくお願いします。
原因が分からないので助けてください
IE = WScript.CreateObject("InternetExplorer.Application");
IE.Visible = true;
IE.Navigate("https://hogehoge/login");
WScript.Sleep(10000);
IE.Document.forms(0).elements("id").value = "hogeID";
IE.Document.forms(0).elements("password").value = "hogePASS";//フォームに入力はできている
IE.Document.forms(0).all.tags("INPUT").item(2).click();//←IE11ではここでエラーが出るようになった
WScript.Quit(0);
エラーの内容は「IE.Document.forms(...).allはNullまたはオブジェクトではありません」です。
よろしくお願いします。
844名無し~3.EXE
2016/01/15(金) 19:15:04.74ID:m4ouY6Y+ submitじゃいかんのか?
845名無し~3.EXE
2016/01/15(金) 20:07:12.70ID:2oeFgdaL ちょっとは自分で調べようぜ、拾った物の使い回しで意味分かってないんだろうけど
原因はIE11からdocument.all等の独自APIが廃止されたから
そもそも今時allとかtagsとかつかわねーよ
原因はIE11からdocument.all等の独自APIが廃止されたから
そもそも今時allとかtagsとかつかわねーよ
846名無し~3.EXE
2016/01/16(土) 20:44:38.70ID:4ar8fcff847843
2016/01/20(水) 19:33:11.23ID:FcdOnjAY >>844>>845
遅れましたがお答えありがとうございました
エラーが出ていた箇所をこれにして動くようになりました
IE.Document.forms(0).getElementsByTagName("input")[2].click();
遅れましたがお答えありがとうございました
エラーが出ていた箇所をこれにして動くようになりました
IE.Document.forms(0).getElementsByTagName("input")[2].click();
848名無し~3.EXE
2016/02/04(木) 19:41:28.05ID:WGr+Whcp jsにデストラクタってないの?
ラップしたエクセルの終了処理をやらせたいんだが
ラップしたエクセルの終了処理をやらせたいんだが
849名無し~3.EXE
2016/02/04(木) 23:22:04.84ID:pXBj/cEo850名無し~3.EXE
2016/02/04(木) 23:34:03.33ID:z164XvtZ >>849
Class ExcelWrapper
Private Sub Class_Terminate
' VBSでいうならこれ
End Sub
End Class
jsの言語仕様としては無いんだろうけどなんかトリック的に実現する方法はないんか
Class ExcelWrapper
Private Sub Class_Terminate
' VBSでいうならこれ
End Sub
End Class
jsの言語仕様としては無いんだろうけどなんかトリック的に実現する方法はないんか
852名無し~3.EXE
2016/02/05(金) 18:33:52.63ID:YVp5K4JV853名無し~3.EXE
2016/02/05(金) 18:52:01.85ID:ZPb/lDba finallyでEXCELの終了処理でいいんじゃないの、それともフックの解放とかそういう意味なの
854名無し~3.EXE
2016/02/05(金) 18:56:57.56ID:YVp5K4JV >>853
finallyとか面倒くさい。オブジェクトにやらせたい
newしたらエクセルが立ち上がり、変数がスコープから外れたら自動的ににエクセルが終わるようにしたい
フックの解放っていうのはよくわからん(´・ω・`)
finallyとか面倒くさい。オブジェクトにやらせたい
newしたらエクセルが立ち上がり、変数がスコープから外れたら自動的ににエクセルが終わるようにしたい
フックの解放っていうのはよくわからん(´・ω・`)
855名無し~3.EXE
2016/02/05(金) 22:48:20.11ID:0wOAx0Cl 無いものねだっているようにしか見えないんだが
WSHに限らずGCを持つ言語でデストラクタが
あるのってほとんど無くね?
ファイナライザを持つ言語ならそれなりにあるみたいだけど
これは実行される保証がないしな
WSHに限らずGCを持つ言語でデストラクタが
あるのってほとんど無くね?
ファイナライザを持つ言語ならそれなりにあるみたいだけど
これは実行される保証がないしな
856名無し~3.EXE
2016/02/05(金) 23:06:43.00ID:qE3E4htL 結論は、無いものは諦めて、newした者が責任を持って解放する
857名無し~3.EXE
2016/02/06(土) 00:30:26.79ID:RaAe5E/b ふぁっく(´・ω・`)
858名無し~3.EXE
2016/02/09(火) 06:40:42.12ID:lLVVtK0e (new ActiveXObject("Scripting.FileSystemObject")).DeleteFile(WScript.ScriptFullName,true);
みたいにやったら自分自身のファイルを削除できますが
実行開始された後はファイルがどうなろうが問題ないと考えていいでしょうか?
みたいにやったら自分自身のファイルを削除できますが
実行開始された後はファイルがどうなろうが問題ないと考えていいでしょうか?
860名無し~3.EXE
2016/02/10(水) 06:37:45.67ID:t7gHrzUx やってみた限りは問題なさそうなのですが
絶対に問題がないと言えるのか?と思いまして
絶対に問題がないと言えるのか?と思いまして
861名無し~3.EXE
2016/02/10(水) 07:50:58.34ID:t7gHrzUx アクティブなウインドウを判定して、
キーを送りたいアプリがアクティブならキーを送る、ということをしたいと思い
探していたのですが
http://stackoverflow.com/questions/26341753/how-to-find-the-window-title-of-activeforeground-window-using-window-script-ho
ここを見ると、WSHでは出来ないというようなことが書いてありました
出来て当たり前の簡単な処理だと思うのですが、本当に出来ないのでしょうか?
キーを送りたいアプリがアクティブならキーを送る、ということをしたいと思い
探していたのですが
http://stackoverflow.com/questions/26341753/how-to-find-the-window-title-of-activeforeground-window-using-window-script-ho
ここを見ると、WSHでは出来ないというようなことが書いてありました
出来て当たり前の簡単な処理だと思うのですが、本当に出来ないのでしょうか?
862名無し~3.EXE
2016/02/10(水) 11:57:56.00ID:9GMi27N7 WSHで出来なければ出来る言語でやればいいだけ
こんな所でゴネてないで自分の不勉強を猛省しろ
こんな所でゴネてないで自分の不勉強を猛省しろ
863名無し~3.EXE
2016/02/10(水) 13:12:04.28ID:t7gHrzUx WSHのいいところは簡単に使えるところなので
わざわざたとえばCを使わないといけないとなると本末転倒なのですよ
どう考えても実装も難しくもない、あって当たり前の機能ですよね
本当にないのかどうかは知りませんが
わざわざたとえばCを使わないといけないとなると本末転倒なのですよ
どう考えても実装も難しくもない、あって当たり前の機能ですよね
本当にないのかどうかは知りませんが
864名無し~3.EXE
2016/02/10(水) 14:06:37.17ID:HysS88Z6 >どう考えても実装も難しくもない、あって当たり前の機能
だったらそーゆー機能があるCOMを自分で実装して
それをWSHから呼び出せばいい
難しくないんでしょ?
だったらそーゆー機能があるCOMを自分で実装して
それをWSHから呼び出せばいい
難しくないんでしょ?
865名無し~3.EXE
2016/02/10(水) 14:50:28.68ID:t7gHrzUx いや、逆に難しいと思うんですか?
考えたら分かりますがめちゃくちゃ簡単ですよね?
「面倒くさい」と「難しい」は違うのです
分かりますね?
考えたら分かりますがめちゃくちゃ簡単ですよね?
「面倒くさい」と「難しい」は違うのです
分かりますね?
866名無し~3.EXE
2016/02/10(水) 16:18:49.46ID:9GMi27N7 いくら煽っても「ほら出来るやん」なんて誰も調べてくれないしやってくれないよ
867名無し~3.EXE
2016/02/10(水) 18:27:12.59ID:CIhAnhaS868名無し~3.EXE
2016/02/11(木) 03:13:32.67ID:co5P5jGL そもそもwshの組み込み機能とは違い、COMの作り方次第になってくるんだから
そういうCOMを作るか探すかすればいい
WIN APIを呼び出すCOMなんてのも世の中には幾つかあるぞ
そういうCOMを作るか探すかすればいい
WIN APIを呼び出すCOMなんてのも世の中には幾つかあるぞ
869名無し~3.EXE
2016/02/12(金) 09:42:04.77ID:w4vWZ7y9 windowキーは^{ESC}で送れると分かったのですが
windowキーを修飾キーとして使う場合はどう書けばいいですか?
windowキーを修飾キーとして使う場合はどう書けばいいですか?
870名無し~3.EXE
2016/02/12(金) 11:40:40.49ID:w4vWZ7y9 var result = GetObject("winmgmts:\\\\.\\root\\cimv2").
ExecQuery("Select * from Win32_Process where Name='hoge.exe'")
みたいな方法で返ってきたオブジェクトから
一つ目のアイテムを取得するにはどうすればいいですか?
ネットで探すと、
var list = new Enumerator(result);
みたいな形でEnumeratorに変換してから回すのが普通のようですが
結果が一つと分かっている時にこのやり方をするのは気持ち悪いです
ExecQuery("Select * from Win32_Process where Name='hoge.exe'")
みたいな方法で返ってきたオブジェクトから
一つ目のアイテムを取得するにはどうすればいいですか?
ネットで探すと、
var list = new Enumerator(result);
みたいな形でEnumeratorに変換してから回すのが普通のようですが
結果が一つと分かっている時にこのやり方をするのは気持ち悪いです
871名無し~3.EXE
2016/02/12(金) 12:15:22.45ID:1hkdGDkD873名無し~3.EXE
2016/02/12(金) 19:11:38.98ID:Ax0/YVze 関数でラップしなさいよ
874名無し~3.EXE
2016/02/12(金) 21:58:43.39ID:CAT/93Hm >>870
Vista以降ならItemIndexメソッドが使える
XPならEnumeratorで頑張れ
GetObject("winmgmts://").ExecQuery("Select * from Win32_Process where Name='hoge.exe'").ItemIndex(0)
Vista以降ならItemIndexメソッドが使える
XPならEnumeratorで頑張れ
GetObject("winmgmts://").ExecQuery("Select * from Win32_Process where Name='hoge.exe'").ItemIndex(0)
875名無し~3.EXE
2016/02/12(金) 23:07:45.95ID:CAT/93Hm SWbemObjectSet.ItemIndex method
https://msdn.microsoft.com/en-us/library/windows/desktop/aa826600(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/windows/desktop/aa826600(v=vs.85).aspx
876名無し~3.EXE
2016/02/21(日) 12:12:25.97ID:14Rd5RPG やや亀レスだが,全部まとめて AutoItX をインストールというかdllを登録すればできる。
http://blog.livedoor.jp/blackcode/archives/1795724.html
登録しなくてもマニフェスト作ればできる。
>>861 は AutoItX の WinActive と Send を使え。
>>869 は AutoItX の Send('{LWIN}') か Send('{RWIN}') を使え。
http://blog.livedoor.jp/blackcode/archives/1795724.html
登録しなくてもマニフェスト作ればできる。
>>861 は AutoItX の WinActive と Send を使え。
>>869 は AutoItX の Send('{LWIN}') か Send('{RWIN}') を使え。
877名無し~3.EXE
2016/02/22(月) 21:04:18.77ID:jrwG3GCh WSHのメリットってWindows標準である事だと思う
オートメーションサーバーを持ち込むくらいならRubyなりPythonなりを
持ち込んで利用した方がより効率的に開発・実装出来るのでは
オートメーションサーバーを持ち込むくらいならRubyなりPythonなりを
持ち込んで利用した方がより効率的に開発・実装出来るのでは
878名無し~3.EXE
2016/02/22(月) 22:34:35.27ID:QBaH99ha >>877
Pythonだけではできないから Sikuli や WebDriver や AutoItX があるわけなのだが
Pythonだけではできないから Sikuli や WebDriver や AutoItX があるわけなのだが
879名無し~3.EXE
2016/03/01(火) 09:01:36.69ID:iP3HRupc エンジニアのモチベーションを下げる方法
ttp://d.hatena.ne.jp/jflute/touch/20160221/downmoti
IT系のエンジニアは、なかなか世間一般の方々から、
やっていることを理解されにくいものです。
何が簡単で、何が難しいのか、なかなかわからないもの。
しかも、そう思われていることを、
エンジニア自身よくわかっていて、
それがコンプレックスでもあったりします。
開発しようとしている画面があったとして、
画面の見た目から来るイメージと、
実際のプログラミングの難しさはなかなか比例しません。
簡単そうな画面でも作るのは難しい、よくあることです。
なので、よくわかってないフリして、
「えっ、こんなの簡単に作れるでしょ?」
って言ってあげると、大抵「はぁ!?」って表情をします。
ちょっと納得がいかないだけなら、
モチベーションを下げたことにならないですが、
そういうことを何度も何度も言い続けることで、
「難しいことを実現しても評価されないのでは...」
って気持ちになるので、
しっかりモチベーションを下げられます。
実際に、難しい画面を頑張って速く作り上げたエンジニアに、
「あー簡単そうな画面だったもんね、じゃあすぐ次これ作って」
と、軽くあしらってあげると効果が相当高いです。
ttp://d.hatena.ne.jp/jflute/touch/20160221/downmoti
IT系のエンジニアは、なかなか世間一般の方々から、
やっていることを理解されにくいものです。
何が簡単で、何が難しいのか、なかなかわからないもの。
しかも、そう思われていることを、
エンジニア自身よくわかっていて、
それがコンプレックスでもあったりします。
開発しようとしている画面があったとして、
画面の見た目から来るイメージと、
実際のプログラミングの難しさはなかなか比例しません。
簡単そうな画面でも作るのは難しい、よくあることです。
なので、よくわかってないフリして、
「えっ、こんなの簡単に作れるでしょ?」
って言ってあげると、大抵「はぁ!?」って表情をします。
ちょっと納得がいかないだけなら、
モチベーションを下げたことにならないですが、
そういうことを何度も何度も言い続けることで、
「難しいことを実現しても評価されないのでは...」
って気持ちになるので、
しっかりモチベーションを下げられます。
実際に、難しい画面を頑張って速く作り上げたエンジニアに、
「あー簡単そうな画面だったもんね、じゃあすぐ次これ作って」
と、軽くあしらってあげると効果が相当高いです。
880名無し~3.EXE
2016/03/20(日) 17:58:54.66ID:ftoiXc16 WScript.CreateObject("InternetExplorer.Application")
を利用してIEの自動操縦をしています
win10へのアップグレードを考えていたのですが
この手のスクリプトはwindows10で動くのでしょうか?
を利用してIEの自動操縦をしています
win10へのアップグレードを考えていたのですが
この手のスクリプトはwindows10で動くのでしょうか?
882名無し~3.EXE
2016/04/26(火) 02:43:57.89ID:xrGaHN5D htmlfileコンポーネントでダミーのwindowを作ってjsライブラリをロードするのはみんなやってると思う
そこでローカルフォルダの構造をdomに変換してjQueryをファイルセレクタ代わりにしてみた
// カレントディレクトリ以下の構造をbody内に再現する。File/Folderオブジェクトのプロパティはdata-*属性にしている
(function($folder, folder){
var keys = "Attributes DateCreated DateLastAccessed DateLastModified Drive Name Path ShortName ShortPath Size Type".split(" ");
for(var subFolders=new Enumerator(folder.SubFolders); !subFolders.atEnd(); subFolders.moveNext()) {
var subFolder = subFolders.item();
var $subFolder = $folder.append("<div>").find("div:last");
$subFolder.addClass("folder");
$.each(keys, function(){$subFolder.attr("data-"+this, subFolder[this]);});
arguments.callee($subFolder, subFolder);
}
for(var files=new Enumerator(folder.Files); !files.atEnd(); files.moveNext()) {
var file = files.item();
var $file = $folder.append("<div>").find("div:last");
$file.addClass("file");
$.each(keys, function(){$file.attr("data-"+this, file[this]);});
}
})($("body"), new ActiveXObject("Scripting.FileSystemObject").GetFolder(new ActiveXObject("WScript.Shell").CurrentDirectory));
// 例:テキストファイルをすべて選択
$(".file[data-Name$='\.txt']").each(function(){WScript.Echo($(this).attr("data-Path"));});
とりあえずアイディアを形にしただけなんでカスタムして使ってくれ(´・ω・`)
そこでローカルフォルダの構造をdomに変換してjQueryをファイルセレクタ代わりにしてみた
// カレントディレクトリ以下の構造をbody内に再現する。File/Folderオブジェクトのプロパティはdata-*属性にしている
(function($folder, folder){
var keys = "Attributes DateCreated DateLastAccessed DateLastModified Drive Name Path ShortName ShortPath Size Type".split(" ");
for(var subFolders=new Enumerator(folder.SubFolders); !subFolders.atEnd(); subFolders.moveNext()) {
var subFolder = subFolders.item();
var $subFolder = $folder.append("<div>").find("div:last");
$subFolder.addClass("folder");
$.each(keys, function(){$subFolder.attr("data-"+this, subFolder[this]);});
arguments.callee($subFolder, subFolder);
}
for(var files=new Enumerator(folder.Files); !files.atEnd(); files.moveNext()) {
var file = files.item();
var $file = $folder.append("<div>").find("div:last");
$file.addClass("file");
$.each(keys, function(){$file.attr("data-"+this, file[this]);});
}
})($("body"), new ActiveXObject("Scripting.FileSystemObject").GetFolder(new ActiveXObject("WScript.Shell").CurrentDirectory));
// 例:テキストファイルをすべて選択
$(".file[data-Name$='\.txt']").each(function(){WScript.Echo($(this).attr("data-Path"));});
とりあえずアイディアを形にしただけなんでカスタムして使ってくれ(´・ω・`)
883名無し~3.EXE
2016/05/20(金) 01:19:03.63ID:LoMnSF9C エクセルのマクロをVBAやVB以外の言語で使いたいのですがWSHというのでJavaScriptを使うくらいしかないですか?
なんか難しそうなので扱えるかはわからないですが
なんか難しそうなので扱えるかはわからないですが
884名無し~3.EXE
2016/05/21(土) 07:18:01.83ID:KwoUOh5H VBA使えるならVBScriptはほぼ同じ
885名無し~3.EXE
2016/05/21(土) 15:46:05.82ID:r5Tb0hTU ActiveXObject(
886名無し~3.EXE
2016/05/23(月) 19:28:44.88ID:OI4UmGVD Win10 64-bit で、WSCの登録を、
64-bitで行えば、32-bitアプリから起動したスクリプトで使えず、
32-bitで行えば、64-bitアプリから起動したスクリプトで使えず。
後から登録したほうだけが有効になる。
どうしたものか。
64-bitで行えば、32-bitアプリから起動したスクリプトで使えず、
32-bitで行えば、64-bitアプリから起動したスクリプトで使えず。
後から登録したほうだけが有効になる。
どうしたものか。
887名無し~3.EXE
2016/05/25(水) 13:06:05.60ID:p984sqbS どっちかに統一してwscriptなりのパスを絶対パス指定すりゃいいんじゃないの
今後bit幅判定は避けて通れないだろうし
今後bit幅判定は避けて通れないだろうし
888名無し~3.EXE
2016/05/25(水) 17:08:32.50ID:LNEVb08i 32bit(64bit)で起動されたかを判断し違ってたら起動し直すってのは検索すれば出てくるので、
WSCをどっちかでのみ処置するようにするか、両方で別々に32bit用、64bit用の両方登録するかとか
WSCをどっちかでのみ処置するようにするか、両方で別々に32bit用、64bit用の両方登録するかとか
889名無し~3.EXE
2016/05/26(木) 01:13:50.51ID:c8sEm+SQ JScriptでreplaceによる正規表現の置換で、
置換後文字列にキャプチャ文字列参照の特殊変数とその直後に数字を書きたい場合
どのように書けばいいですか?
例えば、$1で参照した文字列の直後に0を書きたいとかで
"$10"とやると、10番目のキャプチャ文字列の参照になっちゃう
他環境だと、"${1}0"と書けるみたいだがWSHでは参照にならない
置換後文字列にキャプチャ文字列参照の特殊変数とその直後に数字を書きたい場合
どのように書けばいいですか?
例えば、$1で参照した文字列の直後に0を書きたいとかで
"$10"とやると、10番目のキャプチャ文字列の参照になっちゃう
他環境だと、"${1}0"と書けるみたいだがWSHでは参照にならない
890名無し~3.EXE
2016/05/26(木) 04:54:10.50ID:2Z2dZzlv $010
891名無し~3.EXE
2016/05/26(木) 18:15:27.58ID:c8sEm+SQ892名無し~3.EXE
2016/05/26(木) 19:15:53.60ID:Am4E4DkT t
893名無し~3.EXE
2016/05/28(土) 16:48:01.65ID:8bw60KMu C:\Windows\SysWOW64\cmd.exe
から
C:\Windows\System32\wscript.exe
を実行したら、
C:\Windows\SysWOW64\wscript.exe
が起動された。
C:\Windows\System32\cmd.exe
から
C:\Windows\SysWOW64\wscript.exe
を実行したら、これが起動した。
択一なら、32bitに統一する方が汎用性が高いということか。
そうしておくよ、ありがとう。>>887-888
から
C:\Windows\System32\wscript.exe
を実行したら、
C:\Windows\SysWOW64\wscript.exe
が起動された。
C:\Windows\System32\cmd.exe
から
C:\Windows\SysWOW64\wscript.exe
を実行したら、これが起動した。
択一なら、32bitに統一する方が汎用性が高いということか。
そうしておくよ、ありがとう。>>887-888
894名無し~3.EXE
2016/06/20(月) 19:48:39.36ID:r7gHHjMI おいぽまいら教えろ下さい、dotnetのライブラリを叩く際にだね
これは動かない
var random = new ActiveXObject("System.Random");
random.Next(1, 10);
これは動く
var random = new ActiveXObject("System.Random");
random.Next_2(1, 10);
上が動かないのは分かる、型宣言が出来ないからだ
じゃあ下は何故動くんだ、この_2は何を意味するの
これは動かない
var random = new ActiveXObject("System.Random");
random.Next(1, 10);
これは動く
var random = new ActiveXObject("System.Random");
random.Next_2(1, 10);
上が動かないのは分かる、型宣言が出来ないからだ
じゃあ下は何故動くんだ、この_2は何を意味するの
895名無し~3.EXE
2016/06/20(月) 20:14:06.28ID:FmZLWojr さあ
896名無し~3.EXE
2016/06/20(月) 21:44:37.70ID:r7gHHjMI ああ何となく事故解決した、オーバーロードなんて仕様ないからケツに数字付けて区別するのか
型宣言とか全く関係なかった、数字の振り方の規則性がこれまたよく分からんがトライアンドエラーしかないのか
ちなみにSystem.Randomだとこうなるみたい
Next()→Next()
Next(Int32)→Next_3(Int32)
Next(Int32, Int32)→Next_2(Int32, Int32)
型宣言とか全く関係なかった、数字の振り方の規則性がこれまたよく分からんがトライアンドエラーしかないのか
ちなみにSystem.Randomだとこうなるみたい
Next()→Next()
Next(Int32)→Next_3(Int32)
Next(Int32, Int32)→Next_2(Int32, Int32)
897名無し~3.EXE
2016/07/18(月) 13:49:40.77ID:FluRcm0P すみません、全くの素人です。
アプリのアプリケーションキーの「(T)」を出力するだけのファイルを作りたいです。
どう書いたらいいですか。
アプリのアプリケーションキーの「(T)」を出力するだけのファイルを作りたいです。
どう書いたらいいですか。
898名無し~3.EXE
2016/07/18(月) 14:58:15.83ID:FluRcm0P 自己解決
Set objShell = WScript.CreateObject("WScript.Shell")
WScript.Sleep 50
objShell.SendKeys "%(T)"
Set objShell = WScript.CreateObject("WScript.Shell")
WScript.Sleep 50
objShell.SendKeys "%(T)"
899名無し~3.EXE
2016/07/20(水) 11:55:20.08ID:XFWp37Gp vbsを使って社内システムへの自動ログイン処理をしたいと思っています。
yahooへは問題なくidpassを入れてログインできるのですが、社内システムの場合はエラーが表示されidpassも表示されません。
"エラーを特定できません"のエラーが表示されます。
どうも信頼済みサイトに登録されていることが原因というようなwebの記載を見つけました。
この場合は回避策はないのでしょうか。
yahooへは問題なくidpassを入れてログインできるのですが、社内システムの場合はエラーが表示されidpassも表示されません。
"エラーを特定できません"のエラーが表示されます。
どうも信頼済みサイトに登録されていることが原因というようなwebの記載を見つけました。
この場合は回避策はないのでしょうか。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【文春】永野芽郁(25)&田中圭(40)燃え上がる不倫LINE ★29 [Ailuropoda melanoleuca★]
- 【バチカン】「コンクラーベ」新ローマ教皇決定 白い煙あがる [シャチ★]
- 気持ち悪ッ!大阪・関西万博の大屋根リングに虫が大量発生…日刊ゲンダイカメラマンも「肌にまとわりつく」と目撃証言 [バイト歴50年★]
- 【バチカン】第267代ローマ教皇にアメリカ出身のロバート・プレヴォスト枢機卿 教皇名はレオ14世 [シャチ★]
- <独自>イスラエル人客に「戦争犯罪」関与否定の署名要求 京都の宿泊施設 駐日大使抗議 [少考さん★]
- 石破首相「コメ価格対策を加速」 輸出拡大にも意欲 [首都圏の虎★]
- 【超速報】新ローマ教皇決まる [731544683]
- 自民・西田「広島もおかしい! 安らかにお眠りください。過ちは繰り返しませぬからとは何だ! 答えろ!」 [425744418]
- おまえらの属性教えて
- 消費税減税は金持ち優遇👈これ意味わからんよな、可処分所得って知らんのかな、なんで単純に払った税金だけを比較するのか [943688309]
- 【悲報】インド🇮🇳,もうめちゃくちゃ.パキスタン🇵🇰全土にイスラエル製ドローンで攻撃 [445972832]
- 令和のモンスターペアレント、教師が虐め対応をしてくれないだけで学校を襲撃してしまう・・・ [606757419]