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/

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" %*があったら上に変更
駄目だったら戻してね

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

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