元スレ
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/
267 :名無し‾3.EXE:2011/10/05(水) 01:12:36.60 ID:VhrEzm6o.net
WSHは便利だけど時間のかかる作業やらせた時にどの辺まで
進んでるかっていうのが見られないのがな…
その点バッチは全部出るからバグ取りもやりやすい。
454 :名無し‾3.EXE:2012/09/09(日) 09:54:48.26 ID:ZAXEJnUU.net
質問があるのですがどなたかお願いします。
ノートパッドにごにょごにょしようと、下記コードにて子ウィンドウのハンドル取得しようとしてるんですが、
2つ目のハンドルがNULLで返ってきます。子ウィンドウ「Edit」のハンドルはどのようにすれば取得できますでしょうか。
hWND(0) = CreateObject(“Excel.Application”).ExecuteExcel4Macro(“CALL(“”user32″”,””FindWindowA””,””JCJ””,””Notepad””,0)”)
hWND(1) = CreateObject(“Excel.Application”).ExecuteExcel4Macro(“CALL(“”user32″”,””FindWindowExA””,””JJJCJ””,hWND(0),0,””Edit””,0)”)
650 :名無し‾3.EXE:2014/07/05(土) 11:16:49.33 ID:WBZ3i3eR.net
AviraがADODB.Streamの実行を阻止するらしいが、他にもある?
691 :名無し‾3.EXE:2015/02/07(土) 05:57:22.40 ID:NRS/nR0g.net
239 :名無し‾3.EXE:2011/08/27(土) 04:16:54.04 ID:yzI0rKlM.net
invokeverb “empty”
に変えてもいいが、待つのは必要だな
65 :名無し‾3.EXE:2011/02/15(火) 19:02:44 ID:ohiLAigb.net
@set @SHORT_CIRCUIT = true/* & (@title batdm:%‾nx0) & (@dm.exe “%‾f0” %*) & (@goto :eof) & @end */
// d-monkeyのdmscriptでも一行バッチが動いたわ。jscriptでも起動の部分だけ変えると動くね。
944 :名無し‾3.EXE:2017/12/14(木) 12:08:32.08 ID:bq3yY9Fc.net
それはあるね。コピペ部分が結構多くて行数だけインフレしてる感じ
551 :名無し‾3.EXE:2013/11/12(火) 01:33:55.42 ID:+gIKuuPP.net
Volatileがcmd.exeでは見えなくてプロセスツリー内のcscriptでは見えるってのはよく分らんけど、
この場合env = ws.Environment(‘PROCESS’);でいいんじゃない?
パイプ例…ファイル作るよりはちょっとマシだが美しくはない。
@if(0)==(0) ECHO OFF
for /f “delims== tokens=1,*” %%j in (‘CScript.exe //NoLogo //E:JScript “%‾f0″‘) do set %%j=%%k
echo %foo%
pause
goto :EOF
@end
WScript.Echo(‘foo=ABC=ABC’);
813 :名無し‾3.EXE:2015/12/05(土) 21:39:57.73 ID:TC+kSar6.net
むしろこれがないとバイナリ扱えないでしょ画像を扱えなくなる
裏技っぽいとか今更言われても困るわ
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=””
879 :名無し‾3.EXE:2016/03/01(火) 09:01:36.69 ID:iP3HRupc.net
エンジニアのモチベーションを下げる方法
ttp://d.hatena.ne.jp/jflute/touch/20160221/downmoti
IT系のエンジニアは、なかなか世間一般の方々から、
やっていることを理解されにくいものです。
何が簡単で、何が難しいのか、なかなかわからないもの。
しかも、そう思われていることを、
エンジニア自身よくわかっていて、
それがコンプレックスでもあったりします。
開発しようとしている画面があったとして、
画面の見た目から来るイメージと、
実際のプログラミングの難しさはなかなか比例しません。
簡単そうな画面でも作るのは難しい、よくあることです。
なので、よくわかってないフリして、
「えっ、こんなの簡単に作れるでしょ?」
って言ってあげると、大抵「はぁ!?」って表情をします。
ちょっと納得がいかないだけなら、
モチベーションを下げたことにならないですが、
そういうことを何度も何度も言い続けることで、
「難しいことを実現しても評価されないのでは…」
って気持ちになるので、
しっかりモチベーションを下げられます。
実際に、難しい画面を頑張って速く作り上げたエンジニアに、
「あー簡単そうな画面だったもんね、じゃあすぐ次これ作って」
と、軽くあしらってあげると効果が相当高いです。
83 :名無し‾3.EXE:2011/03/03(木) 17:58:00.79 ID:yGt/TIu+.net
402 :名無し‾3.EXE:2012/02/11(土) 13:31:40.94 ID:vThnfM65.net
>>395
> いじるのはやぶさかではありませんが、見るといろいろいじるみたいで
色々って…お前全然文章読んでないだろ。
2か所を一文字変えるだけだろが。
58 :名無し‾3.EXE:2011/02/15(火) 11:21:20 ID:KQK8NgNf.net
nが文字列になる瞬間に数字が変わってるね。
「return n;」だと異常ないのに、「return n+””;」だと循環小数になる。
こっちでもっと良い解決方法が無いか15分くらい探してみたけど、見付からなかった……。
あと、returnは関数ではなくて文なので、「return(n);」でなくて「return n;」の方が良いと思う。
727 :名無し‾3.EXE:2015/03/15(日) 19:40:14.43 ID:Ur/MCA52.net
>>726
ありがとうございます。
どこにも回答がなかったので・・・
・・・しかし、なんで{PRTSC}を。。
と思ったらwaitの代わりなんですねこれ。
946 :名無し‾3.EXE:2018/02/09(金) 15:35:14.91 ID:/eUPgJtQb
234 :名無し‾3.EXE:2011/08/27(土) 00:26:04.52 ID:Gxo9AMAs.net
>>233
ありがとう!
Win7でもvbs実行で正常にごみ箱が空になりました
397 :名無し‾3.EXE:2012/02/08(水) 22:35:18.33 ID:VU86cqPY.net
>>396
素人仕事でbatも書いてはいるんですが、すでにWSHで完成してるものを
わざわざまた1からというのもどうかと思い、、、、。目の前にあるこのVBS
をそのまま流用できないかと思っているわけでして。
しかも、batはbatで例の全角スペース問題があるのでまたいろいろ面倒で
もうVBSでいかせてくれ、という気分なのです。
なんでこうどれも中途半端なんですかね? M$さん。
16 :名無し‾3.EXE:2010/12/30(木) 17:55:32 ID:xW3gQ5+X.net
624 :名無し‾3.EXE:2014/04/08(火) 23:52:31.58 ID:D4TzPxaZ.net
windows7に移行したら、XPで動いてたvbsがうまく動かない
具体的には
・msgboxが最前に出てこなくなった
・Appactivateの効きが悪い気がする
なんか対策ありませんでしょうか
523 :520:2013/07/10(水) NY:AN:NY.AN ID:TYMFvckH.net
>522
そんなのがあるんやね。サンクス。
職場の情報課で、今度職場に新しいPCを入れるようだが
自動記録、自動実行するソフトも標準で導入してくれればいいなぁ。
サポートを必要とするソフトは極力導入したくないだろうが。
また、間違っても、wshを削除しないことを希望する。
255 :名無し‾3.EXE:2011/09/25(日) 20:13:28.39 ID:wOWFeO1g.net
>環境変数に以下の二行を追加しましたが、
この場合、環境変数が何の関係がある?
関連付けを変えろボケ
61 :名無し‾3.EXE:2011/02/15(火) 18:31:31 ID:Sw9YlaCV.net
427 :名無し‾3.EXE:2012/06/26(火) 19:02:36.09 ID:HXu8BJ81.net
707 :名無し‾3.EXE:2015/02/13(金) 20:49:30.30 ID:PV+7vqus.net
美しいスクリプトを書くコンテストじゃないんだから
幼稚な表現だろうが
何も書けない、デバックできないよりはよっぽどマシ。
書けることによって、人生やPC生活を楽しんだものの勝ち。
741 :名無し‾3.EXE:2015/05/01(金) 00:22:06.61 ID:n4sigpVl.net
777 :名無し‾3.EXE:2015/07/05(日) 09:47:49.01 ID:HOP89DPP.net
Alt+tabのときに出てくる画面選択できるウィンドウを表示させたままにしたいのですが、これはwshで実現可能ですか?
ソフトのダウンロードではなくメモ帳でjseやvbsで作成したいです。
検索かけてもキーの自動入力くらいしか見つからなくって
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ベースになったりですか?
332 :名無し‾3.EXE:2011/12/03(土) 05:44:57.72 ID:luRL2aN8.net
あっ、NTFSのMFTはは内部Unicode(UTF-16)だった。(なのでwindowsでの取り扱いも同様)
なので260はUnicodeでのカウントであり、Bytesにすると520Bytesだね。
あと、32767はNTFSのパス名の制限であり(とはいえwindowsでは扱えない)
ファイル名、フォルダ名は255文字までなのでお間違えなく。
549 :名無し‾3.EXE:2013/11/12(火) 00:28:01.79 ID:+gIKuuPP.net
>>548
環境変数はプロセスごとに保持されていて、継承は子プロセスへの一方通行です。
CScriptから環境変数を引き継いで新たにコマンドプロンプトを起動するか、
コマンドプロンプト側で環境変数を設定しなおす必要があります。
方法としては、
・ファイルに環境変数をファイルとして書き出して、親プロセス側からfor /Fやcallで読む
・標準出力に環境変数をテキストとして書き出して、親プロセス側からパイプで読む
等があります。書き出す形式はsetコマンドの形でも構いませんし、for /Fで読みやすい形式でも構いません。
あとはデバッガ的な方法で外側から環境変数を書き換える事も出来る気がしますが全くオススメできません。
434 :名無し‾3.EXE:2012/07/26(木) 23:25:55.89 ID:3VLZYKNv.net
そういうときは
msgbox “waiting…”
838 :名無し‾3.EXE:2016/01/05(火) 21:41:47.92 ID:tW2wW1r9.net
>>837
直接batを起動する場合はいいけど、コマンドプロンプトから起動するとダメですぜ
それにbatでいいなら、
@echo %*
の一行で終わる
853 :名無し‾3.EXE:2016/02/05(金) 18:52:01.85 ID:ZPb/lDba.net
finallyでEXCELの終了処理でいいんじゃないの、それともフックの解放とかそういう意味なの
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
858 :名無し‾3.EXE:2016/02/09(火) 06:40:42.12 ID:lLVVtK0e.net
(new ActiveXObject(“Scripting.FileSystemObject”)).DeleteFile(WScript.ScriptFullName,true);
みたいにやったら自分自身のファイルを削除できますが
実行開始された後はファイルがどうなろうが問題ないと考えていいでしょうか?
823 :名無し‾3.EXE:2015/12/07(月) 18:12:43.86 ID:UNNqcniz.net
>>822
だから結論はそんな歪なことしないで>>818の言うようにしろってことさ
WSHだけって言っても、ADODB使うのならMsxml2.DOMDocumentも使っても同じことだろ
503 :名無し‾3.EXE:2013/03/14(木) 07:13:35.83 ID:GZ3PCAcw.net
>>501
俺は簡単だと思うけど、君が簡単と感じるか否かは
君の能力次第だな
>>502
Google様に聞けばいつでもすぐ答えてくれる内容だから
わざわざここに書いておく必要は無いね
因みにネットワークに繋がってるか否かやIPアドレスなどを
調べる方法とやり方は一緒だ
257 :名無し‾3.EXE:2011/09/25(日) 22:11:30.83 ID:mHEOumJu.net
>256
メールを送るだけならCDO.Messageでいいはずだぜ
他にもたとえば圧縮するならコマンドラインの7zipっていう手もあるはず
その用途だけのために関連づけを変えるのは
ちょっと他のスクリプトにも影響が出そうで怖いな
742 :名無し‾3.EXE:2015/05/04(月) 12:04:00.19 ID:1NxYoByh.net
スクリプト内のコマンドを管理者権限で実行したい場合は、自身をShellExecuteにrunas付きで起動しなおすと
昇格ダイアログの出現を最初の1回のみに出来るけど以降実行されるすべてのコマンドが管理者権限で
実行されてしまう
最初の1回の昇格ダイアログで
コマンド1(管理者)
↓
コマンド2(ユーザー)
↓
コマンド3(管理者)
みたいなことって出来ないのかな・・・
377 :名無し‾3.EXE:2012/01/24(火) 17:34:10.43 ID:DUAeQj0m.net
181 :167:2011/05/30(月) 22:59:05.05 ID:GG049trQ.net
>>171-179
皆様ありがとうございます。もう見放されたかと思ってましたw
HTAから標準出力を使いたかったのですが自力ではできなかったので、vb.netで挑戦しようかと考えていました。
これからレスと参考リンクを読んでいろいろやってみます。
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でやったほうがよさそう
おわり
8 :名無し‾3.EXE:2010/12/20(月) 02:20:06 ID:aLFKp+NM.net
32 :名無し‾3.EXE:2011/01/18(火) 21:09:35 ID:6oYqEXc4.net
HTAでActiveScriptRubyやPerlScriptやりたいならわからんでもないが
389 :名無し‾3.EXE:2012/01/28(土) 01:08:49.49 ID:FTMxJQ6Q.net
何故呼び出した関数を待つ必要があるのか伝わらなかったようなので敢えて書きましたが
読み出す方のページも編集できるならこんなことしてませんよ
475 :467:2013/02/02(土) 01:03:00.84 ID:JfUKJu1L.net
UTF-8のwsfからUTF-8のjsをインクルードし、
XML宣言のencoding指定の有無と、BOMの有無で、
正常に動作する組み合わせを確認してみました。
長くなったので、コードと結果は分けて投稿します。
結論としては、外部のjsはBOM無しでは動作しませんでした。
>>474
インクルードする外部のjsもBOM無しでいけました?
388 :名無し‾3.EXE:2012/01/28(土) 01:04:31.95 ID:FTMxJQ6Q.net
settimeoutを使わずに読み込んだページのjavascrptの関数を呼ぶ方法ってあるんですか?
アホなことはやめます。それ知りたいです。
873 :名無し‾3.EXE:2016/02/12(金) 19:11:38.98 ID:Ax0/YVze.net
493 :名無し‾3.EXE:2013/02/27(水) 17:38:54.79 ID:p9DdIIQk.net
ポップアップダイアログがどうにも最前面に出せないのは不具合なのか仕樣なのか
回避がメンドいな
それともVista以降なら問題ないのだろうか
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にあることは確認していますが、これを読み込むのは
起動時のみのようで(起動後にレジストリエディタで書き換えても反映されない)、
起動のたびに設定がまっさらになるマシンでは、レジストリの書き換えでは
無理なように思います。
よろしくお願いします。
レスを投稿する(名前省略可)