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

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

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

1 :名無し~3.EXE:2010/12/19(日) 22:20:35 ID:SZFqF39w.net
こんなことコンピュータにやらせろよ。そう思ったことはありませんか?
簡易的な実行環境も含めて普通のOSだったら当たり前に備わっている自動実行。
Windowsの標準に備わっているそれがWSH(Windows Script Host)です。
また、ここではWSHだけに限らずWMI、ADSIなどのネタもOKです。

・煽りや荒らしは無視の方針で。基本的にsage進行です。

・ここでヒントを得て完成したスクリプトは、出来れば皆さんにお披露目してください。
 同じことで悩んでいる人のためになります。

・質問する際は、OS及び使用するコンポーネントのバージョンもお忘れなく。

前スレ
お前ら、wsh使ってますか? Part7
http://hibari.2ch.net/test/read.cgi/win/1190548945/

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攻撃がより発生しやすくなった件もそうだけど、
アンチウィルスに対するフールプルーフも考慮しないと駄目になってしまったと……

総レス数 947
299 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200