2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

お前ら、wsh使ってますか? Part8

557 :名無し~3.EXE:2013/12/04(水) 19:16:08.90 ID:b1a/MCuJ.net
JScriptでWMI周りをコーディングするのに参考になりそうなWebサイトとかってないですかね?
ググっても出てくるのはVBSばっかり
さらにDB系の経験が全く無い自分にはSQLっぽいクエリ文とか書かれても何をしているのか
全く理解できない・・・orz(そう言うコーディング例が多い)

WMIのクラス?リファレンスもMSのWebサイトのどこにあるのか判らないし・・・

558 :名無し~3.EXE:2013/12/04(水) 21:04:29.54 ID:lXQmNau7.net
>>557
Scriptomatic Version 2.0 by The Microsoft Scripting Guys
あとWindowsSDKの中にもサンプル転がってるっぽい。
SDK入れた後のC:\Program Files\Microsoft SDKs\Windows\v6.1\Samples\SysMgmt\WMI\Scripting\WSH\JScriptとか

559 :名無し~3.EXE:2013/12/04(水) 21:36:19.11 ID:RjSD8VJT.net
>>557
英語でいいなら

http://msdn.microsoft.com/en-us/library/aa394616(VS.85).aspx

http://msdn.microsoft.com/en-us/library/aa394582(VS.85).aspx
http://www.scriptinternals.de/new/us/default.asp?40201

とか

560 :名無し~3.EXE:2013/12/04(水) 22:13:17.72 ID:MF/sD1Fn.net
>>557
わかる。自分も苦労したなあ。仕方ないからVBSのソース頑張って読んだわ…

561 :557:2013/12/06(金) 07:18:40.26 ID:4tTY+9MF.net
レスありがとう
英語はダメだけどがんばってみますorz

562 :名無し~3.EXE:2013/12/09(月) 06:09:14.33 ID:aRM1YEm8.net
VBSでバイナリ操作したくて調べてみたけど、このページの読み取り時のバグが面倒くさすぎる。
ttp://www.isla-plata.org/wiki/pukiwiki.php?ADODB.Stream%A4%CB%A4%E8%A4%EB%A5%D5%A5%A1%A5%A4%A5%EB%A4%CE%A5%D0%A5%A4%A5%CA%A5%EA%A5%A2%A5%AF%A5%BB%A5%B9%A1%CA%C4%B4%BA%BA%CA%D4%A1%CB
JSとVBSでバグってる出力の結果が違うからJSでやるしかないみたいだし。

563 :名無し~3.EXE:2013/12/09(月) 21:46:10.26 ID:LhO4dWSS.net
news.mynavi.jp/articles/2012/11/20/FD/images/001.jpg
こういう感じのインターフェイスって標準機能だけで作れますか?
一覧を表示してキーボードの十字キーとかで項目を選択
みたいなことをしたいです
外部アプリケーションが必要になったりIEでhtmlベースになったりですか?

564 :名無し~3.EXE:2013/12/11(水) 00:49:34.13 ID:dRS2pO1C.net
>>32
ログの再構築をやってもうまくいくかも知れない
(が俺のLOgsでは最早検証できないので誰か試して)

565 :名無し~3.EXE:2013/12/11(水) 00:55:29.73 ID:dRS2pO1C.net
誤爆スマソ

566 :名無し~3.EXE:2013/12/12(木) 18:52:13.22 ID:26eub4dC.net
>>563
> news.mynavi.jp/articles/2012/11/20/FD/images/001.jpg
> こういう感じのインターフェイスって標準機能だけで作れますか?

標準はDialog程度で、Yes/Noやメッセージ表示ぐらいしかない

> 一覧を表示してキーボードの十字キーとかで項目を選択
> みたいなことをしたいです
> 外部アプリケーションが必要になったりIEでhtmlベースになったりですか?
Yes

567 :名無し~3.EXE:2013/12/13(金) 18:00:06.73 ID:jlFFfkcN.net
>>566
どうもありがとう
wsh以外を検討したいと思います

568 :名無し~3.EXE:2013/12/13(金) 21:16:37.60 ID:o2iTZFGZ.net
PowerShellならカーソル移動できるからイケルと思うぜ

569 :名無し~3.EXE:2013/12/25(水) 00:25:46.96 ID:hFjMLCId.net
職場のPCがwindows7に更新されたが、
sendkeyにはさむ sleepを長めにしないとキー入力をとりこぼすようで
まんどくさ。

570 :名無し~3.EXE:2013/12/30(月) 17:01:10.98 ID:EDy0BQaD.net
最初からappactivate判定で待ち合わせろ

571 :名無し~3.EXE:2014/01/10(金) 23:41:02.13 ID:1HPG3rM3.net
http://okwave.jp/qa/q6809341.html の辺りでしょうか? ありがとさん。


職場のPCは、節電のためか10分経つと、コントロールパネル以外のソフトの機能で
画面が消えて、再び使うには再認証が必要でめんどくさいので、

8分間マウスを動かしていなかったら(マウスの位置読み出しはwsh以外だが)
sendkeys でHOMEキーを送出するようにしたら、再認証不要になって快適になった。
(副作用が全く無いわけではないけど、分かった上で使う分にはおk)

572 :名無し~3.EXE:2014/01/11(土) 12:45:12.41 ID:RKjZjfgC.net
>>571
マウスを擬似的に動かすのが一番副作用が少ないとは思うけど、
キー使うにしてもOEMキーとかShiftとかで副作用減らせると思う。

573 :名無し~3.EXE:2014/01/11(土) 22:38:29.99 ID:tut8jvn+.net
>マウスを擬似的に動かすのが一番副作用が少ないとは思うけど、

言われてみれば、そんな気もします。
wshの出番がなくなりますが、最終的にはその方向ですね。

別のsendkeys を使うwshスクリプトが
想定したタイミングでのsendkeys に失敗した場合に
現状、タスクマネージャーで強制終了してますが
HOMEキー送出と合わせて2つのWscript.exe のタスクが出現することになり
どちらを強制終了すべきなのが分からなくなるので

想定したタイミングでのsendkeys に失敗した場合には
そのwshスクリプトの実行を打ち切るかなんとかする方法を考えなければいけない
ということもあるので

10分以上席を外しておいても再認証不要にするほうは
wsh無しでいくようにするかなあ。

574 :名無し~3.EXE:2014/01/12(日) 01:49:25.19 ID:HjXkxgYs.net
wscript.timeout=10
とかで打ち切る

575 :名無し~3.EXE:2014/01/12(日) 11:58:23.86 ID:a5kPJ/gt.net
>>571
上手いことやったつもりになってるのかも知れないけど、それを会社の許可取らずに勝手にやってるとしたら
それは社会人として、大人として、最低の行為だよ。話通してるなら、そんな回りくどいことせずに
10分を30分とか60分にする方向で対応するだろうから、おそらく勝手にやってるんだと思うけどね。

うちも昔、ExcelとかのVBAが使えなかったんだけど、こっそりセキュリティーレベルを下げて
勝手にVBA使っちゃうという>>571みたいなことも出来たけど、俺はちゃんと筋を通し
VBA活用した業務システムのサンプルを作ってプレゼンし、正式にVBAの使用を許可されて使ってる。
VBAのことを解っていて意図的に禁止にしているのではなく、解ってないからデフォのマクロ無効にままに
しているだけだろうと思っても、組織の中では筋を通すのが大人のやり方だ。

自宅PCなら、電気代払うのも、セキュリティーが下がったツケを払うのも自分だが
職場ではそれを払わされるのは会社だからね。それで増える電気代なんて些細なものだし
外部の人間が出入りしないから、そこまでのセキュリティーも必要ないってなら
それを主張して改善を求めれば良いだけのこと。それをした上で断られたなら
きちんと理由があって断られたにせよ、相手の理解力が乏しいから解って貰えなかっただけにしろ
会社の方針には従うのが雇われ従業員の義務で、それが嫌なら転職か独立するしかない。



なんて正論言っても、2chでは正論に対して斜に構えて反発する方がカッコイイ的な風潮があるから
逆にこっちがウザいだの長文だのと難癖付けて叩かれたりしそうだけどねw

576 :名無し~3.EXE:2014/01/12(日) 13:27:57.74 ID:2iUJbU11.net
ウチの職場ではWSHどころかVBAですら「他の人がメンテする際に面倒な事になる」って理由で推奨されてない。
確かにその通りだが、以前どうしても業務にWSHやVBAに頼らざるをえない部分があって、上司を説得するのに苦労したよ。

同じ会社の別の部署では事前に上司に一報入れとけば即OKだったが、そこは仕方ない。

577 :名無し~3.EXE:2014/01/12(日) 14:06:50.55 ID:ydyFH/eR.net
>>575,576
正論ではある。が、管理が適当な会社で下の方だと、そう言う
IT関係の部署の許可を得る事自体が難しかったりする
当然現場のリソースの管理も出来ていないから万年人不足
上は「効率化、効率化」と吠えるが、効率化をするためのリソースは
まともに出ない。そうなると現場はずるをしないと業務が回らない
今の職場だけどね・・・そんなのを長く続けているとそのうち火傷しそう
なので辞めるつもりだけど

これは極端にしても、本社が求めるセキュリティ管理と現場の環境が
完全に一致している職場は今のところ見たことがないな
程度の差はあれ適当にお茶を濁さないと(現場の都合のいいように
解釈して運用する)業務の遂行に支障をきたす場合が多かった
大企業でも孫請けや客先作業だと綱渡りをしていたりするし

578 :名無し~3.EXE:2014/01/13(月) 02:47:07.44 ID:bjDcfip/.net
そもそもその機能は絶対節電のためじゃないから
もし席を外してる隙に誰かにかってに弄られたりしたら責任取れるの?ってことだし

579 :名無し~3.EXE:2014/01/13(月) 03:23:42.22 ID:sakkiDmA.net
>>578
本来必要なのは本当に離席した時にロックする機能と、手間なく再認証する機能だな。

580 :名無し~3.EXE:2014/01/21(火) 17:35:56.87 ID:wTIIfMdS.net
IE11にしたらIE.Busyの挙動がおかしくなったわ・・・
自分用だからいいけど仕事で使ってる人はたまらんだろうな

581 :名無し~3.EXE:2014/01/24(金) 17:35:07.73 ID:qqX4+tyI.net
いないよ

582 :名無し~3.EXE:2014/01/27(月) 17:28:47.49 ID:2F/WrB+e.net
誰がいないの?

583 :名無し~3.EXE:2014/01/29(水) 01:02:50.93 ID:6l4VCNbt.net
580の言う「仕事で(IE.Busyを)使ってる人(で、IE11にした人)」だろう

584 :名無し~3.EXE:2014/01/29(水) 18:25:21.89 ID:fNYlkM6M.net
8.1搭載PC導入すれば自動的にIE11

585 :名無し~3.EXE:2014/02/27(木) 00:56:57.07 ID:Eji7pyZ2.net
objIE.navigateでオートメーションしてる。
IE9/10の脆弱性、MSがIE11なら安心できるぞとか言ってるけど、
上げたらやっぱスクリプトが壊滅するんだろうな。

586 :名無し~3.EXE:2014/03/06(木) 17:45:30.32 ID:ik8ivR1r.net
powershellが出てるというのに、いまさらバッチ⇒wsh書き換えを始めました
バッチでいうところの"%*"=「起動時の全パラメータを表示」をvbscriptでは簡単にかけないでしょうか?
ggったのですが…やっぱり、For eachとかで表示しなきゃだめですか?

587 :名無し~3.EXE:2014/03/07(金) 02:12:37.60 ID:D4aPQwt3.net
はじめまして WSHを利用したオーディオプレーヤーの表示変更で躓いています

https://dl.dropboxusercontent.com/u/10447545/%E7%84%A1%E9%A1%8C.png

現在「曲タイトル ・タイトルアーティスト名」 とあるのを赤文字の様に
曲時間の前に右詰で表示したいのですが方法がわかりません

W = w - lengthWidth - playCountWidth - ratingW;
var gic = groupItemCounter++;
var itemNr = (((gic) < 10) ? ("0" + (gic)) : (gic));
var title = $("$if(%tracknumber%,%tracknumber%," + itemNr + ".) %title%", metadb);
var titleArtist = $("[ \u25AA $if($greater($len(%album artist%),1),$if($greater($len(%track artist%),1),%track artist%))]", metadb);

if (titleArtist) {
var titleLength = gr.MeasureString(title, titleFont, 0, 0, 0, 0, StringFormat(0, 1, 3, 0x00000800 | 0x1000)).Width;
//var titleArtistLength = gr.MeasureString(track artist, titleArtistFont, 0, 0, 0, 0, StringFormat(0, 1, 3, 0x00000800 | 0x1000)).Width;
var titleArtistFont = gdi.font("Meiryo UI", 11, 0);
gr.DrawString(titleArtist + queue, titleArtistFont, titleArtistColor, x + 10 + titleLength, y, W - 10 - titleLength, h, StringFormat(0, 1, 3, 0x1000));
}
gr.DrawString(title + (titleArtist ? "" : queue), titleFont, titleColor, x + 10, y, W - 10, h, StringFormat(0, 1, 3, 0x1000));

の x + 10 + titleLength を変えればタイトルアーティスト名が移動するのがわかりました
x + 10 + titleLength を W に変更するとちょうどタイトルアーティスト名と曲時間がかぶって表示されますのでそこから
タイトルアーティスト名Lengthを引けば 結果右詰のようになるのかと思うのですがタイトルアーティスト名Lengthの取得法も分からずで行き詰っています

詳しい方アドバイスいただけないでしょうか? よろしくお願いいたします

588 :名無し~3.EXE:2014/03/07(金) 02:16:22.10 ID:D4aPQwt3.net
画像のUPに失敗しましたので他に上げました

どうか、ご参照くださいませ

http://uploda.cc/img/img5318ad100db06.png

589 :名無し~3.EXE:2014/03/07(金) 07:20:42.99 ID:QXUzZnL1.net
WSH/JScriptで画像?と思ったけど、foobarにWSH Panel Modってのがあるのか…
>>587
grとかgidとかのオブジェクトはWSH自体の機能じゃなくて、
そのオーディオプレイヤー及びプラグインの提供する機能。
周辺の使われ方とJScriptの知識から推測は出来るけど、
素直に環境も提示してから質問した方がいいよ、これは。
例えば、foo_uie_wsh_panel_mod-*/docs/Interfaces.htmlとかあったでしょ?

まぁ取り敢えずはgr.DrawString(titleArtist〜);のところをこうする
var titleArtistLength=gr.MeasureString(titleArtist+queue,titleArtistFont,0,0,0,0,StringFormat(0,1,3,0x00000800|0x1000)).Width;
gr.DrawString(titleArtist+queue,titleArtistFont,titleArtistColor,x+W-titleArtistLength,y,titleArtistLength,h,StringFormat(0,1,3,0x1000));
ただこれだと横幅足りない時に多分文字が被る(未確認)のでこれの二行目をこうする
gr.DrawString(titleArtist+queue,titleArtistFont,titleArtistColor,
(W-titleArtistLength-10-titleLength<0)?(x+10+titleLength):(x+W-titleArtistLength),y,
(W-titleArtistLength-10-titleLength<0)?(W-10-titleLength):(titleArtistLength),h,StringFormat(0,1,3,0x1000));
タイトルの時点で横幅足りない時は元の通り(多分はみ出す)のはず…だけど未確認なんで動くかは知らん

590 :名無し~3.EXE:2014/03/07(金) 10:12:05.60 ID:D4aPQwt3.net
>>589
早速のレスありがとうございます 眠ってしまっていましたすみません
おっしゃる通りfoobarを弄っておりました

これから仕事に出ますので戻り次第、動作報告させていただきます
詳しい内容のれすありがとうございます 
取り急ぎのお礼となりますが多くのアドバイスに感謝いたします  m(_ _)m

591 :名無し~3.EXE:2014/03/07(金) 18:57:18.18 ID:D4aPQwt3.net
>>589

こんばんは、教えていただいた様に記述すると見事、希望の表示となりました。
感謝感激であります 素晴らしいです

http://uploda.cc/img/img531996d70acb8.png

この様にプログラミング言語を理解されている方を本当に尊敬いたします
私も少しで理解できるよう勉強していきたいと思います

大変勉強になりました お世話になりました ありがとうございます m(_ _)m

592 :名無し~3.EXE:2014/03/07(金) 19:50:09.28 ID:ACaqx7cc.net
オプションを指定したショートカットファイルへ適当なファイルをドラッグアンドドロップしたときに
named と unnamed プロパティが表示されません。

下のスクリプトを WSF にして、それのショートカットをつくって"リンク先"にオプションを追加しました。
ショートカットを実行すると named が表示されて期待通りなのですが、
ショーカットにファイルをドラッグアンドドロップすると unnamed しか表示されません。
コマンドプロンプトで「このショートカットファイル 適当なファイル」を実行すると
期待通りに named と unnamed が表示されます。
ショートカットファイルを「cscript //nologo file.wsf /aaa」にして、
それにファイルをドラッグアンドドロップすると期待通りに動きます。(wscriptも同様です)
スクリプトへのショートカットで動かしたいのですがどうにかならないでしょうか。
やはり cscript から指定するしかないのでしょうか。
<?XML version="1.0" standalone="yes" encoding="Shift_JIS" ?>
<job>
<script language="VBScript"><![CDATA[
Set Args=WScript.Arguments
if args.named.count>0 then
for each f in args.named
Wscript.Echo "named="&f
next
end if

if args.unnamed.count>0 then
for each f in args.unnamed
Wscript.Echo "unnamed="&f
next
end if
]]></script>
</job>

593 :名無し~3.EXE:2014/03/07(金) 20:29:44.76 ID:ACaqx7cc.net
>>592です。
よくよく考えたら、後処理で標準出力を使うのでコマンドプロンプトから起動させないといけないことに気付きました。
ですのでこの質問は無視してください。申し訳ございません。

594 :名無し~3.EXE:2014/03/07(金) 20:43:11.69 ID:R/i8eMRA.net
JScriptで実行しているコンソール画面の消去やカーソルの移動を行う方法が
あったら教えてください。ANSIエスケープシーケンスが使えないので代替手段を
探しています。tailもどきみたいなツールを作りたいです

595 :名無し~3.EXE:2014/03/09(日) 00:04:08.12 ID:AC1x3CVd.net
>586
join ではダメなん?

596 :586:2014/03/09(日) 20:57:07.19 ID:fvfMSQ5P.net
>>595
低レベルな相談にアドバイスをありがとうございます
joinを以下のように使ってみたのですが、エラーになってしまいました

set objArgs = Wscript.Arguments
Wscript.Echo Join(objArgs, " ")

実行
>cscript test.vbs aaa bbb ccc ddd
test.vbs(2, 1) Microsoft VBScript 実行時エラー: 引数の数が
一致していません。または不正なプロパティを指定しています。

Join関数の中のobjArgsをobjArgs.Itemにしても同じエラーでした
オブジェクト型?だとダメなんですかね

しかしよく考えたら、どうせパラメータ解析を行うときにFor Eachするので
そこでついでにつなぎ合わせて表示すれば良いことが判りました。ハズカシイ///
失礼しました

597 :名無し~3.EXE:2014/03/10(月) 01:34:08.42 ID:odCUQACu.net
wsh はハードウェアを直接たたけないので高レベルだが、何か?

598 :名無し~3.EXE:2014/03/18(火) 01:58:31.54 ID:8JSsnlcw.net
Win7です

特定のフォルダ1つの中に、沢山のサブフォルダが100個単位であります
そことは違う場所に複数のファイルがあり、こいつらをさっきのサブフォルダにコピーや移動して整理したい

選択された個々のファイル名から、どのサブフォルダにコピー・移動すべきかはほぼ自動で決まります
ただ、沢山のサブフォルダ群から目的のサブフォルダを探し出すのが面倒なので、それを自動化したい
しかし、Win7のエクスプローラの操作感(上書き確認や別名でコピーなどの選択肢がサムネイルと日時付きで選べる)は
そのまま生かしたい

こういう場合にWSHは使えるでしょうか?
FileSystemObject の CopyFile を使うとデフォルトで上書きされてしまうようで、不都合です
他のオブジェクトのメソッドで、エクスプローラのあのダイアログを使えるようなものはないでしょうか?

599 :名無し~3.EXE:2014/03/18(火) 07:01:19.59 ID:7hnQmGRM.net
これででるんだっけ?
ttp://msdn.microsoft.com/en-us/library/windows/desktop/bb787866(v=vs.85).aspx
ttp://www.happy2-island.com/vbs/cafe02/capter00304.shtml
ttp://d.hatena.ne.jp/miya2000/20061211/1165806376

600 :名無し~3.EXE:2014/03/18(火) 17:59:54.71 ID:0kW9Tn2n.net
>>599
おお!ありがとうございます!
さっそく試してみます

601 :名無し~3.EXE:2014/03/18(火) 20:34:54.00 ID:0kW9Tn2n.net
>>599
フォルダまるごと、あるいは1個のファイルのコピーならば CopyHere が使えました
ありがとうございました

ただ、たとえばSendToにvbsファイルを登録して複数個のファイルのコピーをしようとすると
CopyHereの引数に複数ファイルを指定するやり方がググってみてもよく分からないため、
ループを回して1個ずつ個別にコピーしなければならず、
エクスプローラの「同じ処理を○個の競合に適用」が使えません

CopyHere に複数のファイルを渡すにはどうしたらよいのでしょうか?

602 :名無し~3.EXE:2014/03/18(火) 21:49:20.42 ID:0kW9Tn2n.net
エクスプローラの「同じ処理を○個の競合に適用」が使えなくても
とりあえず使えればいいかな、と(テスト環境でなく)実際の環境で実践してみた結果・・・

「実行できません。引数一覧が長すぎます。」

Oh・・・こんな仕様があったとは・・・orz

603 :名無し~3.EXE:2014/03/19(水) 11:17:44.83 ID:sxeZPubB.net
事後報告
「送る」で多くのファイルをWSHに受け取るのは仕様上無理?っぽいので
結局WSHは諦めて、C#を使って↓のを参考に
クリップボードでファイルの受け渡し、コピー・移動は SHFileOperation を呼び出すことにしました・・・

ttp://uchukamen.com/Programming1/ToRecycleBin/
ttp://dobon.net/vb/dotnet/file/copyfiletoclipboard.html

604 :名無し~3.EXE:2014/03/19(水) 20:36:52.43 ID:WSz9wMSM.net
プログラム初心者です。
しょうもない質問で申し訳ないのですが、ご教授願います。
定時にアラートを鳴らす下記のスクリプト、二回目のポップアップ以降
タスクバーに隠れてしまいます。
OKが押されるまでポップアップを出し続けるにはどうすればよいでしょうか?
OSはWindows7です。
よろしくお願いします。

strSoundFile="C:\Windows\Media\alert.wav"
Set objShell = CreateObject("Wscript.Shell")
Do While True
objShell.Run strSoundFile,0,True
If objShell.Popup("早く!", 3, "時間だよ", vbOKOnly) = 1 Then Exit Do
Loop

605 :名無し~3.EXE:2014/03/19(水) 20:45:51.46 ID:fmho9aI2.net
逆に考えるんだ
.popupって時間制限で消えるようにできるだろ?
戻り値が0にならない限り何度でも現れ直すようにすればいいだろ

606 :名無し~3.EXE:2014/03/19(水) 20:47:03.25 ID:fmho9aI2.net
ってすまん
そういう風にしてるのか
だとすればサウンドを鳴らすだけのスクリプトを別に作っていちいち起動するようにするとかか?

607 :名無し~3.EXE:2014/03/19(水) 20:53:07.89 ID:WSz9wMSM.net
>>606
ありがとうございます。
それしか方法はないのでしょうか・・・
XPでは全く同じスクリプトで繰り返しポップアップが出てたのに、7に移植すると
2回目以降が隠れてしまって困り果ててます。。

608 :名無し~3.EXE:2014/03/22(土) 23:52:20.61 ID:Z7dMfY4M.net
If objShell.Popup("早く!", 3, "時間だよ", vbOKOnly+4096) = 1 Then Exit Do

609 :604:2014/03/23(日) 03:13:39.34 ID:Vw+/thwy.net
>>608
ありがとうございます!
うまくいきました!
こちらに質問してよかったです。
お手数おかけしました。

610 :名無し~3.EXE:2014/03/23(日) 18:28:06.03 ID:IwD5u7Na.net
>>608
PopupってMB_SYSTEMMODAL(4096)とかのメッセージボックス用フラグも効くのか!
てことは
MB_DEFBUTTON1(0)、MB_DEFBUTTON2(256)、
MB_DEFBUTTON3(512)、MB_DEFBUTTON4(768)、
MB_SYSTEMMODAL(4096)、MB_SETFOREGROUND(65536)、MB_TOPMOST(262144)、
MB_RIGHT(524288)、MB_RTLREADING(1048576)
このへんも使えるんだな。知らんかった

611 :名無し~3.EXE:2014/03/23(日) 20:31:45.36 ID:maZS4sl1.net
>>610
MessageBox関数のパラメータは大体使えるよ
4 + 32 + 256とかでもちゃんと機能する

612 :名無し~3.EXE:2014/03/23(日) 20:59:53.06 ID:IwD5u7Na.net
>>611
64以下のはMSDNとかにも記載があるけど他は…と思ったら
> natType の意味は、Microsoft Win32R アプリケーション プログラミング インターフェイスの MessageBox 関数で指定するものと同じです。
ちゃんとscript56.chmにも記載があったのね…見落としてたわ

613 :名無し~3.EXE:2014/03/27(木) 04:31:30.42 ID:2jCw5Ktt.net
ScriptFormをダウンロードできるサイト知りませんか?
誰かアプロダにでも上げてもらえないでしょうか

614 :名無し~3.EXE:2014/03/28(金) 01:33:53.75 ID:61c3+d+I.net
ググってもなんとか見つかるぞ
使い方:ttp://homepage2.nifty.com/pasocon/tanken/form.html
同梱してる事の確認:ttp://park15.wakwak.com/~ironrose/personalize.html
同梱してる物の入手:ttp://park15.wakwak.com/~ironrose/details.html

615 :名無し~3.EXE:2014/03/28(金) 02:15:59.95 ID:omqPRtXY.net
>>614
助かったありがとう
同梱は盲点だった

616 :名無し~3.EXE:2014/03/31(月) 23:24:43.55 ID:cttL3XFr.net
IE11でbusyとReadyStateがサポートされなくなったらしいですけどうすればいいですか?
よく使われてる以下のようなWaitLoad関数が駄目になって困ってます
環境はWin8.1、IE11です

617 :名無し~3.EXE:2014/03/31(月) 23:25:59.99 ID:cttL3XFr.net
//グーグルとこのスレ繰り返し開くだけのJSスクリプトです。
//1回目のループは上手く行くのに2回目のグーグルを開いた時に止まってしまいます。
var IE = WScript.CreateObject("InternetExplorer.Application");
IE.Visible = true;
for(;;){//終了処理なしです
IE.Navigate("https://www.google.co.jp/");
WaitLoad();//2回目のここで止まる
IE.Navigate("http://toro.2ch.net/test/read.cgi/win/1292764835/");
WaitLoad();
}

function WaitLoad() {
var stat, dstart;
stat = 0;
while(true)
if(stat == 0) {
if(!IE.Busy)
if(IE.Document.readyState == "complete") {
dstart = (new Date()).getTime();
stat = 1;
}
}
else {
if(!IE.Busy &&
IE.Document.readyState == "complete") {
if((new Date()).getTime() >= dstart + 1000)//止まった時にブラウザを落とすとこの行でエラーになってる
break;
}
else
stat = 0;
}
}

618 :名無し~3.EXE:2014/04/01(火) 02:23:12.74 ID:QoieXD0A.net
デバッグしろと?

619 :名無し~3.EXE:2014/04/01(火) 15:22:55.15 ID:KGWb56X2.net
下のはWin8.1、IE11の32/64bit両方で動いたよ
var IE = WScript.CreateObject('InternetExplorer.Application');
IE.Visible = true;
for (;;) {
IE.Navigate('https://www.google.co.jp/');
wait(IE);
IE.Navigate('http://toro.2ch.net/test/read.cgi/win/1292764835/');
wait(IE);
}

function wait(IE) {
WScript.Sleep(100);
while (IE.busy) WScript.Sleep(100);
while (IE.document.readyState !== 'complete') WScript.Sleep(100);
}

620 :名無し~3.EXE:2014/04/01(火) 20:20:02.45 ID:yNr0R4Jw.net
>>619
ありがとうございます。動きました。使わせてもらいます。
ただWScript.Sleep(100);の部分が短すぎるので
1000にしたところ上記と同じように止まってしまうのが不可解です
あと記載を忘れてましたがOSとIE11はインストールしたばかりで設定をいじってません

IE11でbusyとReadyStateがサポートされてない件は他の方も困ってるみたいです
http://www.moug.net/faq/viewtopic.php?t=67866
http://www.moug.net/faq/viewtopic.php?t=67282
http://d.hatena.ne.jp/O_Kohsuke/20131103/1383476948

621 :名無し~3.EXE:2014/04/01(火) 21:10:26.71 ID:yNr0R4Jw.net
もう一つ、上記サイトに言及のある拡張保護モードか、保護モードを無効にしても同じ所で止まります

622 :名無し~3.EXE:2014/04/01(火) 21:35:14.14 ID:2YVuc9Gt.net
>>620
>IE11でbusyとReadyStateがサポートされてない件は他の方も困ってるみたいです

だって誰得?だもん

623 :名無し~3.EXE:2014/04/02(水) 03:59:22.30 ID:PW6w/sWY.net
使ってる奴が居る以上誰得って言い方で切り捨ては出来ねぇと思うけどなぁ…

624 :名無し~3.EXE:2014/04/08(火) 23:52:31.58 ID:D4TzPxaZ.net
windows7に移行したら、XPで動いてたvbsがうまく動かない
具体的には
・msgboxが最前に出てこなくなった
・Appactivateの効きが悪い気がする

なんか対策ありませんでしょうか

625 :名無し~3.EXE:2014/04/09(水) 02:06:18.35 ID:IEtgoGKr.net
>>624
前者については>>604>>608>>610を参照すればいいと思う
後者は・・・泥臭すぎて微妙な対策だが、スリープ挟むとか、
スリープ挟んで複数回アクティブ化するとかで軽減できないか?

626 :名無し~3.EXE:2014/04/09(水) 21:42:25.69 ID:MDutfYCP.net
ありがとうございます。なんかいろいろできるんですね
もう少し研究してみます

win7もIE9もキライ

627 :名無し~3.EXE:2014/04/10(木) 19:16:49.59 ID:gwTmemoR.net
>>626
win8.1&IE11・・・

628 :名無し~3.EXE:2014/04/11(金) 06:18:12.18 ID:iUTXG8Bc.net
まぁwsh窓際だからね・・・

629 :名無し~3.EXE:2014/04/19(土) 16:12:52.50 ID:qTxSEapj.net
ブルーデーでググってみてごらん

630 :名無し~3.EXE:2014/04/19(土) 16:29:55.53 ID:C0hSChOr.net
普通の機動、または休止状態からの機動、またはスリープからの機動
にクスっときた

631 :名無し~3.EXE:2014/04/19(土) 17:12:47.57 ID:D/gd45tC.net
WSH全然関係ないけどタスクスケジューラで
USBデバイスからの復帰をトリガーとして起動するタスクなんてものもあるけどな

632 :名無し~3.EXE:2014/04/28(月) 10:40:52.56 ID:DICVXVj1.net
DOSバッチまたはWSHでメインフレームのSYSINデータセットみたいなことできませんか?
SYSINにVBScriptのソースを書いて、cscriptでそれを実行するとか、
SYSINにFTPのコマンドを書いて、FTP.exeに読ませるとか、
SYSINに適当な入力データを書いて、SYSINをtextファイルとして読み込むようなことをしたい。
SYSIN部分を別ファイルにすれば可能ですが、1個のファイルにしたくて。

ファイルのイメージ
---------- test.bat or test.vbs -------------

//SYSIN DD *
適当な入力データ
//

DOS/VBScriptのコマンドを書いてSYSINをtextファイルとして読み込む
---------- test.bat or test.vbs -------------

633 :名無し~3.EXE:2014/04/28(月) 13:00:04.87 ID:ev/jr+Zm.net
>633
WSHなら WScript.StdIn を使えばいいと思う

634 :名無し~3.EXE:2014/04/29(火) 03:39:47.60 ID:8ypvRdMf.net
>>632
意識しないでデータを読みこむのは無理だと思うので、データ部分はコメント扱いされて実行されないようにしといて、
データを読み込むプロシージャを作成すれば良いんじゃないかな

【例】 batの場合はデータ部分を読み飛ばして、for文でデータを読み込む
@goto :proc
//SYSIN DD *
適当な入力データ
//
:proc
@echo off
for /f "skip=2 tokens=*" %%i in (%~f0) do (
set data=%%i
if "%%i" equ "//" goto :eof
call :output
)
goto :eof
:output
echo %data%
goto :eof

【例2】 jscriptの場合
if (0)
//SYSIN DD *
適当な入力データ
//
@end
処理スクリプト

【例3】 vbscriptの場合
jscriptの@if、@endの替わりにif false then、end ifを使う

635 :名無し~3.EXE:2014/04/29(火) 13:38:55.32 ID:rabqrtPg.net
>>632
何が欲しいのか今ひとつ分からんのだけど、
複数行に渡るような大きな文字列データを埋め込んどきたいってこと?
それならWSFでresource使う方法なんかもあるけど

636 :名無し~3.EXE:2014/04/29(火) 21:41:23.74 ID:+pl4bZp4.net
>>633-636
Thanksです。
バッチとかスクリプトのファイルの中に、入力データを書きたかったのです。
数文字程度なら、バッチの環境変数で渡すて出来そうですが、
複数行の文章だとどうしても出来なくて。
昔仕事でやってたM/FのJCL文はそういうことができててよかったなあと。

resourceが一番自分の思ってるに近そうです。

637 :名無し~3.EXE:2014/04/29(火) 23:22:16.38 ID:gKZrgnV9.net
JScriptだと(function(){/*〜〜〜〜*/}).toString();で楽にヒアドキュメントモドキができるんだけどね。

638 :名無し~3.EXE:2014/04/30(水) 00:23:31.00 ID:nvx7kMwT.net
>>636
懐かしいな、パンチカードの山

639 :名無し~3.EXE:2014/05/17(土) 18:50:28.98 ID:ftkNQf89.net
//SYSIN DD *

640 :名無し~3.EXE:2014/05/24(土) 10:06:34.87 ID:4leeigTu.net
WSHで画面のバックライトを消す方法ってありますか?

その手のツールやWin32APIを叩ける処理系使えば
できるのですがWin標準機能で出来る方法があれば・・・

641 :名無し~3.EXE:2014/05/24(土) 10:23:35.39 ID:uPytOxyo.net
>641
↓この1行でWindows標準のブランクスクリーンセーバーを起動できるけど、これじゃダメかな?
CreateObject("WScript.Shell").Run "C:\Windows\System32\scrnsave.scr"

642 :名無し~3.EXE:2014/05/29(木) 07:27:28.06 ID:8DqbD5RS.net
スクリーンセイバーでは、画面は暗く出来てもバックライトは消えないでしょ

つまり、消費電力低下もバックライト寿命延長も望めない
「画面を暗く」とかではなく、わざわざ「バックライトを」と言ってるって事は、そういうのが目的だと思われ

643 :名無し~3.EXE:2014/05/29(木) 20:15:23.71 ID:mpz900sV.net
ついでに細かいことを言うと、液晶モニタでは黒画面にすると
消費電力が増える場合がある。

ttp://www.itmedia.co.jp/pcuser/articles/1105/25/news001.html
ttp://www.excite.co.jp/News/bit/E1238429157129.html

644 :名無し~3.EXE:2014/07/03(木) 14:13:08.65 ID:puDVYchs.net
wsh cscript ってみんな使っているの?

どうもとっつきにくい
原因の一つは、予約語の長ったらしさと別ワールド感にあるような気がする。
バッチでだめならrubyでやってしまうもんな

645 :名無し~3.EXE:2014/07/03(木) 15:15:13.58 ID:jNTLinbp.net
WSHは事実上のWindows標準機能になって十数年経つし、
昔のWin95やWinNT4.0でも修正せず正常に実行できるものを手軽に作れる。
(それに対してバッチファイルはWin9x系とWinNT系での違いが特に大きいから、環境変数%OS%の値が
"NT"か空欄かで処理を分岐させなければならない場合が少なくない)

そういう点で他のスクリプト言語より随分とっつきやすいと思うが

646 :名無し~3.EXE:2014/07/04(金) 21:25:06.89 ID:noH+Nmwl.net
どのWinでも動くメリットは大きい。会社のPCでも気軽に使えるし
でもバイナリファイルの扱いに難があるのはしばしば困る

あとこれはWSHに限ったことではないけどRubyと比べるとコードが
冗長化しやすい

647 :名無し~3.EXE:2014/07/04(金) 21:43:53.99 ID:t8oKZxzN.net
バイナリファイルだって扱えないってわけじゃないし、それほど面倒lくさいってほどでもないと思う

648 :名無し~3.EXE:2014/07/04(金) 22:00:52.84 ID:noH+Nmwl.net
ADODB.Streamはアンチウィルスソフトが騒ぐから使いにくい

649 :名無し~3.EXE:2014/07/05(土) 04:26:07.22 ID:X4/wk4Kp.net
それは環境依存の問題だろw
環境依存の問題を、WSHの問題であるかのように言う奴はアフォ

全てのアンチウィルスソフトがADODB.Streamに反応するわけじゃないし
後から反応しないように設定できる場合も多いので
言ってしまえば「どのWinでも起きる問題じゃない」って話だ

650 :名無し~3.EXE:2014/07/05(土) 11:16:49.33 ID:WBZ3i3eR.net
AviraがADODB.Streamの実行を阻止するらしいが、他にもある?

651 :名無し~3.EXE:2014/07/05(土) 16:43:05.03 ID:DkwampXl.net
自分にはアンチウィルスソフトに駆除される可能性があると判っているものを
配布することは出来ない。バイナリファイルを扱うコードに限ればどのWinでも
動くというメリットは存在しない

652 :名無し~3.EXE:2014/07/05(土) 19:00:31.79 ID:gjWeDij8.net
WSH以外でインストール不要、テキスト配布可能、バイナリ操作可能、x86/x64環境対応、を満たすのは
.NET Frameworkに含まれるC#やJScript.NETコンパイラ使うバッチファイル位しか実用的な選択肢がない。

ADODB.Streamの利用だけでウィルス扱いするクソアンチウィルスなんて所詮その程度のゴミ。
ADODB.Streamを難読化してアンチウィルスの検出回避してるコードとか見たことあるけど、
適当に回避仕込んで後は「アンチウィルスに排除されたらそのゴミを恨め」とでも言っとけばいい。
バイナリ配布使用が何しようが、どーせ巻き込まれるときは巻き込まれて機能不全起こすんだし。

一々ソース生成してコンパイルしたりインタプリタのインストールを要求するよりはWSH使ったほうが楽。
//つか配布して使わせるって前提ではRubyはnode.jsにすら劣る気が…

653 :名無し~3.EXE:2014/07/05(土) 19:08:48.87 ID:WBZ3i3eR.net
ウィルス対策ソフトでは大抵除外指定できるもんなんだがAviraはそういう機能ないのか?
もしあるならreadmeで除外指定の説明しとけば十分なんだけどね

654 :名無し~3.EXE:2014/07/06(日) 04:11:44.89 ID:wAzKXrbd.net
Rubyコードを配布するならインタプリタを同梱すれば良いだけでは
インタプリタをインストールする必要はない。exerbみたいにPEに
パックするツールもあることだし。難点を挙げるとすればでかいこと
くらいか。PythonやJavaなんかでも似たような手法があるな

WSHは社内利用でアプリの持ち込みが難しいく、誤爆しないことが
確認できている場合なんかには使うな

655 :名無し~3.EXE:2014/07/06(日) 05:38:19.38 ID:EYy1DF2z.net
インタプリタの同梱はライセンス的に面倒くさいが、
Rubyとか単体インタプリタが公式から落とせないんだよなぁ…
node.jsでさえ公式が配布してるnode.exeがあれば最低限は動くってのに。
PE化ツールはスクリプト言語としての利点が大きく減るので論外かな。

主観も入ってるがWindowsでツール作って配布したりするのにRubyは向いてなさすぎ。
つかなんでRuby押しな人がWSHスレに来てんだよ…スレチだろそんなん。

656 :名無し~3.EXE:2014/07/09(水) 16:44:30.12 ID:3YYdz9Xv.net
AviraでADODB.Streamの実験をしてみた

結論として
var strm = new ActiveXObject("ADODB.Stream");
var adTypeBinary = 1;
var adSaveCreateOverWrite = 2;
この3行が全部存在したら弾かれる
実際に使うかどうかは関係なく、ADODB.Stream、adTypeBinary、adSaveCreateOverWriteの文字列が存在してたらアウト
(adTypeText、adSaveCreateNotExistは問題ない)
このうちどれか1つでも無くせば通る
strm.Type = 1;
と書けば通るなんて意味ない
こんなん何のプロテクトにもなってなくてちゃんと書こうとしている正常なスクリプトだけが被害を被るだけじゃん

あと、scanの除外の指定は簡単にできるのでそっちでファイルやフォルダを指定しとく手もある

657 :名無し~3.EXE:2014/07/09(水) 17:01:01.40 ID:5yPR9jH6.net
strm[unescape(〜〜)]()でも通るのだろうし(専ブラ用のGetLog.wsfとかがコレ)、evalに詰めても多分通るだろうからな…
誤検出上等で作られた既存マルウェアとマッチするパターン定義なのだとしてもゴミすぎる。

まぁアンチウィルスが一般人を害するのなんて珍しい話じゃないけどな。
ノートンがリファラ削ってCSRF攻撃がより発生しやすくなった件もそうだけど、
アンチウィルスに対するフールプルーフも考慮しないと駄目になってしまったと……

658 :名無し~3.EXE:2014/08/20(水) 09:14:55.55 ID:ADfHX5a6.net
(`_')

659 :名無し~3.EXE:2014/09/20(土) 14:51:17.97 ID:ud3uQdHI.net
保守

660 :名無し~3.EXE:2014/10/28(火) 21:45:29.92 ID:9qJ4E2Eu.net
ExcelVBAスレからこちらに誘導されました。

Sub test()
Dim WSH, cmd, path, output As String
Set WSH = CreateObject("WScript.Shell")
path = """C:\Program Files\7-Zip\7z.exe"""
output = """C:\Program Files\7-Zip\output.txt"""

cmd = path & " > " & output
WSH.Run "%ComSpec% /c " & cmd
End Sub

プログラムをshell.runで実行して、結果をプログラムと同じ場所にをテキスト出力したいんですが
上記のプログラムですと、テキストすら作成されずエラーも出ません。
試しにcmdの中をコマンドプロンプトで実行すると上手くテキスト出力できました。
環境変数の中も問題ない事確認しました。
一体何が原因でどうすれば意図通りに出力できるでしょうか?

661 :名無し~3.EXE:2014/10/28(火) 22:09:20.36 ID:AujnRT7T.net
http://msdn.microsoft.com/ja-jp/library/cc364356.aspx

662 :名無し~3.EXE:2014/10/28(火) 23:40:34.81 ID:9qJ4E2Eu.net
execは出力が長いと切れてしまうのと
チカチカするのでなるべくRunで動作させたいです・・・。

663 :名無し~3.EXE:2014/10/29(水) 01:13:30.66 ID:Ixj57Vcb.net
まさかとは思うけど、定義だけでtestをcallしてないってオチじゃないだろうな

664 :名無し~3.EXE:2014/10/29(水) 21:40:17.17 ID:ZMfncWTQ.net
Sub test()
Dim WSH, exec, cmd, path, output, Result, Errorcatch As String
Set WSH = CreateObject("WScript.Shell")
path = """C:\Program Files\7-Zip\7z.exe"""
output = """C:\Program Files\7-Zip\output.txt"""

cmd = path & " > " & output
Set exec = WSH.exec("%ComSpec% /c " & cmd)
Do While exec.Status = 0
DoEvents
Loop
Result = exec.StdOut.ReadAll
Errorcatch = exec.StdErr.ReadAll

End Sub

試しにexecに書き換えてこれでエラーメッセージを拾うと
"'C:\Program' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。"
ある筈の引用符が認識されなくなってるようだけど
wshって引用符を2つ以上受け入れられない仕様なんでしょうかね?
何にしろexecを使って出力しか無いようですね。

665 :名無し~3.EXE:2014/10/30(木) 00:21:27.89 ID:LmFdMFLe.net
runで””が展開されて、cmd.exeが””無し文字列渡されてるだけ
VBS以前の問題すな
----
path = """""C:\Program Files\7-Zip\7z.exe"""
output = """C:\Users\hoge\Desktop\output.txt"""""

666 :名無し~3.EXE:2014/11/26(水) 01:10:25.43 ID:Rp1N9SF8.net
WSH(JScript)からUACの権限の昇格無しにvhdファイルを任意のドライブレターでマウント、アンマウントする方法ってあります?
diskpartを使うと起動時にUACの権限昇格のプロンプトが出てしまうので出来ればそれを避けたいです
さらにdiskpartだと任意のドライブレターにするのもちょっとめんどくさい・・・

マイコンピュータの管理からマウントするときは権限昇格のプロンプトが出ないのでマウント操作自体は権限昇格無しにできるはず・・・

667 :名無し~3.EXE:2014/11/26(水) 03:52:31.59 ID:n9fh4HuN.net
>>666
WSH的な方法もあるとは思うけど、面倒くさいからWScript.ShellのSendKeysで。

668 :名無し~3.EXE:2014/11/27(木) 00:44:59.90 ID:jN417OkL.net
自身をrunasで実行するコードを書いてネットワークドライブにコピーして実行したら
WScript.exe「ファイルが見つかりません」
管理者で実行するとネットワークドライブにあるスクリプトを実行できないっぽい。なんつートラップ・・・orz
でもUNCパスなら実行できるっぽい。変換するのマンドクセ・・・

669 :名無し~3.EXE:2014/11/27(木) 18:51:51.05 ID:n1bzZURg.net
>>668
ユーザが違うからファイル共有のログイン状態が引き継がれないんだろう。
WSHの問題じゃなくて純粋にそのファイルが管理者権限側から見えてない。
ネットワークドライブの割り当ても引き継がれないってのは知らなかったが…考えて見れば当然だな。
runas notepadからファイルを開くでマイコンピュータ見に行けば確認できる。

ネットワークドライブ上から実行せず、UNCパスの方から実行すれば普通に動くんじゃないかな。
ただ、ログインの必要なファイル共有の場合はどっちみちダメ。
自身をテンポラリに複製するしか無いのかなぁ…管理者以外での実行も想定するならAll Users。

670 :名無し~3.EXE:2014/12/01(月) 12:04:16.94 ID:vl7TWbzO.net
おそらく今更な話だと思うけど調べてもよく分からないので教えて下さい
var document = new ActiveXObject("htmlfile")でquerySelectorが使えないのは何故なんでしょう
互換モードで動いてるのが悪いのかと思ってmetaタグでIE=edgeを食わせたりしましたがやっぱり動きません
実用的にはjQueryでいいんですが、動かない理由が気になって仕方ありません

671 :名無し~3.EXE:2014/12/02(火) 02:41:56.87 ID:uW4tGm5l.net
new ActiveXObject("htmlfile")で得られるTridentエンジンそれ自体がMSIE7系統のものなんじゃないの?
アプリケーションとしてインストールされているIEと、コンポーネントとして動くIEは別だったりもする。
document.parentWindow.navigator.userAgentを見ればIE7の互換モードらしいことが分かる。
IE7ないしその互換状態のIEコンポーネントではquerySelectorは実装されて無いはず。
metaタグでIE=edgeを食わせるのに成功しててもその場合取得したdocumentとwindowは別物になるんじゃないかと。
そのうえwindow.location.hrefを書き換えてもdocumentはそのまま参照できる状態が続いてしまう。

オブジェクト作る時点で互換モードじゃないオブジェクト作る方法があれば出来そうな気がするけどよく分からん。

672 :名無し~3.EXE:2014/12/02(火) 20:10:44.38 ID:7F177ivT.net
ありがとうございます何となく分かりました
htmlfileというオブジェクトの実体は25336920-03F9-11CF-8FD0-00AA00686F13ですが
その下位キーにMicrosoft.mshtml, Version=7.0.3300.0というのがありますね
IE9のmshtml.dllのversionは9.xのようですからIE7相当の物を叩いてるという認識で間違いないようです
原因がはっきりしてスカッとしました

673 :669:2014/12/02(火) 20:38:48.68 ID:zhlSz+62.net
>>669
遅くなってスマン。レスありがとう
ドライブレターをUNCパスに変換するコードを書いて・・・っとやっていたんだけど
ふと管理者でもネットワークドライブをマウントしてしまえばいいんじゃね?と気が付いた
やってみたらいけそうな感じ
ネットワークドライブマウント用のスクリプトを改変するのが一番楽かも

674 :名無し~3.EXE:2014/12/07(日) 02:12:17.14 ID:AWYCy4y8.net
ie9以降のJavascriptエンジン(chakra)を使う方法
tp://subtech.g.hatena.ne.jp/mayuki/20111216/1324015296

675 :名無し~3.EXE:2014/12/07(日) 02:16:11.14 ID:AWYCy4y8.net
スクリプトのダブルクリックで起動させたいなら>44の方法で

676 :名無し~3.EXE:2014/12/07(日) 08:47:00.96 ID:addxdQLq.net
>>674
wsh 5以降のバージョンアップ履歴がわからんので
だれもが興味ないと思われ。

便利な機能があったら使いたいが。

677 :HDI ◆hbVYHgubO6hK :2015/02/01(日) 05:00:21.01 ID:m75TbliY.net
MS IMEのプロパティ(ローマ字入力か仮名入力か、キーアサインはMS式か
ATOK式かVJE式か、オートコレクトの対象は…、etc.)をログオン直後に
スクリプトで変更したいのですが、何かいい方法はありますか?
ネットカフェとか公共図書館のPCコーナーとかに入ったときにいちいち
初期状態から変更するのが面倒なので、ワンクリックで処理したいのです。
WSHで無理ならExcel VBAとかC++とかでも構いません。

適用したい対象としては、Windows XP以降・Office 2007以降のすべての
バージョンのMS製IMEが操作できればベストです。
逆に、MS以外の他社のIME、たとえばATOKとかGoogleとかは無視して可です。
デフォルトでMS以外のIMEだけが入っているということはまずないので。

var ime=new ActiveXObject("xxxx.xxxx"); から書き始めるんだろうなあ…とは
思うものの、マシンの中にどういうActiveXが入っているのか調べる方法を
知らない有様ですので、その点についても教えていただければ幸いです。

データがHKEY_CURRENT_USERにあることは確認していますが、これを読み込むのは
起動時のみのようで(起動後にレジストリエディタで書き換えても反映されない)、
起動のたびに設定がまっさらになるマシンでは、レジストリの書き換えでは
無理なように思います。

よろしくお願いします。

678 :名無し~3.EXE:2015/02/01(日) 05:18:01.88 ID:sAJdFoY4.net
MS-IME

679 :名無し~3.EXE:2015/02/01(日) 06:07:20.52 ID:TR1gUJb7.net
ATOK

680 :名無し~3.EXE:2015/02/01(日) 06:26:01.34 ID:QzUKWvpg.net
33歳

681 : 【豚】 :2015/02/01(日) 06:43:40.20 ID:8yntfalp.net
(´・ω・`)

682 :名無し~3.EXE:2015/02/02(月) 18:39:34.28 ID:491TsZx9.net
webとwshを覚え始めたころ、
両方とも、Jscript/Javascript が使えるので
スクリプトはそれだけ覚えればいいじゃん
ということにしたら、

wshのサンプルプログラムは、VBscriptが大半で、
もういいや、と思って、はや9年。

683 :名無し~3.EXE:2015/02/02(月) 19:00:51.19 ID:eK+w3KVO.net
WSHはオワコンそれは間違いない、じゃあ何を使えば良いのかPowerShellかつーとこれはちょっと方向性が違う
MSもいい加減何か考えろよ、それとも後継は.netということなのか

684 :名無し~3.EXE:2015/02/04(水) 19:41:53.02 ID:7fmrLBIM.net
>>683 気軽に書けるインタプリタ言語、という縛りをかけると、
WSHを機能拡張するしか道はないように思う。
UNIX屋さんがいまだに/bin/shとかMakefileとかで作業してるみたいに。

685 :名無し~3.EXE:2015/02/06(金) 22:57:46.78 ID:tKm5DJDG.net
ちとおたずねしたい事があるでレスします。
ファイル名のリネームのひな型を作ってるのですが

Option Explicit
dim objFL,objFLD,rename
Set objFL = CreateObject("Scripting.FileSystemObject")
Set objFL = objFL.GetFolder("C:\temp")
Set objFLD = objFL.Files
rename = "150202.jpg"
objFLD.Item(rename).Name = "001.jpg"

上記で実行すると
「プロシージャの呼び出し、または引数が不正です。」
というエラーが出てしまいます。

下の部分を
objFLD.Item("150202.jpg").Name = "001.jpg"
に書換え
rename = "150202.jpg"
を削除すると
ファイル名が変更されました。

Itemプロパティの引数に変数は使えないのでしょうか?

686 :名無し~3.EXE:2015/02/07(土) 02:54:15.68 ID:m7VnhhKE.net
>>685
VBSは使わないのでItemプロパティで変数が使えない理由は知らないが
なぜGetFileを使わないの?
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFILE = objFSO.GetFile("c:\temp" & "\" & rename)
objFILE.Name = "001.jpg"
でいいと思うけど

687 :名無し~3.EXE:2015/02/07(土) 04:39:30.38 ID:P9nBQ8IX.net
>>686
知らなかったから……(恥)
まあ複数のファイルを扱いたかったのでFilesコレクションが
使えればと、ここでできなければ他の方法を探す予定でした。

近い形ができたので

Option Explicit

dim objFL,objFLD,objItem,i,l,objFiles(),objFSO,objFILE
Set objFL = CreateObject("Scripting.FileSystemObject")
Set objFL = objFL.GetFolder("C:\temp")
Set objFLD = objFL.Files

ReDim objFiles(objFLD.Count)
i = 1

For Each objItem In objFLD
Set objFiles(i) = objItem
i = i + 1
Next

l = i
i = 1

For i = 1 To l
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFILE = objFSO.GetFile(objFiles(i))
objFILE.Name = InputBox(objFiles(i)&"の名前を変更してください")
Next

これもエラーが出てますが土日は来れないと思いますのでひとまず。

688 :名無し~3.EXE:2015/02/07(土) 04:42:25.81 ID:P9nBQ8IX.net
>>686
それとお礼を忘れてました(汗)
有難うございます。

689 :名無し~3.EXE:2015/02/07(土) 05:39:16.39 ID:FFJOkXv4.net
WSH

690 :名無し~3.EXE:2015/02/07(土) 05:40:09.49 ID:wHuPUcI3.net
>>685
もう解決しているようだけど…ちょっとみてみた
CStr()するとか文字列演算するとかするとエラーにならないね
JScriptで似たようなコードだと、そんな変換必要ないし不思議だね

691 :名無し~3.EXE:2015/02/07(土) 05:57:22.40 ID:NRS/nR0g.net
VBS使わないなあ

692 :名無し~3.EXE:2015/02/07(土) 16:44:40.34 ID:m7VnhhKE.net
>>687
回りくどいことしてるけど、単純に以下のようにしちゃダメなの?

Option Explicit

dim objFSO,objFLD,objFC,objFILE
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFLD= objFSO.GetFolder("c:\temp")
Set objFC = objFLD.Files

For Each objFILE In objFC
objFILE.Name = InputBox(objFILE.Path & "の名前を変更してください")
Next

693 :名無し~3.EXE:2015/02/08(日) 14:53:46.71 ID:3Sq3UJI6.net
基本的な部分はもっと単純に出来る

Dim objFSO,objFILE
Set objFSO = CreateObject("Scripting.FileSystemObject")
For Each objFILE In objFSO.GetFolder("c:\temp").Files
  objFILE.Name = InputBox(objFILE.Path & "の名前を変更してください")
Next

使い回さないなら、フォルダオブジェクトもファイルコレクションも変数に取る必要はない

でも逆に複雑にというか例外処理を入れた方が良い部分があり
InputBoxの戻り値は、直接ファイルオブジェクトのNameプロパティに代入しないで
一度変数に取り、空の場合、元のファイル名と同じ場合、重複がある場合などの対策を取った方が良い

とにかく、「フォルダ内の全ファイル」って対象のリネーム作業は
途中でエラー出して強制終了すると、リネーム終ってるものも含めて最初からやり直しで
しかもリネーム終ってるものはそのままのファイル名にしたくても
NameプロパティにInputBoxの戻り値を直接代入している状態では、未入力でOKやEnter押せばエラーになり
キャンセルボタンを押してもエラーになり、同じ名前を入力してもエラーになりで収集が付かなくなる

別の回避策としては、リネームが終ったファイルはc:\tempからc:\temp\#renameに
ファイル名変更と同時に移動を行い、処理の最後でc:\temp\#rename内の全ファイルを
c:\tempに移動してc:\temp\#renameを削除するって手もある
これなら途中のエラーで強制終了しても、次に実行した時にエラーになったファイルから始められるし
途中で強制終了せずに最後まで正常実行されれば、移動したファイルも元に戻るし
作った一時待避用フォルダも残らないので、結果は全く変わらない

説明が長くなったが、ファイル名変更って取っ掛かりは簡単だけど、まともなものを作るのはそれだけ難しいってこった
他には、使用不可文字とか、ファイルがロックされてるとかもあり得るしね
因みに知ってるかもしれないが、MsgBoxのボタン指定でvbYesNoCancelを使うと、三択の処理分けが出来るので
戻り値がEmptyだったら「はい→スキップ」「いいえ→再入力」「キャンセル→処理全体を終了」とか
重複がある場合は「はい→自動連番化」「いいえ→再入力」「キャンセル→スキップ」とかの対策が出来る

694 :名無し~3.EXE:2015/02/09(月) 19:00:47.67 ID:dzFyHPM6.net
ファイルの取り扱いで多摩にあるのがフルパス長すぎでエラーが返るとかもあるな

695 :名無し~3.EXE:2015/02/11(水) 01:35:35.01 ID:wKEalFGT.net
遅くなりまして済みませんようやく返事します。

>>690
CStr()はダメだった、文字列演算はやってない
JScriptは知識不足でできなかった申し訳ない。

>>692
思いつかなかっただけです(汗)

>>693
>NameプロパティにInputBoxの戻り値を直接代入している状態では、
>未入力でOKやEnter押せばエラーになり
>キャンセルボタンを押してもエラーになり、
>同じ名前を入力してもエラーになりで収集が付かなくなる
なんか例外処理を入れた方が良さそうだが、自分1人でファイル数も
2〜3個を毎週処理する形なので単純な方を選びます。

>MsgBoxのボタン指定でvbYesNoCancelを使うと、
>三択の処理分けが出来るので
知っておりません……(再汗)

リネームに追加部分をつけるので>>693がシンプルでいいが使い回しの点で
>>692のコードにするかもしれない、WSHを使おうと思ったのは省力化と
WHSの勉強を兼ねてなのだが省力化からはもう逸脱しているようだ(笑)

皆さんレスありがとうございました。

696 :名無し~3.EXE:2015/02/11(水) 01:50:33.27 ID:RhhN4UgP.net
個人で使うにしても
せめて、入力のスキップと途中での中断とリネーム後のエラーチェックとそのリトライかキャンセル
ぐらいは組み込んだらいいと思う

697 :名無し~3.EXE:2015/02/11(水) 05:24:33.23 ID:7mopOKOq.net
>>695
うちの環境では
objFLD.Item(rename).Name = "001.jpg"

objFLD.Item(CStr(rename)).Name = "001.jpg"
もしくは
objFLD.Item(rename & "").Name = "001.jpg"
でエラーが出なくなったよ
(そもそも最初のがなぜエラーになるかわかんないけど)

698 :名無し~3.EXE:2015/02/11(水) 19:11:40.19 ID:wKEalFGT.net
>>697
どもありがとうございました。
これで動作しました。

>>695で試した時は
rename = "150202.jpg"
objFLD.Item(rename).Name = "001.jpg"

の間に
rename = CStr(rename)
を入れてました。

これを含めて改めて自分のコードを
見るとくどいな。

699 :名無し~3.EXE:2015/02/11(水) 19:37:51.15 ID:RhhN4UgP.net
>>698
ちょっとエラーチェックを入れたのを作ったので参考にどうぞ

Option Explicit
Const cFolder = "c:\temp"
Dim MyName
Dim FSO, folder, file, r, name, tmpname
Call renameAll()
Set FSO = Nothing

Sub renameAll()
Set FSO = CreateObject("Scripting.FileSystemObject")
MyName = cFolder & "の全ファイルリネーム"
If FSO.FolderExists(cFolder) Then
Set folder = FSO.GetFolder(cFolder)
For Each file In folder.Files
tmpname = ""
Do
Do
name = InputBox(file.Path & "の名前を変更してください", MyName, tmpname)
If name="" Then
r = MsgBox("終了していいですか",vbYesNo+vbQuestion, MyName) '=6:vbYes =7:vbNo
If r = vbYes Then
Exit For
End If
End If
Loop While name=""

700 :名無し~3.EXE:2015/02/11(水) 19:38:45.26 ID:RhhN4UgP.net
r = rename(file, name)
If r = vbAbort Then
Exit For
End If
tmpname = name
Loop While r = vbRetry
Next
End If
End Sub

Function rename(file, name) '=0:finished =3:中止 =4:再試行 =5:無視
rename = 0
On Error Resume Next
Err.Clear
file.Name = name
If Err.Number <> 0 Then
rename = MsgBox("リネームできませんでした" & vbCrLf & Err.Description, _
vbAbortRetryIgnore+vbDefaultButton2+vbExclamation, _
file.Path & "のリネーム")
End If
End Function

701 :名無し~3.EXE:2015/02/11(水) 20:45:53.97 ID:H/yaaeQZ.net
お前らpastebin使えよcodeを直接貼るんじゃない

702 :名無し~3.EXE:2015/02/12(木) 02:21:21.05 ID:TiWIWQj1.net
>>699
どうもありがとうございます
参考にさせていただきます。

703 :名無し~3.EXE:2015/02/12(木) 17:24:29.62 ID:ouhd2nvy.net
>>702
ついでにソートもどうぞ(>>699でfolder.Files→sortFiles(folder.Files)に変更)
Function sortFiles(files)
Dim rs, files2, f, i, newfiles
ReDim filesArray(files.Count-1)

Set rs = CreateObject("ADODB.Recordset")
Call rs.Fields.Append("index", 3, 255) '=3:adInteger
Call rs.Fields.Append("name", 200, 255) '=200:adVarChar
Call rs.Fields.Append("dateLastModified", 7) '=7:adDate
Call rs.Open()
i = 0
For Each f In files
Call rs.AddNew()
rs.Fields("index").Value = i
rs.Fields("name").Value = f.Name
rs.Fields("dateLastModified").Value = f.DateLastModified
Set filesArray(i) = f
i = i + 1
Next
Call rs.Update()
rs.Sort = "dateLastModified DESC" 'ASC:昇順 DESC:降順
files2 = rs.GetRows()
Call rs.Close()
Set rs = Nothing
Set newfiles = CreateObject("Scripting.Dictionary")
For i = 0 To UBound(files2, 2)
newfiles.Add filesArray(files2(0,i)), filesArray(files2(0,i))
Next
Set sortFiles = newfiles
Set newfiles = Nothing
End Function

704 :名無し~3.EXE:2015/02/12(木) 17:40:34.10 ID:ouhd2nvy.net
ちょっと修正
>>699
Set FSO = CreateObject("Scripting.FileSystemObject")
をSubの外へ出す
Set FSO = CreateObject("Scripting.FileSystemObject")
Call renameAll()
Set FSO = Nothing

>>703
Call rs.Fields.Append("index", 3, 255) '=3:adInteger

Call rs.Fields.Append("index", 3) '=3:adInteger

705 :名無し~3.EXE:2015/02/12(木) 17:56:35.98 ID:ouhd2nvy.net
ちょっとVBSを勉強して扱ってみたけどなんかやっぱり俺には合わん気がした

706 :名無し~3.EXE:2015/02/12(木) 19:29:20.87 ID:JiJlTdL6.net
言語的にではなく、アルゴリズム的にこういう幼稚なコード書く奴は
どの言語使ったってどうせろくなものは作れないだろうから
VBSが合わないというより、プログラミングが合わないんだろうね

それなりに知識はありそうだけど、頭でっかちで柔軟性が無く
本質的に何が必要で何が無駄かを正しく判断できないタイプ

707 :名無し~3.EXE:2015/02/13(金) 20:49:30.30 ID:PV+7vqus.net
美しいスクリプトを書くコンテストじゃないんだから
幼稚な表現だろうが
何も書けない、デバックできないよりはよっぽどマシ。

書けることによって、人生やPC生活を楽しんだものの勝ち。

708 :名無し~3.EXE:2015/02/13(金) 21:32:31.20 ID:b+sto9Ml.net
向上心が欠片も感じられないレスですな

709 :名無し~3.EXE:2015/02/14(土) 03:18:04.85 ID:JkeFZdBX.net
コードが美しくないってのは別にどうでもいいけど
物事の考え方が美しくないってのは、
プログラムだけではなく日常生活にも滲み出てるだろうからな

彼の場合、パソコンを使って、プログラムを使って、何を成すかではなく
パソコンに詳しい俺、プログラミング出来る俺、を顕示するための道具が
パソコンやプログラムなだけなんだよね

シャコタンにしたり、スモーク貼りまくったり、ステッカー貼りまくったり
無駄にデカいホイール履いたり、無駄に音が大きいマフラー付けたりして
周りから見たら、アニメ絵とかを貼ってるイタ車とは違っても別な意味で痛いだけの車を、
自己顕示の道具として扱ってるDQNと大差ない

710 :名無し~3.EXE:2015/02/14(土) 16:12:51.96 ID:jMrdproP.net
それをマニアとかヲタクとか言う

711 :名無し~3.EXE:2015/02/14(土) 16:24:51.46 ID:jFlxCePM.net
美しいcodeってのは効率的なcodeだ
ブサイクだろうと動いてるcodeは良いcodeってのは現場の実用論に過ぎない

712 :名無し~3.EXE:2015/02/15(日) 02:11:14.89 ID:HqqCSMWe.net
ここはwindows板だ
コードを貼るなとか汚いコードとか無駄なコードは向上心のないDQNとか
そういうことで文句言うのはプログラマのいる板でやってくれ
過去そういうことで文句言ったやつはいないだろ

713 :名無し~3.EXE:2015/02/15(日) 04:23:11.03 ID:+8AYBQVI.net
> ここは稚拙な俺のコードにも、誰も文句を付けないスレであり続けて欲しい
まで読んだ

714 :名無し~3.EXE:2015/02/15(日) 14:56:43.28 ID:kGjK2wsT.net
うんまあ要するにだね、pastebin使えって言われたのに無視して貼り続けたから半分荒らし扱いされてんだよ

715 :名無し~3.EXE:2015/02/21(土) 15:58:50.26 ID:VnpKOASo.net
モニタを切るのにメッセージを投げようとSFC mini使ったんだけど上手くいかないorz

Option Explicit
Const HWND_BROADCAST = &HFFFF
Const WM_SYSCOMMAND = &H0112
Const SC_MONITORPOWER = &HF170
Const MONITOR_OFF = 2
Dim PostMessage
Set PostMessage = CreateObject("SfcMini.DynaCall")
PostMessage.Declare "user32", "PostMessage"
PostMessage HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_OFF
WScript.Quit 0

(つづく)

716 :名無し~3.EXE:2015/02/21(土) 15:59:52.92 ID:VnpKOASo.net
(つづき)

で、PowerShellでそれらしいの実行したら上手くいく・・・んだけど
PowerShellでヒアドキュメントや型追加なんかかったるいし読みづらい

$HWND_BROADCAST = 0xFFFF
$WM_SYSCOMMAND = 0x0112
$SC_MONITORPOWER = 0xF170
$MONITOR_OFF = 2
$signature = @'
[DllImport("user32.dll")]
public static extern bool PostMessage(
IntPtr hWnd,
UInt32 Msg,
Int32 wParam,
Int32 lParam);
'@
$monoff = Add-Type `
-MemberDefinition $signature -Name "Win32PostMessage" `
-Namespace "Win32Functions" -PassThru
$monoff::PostMessage($HWND_BROADCAST, $WM_SYSCOMMAND, $SC_MONITORPOWER, $MONITOR_OFF)
$null

なぜにWSHだとダメなんでしょ? SFC miniの使い方間違ってるんでしょうか?
環境はXP、Win7 Pro、Win7 HomePro(いづれもx86)です

717 :717:2015/02/21(土) 16:07:02.66 ID:VnpKOASo.net
> Win7 HomePro
Win7 Home Premiumの間違いorz

718 :名無し~3.EXE:2015/02/22(日) 02:01:26.73 ID:ue/FL006.net
PostMessage.Declare "user32", "PostMessageA"
にしてみれば?

719 :名無し~3.EXE:2015/02/22(日) 11:22:25.41 ID:bGQ+1wc4.net
>>718
やってみたんだけどダメでした

で、SC_MONITORPOWERだけじゃなく他の値も無反応だったので、ググってうちに
VB/VBA等で書かれてるページが幾つか見つかって眺めててたんだけど・・・
APIのI/FはwParam型(INT32)なんでSC_MONITORPOWERはlong型で渡さなきゃ
ダメだと気づきました(つまらない凡ミスorz
>>715

Const SC_MONITORPOWER = &HF170& 'long型を明示

で上手く動きました!(cscript.exeでダケだけど)

720 :名無し~3.EXE:2015/02/25(水) 23:03:55.68 ID:EVrBndbg.net
すごく初歩的な質問なのですが
False,0,Null,Empty,"False","0"以外は真になるとのことなので

'この二つが真になるのはわかるんですが
if 1 then
MsgBox "真"
End If

if 9 and 10 then
MsgBox "真"
End If

'↓これが真にならないのはなぜですか?
if 2 and 9 then
MsgBox "真にならない"
End If

'これだと問題ありません
if 2 then
if 9 then
MsgBox "真"
End If
End If

二つの関数からの戻り値が両方とも0以外なら真にしたかったのですが
それ自体はちゃんと指定すれば解決したのですがなんかすごい気になってしまって

721 :名無し~3.EXE:2015/02/25(水) 23:23:50.25 ID:uQDPRpG9.net
>>720
2 = 0010
9 = 1001
だからでそ

722 :名無し~3.EXE:2015/02/26(木) 00:46:02.74 ID:oLPusGvh.net
ファイルサーバ上にあるフォルダを共有フォルダにしたくて次のスクリプトをメモ帳にコピべしてvbs拡張子にして保存して、ダブルクリックしたのですが、何も表示されず、共有フォルダも表示されません。なにがダメなのでしょうか?

Const FILE_SHARE = 0
Const MAXIMUM_CONNECTIONS = ""

strComputer = "atl-ws-01"
Set objWMIService = GetObject _
("winmgmts:\\" & strComputer & "\root\cimv2")

Set objNewShare = objWMIService.Get("Win32_Share")

errReturn = objNewShare.Create _
("C:\Public", "PublicShare", FILE_SHARE, _
MAXIMUM_CONNECTIONS, "Public share for Fabrikam employees.")

パラメータ 説明
"C:\Public"
ファイルサーバ内の共有するフォルダのローカル パス

"PublicShare"
共有フォルダの共有名

FILE_SHARE
作成する共有の種類

MAXIMUM_CONNECTIONS
共有に同時に接続できるユーザーの最大数

"Fabrikam 社員用のパブリック共有"
共有フォルダの説明

723 :名無し~3.EXE:2015/02/26(木) 17:41:39.37 ID:tqIwUSBl.net
>>720
VBのAndは「AND演算」を行う
そのまま渡すのはTrue,Falseだけにして、それ以外は比較演算子や判定関数に渡したほうが良いよ

724 :名無し~3.EXE:2015/03/02(月) 21:57:26.73 ID:4eCMeSu6.net
>>720 偽のときの戻り値がゼロと決めてあるのなら、
if function1()<>0 and function2()<>0 then
と書ける。
0の場合もあるけどFalseとか""とかの場合もある、ということになると
(VBというよりExcelのワークシート関数とかでよくある罠だが)、
一つ一つの関数の結果を変数にとるなりしなきゃいけない。

VBのAndにはもう一つ罠がある。単純な例だがこんなのはダメ。
if x<>0 and f(1.0/x)=2 then

725 :名無し~3.EXE:2015/03/13(金) 08:50:37.46 ID:k2U8xQow.net
右Windowsキーの右隣のMenu/Applicationのキーストロークを
送信しようとしているのですが、うまくいきません。

お助けください。

var x0 = WScript.CreateObject("WScript.Shell");
x0.SendKeys("{APPSKEY}");

---------------------------
Windows Script Host
---------------------------
スクリプト: C:***\***.js
行: 2
文字: 1
エラー: プロシージャの呼び出し、または引数が不正です。
コード: 800A0005
ソース: Microsoft JScript 実行時エラー

---------------------------
OK
---------------------------

726 :名無し~3.EXE:2015/03/14(土) 19:04:00.24 ID:xyKM/Ni4.net
//Shift+F10で出る右クリックメニューに'P'を送る
var x0 = WScript.CreateObject("WScript.Shell");
x0.SendKeys("+({F10}{PRTSC}{PRTSC}{PRTSC}{PRTSC}{PRTSC}{PRTSC}{PRTSC}{PRTSC}P)");

727 :名無し~3.EXE:2015/03/15(日) 19:40:14.43 ID:Ur/MCA52.net
>>726
ありがとうございます。
どこにも回答がなかったので・・・

・・・しかし、なんで{PRTSC}を。。
と思ったらwaitの代わりなんですねこれ。

728 :名無し~3.EXE:2015/03/16(月) 22:17:56.08 ID:3SLugBpb.net
一部の環境で
WScript.CreateObject("〜")
がWScriptは宣言されていませんとエラーになる原因って何なんですかね?
記述として正しいはずなのにWScriptを削れ(ググると出てくる対処療法)と言うのも変な話ですし

729 :名無し~3.EXE:2015/03/24(火) 09:41:17.61 ID:j6UY6oz/.net
>>728
WScriptオブジェクトがあるのはWSHの時だけ

WScriptを削るとWScriptオブジェクトのCreateObjectメソッドではなく
VBScript自体が持ってるCreateObject関数の呼び出しになる

CreateObject関数はVBSが実行できるなら、どの環境でも使える

WScriptオブジェクトのCreateObjectメソッド
https://msdn.microsoft.com/ja-jp/library/cc364399.aspx
VBScriptのCreateObject関数
https://msdn.microsoft.com/ja-jp/library/cc410215.aspx

730 :名無し~3.EXE:2015/03/24(火) 16:04:39.58 ID:qjgitYka.net
WSHエンジンを叩いた時点でWScriptがインスタント化される
だからWSHを叩かなきゃ当然WScriptオブジェクトは存在しない

731 :名無し~3.EXE:2015/03/24(火) 16:05:44.79 ID:qjgitYka.net
何でインスタントだよインスタンスだ俺の馬鹿

732 :名無し~3.EXE:2015/03/26(木) 23:55:44.54 ID:/eqpjRM9.net
wshでExcelの扱い方が分かるサイトご存知でしたら教えていただけませんか?
既存のワークブックのセルを外から操作とか

733 :名無し~3.EXE:2015/03/27(金) 00:43:05.87 ID:yPVC3FPi.net
オブジェクトの掴み方や制約事項が多い以外は基本的にVBAとやり方は同じだから、基礎はマクロの文献漁った方が早いよ。

そもそもWSHやVBAの基礎になってるActiveX/COMつーのは、Excelみたいなものを共通部品(コンポーネント)化して、VBAのようなアプリ付属のマクロやWSHのような独立した言語から同じように使えるようにする技術なので。

734 :名無し~3.EXE:2015/03/27(金) 00:57:13.75 ID:yPVC3FPi.net
ちなみにActiveXのCOM違いについて悩むかもしれんので補足すると、ActiveXがバージョンアップでCOMに変わったと考えて貰えばよろし。
更に付け加えると
クリップボード→DDE→OLE→ActiveX→COM→DCOM→COM+という流れがあって、古い技術で覚えたことが新しい技術でも何らかの形で役立つようになってる。
またMSはそれをWindows DNAと呼んでる。

735 :名無し~3.EXE:2015/04/14(火) 06:33:55.51 ID:va3U4Gqa.net
gVimでJSCriptを編集していますが、
JSHintが変なところに警告をだしてしまいます。

if(tagTitle != 'Internet Explorer ではこのページは表示できません')

↑だと「は」のところに "bad or unnecessary escaping." と警告を出します。
UTF8ではなく、CP932で編集していることが原因?
だと思うのですが、回避する方法はありますでしょうか?

736 :名無し~3.EXE:2015/04/14(火) 09:35:09.98 ID:qHEHyjhC.net
onion

737 :名無し~3.EXE:2015/04/30(木) 21:41:56.40 ID:/LRZyAtt.net
職場のPC(win7/32bit)で、自由にソフトウェアをインストロールできない環境で
wsh/jscriptである程度自動化するのに
マウスを移動する、マウスの位置を検出する、
マウスを(D)クリックする、マウスを右クリックする
だけは、vc#(.net flamewalk2)でexeファイルを作成し
.exec()で、引数をつけ今までは使えていたのに
今日から、有効なwin32アプリケーションではありませんエラーで使えなくなった。

.exec()を経由しないで
別の単独実行可能なvc#(.net flamewalk2)で作成したexeファイルは
ダブリュークリックで普通に動く。

職場のPC管理者は陰険な妨害をしやがって、プンプン。

マウス操作なら、excelでwin32API叩ける関数で代用できるらしいが
勉強してないからなぁ。

738 :名無し~3.EXE:2015/04/30(木) 21:46:14.83 ID:nWtW7g8l.net
execで全部のexeがダメなわけじゃないのなら、以下のを試してみれば?
http://3rd.geocities.jp/kaito_extra/Source/MouseCtrl.html

739 :名無し~3.EXE:2015/04/30(木) 23:42:03.25 ID:/LRZyAtt.net
>>738
ありがとうございます。

ネットで配布されているDLL があやしいか、あやしくないかですが
自己責任で使ってみるしかないかなぁ。


Visual C++ 2010 express 入れてみて
ライセンスキーも入れたけど
windows form によるUI表示がない場合で
マウスI/Oをどうすればいいか
調べるだけで敷居が高いわなぁー
このスレではすれ違いですがね。

740 :名無し~3.EXE:2015/05/01(金) 00:09:58.65 ID:n4sigpVl.net
(´・ω・`)

741 :名無し~3.EXE:2015/05/01(金) 00:22:06.61 ID:n4sigpVl.net
ヽ( ・∀・)ノ● ウンコー

742 :名無し~3.EXE:2015/05/04(月) 12:04:00.19 ID:1NxYoByh.net
スクリプト内のコマンドを管理者権限で実行したい場合は、自身をShellExecuteにrunas付きで起動しなおすと
昇格ダイアログの出現を最初の1回のみに出来るけど以降実行されるすべてのコマンドが管理者権限で
実行されてしまう
最初の1回の昇格ダイアログで
コマンド1(管理者)
 ↓
コマンド2(ユーザー)
 ↓
コマンド3(管理者)
みたいなことって出来ないのかな・・・

743 :名無し~3.EXE:2015/05/04(月) 16:53:59.41 ID:FXdqzO1I.net
runasオプションで管理者かどうか変えるんだっけ?
コマンド2は別スクリプトファイルを生成して、そこだけexecで起動すればどうだろ

744 :名無し~3.EXE:2015/05/08(金) 23:20:30.41 ID:AIQ249EY.net
Win10だと今のところ
cscript //e:{1b7cd997-e5ff-4932-a7a6-2a9e636da385} hoge.js
または
wscript //e:{1b7cd997-e5ff-4932-a7a6-2a9e636da385} hoge.js
で、hoge.jsをIE11モードで実行できる

({1b7cd997-e5ff-4932-a7a6-2a9e636da385}はchakra.dllのCLSID)

745 :745:2015/05/08(金) 23:39:36.96 ID:AIQ249EY.net
http://i.imgur.com/cukJFoh.png

WSHでletを使ってもエラーにならないの図

746 :名無し~3.EXE:2015/05/08(金) 23:52:07.41 ID:iucWayLK.net
onion

747 :名無し~3.EXE:2015/05/08(金) 23:54:37.61 ID:p7W4x9kO.net
これすごくね
最新のjsライブラリよりどりみどりじゃん
wshはじまた

748 :名無し~3.EXE:2015/05/09(土) 12:13:07.59 ID:KRtLfl+h.net
それは以前にもあったネタだよね
http://subtech.g.hatena.ne.jp/mayuki/20111216/1324015296
WSHではどうやっても5.7互換モードでしか動かないって結論が出てたはずだけど、Win10ではまともに動くのかな

749 :名無し~3.EXE:2015/05/09(土) 14:13:40.03 ID:3Wn8xF40.net
なるほど

750 :名無し~3.EXE:2015/05/09(土) 14:38:55.86 ID:3Wn8xF40.net
onion

751 :名無し~3.EXE:2015/05/09(土) 14:48:40.54 ID:qZN+uui7.net
(*゚Д゚)ムッハー

752 :名無し~3.EXE:2015/05/14(木) 19:59:05.56 ID:na1Ke3J0.net
Microsoft、Windows 10 IoT Core上でNode.jsを利用可能にする取り組みについてブログで解説
http://codezine.jp/article/detail/8722

Windows 10によるNode.jsのサポートは、現時点ではまだ開発の初期段階で、
Chakra JavaScriptエンジンと「Node.js v0.12」のコードを使用したV8 APIのホスティングによる
JSRT APIラッパーの開発を目指している。

GitHubで公開している最新のコードでは、Windows 10が動作するすべてのデバイスで、
Node.jsがクラシックWindowsアプリケーションとして動作するとともに、
ユニバーサルWindowsアプリケーションの内部でホストできる。
また、Node.jsアプリからUWP APIの全ての機能にアクセス可能で、
Windows 10上のVisual Studioにおける、Node.jsアプリのデバッグを実現している。

現段階では、Windows 10の動作するすべてのデバイスでNode.jsを利用した開発を実現するだけでなく、
クラシックWindowsアプリとして利用するか、ユニバーサルWindowsアプリとして利用するかを選択できる。

753 :名無し~3.EXE:2015/05/14(木) 20:22:22.46 ID:eplPU7hw.net
(´・ω・`)

754 :名無し~3.EXE:2015/05/19(火) 21:24:54.79 ID:DJFQjSZE.net
WORDで2セクションから成るWORDのファイルを
別々のファイルとして自動的に保存するサンプルはVBscript版はy!知恵袋にあるが
jscript版はなかったので、灯火。

var oWord = WScript.CreateObject("Word.Application");
var oDoc = oWord.Documents.Open("C:\\Users\\Public\\Documents\\01bunkatuMAE.doc");
oWord.Visible = true;
var newDoc,sec;

for(i=1;i<=2;i++){

sec = oDoc.Sections(i);
newDoc = oWord.Documents.Add();

oDoc.Range(sec.Range.Start, sec.Range.End - 1).Copy();
newDoc.Range().Paste();
if(i==1) newDoc.SaveAs("C:\\Users\\Public\\Documents\\02_section1.doc");
if(i==2) newDoc.SaveAs("C:\\Users\\Public\\Documents\\03_section2.doc");
newDoc.close();
}

oDoc.close();

755 :名無し~3.EXE:2015/05/21(木) 20:38:57.59 ID:A6tn3+F6.net
>>754 は
win7sp1 64bit+word2000なら動くが、win7sp1 32bit+word2010だと動かないんで
ツルーしてくれ。

756 :名無し~3.EXE:2015/05/21(木) 21:18:58.62 ID:iZCONYdP.net
(´・ω・`)

757 :名無し~3.EXE:2015/05/21(木) 21:37:06.04 ID:/5sD0n5M.net
tes

758 :名無し~3.EXE:2015/05/23(土) 15:41:12.05 ID:ISKmDePi.net
俺も投下。wshからexplorerを経由してhtaを利用するサンプル。ググってもIEを経由する方法しか無かったので

function createHta() {
var shellApp = new ActiveXObject("Shell.Application");
var existsExplr = !!shellApp.Windows().Count;
existsExplr || shellApp.ShellExecute("", "", "explorer.exe", "", 0);
for(; !shellApp.Windows().Count; WScript.Sleep(100));
var explr = shellApp.Windows().Item(0);
explr.PutProperty("hta", undefined);
var exec = new ActiveXObject("WScript.Shell").Exec("mshta.exe \"about:" +
"<head><meta http-equiv='X-UA-Compatible' content='IE=11' />" +
"<script>window.moveTo(window.screen.width, window.screen.length);" +
"new ActiveXObject('Shell.Application').Windows().Item(0)" +
".PutProperty('hta', window);</script></head><body></body>\"");
for(; explr.GetProperty("hta") === undefined; WScript.Sleep(100));
var window = explr.GetProperty("hta");
explr.PutProperty("hta", undefined);
existsExplr || explr.Quit();
return {window: window, exec: exec};
}

つづく

759 :名無し~3.EXE:2015/05/23(土) 15:43:29.47 ID:ISKmDePi.net
使用例

var hta = createHta();
function callback() {
WScript.Echo("this is wsh function");
}
hta.window.document.write("click here");
hta.window.document.body.addEventListener("click", callback);
hta.window.resizeTo(600, 400);
hta.window.moveTo(0, 0);
for(; !hta.exec.status; WScript.Sleep(1000));

metaタグで一応IE11モードで動くようにしてある
起動と同時に画面外に移動させ、初期化が完了したら呼び戻す
htaが終了するまでwshは待機する
wshからhtaのwindowオブジェクトにアクセスできる
逆にhtaからwshの関数をコールバックすることもできる
なおhtaにjqueryを読み込んでonメソッドでwshの関数をセットするのは無理だった
ブラウザ用のライブラリ使って高度なことやるなら普通にhtaでやったほうがよさそう

おわり

760 :名無し~3.EXE:2015/05/23(土) 20:55:04.00 ID:ISKmDePi.net
追伸

document.write()だとソース消えちゃうんだな

hta.window.document.write("click here");
↓こうで
hta.window.document.body.innerText = "click here";

今度こそおわり

761 :名無し~3.EXE:2015/05/23(土) 21:18:49.17 ID:FbAoSuRB.net


762 :名無し~3.EXE:2015/05/23(土) 21:43:08.57 ID:FbAoSuRB.net


763 :名無し~3.EXE:2015/05/23(土) 22:11:59.33 ID:X2cmX/YI.net
thx

764 :名無し~3.EXE:2015/05/25(月) 23:47:20.51 ID:E7cADiN2.net
>>758-760だけど「単独のjsファイルでウインドウ付きのguiアプリを動かす」というだけならこんな面倒なことせずに済むことに気づいた
起動するhtaの外部ソースに自分自身を指定するだけ

(function() {
if ("WScript" in this) {
new ActiveXObject("WScript.Shell").Run("mshta.exe \"about:" +
"<head><meta http-equiv='X-UA-Compatible' content='IE=edge' />" +
"<script src=" + WScript.ScriptFullName + "></script></head><body></body>\"");
WScript.Quit();
}
})();

onload = function(){
document.body.innerText = "click here";
document.body.addEventListener("click", function() {
alert("success");
});
resizeTo(600, 400);
};

これを拡張子.jsにしてダブルクリックするとウインドウが立ち上がる
上の無名関数はwshで実行するとhtaを起動し、htaで実行するとスルーしてその後の処理を続ける
webサイト用のjsも頭にこれを付けると(うまくいけば)ローカルアプリになる
既出のテクかもしれないけど一応報告

765 :名無し~3.EXE:2015/05/26(火) 08:59:16.46 ID:D2iz9cfE.net
すまんクォーテーションでくくるの忘れてた
"<script src=" + WScript.ScriptFullName + "></script></head><body></body>\"");
↓こうで
"<script src='" + WScript.ScriptFullName + "'></script></head><body></body>\"");

766 :名無し~3.EXE:2015/05/27(水) 22:13:07.05 ID:UVeFO6It.net
勉強がてらD3.jsを使ってCPU周波数を可視化するサンプル作った。.jsにしてダブルクリック
スクショ→http://i.imgur.com/IgY8wq5.png

if ("WScript" in this) {
new ActiveXObject("WScript.Shell").Run("mshta.exe \"about:" +
"<head><meta http-equiv='X-UA-Compatible' content='IE=edge' />" +
"<script src='http://d3js.org/d3.v3.min.js'></script>" +
"<script src='" + WScript.ScriptFullName + "'></script>" +
"<script>moveTo(screen.width, 0);</script>" +
"<title>" + WScript.ScriptName + "</title></head><body></body>\"");
WScript.Quit();
}

onload = function() {
var service = new ActiveXObject("WbemScripting.SWbemLocator").ConnectServer();
var svg = d3.select("body").style({margin: 0, overflow: "hidden"}).append("svg").attr({width: 300, height: 300});
var circle = svg.append("circle").attr({cx: 150, cy: 150, fill: "white", stroke: "black", "stroke-width": 6});
var text = svg.append("text").attr({x: 150, y: 160, "text-anchor": "middle", "font-size": 25, "font-family": "sans-serif"});
setInterval(function(){
var records = service.ExecQuery("SELECT MaxClockSpeed, CurrentClockSpeed FROM Win32_Processor");
var record = new Enumerator(records).item();
var rScale = d3.scale.linear().domain([0, record.MaxClockSpeed]).range([0, 145]);
circle.data([record.CurrentClockSpeed]).transition().attr({r: rScale});
text.text(record.CurrentClockSpeed + " Mhz");
}, 1000);
resizeTo(320, 340);
moveTo((screen.width - innerWidth) / 2, (screen.height - innerHeight) / 2);
};

767 :名無し~3.EXE:2015/06/07(日) 18:01:55.94 ID:ba00/D5p.net
ここの人たちはどうやってWSHを勉強しているんだろう
本屋行っても2種類くらいしか書籍ないし、ネットでもほとんど情報ないし
JavaScriptが分かるからこれで作業自動化なんて考えたけど難しい

768 :名無し~3.EXE:2015/06/07(日) 19:33:18.23 ID:LcHw3WPs.net
JavaScriptとMSDNにあるWSHのリファレンス

769 :名無し~3.EXE:2015/06/07(日) 22:56:55.56 ID:RSp5U117.net
>>767
何かやりたいことが先にあって、それを実現するにはとうしたらいいかを調べていけばいい
学校の授業のように教科書があって順に読んでいけば良いとか無い
またそんな曖昧な目的しかなければ何時まで経っても身に付かないと思う

770 :名無し~3.EXE:2015/06/08(月) 23:29:47.27 ID:45GIk1Zt.net
>>767
scd56jp.exe をダウンロードして
ムリヤリ解凍して得られる script56.chm をエディタの外部ヘルプにしている。

771 :名無し~3.EXE:2015/06/09(火) 00:37:03.27 ID:cIGPXtYX.net
情報thx

772 :名無し~3.EXE:2015/06/09(火) 00:52:59.92 ID:42hj0R96.net
>>767だけど情報ありがとう
そういえば今まで行き詰まったらずっと教科書的なもの探してたわ
通りでプログラミングに限界感じてたわけだ
無駄に買った本はプライスレス

773 :名無し~3.EXE:2015/06/13(土) 21:50:01.10 ID:lqFz5zpc.net
jscript を chakra で実行すると WScript.quit って使えないの?

774 :名無し~3.EXE:2015/06/13(土) 23:01:38.40 ID:aBVLZMxS.net
というか>>744って動く?
Win10 Build10130だけど「スクリプトエンジンが見つかりません」ってなる

775 :名無し~3.EXE:2015/06/13(土) 23:28:44.26 ID:lqFz5zpc.net
>>774
言われてみれば,自分の使っているのとは違ってる。 自分は,
cscript //E:{16d51579-a30b-4c8b-a276-0ff4dc41e755} hoge.js
だた。

776 :775:2015/07/02(木) 17:01:18.39 ID:44uIXt3S.net
Build 10158で>>744動いた
よかったよかった
でもclass構文はまだなのね
アロー関数が使えるだけでも十分だけど

>>775
なぜかBuild 10130だとそれも動かなかったんだよね
うちの環境がバグってただけかもしれないけど

777 :名無し~3.EXE:2015/07/05(日) 09:47:49.01 ID:HOP89DPP.net
Alt+tabのときに出てくる画面選択できるウィンドウを表示させたままにしたいのですが、これはwshで実現可能ですか?
ソフトのダウンロードではなくメモ帳でjseやvbsで作成したいです。
検索かけてもキーの自動入力くらいしか見つからなくって

778 :名無し~3.EXE:2015/07/05(日) 20:49:51.63 ID:bMwt9ybH.net
>>777
Win8.x/10ならこれ

https://msdn.microsoft.com/en-us/library/bb774117(v=vs.85).aspx

Vista/7だとFlip3Dになっちゃうけど

779 :779:2015/07/05(日) 20:53:22.81 ID:bMwt9ybH.net
VBS → CreateObject("Shell.Application").WindowSwitcher
JS → new ActiveXObject("Shell.Application").WindowSwitcher();

780 :名無し~3.EXE:2015/07/06(月) 00:33:30.17 ID:1hJ4Jgm2.net
>>779
ありがとうございます!
switcherのような名前で検索するとマイクロソフトの公式で調べられたんですね。
あとはウィンドウを表示させたままにする方法を探してみようと思います。
使っているファイルが多いのと、最近目が疲れているせいかalt+tabで開いてもどれが目的のウィンドウか探すのに地味に時間がかかってしまって……

781 :名無し~3.EXE:2015/07/06(月) 04:45:21.92 ID:vbmuV6vK.net
thx

782 :名無し~3.EXE:2015/07/11(土) 15:51:17.53 ID:9Eg4whLJ.net
chakra(>>744)だとEnumeratorがないからFileSystemObjectのfilesコレクションとか列挙できないな
せっかく書きやすくなったと思ったのに残念

783 :名無し~3.EXE:2015/07/12(日) 14:51:20.12 ID:owIV2yJO.net
>>782
Shell.Applicationを使う手はある

http://i.imgur.com/xwNL8EL.png

784 :名無し~3.EXE:2015/07/12(日) 15:53:48.36 ID:7v5ASif7.net
>>783
shell.exec(`cmd /c "dir ${path} /b"`)
で頑張ろうとしてたけど、そんな方法もあったのね
ありがとう

785 :名無し~3.EXE:2015/07/12(日) 22:06:02.78 ID:aQFxKc5K.net
WSHのバージョン5.812ってなんだよww

786 :名無し~3.EXE:2015/07/29(水) 02:08:22.01 ID:Wfnu2z0p.net
vbsやwsfやhtaって10でも使えるって考えていいの?
powershellに統一されることはないの?

787 :名無し~3.EXE:2015/07/31(金) 01:28:37.30 ID:YUritsbl.net
パワーシェルはバッチと組み合わせないと使えないのでめんどくさい。

788 :名無し~3.EXE:2015/08/02(日) 22:51:04.34 ID:w8/vcCRG.net
>>787
どーゆー意味?

789 :名無し~3.EXE:2015/09/01(火) 23:45:19.08 ID:+Mia2Mma.net
Windows7のタスクスケジューラで問題なく起動していたjsが
Windows10にアップグレードしたら「このファイルを開く方法を選んでください」ダイヤログが出て動かなくなった
半日悩んだがファイル名に半角スペースが含まれていたからだった
この糞仕様は常識なの?

790 :名無し~3.EXE:2015/09/16(水) 19:26:54.05 ID:T514hgKkN
最上位オブジェクトについての質問です
htaならwindow、wsfならscriptletですが、jsやvbs単体だと何になるのでしょうか?

791 :名無し~3.EXE:2015/09/20(日) 15:54:26.33 ID:S9LQQUec.net
アップグレードでダブルクォーテーション取れたとかじゃなくて?

半角スペース云々の話は常識っていうか…
それを糞と言っちゃう人の頭が糞仕様としか

792 :名無し~3.EXE:2015/10/10(土) 03:33:34.62 ID:ZxWiY8fL.net
>>764をSJISで保存して漢字を入れると盛大に文字化けするんだけど文字コードってどうやって指定するんでしょうか。
<meta http-equiv='Content-Type' content='text/html; charset=shift_jis' />を入れても解消しませんでした。
ファイルをUTF8で保存すると文字化けせず大丈夫なんですが任意の文字コードが使えないとちょっと。

793 :名無し~3.EXE:2015/10/11(日) 16:33:07.95 ID:jSwD0goV.net
ちょろっとやってみたらhtaのロード部分はなんの問題も無いみたいだね
問題はonload部分の文字コードがutf-8決め打ちで読み取られてる、と言う訳でscriptタグ部分にcharsetを指定してやればいい
"<script charset ='shift_jis' src='" + WScript.ScriptFullName + "'></script>

794 :名無し~3.EXE:2015/10/30(金) 15:55:24.49 ID:gAY/Xk4a.net
ホスト自作してchakraでスクリプティングとかの実例は無いんかのう。

795 :名無し~3.EXE:2015/10/31(土) 23:17:18.36 ID:PFgOQOh9.net
Set DW = CreateObject("DynamicWrapper")

とメモ帳に入力し、C\直下にDW.vbsで保存。コマンドプロンプトを管理者権限で起動し、
c:\windows\SysWOW64\cscript.exe DW.vbs
と実行すると、ActiveXコンポーネントはオブジェクトを作成できません。というエラーを吐く

何で?
Win7 64bit

796 :名無し~3.EXE:2015/11/07(土) 07:57:35.87 ID:coD8+8oH.net
会社に命じられてWindows7 64ビットに移行させられたんですけど、一部のvbsが動きません
32ビットのwscriptエンジンを使えばいいかなと思うのですが、
今まで通りダブルクリックやファイルをドロップする実行方法で32ビットのエンジンで実行する方法ありましたら教えてください

ファイルの関連付けを変える方法を試したのですがうまくいきませんでした

797 :名無し~3.EXE:2015/11/07(土) 17:03:07.12 ID:U4HN3Ay4.net
wshでADO.NET使えますか?

798 :名無し~3.EXE:2015/11/08(日) 19:26:08.58 ID:EuCvPNOS.net
>>796
レジストリいじっていいならregeditで
HKEY_CLASSESROOT\vbsfile\shell\open\commandに
C:\windows\SysWOW64\wscript.exe "%1" %*入れる

C:\Windows\System32\WScript.exe "%1" %*があったら上に変更
駄目だったら戻してね

799 :名無し~3.EXE:2015/11/08(日) 23:50:23.04 ID:V3wje+U4.net
>>796

方法その一
259 名前:名無し~3.EXE[sage] 投稿日:2011/09/26(月) 00:25:36.97 ID:CKbYoUCB
WSHスクリプトを64/32bitが違っていたら起動し直す。
http://scripting.cocolog-nifty.com/blog/2011/02/wsh6432bit-b32d.html

方法その二
32bitアプリのファイラを使ってvbsファイルを操作する

800 :796:2015/11/10(火) 22:41:08.95 ID:HDYxoiSR.net
>>798
ありがとうございます。ひとまず動くようになったみたいです。本格稼働してみて何かあればまた相談させてください

>>799
なんか難しそうですね。動かないスクリプトの先頭行にこれを書けばいいのでしょうか
解読してみます

801 :名無し~3.EXE:2015/11/14(土) 19:19:55.55 ID:RNO50Lcc.net
横からだけど%*ってどういう意味だっけ

802 :名無し~3.EXE:2015/11/15(日) 00:45:26.56 ID:t8TVpiZ9.net
>>801
コマンドラインのパラメータ全部。

いつのまにかイテレータがうごくようになってるな。

803 :名無し~3.EXE:2015/11/23(月) 23:05:48.47 ID:nD0rlIIZ.net
Win10 th2でES6 Classesを使うテスト

http://i.imgur.com/DecbQfs.jpg

804 :名無し~3.EXE:2015/11/27(金) 07:18:59.11 ID:dOr9jkTm.net
var a;
a = eval("[\"abc\",\"def\"]");
WScript.Echo(a[0]);
→abc
は実行出来るけど
var a;
a = eval("{\"abc\":\"def\"}");
WScript.Echo(a["abc"]);
はevalでエラーになります。これはどうにもならないのかな・・・

805 :名無し~3.EXE:2015/11/27(金) 10:21:31.24 ID:arQh0ET8.net
>>804
a = eval("({\"abc\":\"def\"})");

806 :名無し~3.EXE:2015/11/27(金) 10:31:50.40 ID:EYEBJY2Y.net
>>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で評価した時にハッシュとして正常に解釈される。

丸括弧によって「中身はオブジェクトです」という意思表示ができるのである。

807 :名無し~3.EXE:2015/11/27(金) 10:53:52.55 ID:S4fdjd37.net
へー

808 :名無し~3.EXE:2015/11/27(金) 11:01:56.93 ID:OG/mUtfI.net
('A`)

809 :804:2015/11/30(月) 07:37:01.15 ID:cxJdiq6h.net
>>805-806
おぉ、出来ました。ありがとうございました

810 :名無し~3.EXE:2015/12/05(土) 13:10:21.50 ID:HCxkbB1B.net
ADODBのStreamで限定的ながらバイナリファイルを読み書き出来ますけど
裏技っぽい感じですしWSHが使えるすべてのWindowsで期待した動作をするのでしょうか?
この実装でバイナリファイルを正常に読めることを前提としたスクリプトの配布を
考えているのですがちょっと不安です

811 :名無し~3.EXE:2015/12/05(土) 13:52:03.81 ID:8/N/dh/l.net
>>810
多分大丈夫っぽいけど、書き方によってはセキュリティソフトの一部(Aviraとか)で誤検出されるので注意

812 :名無し~3.EXE:2015/12/05(土) 15:13:48.75 ID:K/bXQx4S.net
>>810
裏技っぽいですか?

813 :名無し~3.EXE:2015/12/05(土) 21:39:57.73 ID:TC+kSar6.net
むしろこれがないとバイナリ扱えないでしょ画像を扱えなくなる
裏技っぽいとか今更言われても困るわ

814 :名無し~3.EXE:2015/12/05(土) 22:45:26.11 ID:HCxkbB1B.net
ありがとう。大丈夫らしいとのことなのでとりあえず組んでみるかな・・・
あまりにも遅かったらRubyにしよう

>>812
読み込んだ値をテーブルで変換したりビット演算したりしないと
正しい値を得られない仕様を正攻法と呼ぶのは違和感があります
このために1byteずつしか読み込めませんし

815 :名無し~3.EXE:2015/12/05(土) 23:05:01.61 ID:4BdTphf4.net
ドキュメント化されてる機能が裏技?

https://msdn.microsoft.com/ja-jp/library/cc364272.aspx

816 :名無し~3.EXE:2015/12/05(土) 23:23:02.80 ID:8/N/dh/l.net
>>815
ADODBそのものじゃなくて、
iso-8859-1で1バイトずつテキストリードして変換する方法がイリーガルだと言ってるんだろう

817 :名無し~3.EXE:2015/12/05(土) 23:31:52.89 ID:8/N/dh/l.net
これは>>814のレス内容からの推測なので違ってるのかも知れない
jscriptだと勝手に思ったし、jscriptでも
wsfとかでvbscript連携して読むなり
Msxml2.DOMDocumentでhex文字列に変換するなり別の方法はあるとは思う

818 :名無し~3.EXE:2015/12/06(日) 00:42:46.08 ID:F68eazf1.net
VBScriptの記事だとこの辺か。
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.07 ID:vQfNZVDF.net
ごめん、変換とかいうはなしはどこから出てくるんだろう。
「バイナリファイルを正常に読めることを前提」とあるから
まあバイナリファイルを読んで何かするんだろうけど。

820 :名無し~3.EXE:2015/12/07(月) 17:53:50.73 ID:UNNqcniz.net
>>819
>>814に以下のようにあることからの推測さ

>読み込んだ値をテーブルで変換したりビット演算したりしないと
>正しい値を得られない仕様を正攻法と呼ぶのは違和感があります
>このために1byteずつしか読み込めませんし

821 :名無し~3.EXE:2015/12/07(月) 17:57:55.04 ID:vQfNZVDF.net
>>816
なるほど。、ADODB云々というより「JScriptでバイナリ操作をする」ということ自体のことを言ってるんだろうか。
たぶん。

822 :名無し~3.EXE:2015/12/07(月) 18:05:05.11 ID:vQfNZVDF.net
この辺の話か。なるほど。

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.86 ID:UNNqcniz.net
>>822
だから結論はそんな歪なことしないで>>818の言うようにしろってことさ
WSHだけって言っても、ADODB使うのならMsxml2.DOMDocumentも使っても同じことだろ

824 :名無し~3.EXE:2015/12/07(月) 18:32:53.45 ID:vQfNZVDF.net
>>823
まったくその通りだ。

おかげでこんなのを見つけた。ありがとう。

JScriptでBase64 on @Qiita
http://qiita.com/tnakagawa/items/beaec98fd64b20894245

825 :名無し~3.EXE:2015/12/10(木) 00:17:53.24 ID:n+FmGR1Q.net
>>822
そのプログラムにはバグがあります。
ファイル終端付近に 0xBF があると,数バイトを読み落とします。
たとえば,半角カタカナで
クソミソ
とだけ書かれたファイルを dump.js に与えると,最初の1バイトしか出力されません。

826 :810:2015/12/13(日) 20:21:45.77 ID:E2f6+XvN.net
ありがとうございます。試していて大分かかりました

>>818
>ググると「iso-8859-1で...」みたいなページが多い
はい、その通りでiso-8859-1を使う方法しかないと思っていました
ADODB.Stream&Type=1でAviraが騒ぐ以外は問題なさそうなので
これでいこうと思います。ありがとうございました

byte列の長さを容易に得られない?のがちょっと面倒ですね

827 :名無し~3.EXE:2015/12/14(月) 01:24:17.95 ID:ZAD57Ykk.net
>>826
> 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.72 ID:oIXUP+md.net
var fs = new ActiveXObject( "Scripting.FileSystemObject" );
fs.DeleteFile( "B:/VwCache/*.vch" );
fs = null;

これが該当ファイル無しのときエラー出なくしたい
こんなレベルの質問扱ってるスレ教えてください

829 :名無し~3.EXE:2015/12/21(月) 08:58:20.76 ID:9BHMYjvS.net
>>828
FileExistsでファイルがある場合に消す。
もしくは、on error resume nextでエラーを無視するとか。

830 :名無し~3.EXE:2015/12/21(月) 15:26:06.84 ID:tdjWLmvu.net
いやjscriptだろ
try 〜 catch(e)で囲むだろ
だけど、*.vchがファイル名を隠しているんじゃなく、
ワイルドカードで複数ファイル指定のつもりならダメだろ

831 :名無し~3.EXE:2015/12/21(月) 15:30:35.86 ID:tdjWLmvu.net
あ、ワイルカード使えるのか、知らんかった

832 :名無し~3.EXE:2015/12/22(火) 23:22:55.99 ID:XxXraRyZ.net
>>828
ここでいいのでは?

833 :名無し~3.EXE:2015/12/23(水) 15:52:38.58 ID:8RHLFxCl.net
>>828
ワイルドカードで指定してファイル削除
http://okwave.jp/qa/q5625898.html

834 :名無し~3.EXE:2016/01/02(土) 02:41:57.72 ID:8rznOPo8.net
JScriptで展開されていないコマンドライン文字列を取得することは出来ませんかね?
コマンドラインオプションを改変するラッパーを作りたいのですがWScript.Arguments
だと展開されて"が削除されていて再構成するのがかなり手間になってしまいます

835 :名無し~3.EXE:2016/01/02(土) 18:34:26.41 ID:J4AIyaR1.net
>>834
どうしても,というなら方法はないでもない。

WMIから自分自身のプロセスを見つけ出せば,
生のコマンドライン(Description)が得られるので,それを解析すればよい。
wsh WbemScripting.SWbemLocator Win32_Process
あたりをキーワードにググってください。

836 :名無し~3.EXE:2016/01/05(火) 17:47:40.34 ID:tW2wW1r9.net
>>835
面白そうなので試してみた
自プロセスを特定するのと引数から無効なものを除外しなくてはならないのがマイナス点

・自プロセスの特定
  wscript.exeまたはcscript.exeでイメージ名を検索するだけでも大抵は大丈夫だろうが
  もう少し厳密にやろうとすると引数に自scriptファイル名があるかどうかをチェック
  さらに多重起動の場合も考慮してもっと厳密に特定しようとするなら
  何か子プロセスを起動(cmd.exeとか)し、そのPIDでクエリーを限定し、
  親PID(これが自プロセスになる)を求める

  もっと簡単な方法何かある?

・引数からcscript.exeの引数を削除する
  例えば、 cscript xxx.js "a" 1 "b" //nologo "c"
  とかだと、//nologoは取り除かないといけない

837 :834:2016/01/05(火) 21:10:05.30 ID:MtYMuNGE.net
ありがとうございます。作っている途中で親となるプログラムが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);

838 :名無し~3.EXE:2016/01/05(火) 21:41:47.92 ID:tW2wW1r9.net
>>837
直接batを起動する場合はいいけど、コマンドプロンプトから起動するとダメですぜ
それにbatでいいなら、
@echo %*
の一行で終わる

839 :834:2016/01/05(火) 22:43:02.46 ID:MtYMuNGE.net
>>838
親となるプログラムは直接起動してくれるので問題ないです
コマンドプロンプトから起動する場合はcmd.exe /cを付ければ良いかと
実際には>>837の後ろで正規表現を使いコマンドラインオプションを
処理しているのでバッチファイルのみでは厳しいです

840 :名無し~3.EXE:2016/01/11(月) 22:00:15.25 ID:J7oSqT1d.net
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だけで回避する方法ありませんか?

841 :名無し~3.EXE:2016/01/11(月) 23:36:21.38 ID:kaus+mbm.net
>>840
上手くいくか判らないけどWMIで自プロセスのコマンドライン文字列を取得するのはどう?
WSHだとプロセスIDの取得が難しいので工夫する必要があるけど

842 :840:2016/01/12(火) 00:23:54.95 ID:zJG24SyX.net
>>841
>>834からのやり取りを読んだけど、自分にはまだ難しすぎる

843 :名無し~3.EXE:2016/01/15(金) 14:05:01.93 ID:1cRaToeH.net
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またはオブジェクトではありません」です。
よろしくお願いします。

844 :名無し~3.EXE:2016/01/15(金) 19:15:04.74 ID:m4ouY6Y+.net
submitじゃいかんのか?

845 :名無し~3.EXE:2016/01/15(金) 20:07:12.70 ID:2oeFgdaL.net
ちょっとは自分で調べようぜ、拾った物の使い回しで意味分かってないんだろうけど
原因はIE11からdocument.all等の独自APIが廃止されたから
そもそも今時allとかtagsとかつかわねーよ

846 :名無し~3.EXE:2016/01/16(土) 20:44:38.70 ID:4ar8fcff.net
>>842
主観だけどWindows上で動くスクリプト言語でUnicodeの引数は結構鬼門な印象がある
最近RubyでUnicodeな引数を受け取りたくなってRubyスレで聞きながら試したけど
WMIかWin32APIでコマンドライン文字列を取得するくらいしか手は見つからなかった
スクリプトエンジンだけではなくcmd.exeとの絡みもあるので使える選択肢は少ないと思う

>>837の方法が嫌ならWMIから取得するしかないんじゃないかなと個人的には思う

847 :843:2016/01/20(水) 19:33:11.23 ID:FcdOnjAY.net
>>844>>845
遅れましたがお答えありがとうございました
エラーが出ていた箇所をこれにして動くようになりました
IE.Document.forms(0).getElementsByTagName("input")[2].click();

848 :名無し~3.EXE:2016/02/04(木) 19:41:28.05 ID:WGr+Whcp.net
jsにデストラクタってないの?
ラップしたエクセルの終了処理をやらせたいんだが

849 :名無し~3.EXE:2016/02/04(木) 23:22:04.84 ID:pXBj/cEo.net
>>848
VBSでいう Set objExcel = Nothing 相当の処置のこと?
JSだと objExcel = null; でいいみたい。

850 :名無し~3.EXE:2016/02/04(木) 23:34:03.33 ID:z164XvtZ.net
>>849
Class ExcelWrapper
Private Sub Class_Terminate
' VBSでいうならこれ
End Sub
End Class

jsの言語仕様としては無いんだろうけどなんかトリック的に実現する方法はないんか

851 :名無し~3.EXE:2016/02/05(金) 08:00:12.79 ID:gYQ45IAX.net
>>848
OLEで起動したExcelがスクリプトが終了するまで終了してくれないという話?

852 :名無し~3.EXE:2016/02/05(金) 18:33:52.63 ID:YVp5K4JV.net
>>851
どこからも参照されなくなったら、メンバのExcel.ApplicationをQuitするようなオブジェクトを作れるかって話
やっぱり無理くさいな(´・ω・`)

853 :名無し~3.EXE:2016/02/05(金) 18:52:01.85 ID:ZPb/lDba.net
finallyでEXCELの終了処理でいいんじゃないの、それともフックの解放とかそういう意味なの

854 :名無し~3.EXE:2016/02/05(金) 18:56:57.56 ID:YVp5K4JV.net
>>853
finallyとか面倒くさい。オブジェクトにやらせたい
newしたらエクセルが立ち上がり、変数がスコープから外れたら自動的ににエクセルが終わるようにしたい
フックの解放っていうのはよくわからん(´・ω・`)

855 :名無し~3.EXE:2016/02/05(金) 22:48:20.11 ID:0wOAx0Cl.net
無いものねだっているようにしか見えないんだが
WSHに限らずGCを持つ言語でデストラクタが
あるのってほとんど無くね?
ファイナライザを持つ言語ならそれなりにあるみたいだけど
これは実行される保証がないしな

856 :名無し~3.EXE:2016/02/05(金) 23:06:43.00 ID:qE3E4htL.net
結論は、無いものは諦めて、newした者が責任を持って解放する

857 :名無し~3.EXE:2016/02/06(土) 00:30:26.79 ID:RaAe5E/b.net
ふぁっく(´・ω・`)

858 :名無し~3.EXE:2016/02/09(火) 06:40:42.12 ID:lLVVtK0e.net
(new ActiveXObject("Scripting.FileSystemObject")).DeleteFile(WScript.ScriptFullName,true);

みたいにやったら自分自身のファイルを削除できますが
実行開始された後はファイルがどうなろうが問題ないと考えていいでしょうか?

859 :名無し~3.EXE:2016/02/09(火) 21:45:46.64 ID:4bXYgicd.net
>>858
捨てスクリプトファイル作って試してみればいいじゃない

860 :名無し~3.EXE:2016/02/10(水) 06:37:45.67 ID:t7gHrzUx.net
やってみた限りは問題なさそうなのですが
絶対に問題がないと言えるのか?と思いまして

861 :名無し~3.EXE:2016/02/10(水) 07:50:58.34 ID:t7gHrzUx.net
アクティブなウインドウを判定して、
キーを送りたいアプリがアクティブならキーを送る、ということをしたいと思い
探していたのですが
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.00 ID:9GMi27N7.net
WSHで出来なければ出来る言語でやればいいだけ
こんな所でゴネてないで自分の不勉強を猛省しろ

863 :名無し~3.EXE:2016/02/10(水) 13:12:04.28 ID:t7gHrzUx.net
WSHのいいところは簡単に使えるところなので
わざわざたとえばCを使わないといけないとなると本末転倒なのですよ
どう考えても実装も難しくもない、あって当たり前の機能ですよね
本当にないのかどうかは知りませんが

864 :名無し~3.EXE:2016/02/10(水) 14:06:37.17 ID:HysS88Z6.net
>どう考えても実装も難しくもない、あって当たり前の機能

だったらそーゆー機能があるCOMを自分で実装して
それをWSHから呼び出せばいい
難しくないんでしょ?

865 :名無し~3.EXE:2016/02/10(水) 14:50:28.68 ID:t7gHrzUx.net
いや、逆に難しいと思うんですか?
考えたら分かりますがめちゃくちゃ簡単ですよね?
「面倒くさい」と「難しい」は違うのです
分かりますね?

866 :名無し~3.EXE:2016/02/10(水) 16:18:49.46 ID:9GMi27N7.net
いくら煽っても「ほら出来るやん」なんて誰も調べてくれないしやってくれないよ

867 :名無し~3.EXE:2016/02/10(水) 18:27:12.59 ID:CIhAnhaS.net
>>861
そんな事やろうと思ったことないし
「出来て当たり前」「あって当たり前」とか言われても違和感しかない

868 :名無し~3.EXE:2016/02/11(木) 03:13:32.67 ID:co5P5jGL.net
そもそもwshの組み込み機能とは違い、COMの作り方次第になってくるんだから
そういうCOMを作るか探すかすればいい
WIN APIを呼び出すCOMなんてのも世の中には幾つかあるぞ

869 :名無し~3.EXE:2016/02/12(金) 09:42:04.77 ID:w4vWZ7y9.net
windowキーは^{ESC}で送れると分かったのですが
windowキーを修飾キーとして使う場合はどう書けばいいですか?

870 :名無し~3.EXE:2016/02/12(金) 11:40:40.49 ID:w4vWZ7y9.net
var result = GetObject("winmgmts:\\\\.\\root\\cimv2").
ExecQuery("Select * from Win32_Process where Name='hoge.exe'")

みたいな方法で返ってきたオブジェクトから
一つ目のアイテムを取得するにはどうすればいいですか?
ネットで探すと、
var list = new Enumerator(result);
みたいな形でEnumeratorに変換してから回すのが普通のようですが
結果が一つと分かっている時にこのやり方をするのは気持ち悪いです

871 :名無し~3.EXE:2016/02/12(金) 12:15:22.45 ID:1hkdGDkD.net
>>869
Windowsキー自体は多分送信できない
^({ESC})は、CTRL+ESCの送信であって、「スタートメニューを開く」という機能になる
結果はWindowsキーと同じ「スタートメニューを開く」という動作をするだけだと思う

>>870
配列等へのアクセスと異なり、COMのコレクションへの唯一のアクセス方法が
Enumeratorなので他の方法は無いと思われる
(VBSを呼び出してfor eachを使うと言うのは無しの方向で)

872 :名無し~3.EXE:2016/02/12(金) 14:47:51.21 ID:w4vWZ7y9.net
>>871
むーん、そうですか
ありがとうございます

873 :名無し~3.EXE:2016/02/12(金) 19:11:38.98 ID:Ax0/YVze.net
関数でラップしなさいよ

874 :名無し~3.EXE:2016/02/12(金) 21:58:43.39 ID:CAT/93Hm.net
>>870
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.95 ID:CAT/93Hm.net
SWbemObjectSet.ItemIndex method
https://msdn.microsoft.com/en-us/library/windows/desktop/aa826600(v=vs.85).aspx

876 :名無し~3.EXE:2016/02/21(日) 12:12:25.97 ID:14Rd5RPG.net
やや亀レスだが,全部まとめて AutoItX をインストールというかdllを登録すればできる。
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.77 ID:jrwG3GCh.net
WSHのメリットってWindows標準である事だと思う
オートメーションサーバーを持ち込むくらいならRubyなりPythonなりを
持ち込んで利用した方がより効率的に開発・実装出来るのでは

878 :名無し~3.EXE:2016/02/22(月) 22:34:35.27 ID:QBaH99ha.net
>>877
Pythonだけではできないから Sikuli や WebDriver や AutoItX があるわけなのだが

879 :名無し~3.EXE:2016/03/01(火) 09:01:36.69 ID:iP3HRupc.net
エンジニアのモチベーションを下げる方法
ttp://d.hatena.ne.jp/jflute/touch/20160221/downmoti

IT系のエンジニアは、なかなか世間一般の方々から、
やっていることを理解されにくいものです。
何が簡単で、何が難しいのか、なかなかわからないもの。
しかも、そう思われていることを、
エンジニア自身よくわかっていて、
それがコンプレックスでもあったりします。

開発しようとしている画面があったとして、
画面の見た目から来るイメージと、
実際のプログラミングの難しさはなかなか比例しません。
簡単そうな画面でも作るのは難しい、よくあることです。

なので、よくわかってないフリして、
「えっ、こんなの簡単に作れるでしょ?」
って言ってあげると、大抵「はぁ!?」って表情をします。

ちょっと納得がいかないだけなら、
モチベーションを下げたことにならないですが、
そういうことを何度も何度も言い続けることで、
「難しいことを実現しても評価されないのでは...」
って気持ちになるので、
しっかりモチベーションを下げられます。

実際に、難しい画面を頑張って速く作り上げたエンジニアに、
「あー簡単そうな画面だったもんね、じゃあすぐ次これ作って」
と、軽くあしらってあげると効果が相当高いです。

880 :名無し~3.EXE:2016/03/20(日) 17:58:54.66 ID:ftoiXc16.net
WScript.CreateObject("InternetExplorer.Application")
を利用してIEの自動操縦をしています
win10へのアップグレードを考えていたのですが
この手のスクリプトはwindows10で動くのでしょうか?

881 :名無し~3.EXE:2016/03/20(日) 18:17:57.40 ID:kfTLMDav.net
>>880
動くよ。

882 :名無し~3.EXE:2016/04/26(火) 02:43:57.89 ID:xrGaHN5D.net
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"));});

とりあえずアイディアを形にしただけなんでカスタムして使ってくれ(´・ω・`)

883 :名無し~3.EXE:2016/05/20(金) 01:19:03.63 ID:LoMnSF9C.net
エクセルのマクロをVBAやVB以外の言語で使いたいのですがWSHというのでJavaScriptを使うくらいしかないですか?
なんか難しそうなので扱えるかはわからないですが

884 :名無し~3.EXE:2016/05/21(土) 07:18:01.83 ID:KwoUOh5H.net
VBA使えるならVBScriptはほぼ同じ

885 :名無し~3.EXE:2016/05/21(土) 15:46:05.82 ID:r5Tb0hTU.net
ActiveXObject(

886 :名無し~3.EXE:2016/05/23(月) 19:28:44.88 ID:OI4UmGVD.net
Win10 64-bit で、WSCの登録を、
64-bitで行えば、32-bitアプリから起動したスクリプトで使えず、
32-bitで行えば、64-bitアプリから起動したスクリプトで使えず。
後から登録したほうだけが有効になる。
どうしたものか。

887 :名無し~3.EXE:2016/05/25(水) 13:06:05.60 ID:p984sqbS.net
どっちかに統一してwscriptなりのパスを絶対パス指定すりゃいいんじゃないの
今後bit幅判定は避けて通れないだろうし

888 :名無し~3.EXE:2016/05/25(水) 17:08:32.50 ID:LNEVb08i.net
32bit(64bit)で起動されたかを判断し違ってたら起動し直すってのは検索すれば出てくるので、
WSCをどっちかでのみ処置するようにするか、両方で別々に32bit用、64bit用の両方登録するかとか

889 :名無し~3.EXE:2016/05/26(木) 01:13:50.51 ID:c8sEm+SQ.net
JScriptでreplaceによる正規表現の置換で、
置換後文字列にキャプチャ文字列参照の特殊変数とその直後に数字を書きたい場合
どのように書けばいいですか?
例えば、$1で参照した文字列の直後に0を書きたいとかで
"$10"とやると、10番目のキャプチャ文字列の参照になっちゃう
他環境だと、"${1}0"と書けるみたいだがWSHでは参照にならない

890 :名無し~3.EXE:2016/05/26(木) 04:54:10.50 ID:2Z2dZzlv.net
$010

891 :名無し~3.EXE:2016/05/26(木) 18:15:27.58 ID:c8sEm+SQ.net
>>890
thx!

でも何でJScript(JavaScriptも同様だが)ってPerlとかと合わせなかったんだろう
鬼車やPerlだとこの記述じゃダメなんだよね、ややこしい

892 :名無し~3.EXE:2016/05/26(木) 19:15:53.60 ID:Am4E4DkT.net


893 :名無し~3.EXE:2016/05/28(土) 16:48:01.65 ID:8bw60KMu.net
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

894 :名無し~3.EXE:2016/06/20(月) 19:48:39.36 ID:r7gHHjMI.net
おいぽまいら教えろ下さい、dotnetのライブラリを叩く際にだね

これは動かない
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.28 ID:FmZLWojr.net
さあ

896 :名無し~3.EXE:2016/06/20(月) 21:44:37.70 ID:r7gHHjMI.net
ああ何となく事故解決した、オーバーロードなんて仕様ないからケツに数字付けて区別するのか
型宣言とか全く関係なかった、数字の振り方の規則性がこれまたよく分からんがトライアンドエラーしかないのか

ちなみに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.77 ID:FluRcm0P.net
すみません、全くの素人です。

アプリのアプリケーションキーの「(T)」を出力するだけのファイルを作りたいです。
どう書いたらいいですか。

898 :名無し~3.EXE:2016/07/18(月) 14:58:15.83 ID:FluRcm0P.net
自己解決

Set objShell = WScript.CreateObject("WScript.Shell")
WScript.Sleep 50
objShell.SendKeys "%(T)"

899 :名無し~3.EXE:2016/07/20(水) 11:55:20.08 ID:XFWp37Gp.net
vbsを使って社内システムへの自動ログイン処理をしたいと思っています。

yahooへは問題なくidpassを入れてログインできるのですが、社内システムの場合はエラーが表示されidpassも表示されません。
"エラーを特定できません"のエラーが表示されます。

どうも信頼済みサイトに登録されていることが原因というようなwebの記載を見つけました。
この場合は回避策はないのでしょうか。

900 :名無し~3.EXE:2016/08/15(月) 00:25:29.97 ID:TKUFVv53.net
クリップボードを加工する処理を書いています
内部はユニコードなので
SJISの範囲を越えた文字がクリップボードに入っていることがあります
それをEchoで表示させてみたりしても普通に表示されますし
文字列の結合をしても特に問題ないようです
しかしソースコードがSJISなので、
その文字に関する処理をソースコードの中に書けません
こういう場合どうするのがいいでしょうか?
クリップボードへのアクセスをUTF-8に出来たら
コードもUTF-8に出来るのですが、この処理はSJIS決め打ちですよね?

901 :名無し~3.EXE:2016/08/15(月) 01:25:58.62 ID:ikN7gcf7.net
>>900
案1:スクリプトをunicodeで書く。
案2JScript:SJISに無い文字は String.fromCharCode(code1, code2, ...) を使う。
案3VBScript:SJISに無い文字は ChrW(code) を使う。

902 :名無し~3.EXE:2016/08/15(月) 02:20:04.30 ID:TKUFVv53.net
>>901
ありがとうございます
案2で行きました

903 :名無し~3.EXE:2016/08/28(日) 13:24:08.21 ID:F3dIMYRn.net
// 以下のような例で * が消えてしまうのはなぜでしょうか? バグ?
var FS = WScript.CreateObject('Scripting.FileSystemObject');
WScript.Echo(FS.GetAbsolutePathName('C:\\Windo*'));// → C:\Windo*
WScript.Echo(FS.GetAbsolutePathName('C:\\Window*'));// → C:\Windows …なぜ?
WScript.Echo(FS.GetAbsolutePathName('C:\\Windows*'));// → C:\Windows*

904 :名無し~3.EXE:2016/08/28(日) 14:14:26.23 ID:RFOn9Wqp.net


905 :名無し~3.EXE:2016/08/28(日) 22:43:27.34 ID:Kf2zaCfx.net
*が1文字のワイルドカードとして使えるということかね。

906 :名無し~3.EXE:2016/09/20(火) 18:40:36.65 ID:sx0yUGEz.net
2016/9/1 jscript.dll がwindows updateされたせいで
今までいけていた win7/32bit(@職場)/wsh(jscript)で
エラーが多発するのは俺だけ?

907 :名無し~3.EXE:2016/09/20(火) 19:13:25.75 ID:oUfFAkCw.net
うん

908 :名無し~3.EXE:2016/09/20(火) 21:20:41.02 ID:SISECv8l.net
まずそのエラーを書かない事には何とも

909 :906:2016/09/22(木) 00:14:32.72 ID:rDMTp48z.net
そうですよね。失礼しました。

こちらも、職場でのエラーメッセージまで覚えていないので
解決はあきらめて、情報をカキコだけしますが。

エクセルでInputBoxを使うやつで、
変数のvar 宣言が厳密?になったような印象で
動くやつとエラーで動かないやつとInputBoxが出ないパターンあるような。

var objXL = WScript.CreateObject("Excel.Application");
var fs = WScript.CreateObject("Scripting.FileSystemObject");
var f = fs.GetFolder("\\\\file01\\○○課\\....\\Afoldername");
var folderlist = "";
//すべてのサブフォルダ
var subfc = new Enumerator(f.SubFolders);
for(; !subfc.atEnd(); subfc.moveNext())
if ( ((subfc.item().Name+"").indexOf("e"))==-1 ) folderlist += subfc.item().Name + "\r\n" ;
var strRet = objXL.InputBox(folderlist, "選択", "otamesi");
objXL.Quit();
のたぐいのやつです。

こんなことがあったということで。

910 :名無し~3.EXE:2016/09/28(水) 07:10:47.91 ID:f6JqvkoF.net
Windows7にて、管理者権限(High)で起動しているプログラムから、
別のプログラムを標準ユーザー権限(Medium)で実行する方法はないでしょうか?
具体的には、
管理者権限で常駐しているAutoHotkeyから、
標準ユーザー権限でWSHスクリプトを起動したいと考えています。

管理者昇格で実行する方法は検索すれば出てくるのですか、
その逆は見つからなくて・・・

ログオンスクリプトから実行されたプログラムも
全部管理者権限になってしまいます。
これも解決したいと思っています。

911 :名無し~3.EXE:2016/09/28(水) 09:32:39.60 ID:s4DNr100.net
runas 使うとかじゃダメ?

912 :名無し~3.EXE:2016/09/28(水) 15:53:59.78 ID:nx81DFKK.net
「管理者として実行」されたコマンドラインから、「標準ユーザとして実行」する。
ttp://scripting.cocolog-nifty.com/blog/2010/01/post-5259.html

913 :名無し~3.EXE:2016/09/28(水) 18:43:38.23 ID:f6JqvkoF.net
>>912
ありがとうございます!まさにこれです。
しかしタスクから実行とは・・・
やっぱり降格実行って、すんなりには出来ないんですね

>>911
それは多分、ShellExecuteを使った昇格(Middle→High)のやり方だと。
WSHでは、Runでも、Execでも、ShellExecute でも
降格で実行する方法はありませんでした(探せませんでした)

914 :名無し~3.EXE:2016/09/29(木) 00:25:50.89 ID:bbWzxn0/.net
>>913
> >>911
> それは多分、ShellExecuteを使った昇格(Middle→High)のやり方だと。
コマンドラインのことじゃないの?
試したことないから実際できるかは知らないけど

915 :名無し~3.EXE:2016/09/29(木) 21:34:09.19 ID:QE0CrBwY.net
CreateObject("Shell.Application").ShellExecute("hoge.exe", "", "", "runasuser")

>>912と違ってユーザー名とパスワードを入力する必要があるのが面倒

916 :名無し~3.EXE:2016/09/30(金) 07:05:04.86 ID:DKhen0Tu.net
>>915
> CreateObject("Shell.Application").ShellExecute("hoge.exe", "", "", "runasuser")

おお、runasuser という引数で可能だったのですね。
今まで知りませんでした。ありがとうございます。
確かにユーザとパスの入力にはリスクがありますし、配布には不向きですが、
場合によって使えそうです。

917 :名無し~3.EXE:2016/09/30(金) 11:04:40.80 ID:MzJ4FbY1.net
>>913
解決しているようですが、>>911 は RunAs.exe を使うことを意味していたつもりでした。

918 :名無し~3.EXE:2016/10/01(土) 21:18:50.03 ID:z3fhfQ4h.net
>>917
ありがとうございます。
runas.exeという存在も知りませんでした・・・。
確かにこの方法でも、/userをAdmin以外に指定すれば、
High→Mediumの降格は可能みたいですね!
でもやはり、userとpassまで入力するのがネックですね。
むしろこっちが当たり前で、912の方法はかなり特殊な方法でしょうか。

919 :名無し~3.EXE:2016/10/02(日) 14:05:33.18 ID:ssU5pWdi.net
runasに/savecredオプションを付けるとパスワードが保存されるから
2回目以降はパスワードを入力しなくてよくなる

psexecってツールならユーザー名とパスワードをオプション引数で指定できるから毎回手打ちする必要は無くなる
https://technet.microsoft.com/ja-jp/sysinternals/bb897553.aspx

もちろんそれぞれデメリットもあるからご利用は計画的に

920 :名無し~3.EXE:2016/10/20(木) 14:58:50.51 ID:u2LLUbWG.net
えと、Windows7環境で質問です。

あるアプリが起動している間は、スリープに入らないって
設定ができるでしょうか?
ファイルメーカーなんですが、スリープしちゃうとネット
ワークが切れちゃって再起動しなくてはならないんで。

921 :名無し~3.EXE:2016/11/10(木) 23:44:30.12 ID:JhfwFP09.net
>>920

5分ごとにShiftを押す。じゃダメ?ctrl+Cで終了。

Set objShell = WScript.CreateObject("WScript.Shell")
Do
WScript.Sleep 1000*60*5
objShell.SendKeys "+"
Loop

メディアプレイヤーをずっと再生しておくっていう手もあるらしい。

922 :名無し~3.EXE:2016/11/11(金) 00:16:12.92 ID:6spaSBwY.net
thx

923 :名無し~3.EXE:2016/11/30(水) 05:52:14.36 ID:Slt35OHFj
選択したファイルをD&Dで処理するバッチを作っているのですが、コマンドラインが長すぎるとエラーが出てしまいます。
今は処理するものをコピーしてエディタに貼り付け、テキストでフルパスのリストを作って処理させているのですが、
直接DropFileListをクリップボードから得て処理させられないでしょうか?

924 :名無し~3.EXE:2016/12/12(月) 21:47:31.56 ID:r+Fb96AV.net
超亀レスだがShiftじゃキー入力の妨げになるでしょ
マウスの空MOVEを定期的に送るのが常套手段
もろちんwshだけでやる方法はない

925 :名無し~3.EXE:2016/12/25(日) 00:05:54.11 ID:HRoYEPWv.net
/*
cscript.exe //nologo 特定プロセス実行中のスリープを抑止.js

副作用無しの SendKeys(

926 :名無し~3.EXE:2016/12/25(日) 00:23:26.11 ID:HRoYEPWv.net
Shiftの代わりにPRTSC(キャプチャ効果無し)を送ってもスリープを抑止できるようだ

927 :924:2016/12/29(木) 22:26:32.94 ID:dAnL9MtL.net
先日何故か書き込みが途切れたので再書き込み

var exeName = "notepad.exe";
var interval = 60;
var oShell = WScript.CreateObject("WScript.Shell");
var objWMIService = GetObject("winmgmts://./root/cimv2");
while(true){
if(!new Enumerator(objWMIService.ExecQuery("select Name from Win32_Process where Name='" + exeName + "'")).atEnd())
oShell.SendKeys("{PRTSC}");
WScript.Sleep(1000 * interval);
}

WMIって面白い

928 :名無し~3.EXE:2017/03/11(土) 22:14:40.13 ID:+HikkRSv.net
JScriptで再帰的なマッチを高速に行う方法ってありませんかね?
A(B(C(3),"a"),"$")
みたいな文字列を
({<3>,"a"},"$")
みたいにしたいです。Rubyみたいに再帰処理に対応した正規表現を
持っていれば対応する括弧をマッチさせることが出来ますが・・・

929 :名無し~3.EXE:2017/05/11(木) 19:46:31.75 ID:MLlLpRGo.net
2017.5.15に今どき、wshの本の改訂版が今ごろ出版されるとか。

930 :名無し~3.EXE:2017/06/29(木) 16:33:55.92 ID:AAx8eHDl.net
>>886の件、
レジストリのCLSID(classid)を、登録した方から登録してない方へコピーするか、
wscファイルの中でCLSIDを指定しておけば、両方で使えた。

思うに、レジストリ上では、ProgID(COMコンポーネントID)は64/32bitで共通なのに対し、
CLSIDは64/32bitそれぞれで登録されているところ、
CLSIDはwsc登録時にランダムで生成されるため、
後から登録した方でProgIDのCLSID情報が異なる値で上書きされてしまい、
先に登録した方はProgIDから元々CLSIDにたどり着けなくなってしまった、
ということなのかなと。

なので、CLSIDが64/32bitで同じになるようにしてやればよいと。

931 :名無し~3.EXE:2017/07/18(火) 13:58:28.60 ID:W4IZXMNS.net
関数呼び出し、ネスト2,3回位が限界なのかな。
変なところで戻ってくる。

使えない野郎だ、くっそマイクロソフトw

932 :名無し~3.EXE:2017/09/02(土) 18:09:03.77 ID:/D3h/gh4.net
今更javascriptの学習兼ねてjscript勉強中
inputboxとmsgboxが64bit環境で呼び出せないのが割と辛いね
powershellだとC#埋め込んだりフォーム使い放題なんだよなー

↑スリープ抑止はC/C++/C#でさくっと空SendInput呼んだ方が楽だよ

933 :名無し~3.EXE:2017/09/25(月) 23:32:59.00 ID:6nblRiV8.net
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\Logs")
Wscript.Echo objFolder.Size
 →これでC:\Logsのフォルダサイズが取得できるのに

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\Program Files")
Wscript.Echo objFolder.Size
 →同じスクリプトでC:\Program Filesのサイズが取得できない

なぜなんだぜ? 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


934 :名無し~3.EXE:2017/09/26(火) 02:12:19.86 ID:RcmZZAIw.net
管理者権限で実行しても "C:\Program Files\Windows NT" に含まれるジャンクションにアクセス失敗してエラーになるみたい

935 :名無し~3.EXE:2017/09/26(火) 21:58:19.45 ID:W9uZsk3X.net
情報ありがとう
こちらでも昨夜というか今朝まで調べて
配下にリバースポイントが含まれるフォルダは
(普通の方法では)サイズの取得ができないとわかったよ

Program Files配下の全フォルダを抽出して
ひとつずつ再帰的にサイズ取得して合計するという案もあったけど
その中にはサイズが取得できないフォルダがあるから
合計したところで数値が合わないんだよね

936 :名無し~3.EXE:2017/09/26(火) 22:00:02.58 ID:W9uZsk3X.net
仕方ないのでバッチファイルで
dir "C:\Program Files" /s /a-d | find "個のファイル" > hoge.txt
ってやって、ファイル末尾の1行を取得する事にしたわ
これだと一応、フォルダのプロパティで見たのと同じ値が取得できる
もはやスクリプトじゃなくなっちまったけども

937 :名無し~3.EXE:2017/09/26(火) 22:16:48.97 ID:tsUdupnX.net
重箱の隅をつつくようであれだが、リパースポイントな。リバースじゃなく。

938 :名無し~3.EXE:2017/12/12(火) 09:06:04.43 ID:q0vNjYcg.net
wshで数万行クラスの巨大スクリプト書く人いるかな?

自分で使うちょっとした自動処理ならわずか数行〜数十行程度で済むが、他人にあげることを
想定したものならファイルパス等のハードコードは絶対に避けてコマンドライン引数やXML形式の
設定ファイルから指定させる等汎用性を高めたり、きちんとエラー対策をとったり等、れっきとした
「アプリ」として「開発」するため余裕で数千〜数万行に達してしまう。

939 :名無し~3.EXE:2017/12/12(火) 11:04:42.32 ID:/U3t7lMx.net
自分で使う自動処理が拡張に拡張重ねて数万行クラスになったのはあるよ

940 :名無し~3.EXE:2017/12/12(火) 11:13:16.48 ID:Wr10bU9d.net
数万行もあるスクリプトを貰っても持て余すなあ
もっと機能を絞って分割するなりして欲しいもんだ

941 :名無し~3.EXE:2017/12/12(火) 20:43:33.07 ID:jyIq4w4s.net
せいぜい数百から一千行程度に小分けしたスクリプト50本くらいを
ひとつのフォルダに入れて連携させてるよ
小分けしとくと色々使い回しがきいてラクだわ

942 :名無し~3.EXE:2017/12/12(火) 21:53:43.20 ID:qOP7vFik.net
>>938
> 余裕で数千〜数万行に達してしまう

ScriptControlで動的にWSHのソースを読み込んで実行するタイプなら普通

943 :名無し~3.EXE:2017/12/13(水) 14:27:28.65 ID:KehnvMoz.net
特に、Classの継承機能のないVBScriptで無理やりオブジェクト指向な
コードを書こうとして、似たような構造のClassを作るため親Classを
コピペしてちょっと改造するって手法を繰り返してたら、
あっという間に数千行に達してしまう

944 :名無し~3.EXE:2017/12/14(木) 12:08:32.08 ID:bq3yY9Fc.net
それはあるね。コピペ部分が結構多くて行数だけインフレしてる感じ

945 :名無し~3.EXE:2017/12/19(火) 12:46:08.14 ID:uzBHC9yI.net
友達がWindowsで稼げている情報など。ニュースというか参考までに。
⇒ http://kuchibeta.sblo.jp/article/181868190.html

興味がある方のために書きました。

M60W6DP7X5

946 :名無し~3.EXE:2018/02/09(金) 15:35:14.91 ID:/eUPgJtQb
test

947 :名無し~3.EXE:2018/02/09(金) 15:41:22.90 ID:/eUPgJtQb
巨大バイナリファイルにxmlhttpとかで取得したバイナリデータを追記するには
どうすればいいんです?
OpenTextFileのForAppendingのバイナリ版は?

総レス数 947
299 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200