■ このスレッドは過去ログ倉庫に格納されています
お前ら、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