WSH(・∀・)スレッド! at TECH
WSH(・∀・)スレッド! - 暇つぶし2ch76:72
04/10/27 10:30:43
>>75
多分無理かと。
適当にSleepの時間を調整するしかないのでは?

>>73
var str = "hoge";
var ie = WScript.CreateObject("InternetExplorer.Application");
ie.Navigate("about:blank");
while(ie.Busy){ WScript.Sleep(100); }
ie.Document.parentWindow.clipboardData.setData("text", str);
ie.Quit();

by googleの検索結果の上から3番目くらい(特殊文字の処理は省略)
一番上に出てくるやつをダウンロードしてもいいと思うけど。


77:71
04/10/27 13:01:09
たまに、最前面に出てきてもアクティブにならないときもあり
そのときはsleep時間延ばしてても全然違うアプリが閉じてしまう。
むぅぅ。これ以上はWSHでは無理っぽ?

78:デフォルトの名無しさん
04/10/27 21:26:28
>>76
ありがとうございます。
調べたときにIEとか出てきて「なぜ?」って疑問も
教えてもらったclipboardDataからぐぐって
IE呼び出してるんだろうって謎も解けました。

79:デフォルトの名無しさん
04/10/31 01:55:53
>>76 とても、ためになりました。
str = "hoge"
Set ie = WScript.CreateObject("InternetExplorer.Application")
ie.Navigate("about:blank")
Do While ie.Busy = True
WScript.Sleep(100)
Loop

Dummy = ie.Document.parentWindow.clipboardData.setData("text", str)
ie.Quit()

当方、VBS派ですが、期待した動作でした。
これまで、IEが立ち上がって来るのかと思って使ってませんでした。
これまでは、VBO4WSH.EXE で、VBのClipboadObj を使えるように
してました。
便利だけど、インストールしないといけないのが面倒なんですよね。
URLリンク(rd.vector.co.jp)


80:79
04/10/31 08:22:25
SendKeys を使って、"~"や"%" を送ろうとしても、それぞれ、[Enter]や[Alt] に変換されてしまって、
ファイル名のダイアログボックスに、名前を上手く入力できず困っていました。

でも、Clipboard の中に SetData("~ %") しておいて、Sendkeys("^V")《貼り付け》
してしまえば、上手く行きそうな気がしてきました。
まだ試してないけど、あとでためしてみます。
問題を解くきっかけを作っていただき、ありがとうございました。

81:デフォルトの名無しさん
04/10/31 12:13:38
>>80
URLリンク(www.microsoft.com)

82:デフォルトの名無しさん
04/11/02 16:50:19
CreateObjectもできて
dir /b | sortとかもできるWSHなスクリプトってないの?
VBSってすごい面倒。

83:デフォルトの名無しさん
04/11/03 22:56:06
WSHでセキュリティのイベントログを削除するスクリプトを
perlで作ったですがエラーがでて困ってます。
 # cscript script.pls
でコマンド実行すると
 # PerlScript Error: (in cleanup) Can't call method "ClearEventlog" on an undefined value
とエラーになります。
環境はWindows XPにActivePerl 5.8.4です。
どこが悪いのでしょうか。改善点をお願いします。

以下ソースです。

use Win32::OLE;

open(LOG, "eventquery.vbs /v /fo csv /l Security |");
@data = <LOG>;
close(LOG);

$strComputer = ".";
$wmi = Win32::OLE->GetObject(
"WinMgmts:{impersonationLevel=impersonate}!//" .
"$strComputer\\root\\cimv2"
);

$colLogs = $wmi->ExecNortificaitonQuery(
"Select * from Win32_NTEventLogFile where LogFileName='Security'"
);

foreach $objEvent ($colLogs) {
$objEvent->ClearEventLog();
}

84:80
04/11/04 00:24:57
>>81
どうもありがとうございます。こんな仕様になっていたのですね。
clipboard でのテキスト処理も使えるし、Sendkeys も小技が利くしで、
私のやりたい事の9割方は、WSHでほとんど事足りてしまいます。

85:デフォルトの名無しさん
04/11/06 05:42:20
>>83
何やってるのか知らんけど、colLogsが配列なら$じゃなくて@colLogsなのでは?
もし配列へのポインタなら、foreachで使うところで @$colLogs にするとか。
いずれにせよスカラー値がforeachの中にあるのは気持ち悪い。

ってWSHの話じゃないじゃん・・・


86:83
04/11/06 09:55:39
>>85
エラーの場所がClearEventLog()メソッド呼び出しのところなのでWSHスレッドで良いのかなと。
VBSなら ClearEventLog() でイベントログを削除出来るはずなんですけど
perlでやろうとするとエラーになるので何故かと思って。(perl使うなって話はなしで)

87:デフォルトの名無しさん
04/11/07 16:06:26
>>86 (>>83)
おまえ人の話聞いてないだろ。もっと >>85 の言ってることちゃんと考えろや。

foreach $objEvent ($colLogs) {
$objEvent->ClearEventLog();
}

$objEvent が undefined だから
# PerlScript Error: (in cleanup) Can't call method "ClearEventlog" on an undefined value
になるのは当たり前だろ。


88:83
04/11/08 00:18:45
>>87
foreach の ( ) の中を @colLogs としても同じく "undefined value" とエラーがでます。
@$colLogs とすると実行は出来たのですが foreach の中の処理をしてくれません。(実行しても何も起こらない)
WMIの呼び出しが間違っているんですかね?
perlでWMI扱う情報がweb上にほとんどなく、
どうすればいいのかよくわからないので知恵を貸してください。

追加で質問なんですが、文字コード/改行コードはEUC-JP/CRLFでよろしいんですか?

89:83
04/11/08 00:25:04
ちなみにwebで見つけたVBでログをクリアする方法です(バックアップする処理も含まれていますが)
perlへ移植するにはどうすればよいでしょう

----------------------------------------------------------------
Set objWMIService = GetObject("winmgmts:" _
  & "{impersonationLevel=impersonate,(Backup)}!\\" & _
     strComputer & "\root\cimv2")

Set colLogFiles = objWMIService.ExecQuery _
  ("Select * from Win32_NTEventLogFile where LogFileName='Application'")

For Each objLogfile in colLogFiles
  objLogFile.BackupEventLog("c:\scripts\" & strBackupName & _
    "_application.evt")
  objLogFile.ClearEventLog()
Next

90:デフォルトの名無しさん
04/11/08 06:13:37
>>89
SQL使える人ならできるだろ

91:85
04/11/08 06:28:52
>>83
できたぞ。喜べ。
検索キーワードは「"Win32::OLE" コレクション」。
OLEの世界のコレクションはperlの世界では単なるポインタなので、
そのままではループをまわせない。
それをどうやって扱うのか?
専用のWin32::OLE::Enumモジュールを使えばいいらしい。

以下コード。

use Win32::OLE;
use Win32::OLE::Enum;

$strComputer = ".";
$objWMIService = Win32::OLE->GetObject(
 "winmgmts:{impersonationLevel=impersonate,(Backup)}!\\\\".
 "$strComputer\\root\\cimv2");
$colLogFiles = $objWMIService->ExecQuery
 ("Select * from Win32_NTEventLogFile where LogFileName='Application'");
$enum = Win32::OLE::Enum->new($colLogFiles);

while (defined($item = $enum->Next)) {
 $item->BackupEventLog("c:\\scripts\\test_application.evt");
 $item->ClearEventLog();
}


92:デフォルトの名無しさん
04/11/08 14:20:32
すげー

93:デフォルトの名無しさん
04/11/08 18:03:32
結論、VBS使え。

94:83
04/11/10 10:39:32
>>91
おおぉお!ありがとうございます!感動して目の前が潤んでいます
perlのポインタの扱いについてよく理解できてませんでした。
精進します ありがとうございました

95:デフォルトの名無しさん
04/11/17 11:36:35
JScriptから、INIファイルを読みたいのですが何かいい方法はないでしょうか?
Win32APIでいうならgetPrivateProfileStringみたいなのを探しています。
よろしくお願いします。

96:デフォルトの名無しさん
04/11/17 18:02:53
素直にFSOでテキストファイル処理してもたいした手間じゃないと思うけど。

97:デフォルトの名無しさん
04/11/18 01:18:26
ウィンドウの無いプロセスを終了→起動させたいのだけど、
終了のさせ方がわかりません。ウィンドウがあれば、
>>72でできそうなんですが。

98:デフォルトの名無しさん
04/11/18 02:34:30
>>97
WMI を使う。
URLリンク(www.microsoft.com)


99:97
04/11/20 01:43:21
>>98 有難う! と言いたいのですが、WSHでないのが残念! です。

100:デフォルトの名無しさん
04/11/20 03:18:16
そいつは残念だ。

101:デフォルトの名無しさん
04/11/22 15:07:28


102:デフォルトの名無しさん
04/12/27 21:23:04
 


103:デフォルトの名無しさん
05/01/12 07:48:35
msgbox("新年あけましておめでとうございます")

104:デフォルトの名無しさん
05/01/12 17:42:38
質問スマソ。WSHでIEオブジェクトを扱った時、ページ内のJavaScript Functionって
呼べないのかな・・

105:デフォルトの名無しさん
05/01/12 23:23:14
IEオブジェクトはWindows 2000である条件のもとだと使えネェな。
といってもその条件が特殊だからあんま意味ないか。

106:デフォルトの名無しさん
05/01/12 23:37:41
>>104
ページ内のスクリプト各関数は
大抵ボタンやリンクのonClickなんかに関連づけられてるから
そのイベントをfireEventするってのは?




107:デフォルトの名無しさん
05/01/21 00:49:26
すみません、全くの初心者なんですが、Wordのマクロから、
別のところに保存してある.vbsファイルを実行したいのです。
(要はWordで今選択している単語を、
コピーして別のアプリのウインドウに貼付けしたい)
Wordのマクロでとりあえず
Selection.Copy
でコピーはできたのですが、その後、
(1)別のアプリの起動
(2)そのアプリへの貼付け
がどうやるかわかりません。
どなたかどうぞよろしくお願いします。

108:デフォルトの名無しさん
05/01/21 00:57:43
shell
sendkey

109:デフォルトの名無しさん
05/01/21 00:58:57
>107
WScript.Run
Sendkey

110:デフォルトの名無しさん
05/01/21 01:15:59
WSHがマルチスレッドに対応!
かと思って
ぅぉ
っと声を上げてクリックしてしもたorz

111:デフォルトの名無しさん
05/02/25 06:44:32
スレリンク(hosp板:14-番)
このスレッドの14番、15番は、
URLリンク(www.roy.hi-ho.ne.jp)
ここで、公開されているスクリプトです。
このスクリプトを変形して、
フォルダ内(1層でいい)のファイル名+サイズをテキストに書き出したいです。
ツリー構造はいりません。
私は、シェルうんぬんでわけがわからなくなりました。
虫のいい話ですが、どなたかお助け下さい。

112:デフォルトの名無しさん
05/02/25 07:05:15
>111
ややこしいと思うならshellを使わずにD&Dのみで作ればいいんじゃない?
ツリー構造いらないならそんなに難しいものでもないが。

113:111
05/02/25 07:18:11
>>112
これを機会にWSHを身に着けたいんです。

114:デフォルトの名無しさん
05/02/25 07:27:01
|д・)つC:\>tree TARGET_DIR /a /f > OUT_FILE

115:111
05/02/25 08:00:18
どうも有り難うございます。 >>114
つーか、私が最終的にやりたい事は、
ターゲットのフォルダに、
なっち.jpg 2.100 KB
あやや.mp3 45.777KB
つんく.txt 300KB
 ‥‥
とあったら、別のフォルダに、
なっち.jpg 2.100
あやや.mp3 45.777
つんく.txt 300
 ‥‥
とゆう名の0KBのテキストファイルを作りたいんです。
これを1発でやるには、WSHが最適だと思うのですが、どうでしょう?

116:デフォルトの名無しさん
05/02/25 10:02:49
>>115
そうですね。そう思います。

117:114
05/02/25 10:07:24
ちゃんと読んでなかった。流して。
そんなに難しいことじゃないので、そのうち自己解決するでしょう。
あと、どこがわからないのかを書くといいと思う。

118:111
05/02/25 10:08:13
URLリンク(www.roy.hi-ho.ne.jp)
Dim WSHShell
Set WSHShell = CreateObject("WScript.Shell")
これは、1行目でWSHShellの変数の宣言をしてから、セットしてるのに、

スレリンク(hosp板:14-番)
Dim sLine,sRootDir,sOutFile
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set Shell = WScript.CreateObject("Shell.Application")
これは、Fs、Shellを変数の宣言をしないでセットしてるのが疑問です。

119:111
05/02/25 11:08:25
スレリンク(hosp板:14-番)

Search oRootDir.Items.Item 'oRootDir.Self 'Win2000の場合

'はレム文の始まりだと思うけど、何で1行に2つあるのか、わかりません。

120:111
05/02/25 11:24:41
つーか、大昔にクイックCをちょこっとだけ、かじった事があるんですが、
始めから、
WScript.Echo "終了"
ここまでが、メイン関数
Sub Search(obj)
ここから最後までが、呼ばれる関数ですよね?
で、
Search oRootDir.Items.Item 'oRootDir.Self 'Win2000の場合
ってことは、Win2000以外の場合は、Search(obj)を使わない、って事ですか?

121:デフォルトの名無しさん
05/02/25 12:36:50
>>118
BASICは変数宣言しなくてもいいのです。

>>119-200
Win2000の場合は
Search oRootDir.Self
にしろって意味です。

122:401
05/02/25 23:26:19
>>121
そうですか、レス有り難うございます。

スレリンク(hosp板:14-番)
つーか、誰かこのスクリプトを削って、
フォルダ内(1層でいい)のファイル名+サイズをテキストに書き出すのみのスクリプトを書いてくれないかな?
複雑すぎてわかりません。

123:デフォルトの名無しさん
05/02/26 00:02:25
>>122

Set fso = CreateObject("Scripting.FileSystemObject")
Set src = fso.GetFolder(InputBox("コピー元フォルダ"))
Set dest = fso.GetFolder(InputBox("コピー先フォルダ"))
For Each f In src.Files
Set ts = dest.CreateTextFile(f.Name & " " & f.Size, False)
ts.Close
Next


124:111
05/02/26 01:49:25
>>123
うわあー、すばらしい、有難うございます。 感謝感謝です。
これで、HDDの整理に取り掛かれます。 感激です。

125:111
05/02/26 22:00:52
すみません、更なるお願いです。
>Set src = fso.GetFolder(InputBox("コピー元フォルダ"))
コピー元フォルダを自分で入力するのが面倒。マウスだけで入力したい。

>Set dest = fso.GetFolder(InputBox("コピー先フォルダ"))
これも面倒。自動で、C:\COPYフォルダ作りそこに入れて欲しい。
あと、ターゲットのフォルダに、
なっち.jpg 2.100 KB
あやや.mp3 45.777KB
つんく.txt 300KB
 ‥‥
とあったら、別のフォルダに、
なっち 2.100
あやや 45.777
つんく 300
 ‥‥
と、元のファイルの拡張子は省略して欲しい。
どうでしょうか?

126:デフォルトの名無しさん
05/02/26 22:57:43
>>125
「自分で入力するのが面倒。マウスだけで入力したい。」という君に
URLリンク(www.vector.co.jp)

「これも面倒。自動で、C:\COPYフォルダ作り」という君に
URLリンク(www.vector.co.jp)


127:111
05/02/26 23:09:58
URLリンク(www.roy.hi-ho.ne.jp)

Set Shell=Wscript.CreateObject("Shell.Application")
Set f=Shell.BrowseForFolder(0,"フォルダを選んでください")
MsgBox f.Items.Item.Path '選択したフォルダ名を表示

これを試してみると、2行目、文字1で、引数の数が一致していません。または不正なプロパティをしていしています。
'Shell.BrowseForFolder'  コード、800A01C2 ソース、VBScript 実行時エラー
となってしまいます。

128:111
05/02/26 23:11:45
WSHで、お願いします。 >>126

129:111
05/02/26 23:21:27
つか、>>127は解決しました。2行目が間違いでした。
Set f=Shell.BrowseForFolder(0,"フォルダを選んでください",0)
引き続き、>>125をお願いします。

130:111
05/02/26 23:50:16
>>123さんのソースをいじって、
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set Shell=Wscript.CreateObject("Shell.Application")
Set MOTOf=Shell.BrowseForFolder(0,"コピー元フォルダを選んでください",0)
Set dest = fso.GetFolder(InputBox("コピー先フォルダ"))
For Each f In MOTOf.Files
Set ts = dest.CreateTextFile(f.Name & " " & f.Size, False)
ts.Close
Next
とやってみました。コピー先フォルダの入力までは出来るんですが、
それ以後、エラーが出ます。
行5、文字1、オブジェクトでサポートされていないプロパティまたはめそっどです。
'MOTOf.Files' コード、800A01B6 ソース、VBScript 実行時エラー
となってしまいます。

131:デフォルトの名無しさん
05/02/27 00:02:07
>111
つか、これを機会にWSHを身に着けたい、と言うなら、
1日ぐらいは自分で悩んで手を動かしてぐぐってトライアンドエラーを繰り返してみなさい。
それでどうしてもわからなければ聞きに来れば誰か教えてくれるかも知れない。

132:デフォルトの名無しさん
05/02/27 00:04:24
copyFolder = "C:\COPY"
Set objShell = CreateObject("Shell.Application")
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(copyFolder) Then
fso.CreateFolder(copyFolder)
End If
Set objFolder = objShell.BrowseForFolder( 0, "フォルダ選択", 0 )
If objFolder is nothing Then
WScript.Quit
End If
Set file = fso.CreateTextFile( copyFolder & "\FILES.TXT", True )
Set objFolderItems = objFolder.Items
For Each f In objFolderItems
If Not f.IsFolder Then
file.WriteLine( f.Name & vbTab & f.Size )
bname = fso.GetBaseName(f.Path)
name = copyFolder & "\" & bname & " " & f.Size
fso.CopyFile f.Path, name
fso.DeleteFile(f.Path)
End If
Next

133:111
05/02/27 00:11:18
>>132
おお、有難うございます。ちゃんと動きました。 感謝します。

134:デフォルトの名無しさん
05/02/27 00:53:13
>>111
・・・勉強しろよ

135:111
05/02/27 02:02:36
>>134
へぇ、勉強します。 つか、なんで>>130がエラーになるのか説明出来ますか?

136:デフォルトの名無しさん
05/02/27 02:23:55
>135
ぐぐってる?
BrowseForFolderで取得できるFolderオブジェクトと
FileSystemObjectのFolderオブジェクトとは別のものだから。
BrowseForFolderのFolderオブジェクトにはFilesコレクションがない。

137:デフォルトの名無しさん
05/02/27 03:00:10
ここは111様にみんなで貢献するスレッドです。
勉強しろとかぐだぐだ言わずに、111様がお聞きになられたことに素早く答えましょう。

138:111
05/02/27 03:54:04
>>136
要するに、2つの系列の異なるオブジェクト間でのデータのやり取りが出来ない、ってことですか?
だから、>>132のプログラムは
苦肉の策として、テキストファイルにデータを書き出し、それを再読してる、と。
これってビジュアルベーシックの仕様ですか?

139:111
05/02/27 04:00:31
とはゆうものの、>>123さんと>>132さんには非常に感謝してます。

140:デフォルトの名無しさん
05/02/27 04:17:52
>138
違う。
Shell.ApplicationとScripting.FileSystemObjectにはたまたま同じ「Folder」という
名前のオブジェクトがあってよく似た構造をしてるけど、実際には全く違うもの。
だから当然使い方も違う。
BrowseForFolderのFolderオブジェクトはFilesというプロパティはない。
BrowseForFolderのFolderオブジェクトからはItemsというコレクションで取得して
FileかFolderかを判別する必要があるの。

FileSystemObjectから取得したFolderオブジェクトであれば>130でOKだった。

141:デフォルトの名無しさん
05/02/27 10:20:02
>>111
(ry

142:デフォルトの名無しさん
05/02/27 12:54:11
>>111
早く死ねよお前

143:デフォルトの名無しさん
05/03/01 06:12:31
WSHか…
仕事中にコソーリ、トランプゲーム組む時に使う程度かな
一見エディタ開いてコード書いてるわけだが、
んなことしてるなんざ、周りに言えないな…w

144:111
05/03/02 11:56:42
>>132
つか、これ俺の希望とは違うわ。

ターゲットのフォルダに、
なっち.jpg 2.100 KB
あやや.mp3 45.777KB
つんく.txt 300KB
 ‥‥
とあったら、別のフォルダに、
なっち 2.100
あやや 45.777
つんく 300
 ‥‥
と、拡張子のない、0BYTEのテキストファイルを作って欲しい
あと、元ファイルは消さない
です。

145:デフォルトの名無しさん
05/03/02 12:07:36
>>144
あなたの主張は理解できました。

がんばってくださいね

146:デフォルトの名無しさん
05/03/02 13:33:44
@echo off
for %%I in (%1\*.*) do type nul>"%2\%%~nI %%~zI"

147:デフォルトの名無しさん
05/03/02 19:38:35
ここは111様にみんなで貢献するスレッドです。
勉強しろとかぐだぐだ言わずに、111様がお聞きになられたことに素早く答えましょう。


148:デフォルトの名無しさん
05/03/02 23:27:09
132は111が戻ってこれないよう元ファイルだけじゃなくて
全てのファイルを消すようにしておきゃよかったのに。

149:デフォルトの名無しさん
05/03/03 01:26:38
どっかに「リクに答えてスクリプトを作るスレ」って無かったっけ?

150:デフォルトの名無しさん
05/03/03 02:22:33
ソフト板にあったような。スクリプト限定じゃないけど

151:デフォルトの名無しさん
05/03/03 02:51:37
「こんな」でスレ検索するとごろごろ引っかかるな。

152:デフォルトの名無しさん
05/03/03 04:52:36
スレリンク(tech板)
スレリンク(tech板)


153:デフォルトの名無しさん
05/03/05 06:11:22
すみません。Irvineスレで聞くべきなんですが、全く、反応が無いんです。
IrvineのRegistDateやSuccessDateのフォーマットって何なのかご存知の方、いらっしゃいますでしょうか?

154:デフォルトの名無しさん
05/03/11 03:28:55
ここ何のスレだっけ?

155:デフォルトの名無しさん
05/03/11 07:33:15
ソフト起動は以下のコマンドでやっているのですが。
ソフトを終了させるのは、どのように記述すればいいのでしょうか。

set ws = CreateObject("WScript.Shell")
ws.Run "   "

初歩的な質問で恐縮なんですが、よろしくお願いします。

156:デフォルトの名無しさん
05/03/11 07:44:47
>155
終了を待つことはできるけど、終了させることはできない。
SendkeysでALT+F4とか。

157:デフォルトの名無しさん
05/03/11 08:12:13
RunでなくてExec使えば?
Terminateあるよ。


158:デフォルトの名無しさん
05/03/11 10:34:44
>>156
>>157
ありがとうございます。それでやってみます。

159:デフォルトの名無しさん
05/03/12 03:31:39
IISでCGIの処理にWSHを使おうと思っているのですが、
スクリプトは正常に動いているのにURLから実行すると

CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:

CScript エラー: 設定の読み込みに失敗しました。 (アクセスが拒否されました。
)

というエラーが出てきてしまいます。
IIS側の設定でスクリプトマッピングは

拡張子 .XXX
実行ファイルのパス C:\winnt\system32\cscript.exe //nologo %s

みたいにしているのですが・・・


160:デフォルトの名無しさん
05/03/12 07:04:38
IUSR_XXXX
IWAM_XXXX
をAdministratorsに汁
URLリンク(www.users.gr.jp)
URLリンク(www.roy.hi-ho.ne.jp)



161:153
05/03/12 09:20:14
>154
どうもすみません。それでは質問を少し変えさせていただきます。
RegistDateというのは、ダウンロードの開始日時を表すdouble値なのですが、例えば、
38387.3075909722
というのが、Irvineの画面では
2005/02/04 07:22:55
と表示されています。
38394.2332972222
の場合が
2005/02/11 05:35:56
と表示されます。
おそらく、いつか特定の年月日からの経過秒数とかそういう値だと思うのですが、longでなくdoubleだというのが私には謎です。
日時を扱ったことのあるプログラマの方々、double形式が出てくることに何か心当たりはないでしょうか・・・?


162:デフォルトの名無しさん
05/03/12 09:34:35
(02/11 05:35) - (02/04 07:22) = 6日と22時間
(38394.23329) - (38387.30759) = 6.927


163:デフォルトの名無しさん
05/03/12 09:45:56
>161
date型は内部的にはdouble型で扱ってる。

dbldate=38387.3075909722
call msgbox(CDate(dbldate))

164:デフォルトの名無しさん
05/03/12 22:41:56
>>162-163
「何でdoubleを使ってるのか?」
という質問の答えになっていないと思う。


165:デフォルトの名無しさん
05/03/13 01:00:37
>>164
long だと 2038年1月18日までしか数えられないから。

こんなカンジの答えを希望?

166:161
05/03/13 06:08:57
CDate()で変換できるのですか!
うーん、奇妙!
ビット数の関係でdoubleなのでは、とは思っていましたが・・・
WSH(VBScript?)のdoubleって何バイトでしたっけ?
どうもありがとうございました。


167:デフォルトの名無しさん
05/03/13 10:28:55
>166
64bit

168:デフォルトの名無しさん
05/03/13 18:28:40
>>166
8バイト

169:デフォルトの名無しさん
05/03/16 05:41:48
自分で作ったアプリを WSH で制御しようとおもったら,
あらかじめ決められたインターフェイスを持った COM オブジェクトにしないとダメってことですか?
ってことは, C# で作っているアプリを WSH で制御できるようにするのは難しい?

170:デフォルトの名無しさん
05/03/16 05:55:19
HWNDを元に考えられる限りの窓遠隔操作機能を持ったCOMを誰か作ってくれないかな。


171:デフォルトの名無しさん
05/03/17 09:34:26
DynaCall

172:デフォルトの名無しさん
05/03/20 05:27:53
私、VBSしかわからないんですが、DateオブジェクトってどうしてJSでしか使えないんですか?

173:デフォルトの名無しさん
05/03/20 10:38:22
>>172
使えますよ。

<job>
<script language="JScript">
dt = new Date();
</script>
<script language="VBScript">
MsgBox dt.toUTCString()
</script>
</job>


174:デフォルトの名無しさん
05/03/20 16:02:18
>>43
XULのこと?HTAとは激しく別物かと思いますよ

HTAは通常のDHTMLを使ったWebページと同じくscriptタグ中に埋め込まれた
JScriptやVBSを呼び出すことで動作を表現する。

XULはそれ自体がXML準拠の構文でプログラムの動作を記述したもので
Mozillaのコアエンジンを通して実行される

と解釈してるが

175:デフォルトの名無しさん
05/03/26 14:25:44
>>173
同じ例に汁。

176:デフォルトの名無しさん
05/04/03 14:18:22
>>173
1年前の書き込みにレスしてどうする

177:デフォルトの名無しさん
05/04/03 14:19:04
アンカーミス>>733>>734

178:デフォルトの名無しさん
05/04/03 23:39:59
>177
いつへのアンカーなんだよw

179:デフォルトの名無しさん
05/04/04 08:56:57
このペースだと6年後くらいだな。

180:176
05/04/04 17:04:29
はずぃ>自分

181:デフォルトの名無しさん
05/04/05 23:58:34
取得した文字列の中身が全部 US ASCIIかどうかチェックしたいのですが、何かいい方法ないでしょうか?
CだとIsAscii()があるのですがWSHだとないので。。。。

182:デフォルトの名無しさん
05/04/06 13:13:55
>>181
アルファベットまたは数字、いくつかの記号
にマッチするか調べればいいんじゃない?

183:デフォルトの名無しさん
05/04/07 01:05:54
181だけど事故解決しました
面倒くさがらずに自分で作らないとだめだね
CHRつかうのとREGEXP使うのとどっちがパフォーマンスいいのかなあ
どぴゅ

184:デフォルトの名無しさん
05/04/09 00:02:19
 ( ゚д゚)ノ ハイ!質問です!

msgbox 2^64
を実行すると

1.84467440737096E+19
と表示されます。

15桁を超えるものは指数を使って表示されるようですが、整数で表示する事は出来ますか?




185:デフォルトの名無しさん
05/04/09 00:45:39
文字列に変換

186:184
05/04/09 00:50:30
>>185

文字列に変換は、Cstr() ですか?
Cstrは試して見ましたが、表示に変化はありませんでした。

それとも他の方法でしょうか?

187:デフォルトの名無しさん
05/04/09 01:43:09
多倍長整数使えよ

188:デフォルトの名無しさん
05/04/09 11:05:17
変換したら加工せにゃ

189:デフォルトの名無しさん
05/04/16 15:48:13
質問です。
あるフォルダ2つのファイルを比較します。
2つのフォルダの拡張子は例としてtxtとvbsです。
拡張子がちがう同じファイル名のファイルの
最終更新日時を比較します。ファイル名は大量の為特定できません。
比較してvbsのほうが日付が古ければ
エラーとしてテキストファイルに書き出す
という、vbsを作りたいのですがどなたかわかりますか?

190:デフォルトの名無しさん
05/04/16 16:23:36
>189
1.フォルダAとフォルダBがある。
  (フォルダAには拡張子vbsのファイルが、フォルダBには拡張子txtのファイルが入っている)
2.フォルダAからファイルをひとつ取り出す
3.フォルダBから拡張子を除いた部分の名前が同じファイルを探す
4.フォルダAとフォルダBのファイルの更新日時を比較して、
  フォルダAのファイルが古ければテキストファイルにエラーを出力。
5.フォルダAのファイルが無くなるまで2~4を繰り返す

こういうフローでいいならできる。

191:デフォルトの名無しさん
05/04/16 17:52:35
>>190
できたら作ってくれませんか?m(__)m

192:デフォルトの名無しさん
05/04/16 17:56:50
>>191
逝ってよし。

193:デフォルトの名無しさん
05/04/16 21:48:46
            _,ノ‐''''''^^^¨¨¨⌒ ̄⌒^^''¬-、,_
        ._v-''¨`   .,,vー─-、    .,,vー─-、 .¨'ーu_
      _ノ'″     ./′    ¨┐ ./     ゙┐  .゙'┐
     ,/′      ./ ̄''''-¬,,,,__.ミ .i |,,,,___ ..)   ゙\
    ,/′     λ  |     ( ・ )| } .¨'ーu,,  |     \
   ./′      八,、-ミ.ノ‐''''''^^ ̄./¨レ       .人,_     ミ
  .,ノ′     ._ノU'   \_   ._,rlト冖へy   _/  ¨'‐u   .゙lr
 .,i′     /ー-v、.,,_   ¨^^¨´〔    〕.¨^^¨′  __.,、 ゙\.  {
 〕      ./′    .⌒'''''    \,,,,,,ノ′  v-ー'''¨ .λ  ゙┐ }    __________
 |      ノ  .λ──ー      }      __,,.,、v;(_)ー''  {..]  /
 |     :|   | |            .!      `         .}} < きがるにいってくれるなあ。
 }     .|   .U-:;:冖^ ̄       .|      ¨¨¨¨¨ ̄¨¨′ ミ}  \
 .|     .}       _,,,,,vvl''''¨¨|^^⌒|¨¨''''lvv,_         }     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ). .   〕    ,,、-v~|   .|   |   |   |''T^i-,,_      /
  .{     ). ., r'z::''''~゙(~~ ̄ ̄ ̄ ̄ ̄ ̄~~~`^^^^''''¬;;;_   ノ
   ミ.    `i,                         , `'' /
   ゙).    `i,                           .,ノ  λ
    \    },     ′               .  /   | |
     . \  \                   .  ,/     ∪
       (¨¨¨¨¨¨¨¨¨¨¨¨¨¨゙ソ冖干ア^^^^^^^^^^^^^r'′
      /~~~~~~~~i¬冖'''''7′   ∨¬ーーz─-―「\
     /     _ノ     厂¨丁¨¨フ    .ミ、    ゙\

194:デフォルトの名無しさん
05/04/17 16:22:30
質問です。
XPを使っているのですが、デスクトップからスタンバイに移行するのに
Dim objShell
Set objShell = WScript.CreateObject("Shell.Application")
objShell.Suspend
というコードを使えばできると書いてあったんですが、
スタンバイに移行できません。
このコードはXPでは使えないのでしょうか?


195:デフォルトの名無しさん
05/04/18 02:05:49
>>191
せっかくアルゴリズムまでは教えてくれてるんだからヘルプファイル読みながらでも
自分で作んなさいよ

196:191
05/04/20 11:13:48
行き詰まってつい・・・・。でも、なんとかできました。
190さん、ありがとう。

197:191
05/04/21 06:45:27
できたのですが、ファイルがたくさんある場合に今どれくらい
進んでいるのか進捗状況を表示させられたらいいと思っているのですが、
今何%進んでいるか(プログレスバー?)を表示させるには
どうすればいいですか?検索とかしてるんですが、みつかりません。
無理なんでしょうか?

198:デフォルトの名無しさん
05/04/21 07:12:56
>>197
プログレスバーは無理な希ガス

cscriptから起動させて、文字列出力させたら?

199:191
05/04/21 07:37:13
>198氏
朝早くありがとうございます。無理ですか・・・。
しかたないのであきらめます。

200:デフォルトの名無しさん
05/04/24 23:25:02
この文なんですが

mLocation = FindFromText( pos, html, "<td valign=""top""><strong>■", "</strong><br>", "" )
                                            ↑         ↑
矢印で示した部分のコンマに当てはまる文字列を変数posとhtmlにそれぞれ返すいうことですか?

201:デフォルトの名無しさん
05/04/24 23:53:46
>>200
書いたやつに聞けよ・・・


"<td valign=""top""><strong>■" と、 "</strong><br>" にはさまれている文字を
mLocation に返すみたいだが・・・

202:デフォルトの名無しさん
05/04/25 01:17:55
>201
そうだな
サンクス

203:デフォルトの名無しさん
05/05/08 14:40:39
すいません,VBScriptでレジストリ操作をしたいんですが,
あるレジストリキーが存在するかどうかを確認する方法はありますか?
RegReadで存在しない値を参照してエラーが出てしまうんですが
回避方法がわからないんです.

204:キー列挙ならWMIの方が楽だよ
05/05/08 15:02:33
>>203
On Error Resum Nextじゃダメ?

205:204
05/05/08 15:02:56
Resum→Resume

206:デフォルトの名無しさん
05/05/08 15:06:25
>>204
それはアレですよね,エラー無視.
最初はそれにしてたんですが
他の部分でエラー出たりすることもあるしどうかなぁ と.

というか,エラー無視で強引に進めるのって怖くありません?

207:デフォルトの名無しさん
05/05/08 15:09:39
ちなみにHTAを使って割りと複雑な操作をするんで
VBScript+HTAじゃないとダメっぽいです.

RegDeleteもサブキーがあるとエラーとかいう意味不明な仕様ですが
あれも何とかならんでしょうか。
今は oWsh.Run("reg delete "HKCR\.dat" /f) とこんな事をしてます.
でもreg.exeを使うと動作にタイムラグが・・・_| ̄|○

208:デフォルトの名無しさん
05/05/08 19:03:25
URLリンク(www.microsoft.com)


209:デフォルトの名無しさん
05/05/09 02:20:54
>>203
>>208 の手段でも良いし、条件分岐させれば良いだけじゃないのか。

210:デフォルトの名無しさん
05/05/09 03:00:18
>>208,209
そうですね,208ので全部消していくかな.
条件分岐っていうのは?
レジストリキーが存在するかどうかが調べられないのに
どう条件分岐させるんですか?

211:デフォルトの名無しさん
05/05/09 20:16:32
>>210
当初 >>203 で言っていた「あるレジストリキー」というのがいくらかでも
特定されたものであれば、レジストリキーの有無で条件分岐できるだろうと
いうこと。今回言っているように、どのようなキーが存在するかさえ不明で
あれば >>208 の示した手段がベター。

212:デフォルトの名無しさん
05/05/09 20:56:52
>206
エラーの出そうな操作の直後に
if err<>0 then
 ~
end if
でエラーの場合の動作を(msgboxとかexit doとか)。

213:デフォルトの名無しさん
05/05/09 23:32:34
>>211
すいません、レジストリキーの有無ってどうやって調べるんですか?

214:デフォルトの名無しさん
05/05/11 21:46:18
キーをオープンしてみれば分かる

215:デフォルトの名無しさん
05/05/11 21:46:36
>>213
そのくらい調べりゃすぐ分かるだろ
自分で調べろよ

216:デフォルトの名無しさん
05/05/14 10:59:37
すいません、キーはどうやってオープンすればいいのか…

217:デフォルトの名無しさん
05/05/14 18:33:51
キーを読み取ってみてエラーが発生したら分岐させる?

218:デフォルトの名無しさん
05/05/16 18:58:29
急速にスレの質が低下してまいりました

219:デフォルトの名無しさん
05/05/17 14:07:51
急速という割には、ペース遅すぎな希ガス

220:デフォルトの名無しさん
05/05/20 13:45:42
スレッドストッパーの俺様が来ましたよ

221:デフォルトの名無しさん
05/05/20 22:35:57
そこでスレッドリバイバーの漏れ様の登場ですよ

222:デフォルトの名無しさん
05/05/20 23:09:32
そこでハイパースレッディングな俺様の登場ですよ!!

223:デフォルトの名無しさん
05/05/23 01:18:56
おまいらちっとはwsh使へ

224:デフォルトの名無しさん
05/05/23 23:05:05
いやぷぅ(~o~)

225:デフォルトの名無しさん
05/05/24 23:12:11
バッチファイルと違って、タスクマネージャくらいからしか強制終了できないのが辛い。
あとは時間指定ぐらいですかね?
でも、環境によって実行時間が違ってくるから時間による終了は入れたくないなぁ。

226:デフォルトの名無しさん
05/05/25 02:25:23
バッチで強制終了させりゃいいじゃん。
バッチでできんことはWSHにやらせて。

227:デフォルトの名無しさん
05/05/25 19:59:47
向き不向きを考えて使えって事か。
そりゃそうか。

バッチファイルで何行も同じようなこと書きたくないなぁと思って
vbsならスマートかな、と思ってやってみたんですた。
まぁコマンドプログラム呼び出すたびにアクティブなウインドウがそっちに移るんで
それも困ってたトコなんでやっぱバッチのほうが向いてるかも

228:デフォルトの名無しさん
05/05/26 05:03:19
>225-227 cscript.exe もちゃんと使おうな

229:225=227
05/05/26 19:59:30
URLリンク(www.atmarkit.co.jp)
コマンドラインスクリプトのことかーーーー!!!
初めて知りました。
多謝でつ。


230:デフォルトの名無しさん
05/05/27 12:38:44
WSHは略だけど
CScriptも略してCSHとは言わんな

231:デフォルトの名無しさん
05/05/27 22:27:43
wshはwscript.exeの略じゃないし

232:デフォルトの名無しさん
05/06/01 13:26:13
JScriptでショートカットのファイルを吐き出したいです
どうすれば出来ますか?

233:デフォルトの名無しさん
05/06/01 14:11:25
>>232
URLリンク(www.microsoft.com)


234:デフォルトの名無しさん
05/06/01 15:51:26
>>233
ありがとう

235:デフォルトの名無しさん
05/06/01 18:24:40
一定の間隔をおいて標準入力をテキストファイルに出力するにはどーしたらいい?
おしえてー

236:デフォルトの名無しさん
05/06/01 22:30:52
>235
一定の間隔とは行間のことだと勝手に想像して書いてみる
んでもって言語の指定ないから勝手にJScript

var ROW_SPACES=1;
var a=WScript.StdIn.ReadAll().split("\r\n");
var f=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile("outfile.txt");
for(var i=0;i<a.length;i++){
f.WriteLine(a[i]);
for(var c=0;c<ROW_SPACES;c++)f.WriteLine();
}
f.Close();


237:デフォルトの名無しさん
05/06/02 01:45:36
間隔っつったらやっぱ時間じゃねえの?

while (!WScript.StdIn.AtEndOfStream) {
WScript.StdOut.Write(WScript.StdIn.ReadAll());
WScript.Sleep(10000);
}



238:236
05/06/02 02:20:20
>237
標準入力→テキストファイル、ってあるから
多分行間じゃないかなあと予測した
逆なら劣化ページャみたいな物と予測したのだけど

あと StdIn.AtEndOfStream() は試したら
存在しないみたいでエラー出たから ReadAll()

239:デフォルトの名無しさん
05/06/02 03:24:38
時間だとすると標準入力をテキストファイルに出力するのに一定の間隔を空ける意味が良く分からん

240:236
05/06/02 15:24:26
>239
そう、私もそれが言いたかった、ごめん_| ̄|○

てか、StdIn.AtEndOfStream てプロパティだから
括弧付けると駄目なのね…逝って来る_| ̄|○

241:デフォルトの名無しさん
05/06/03 17:59:10
ひょっとしてこういうことがしたいのかも

do while True
do while (not WScript.StdIn.AtEndOfStream)
WScript.StdOut.Write(WScript.StdIn.ReadAll())
loop
WScript.Sleep(5000)
loop


242:デフォルトの名無しさん
05/06/05 17:59:02
>241
ReadAllなのにAtEndOfStreamを待つのか?

243:デフォルトの名無しさん
05/06/05 20:51:29
tail -f
みたいな動きをさせるためじゃないかな

244:デフォルトの名無しさん
05/06/10 09:57:18
「デヴァイスマネージャ」の
「USBルートハブ」を無効にして
再度,有効にするという操作を
WSH にしてみてください

245:デフォルトの名無しさん
05/06/10 12:35:24
msgbox "USBハブのコード抜け"
msgbox "抜いたらもう一回挿せ"


246:デフォルトの名無しさん
05/06/10 12:50:41
>>245
【ご主人様】メイドさんスクリプト【ご命令を】
スレリンク(tech板)


247:デフォルトの名無しさん
05/06/10 14:01:26
Private Sub Command1_Click()

Dim UsbSet As SWbemObjectSet
Dim Usb As SWbemObject
Dim Locator As SWbemLocator
Dim Service As SWbemServices
Dim MesStr As String

Set Locator = New WbemScripting.SWbemLocator
Set Service = Locator.ConnectServer
Set UsbSet = Service.ExecQuery("Select * From Win32_USBHub")

For Each Usb In UsbSet

MesStr = MesStr + "USBハブの名前:" + Usb.Description + vbCrLf + _
"USBハブのデバイスID:" + Usb.DeviceID + vbCrLf

Next

MsgBox "USBハブの情報です。" + vbCrLf + _
vbCrLf + MesStr + vbCrLf + "ですよ。"

Set UsbSet = Nothing
Set Usb = Nothing
Set Locator = Nothing
Set Service = Nothing

End Sub

248:デフォルトの名無しさん
05/06/10 14:03:22
Private Sub Command1_Click()

Dim UsbSet As SWbemObjectSet
Dim Usb As SWbemObject
Dim Locator As SWbemLocator
Dim Service As SWbemServices
Dim MesStr As String

Set Locator = New WbemScripting.SWbemLocator
Set Service = Locator.ConnectServer
Set UsbSet = Service.ExecQuery("Select * From Win32_USBController")

For Each Usb In UsbSet

MesStr = MesStr & Usb.Name & vbCrLf

Next

MsgBox "USBコントローラの一覧です。" & vbCrLf & _
vbCrLf & MesStr & vbCrLf & "ですよ。"

Set UsbSet = Nothing
Set Usb = Nothing
Set Service = Nothing
Set Locator = Nothing

End Sub

249:デフォルトの名無しさん
05/06/10 14:10:00
URLリンク(www.microsoft.com)


250:デフォルトの名無しさん
05/06/10 14:44:59
>>244
UWSC使ってみ

URLリンク(www.h7.dion.ne.jp)


251:デフォルトの名無しさん
05/06/15 10:03:13
ご存知の方いらしたらご指導お願い致します

var oShell = WScript.CreateObject("Shell.Application");
var oFolder = oShell.NameSpace("fURLリンク(192.168.*.**)保存/");

var desktop = oShell.NameSpace(0);
var objFolderItems = desktop.Items();
for(var i = 0; i < objFolderItems.Count; i++) {
var ofitem = objFolderItems.Item(i);
if(ofitem.Name == "日報.xls") {
oFolder.CopyHere(ofitem);
WScript.Sleep(6000);
break;
}
}

日報.xlsをサーバーにFTPを使ってコピーするプログラムを作成しました
前日の同名ファイルに上書きして毎日保存しているのですが
ファイルの上書き確認ダイアログが出てしまうの非表示にして自動的に
上書きしたいのですが、よろしくお願い致します。

252:デフォルトの名無しさん
05/06/15 10:17:31
ふつうにftpコマンド使った方がよくね?

253:デフォルトの名無しさん
05/06/15 10:47:54
>>252
というと確認ダイアログをちゃんと出したほうが良いということでしょうか?
一応、転送終了後にファイルの更新日時や内容を軽くchkしていますので
サーバー側で定期的に別フォルダにバックアップしているので、間違いで
上書きしてもとりあえず問題ないのです


objFolder.CopyHere vItem, [vOptions]
FOF_NOCONFIRMATION 0x0010 上書きしますかとか聞いてこなくなる

oFolder.CopyHere(ofitem, 0x0010);
oFolder.CopyHere(ofitem , 0x0010);
こんなのを見つけて直してみても直りませんね

254:252
05/06/15 11:35:37
>>253
いあ、ftpでファイルをアップするだけの用途なら、
-sオプション付けて、動作指定したファイル記述するだけで良さそうだなー

と思っただけ

255:デフォルトの名無しさん
05/06/15 12:30:00
なるほどそういう事でしたか、コマンドプロンプトでやるのでしょうか
wshで記述できるのでしょうか?
勉強不足でして、バッチファイルの作り方も危ういので
>>251
で晒したソースもよそ様のサンプルを使って作成したので理解度0に近いのです

256:デフォルトの名無しさん
05/06/15 13:08:51
コマンドプロンプトでもwshでも可能

ftpの-sオプションについては↓みれば大体分かると思う
URLリンク(www.atmarkit.co.jp)

257:デフォルトの名無しさん
05/06/15 20:02:10
その前に、ftpコマンドの成功、失敗の判定をスクリプトやバッチファイルでできるのか?

258:デフォルトの名無しさん
05/06/15 20:20:50
もう一回アクセスしてファイルの日付がアップロードした日時になってるかとか
サイズがローカルのものと同じになっているかとかをチェックすれば出来なくはない

259:251
05/06/16 10:07:09
報告遅くなりまして申し訳御座いません
それと皆様に助言頂き感謝しております。
ftpの-sオプションについて教えて頂いたサイトを目下勉強中ですが
構文エラーが出てしまいうまくいかない状況です。しばらくサンプルを
作成して試してみますので、どうしても分からなかったら又ご助言を
よろしく御願い致します



260:デフォルトの名無しさん
05/06/16 14:20:45
おしごとでWSH使ってるんですが、
WSHのファイルインクルードって vbs しかインクルードできんのですか?

<script langage=VBScript src="aaaaaaa.vbs"/>

これでWSHスクリプトをインクルードしようとすると最初のJOBタグでエラーになってこのやろうちくしょう。

vbsでファイルインクルードがあればいいんですが・・・。

261:デフォルトの名無しさん
05/06/16 18:48:58
langage

262:デフォルトの名無しさん
05/06/16 18:58:11
で、vbsのインクルードはできたのか?
日本語で質問してくれると助かる。

263:デフォルトの名無しさん
05/06/16 19:19:11
JScriptはほぼ同じ方法で取り込める
だがwsfを取り込むってのは出来ないハズ

wsfにコードを書くと再利用するときに困るから
私の場合、コードは全てvbsに書き、wsfは取り込むのみで使う

264:260
05/06/16 23:55:51
>>261
ちょっとあせってたのさ。

>>262
おいっす。落ち着きます。で。対象のvbsファイルをFileSystemObjectで開いて、
ReadAllメソッド使ってソースをひとつの変数に突っ込んでExecute関数で実行っていう方法なら見つかった。
vbsには正式なインクルードはないみたい。wsfにはあるけど。

↓詳しくは見てください。
URLリンク(www.trickpalace.net)

>>263
やっぱりそうなるのね orz
再利用できる共通コードの中で、別の共通コード使いたい場合で困りますよね。

265:デフォルトの名無しさん
05/06/17 05:46:46
まずはここの情報は全て押さえとくとヨロシ。
MS社員の有志というか暇というか。一応純正だからw
URLリンク(groups.msn.com)
FAQやDOWNLOADに情報満載。

266:デフォルトの名無しさん
05/06/17 13:24:19
>>265
Σ(゚д゚lll)ズガーン。英語!?www
(´∀`;)ゝいやぁ。漏れ純正の日本人だから英語ダメスwww

と思ったけど、FAQはクリックすればサンプルコード出てくるだけだからわかりやすいね。アリガタス

267:デフォルトの名無しさん
05/07/18 02:39:27
ホス

268:デフォルトの名無しさん
05/07/20 01:42:04
ホシュホシュ

269:デフォルトの名無しさん
05/07/25 22:41:51
ホシュホシュ

270:デフォルトの名無しさん
05/07/27 16:45:29
Windows2000にて
WSH使って、タスクスケジューラへ
自動的にタスクを追加するには
どうすればいいか御存知の方いますか?

昔、どこかで出来るような発言してる人がいたので
結構ググッたけど、見つからなかった・・・


271:デフォルトの名無しさん
05/07/27 17:22:24
XPだったらschtasks使えば楽そう
Win32_ScheduledJobはATコマンドと同等だったはずだし、

IScheduledWorkItemとかITaskScheduler辺りを使えばどーだろ・・・

272:270
05/07/28 15:13:25
>271

調べてみたけど、使い方よくわかんなかったので
ATコマンドで妥協しました。('A`)

XPはschtasksがあるからいいですね。


273:デフォルトの名無しさん
05/07/28 15:29:52
ATコマンドってモデムのアレですか?

274:デフォルトの名無しさん
05/07/28 15:36:55
>>273
釣りなのか、マジなのか、なんかの揚げ足取りなのか知らないけど

コマンドプロンプト開いて、「at /?」と入力してみれ

275:デフォルトの名無しさん
05/07/28 15:41:41
ああ、UNIXのat相当なんですね。大文字で書かれると分からんもんですね。

276:デフォルトの名無しさん
05/07/28 15:55:30
>>274
いや、モデムの方だろ

277:デフォルトの名無しさん
05/07/29 02:35:30
schtasksはユーザー権限でログオンしている時
管理者アカウントでタスクを実行しようとしても
拒絶されるから嫌いだ。

そのくせ10回に1回うまくいったりするあたり、
単なるバグなんじゃねぇかと。

278:デフォルトの名無しさん
05/07/31 12:46:54
>>277

うほっタイムリーなネタ
だから実行できなかったのか!
なんかいい解決方法ないのかな。
XPでATコマンドってまだ使えたっけ?

279:デフォルトの名無しさん
05/07/31 14:39:24
>>278
そう実行できない。
2002年から2003年にかけて死ぬほど検証したし
海外までググったしMSプレミアムサポートに問い合わせもした。
結局使えそうで使えないコマンドなんだわ。<schtasks

XPでもATコマンドは使える。
ただ管理者アカウントでログオンしてないと
コマンドが受け付けられないので注意。
これはNT4時代からずっとそうなので諦めるしかない。
管理者アカウントでログオンするなら
schtasksだって使えるんだよね。。。

> なんかいい解決方法ないのかな。

これまで携わったプロジェクトでは
配布ソリューション(SMSやその類似品)を使って
バッチを配布して管理者権限でキックしたり、
管理端末から(ドメインAdminでログオン)から
目的の端末にリモート実行させたりしてた。
あとはスタートアップスクリプトに仕掛けたりとかそういう感じ。

あとはサーバーに「特定のテキストファイルがあれば
ファイル名と同名のユーザーの端末上でコマンド実行」
という趣旨の定期監視タスクを仕掛けておいて、
ユーザーがバッチを起動すると、
サーバー側で監視してるフォルダに
テキストファイルが作られるみたいな構成とか。
わずかな事やるのに結構遠回りしてるなぁ。orz

280:デフォルトの名無しさん
05/07/31 16:07:05
>>279
>海外までググったし
そうか。プログラミングのノウハウは国内にはあまり無いから
ググる時にも必ず「ウェブ全体」を選んでたけど
まだそういう時代じゃないんだな

281:デフォルトの名無しさん
05/07/31 16:26:33
>>280
や、失礼。
ググった結果(主に英語サイト)から
海外サイトを延々見てまわり、の方が正確。
お詫びして訂正します。ゴメンチャイ。

どうでもいいがヘブライ語みたいなサイトも見たよ。
チンプンカンプンだっつーの。

282:デフォルトの名無しさん
05/08/04 22:35:08
(・∀・)アゲ!!

283:デフォルトの名無しさん
05/08/06 22:53:34
WSHで起動中の特定の名前のウィンドウの
存在の有無を確認する方法ってありますか?

284:デフォルトの名無しさん
05/08/07 09:40:02
>>283
WMIでWin32_Processをクエリーするしかないんじゃねーの?
でもこの方法、WindowsXP以外はWMICoreのインスコが必要だったと思うが。

285:283
05/08/07 13:10:15
>>284
レスありがとうございます。自己解決しました。
VBScriptのappactivate("ウィンドウ名")=Falseで
判定することができました。

286:デフォルトの名無しさん
05/08/08 14:53:27
リンクリストみたいなコレクションありませんか?
ハッシュ(Scripting.Dictionary)と配列はあったのですが・・・。

やりたいことは、文字列をコレクションに溜め込んで、最後にJoinで一つの文字列にしたいのですが、
ハッシュだと溜め込むことはできそうですが、最後にJoinしたときに順番がバラバラになりそうで利用できません。

要素の追加にコストが掛からず、最後に文字列結合できるコレクションなどはないでしょうか。


287:デフォルトの名無しさん
05/08/08 16:55:07
>>286
Arrayではコストがかかりすぎるのでしょうか。

288:デフォルトの名無しさん
05/08/08 17:53:42
>>286
そりゃあデータ構造を考えれば普通に不可能だろう。

289:デフォルトの名無しさん
05/08/16 20:39:16
みんなデバッグ環境はナニを使ってる?

290:デフォルトの名無しさん
05/08/16 21:56:50
jsファイル ダブルクリックして
テキストファイル出力で変数の値みる

291:デフォルトの名無しさん
05/08/21 01:11:37

var WShell = new ActiveXObject("WScript.Shell");
WShell.Run("c:\\******\\hoge.exe");
のように実行ファイルを動かし、hoge.exeからJScriptの変数に何らかの値を代入することは可能でしょうか?

292:デフォルトの名無しさん
05/08/22 13:25:15
>>291
こんな感じでしょうか。
この例ではHello, world!の後の改行までsに代入されてしまってますが。

----------
D:\>type hello.js
print("Hello, world!");

D:\>type hello2.js
var WshShell = new ActiveXObject("WScript.Shell");
var oExec = WshShell.Exec("d:\\hello.exe");
var s = oExec.StdOut.ReadAll();
WScript.StdOut.Write("[" + s + "]");

D:\>jsc /nologo hello.js

D:\>hello.exe
Hello, world!

D:\>cscript //nologo hello2.js
[Hello, world!
]

D:\>
----------

293:デフォルトの名無しさん
05/08/22 13:49:53
>>289
//X オプション + VSでデバグ。

294:291
05/08/24 16:04:26
>>292
ありがとうございます。
解決しました。

295:286
05/08/30 16:39:36
>>287-288
レスありがとう。

やりたいことは Java のStringWriterクラスでしたが、
writeメソッドで受け取った文字列を溜め込んで、
toStringメソッドで結合して返すってことをやりたかったのです。

それで実際に Scripting.Dictionary で、試してみたら
Joinしたときに順番がバラバラになるかと思ったんですが、
追加した順番に文字列が結合されたので大丈夫でした。

なんかラッキーでした。ありがとう。

296:デフォルトの名無しさん
05/09/05 12:59:10
vbsやりはじめて3日目です
Subプロシージャに引数としてオブジェクトを渡したいのですが
渡されたオブジェクトのプロパティをSubプロシージャ内で参照しようとすると
オブジェクトがありませんと言われます
ぐぐってもVBの事例はいくつか出てきたのですがVBSの事例は見つけられませんでした
どのようにしたらいいんでしょう

297:デフォルトの名無しさん
05/09/05 19:38:27
>>296
書け

298:名無しさん@そうだ選挙に行こう
05/09/11 00:41:35
>>11 >>12 >>16 おそらく、↓のスレのことだと思われ。

// Windows Script Host を使い尽くす //
URLリンク(pc3.2ch.net)

299:デフォルトの名無しさん
05/09/12 20:52:33
win板のwsh スレはどこ?

300:デフォルトの名無しさん
05/09/12 22:31:35
落ちたみたいね

301:デフォルトの名無しさん
05/09/13 00:27:09
おいっす。了解っす。

302:1/2
05/09/15 23:43:08
どなたかお知恵をお貸しください。

あるテーブルの抽出結果を、ADODB.Recordset.GetStringで文字列にする関数 strResults を、
VBSから呼び出してテキストファイルに保存しようとしました。

Dim sFS, strParam, oTS, strResultText, intResultLetters, i

strParam = WScript.Arguments(0)
strResultFName = WScript.Arguments(1)

Set appAc = CreateObject("Access.Application")
appAc.OpenCurrentDatabase "V:\・・・\GrepRecordsets.mdb"
strResultText = appAc.Run("strResults", strParam)
Set appAc = Nothing

Set sFS = CreateObject("Scripting.FileSystemObject")

Set oTS = sFS.CreateTextFile("V:\・・・\result.txt", True)
oTS.WriteLine "MS Access ファイルからの検索結果"

intResultLetters = Len(strResultText)
For i=100 To intResultLetters Step 100     ' デバッグのため分割して書き込む
    MsgBox Left(strResultText,100)        ' デバッグのための内容表示
    oTS.Write Left(strResultText,100)
    strResultText = Right(strResultText,intResultLetters - i)
Next

303:デフォルトの名無しさん
05/09/15 23:43:34
ここで、ある特定の文字が、MsgBoxでは表示されるものの、
書き込もうとした時点でコンソール上に以下のエラーが出てしまいます。

    Microsoft VBScript 実行時エラー: プロシージャの呼び出し、または引数が不正です。

その文字とは、中華料理店の店名らしいのですが、

         火     日    金
      火火  日日  金金

テキストエディタ等で見ると ?晶? となりますが、MS Wordなどで見ると上記のような文字です。


このため、文字コード変換で改善するかと思い、nkfwin.exe なるツールではどうかとやってみたところ、
上記の文字を含むテキストファイルを nkfwin.exe の引数に指定したところ、
    ┌────────────┐
    │16 ビット MS-DOS サブシステム                   ×│
    ├────────────┤
    │      C:\WINNT\System32\cmd.exe -
    │      V:\・・・\nkfwin.exe
    │ ×  -s -I TestKanji.txt
    │      NTVDM CPU は不正な命令を検出しました。
    │      CS:0000 IP:e2d7 OP:00 00 00 00
    │    
    │        [ 強制終了(T) ]    [ 無視(I) ]
    └────────────┘
となってしまいました。

このような現象は、どう対処したらよいのでしょうか?
お教えいただけますと大変助かります。

OS : Windows NT 4.0    Access 2000, ADO 2.6, WSH 5.6

304:デフォルトの名無しさん
05/09/16 05:08:50
>Set oTS = sFS.CreateTextFile("V:\・・・\result.txt", True)

ここを

Set oTS = sFS.CreateTextFile("V:\・・・\result.txt", True, True)

にしたんじゃダメか?
出力内容がUNICODEになっちまうけど。
(SJISには無い文字コードみたいだからそうするしかないんだけどね。)

305:デフォルトの名無しさん
05/09/16 09:06:23
>>304
ありがとうございます!
あっさり出力できました!
大変助かりました。m(_ _)m

306:デフォルトの名無しさん
05/09/16 20:27:56
ユニコードの28977 焱 、
ユニコードの37995 鑫 と判明しました。
これらの文字を取り除いてメールで送れるテキストにする方法を探し中です。

307:デフォルトの名無しさん
05/09/16 23:13:23
報告です。
まず unicodeテキストとして保存し、
その後 フリーソフトの cherset converter で
→ ISO-2022-JP → Shift_JIS
で出来ました。
2段階でやったところ、通常 ? で置き換わるところ _ で置き換わっていました。
ありがとうございました。。

308:デフォルトの名無しさん
05/09/28 18:18:34
ここで聞くのが正しいのかも少々不安ですが
質問させてください。

前提:
プログラミングは大昔に20年ほど前にFORTRANいじったことがありますが
中途半端だった上にその後すっかりで、基本的に知識ゼロです。

要望:
・下記の事がWSHで実行可能か知りたい
・可能な場合は参考になるスレはどこにあるのか知りたい
・ヒントになるようなスクリプトがあれば手に入れたい

やりたいこと:
(WindowsXP上で動いているアプリケーションに対してです)

起動
1.任意の座標(固定)のcolorをチェックする
2.任意のcolorではない(または任意のcolorである)場合に
3.任意の座標をマウス(右)クリック(相当の信号?コマンド?送出)
終了までループ

座標系はやったことがないのでまるでわかりません。
ヒントを頂いて勉強もしたいのですがちょっと差し迫った事情が
あって時間もないので、どなたかお教えいただければ幸いです。

そんなのプログラム組めば簡単簡単・・・などとできもしないのに
大見得切るんじゃなかった。。。^^;

よろしくお願いします。

309:デフォルトの名無しさん
05/09/28 18:48:01
無理…だと思う。

310:デフォルトの名無しさん
05/09/28 21:37:52
>>308
俺もWSHじゃ無理だと思う。
Win32系のスレでAPIの使い方を訊きながら、C言語でコンソールアプリとして作ればそんなには難しくないと思うよ。
C言語のコンパイラは Borland C++ Compiler とか Microsoft Visual C++ toolkit 2003 とか無料のがあるからそれを使いね。
( Microsoft Visual C++ toolkit 2003 は別途PlatformSDKも入手しなきゃならんから Borland のほうが手軽かな? )

311:デフォルトの名無しさん
05/09/28 21:42:27
宿題スレでやってもらうのがいいかも。

312:デフォルトの名無しさん
05/09/29 10:15:43
>>309
>>310
>>310
ありがとうございます。

そもそもWSHでは無理がありそうなのですね。
宿題スレも見てみます。


313:デフォルトの名無しさん
05/09/30 10:41:25
UWSCならデフォで出来るし
UWSC内でVBSとか使えるけどね

314:デフォルトの名無しさん
05/10/04 11:14:28
ネットワーク上にある約200台の端末の指定ファイルの最終更新日を一気に取得したいんですが、
電源が入っていない端末にアクセスすると処理が遅くなってしまいます。


315:デフォルトの名無しさん
05/10/04 11:38:29
そうですか

316:デフォルトの名無しさん
05/10/04 12:25:53
そうなんです

317:デフォルトの名無しさん
05/10/04 12:41:18
じゃあ電源が入ってるかどうか管理しておけばいいじゃない

318:デフォルトの名無しさん
05/10/04 14:16:06
そうですか?

319:デフォルトの名無しさん
05/10/04 21:22:51
このスクリプト簡単でおもしろいね。
知らない人に時間が来たらメモ帳開いて1秒間隔くらいで
「お・ま・え・は・明・日・死・ぬ」とか書いちゃったりして
おもしろーいw
きゃははw

320:デフォルトの名無しさん
05/10/04 23:12:28
そうですか

321:デフォルトの名無しさん
05/10/04 23:32:54
>>320
そんな素っ気ないレスじゃなくて、友人がいないに違いない >>319 に仲良くしてやれよ。
俺はくっだらなくも陰湿な >>319 なんか、まっぴらごめんだけどなw

322:デフォルトの名無しさん
05/10/05 00:34:44
そうだな

323:デフォルトの名無しさん
05/10/13 22:26:58
ネットワーク上の別のPCのデスクトップにメモ帳を立ち上げる
なんてこと、出来るのでしょうか?


324:デフォルトの名無しさん
05/10/13 23:17:10

>>323はマルチなので、以後放置で

お前ら、wsh使ってますか? part5
スレリンク(win板:73番)



325:デフォルトの名無しさん
05/10/14 14:05:25
>>323
NET SEND OtherPC メモ帳起動して

326:デフォルトの名無しさん
05/10/14 15:13:14
>>325
それいいな

327:デフォルトの名無しさん
05/10/14 22:52:22
>>323
\\自分のPC
\\相手のPC
\\相手のPC 上で、\\自分のPC の任意のフォルダを監視させるスクリプトaaa.vbs
を起動させておく。
もし、\\自分のPCに上の任意のフォルダに、メモ帳起動.txt というファイルが作られたら、
そのファイルを削除して、\\相手のPC上で、Wscript.Shell.Run "Notepad"を実行する。

というのが、一般的だが?


328:323
05/10/15 00:26:27
>>327
レスありがとでげす。
教えてくださった方法では、
別のイベント(別動作)をトリガーとして持たなくてはいけない点と、
\\相手のPC上でaaa.vbsを実行しなくてはいけない点
が不満です。
上の2点を回避する方法はないのでしょうか?


329:デフォルトの名無しさん
05/10/15 01:33:37
\\相手のPC上でbbb.vbsを実行すればいいと思うよ。

ってゆうかさー、その程度の応用もできないわけ?

330:デフォルトの名無しさん
05/10/15 08:29:52
schtasksとかatとか使えばいいだけのような

331:デフォルトの名無しさん
05/10/15 12:32:19
使い方が解りませんとか言い出してきそうな悪寒

332:デフォルトの名無しさん
05/10/15 22:42:07
スタートアップファイルに、aaa.vbs のショートカットファイルを入れておいても良いレベルでは?

結局、323の使用目的によって回答のレベルも可変なんだと思う。
さあ、話してごらん、使用目的を。

333:デフォルトの名無しさん
05/10/15 23:00:55
おまいら、マルチなので、以後放置ではなかったのか?


334:323
05/10/16 08:16:34
>>332
使用目的というわけではありませんが、
単純にメッセージを送信できれば問題ないです。
できれば日本語(2byte文字を)
XPとWin98SEでも使える方法を伝授くださいませ。


335:デフォルトの名無しさん
05/10/16 11:05:19
要するに、作って欲しいわけだ

336:デフォルトの名無しさん
05/10/16 15:00:36
NT系ならメッセージを送る方法があったはずだが…。WSHから使えるのかは知らないけど。

337:323
05/10/16 15:14:57
>>335
バレた!!

338:デフォルトの名無しさん
05/10/16 15:24:40
>>323
>>325

339:323
05/10/16 15:27:41
>>338
net send って、Win98でも使えるの?

340:デフォルトの名無しさん
05/10/16 16:01:55
なんだとこの野郎

341:デフォルトの名無しさん
05/10/16 17:00:02
>>339
一応、NT 系の net send と Win9x 系の winpopup は、
相互に送受信できる。
ただし、winpopup をスクリプトから制御できるかどうかは
知らん。

342:323
05/10/16 17:21:22
結局、相手PCがWin98系のときは、
\\相手のPC上でaaa.vbs or bbb.vbsを実行しなくてはいけない
ということですか。。。

343:デフォルトの名無しさん
05/10/16 17:29:34
>342
自分のPCがNT系ならnet sendで送信すれば、
相手が98系ならwinpopupで受信してくれるんじゃないの。

344:323
05/10/16 17:49:18
>>343
winpopupを立ち上げるのに、aaa.vbs or bbb.vbsが必要ということでは。。。?

345:デフォルトの名無しさん
05/10/16 18:01:48
ヒント: スタートアップ (+ 必要なら、自動ログイン)

346:323
05/10/16 18:24:06
>>345
つまり、\\相手のPCにいちいち細工をしなくてはいけないということが
私のやりたい事には入ってないわけで。。。


347:デフォルトの名無しさん
05/10/16 18:36:53


348:デフォルトの名無しさん
05/10/16 18:38:37
結局何が目的なんだといいたくなるな

349:デフォルトの名無しさん
05/10/16 18:38:41
なんの設定もなく相手先のPCを操作できることを
専門用語でセキュリティーホールと言う

350:323
05/10/16 18:45:03
>>348
わかりずらい話につき合わせてしまって、ごめんなさい。

>>349
つまるところ、そういうことなんですね。
せきゅりてぇいがあるのはいかしかたないことですから、あきらめます。

最期に、もうひとつ。
\\自分のPC の任意のフォルダを監視させるスクリプト
(もし、\\自分のPCに上の任意のフォルダに、メモ帳起動.txt というファイルが作られたら、
そのファイルを削除して、)
はどのように記述すればよいのですか?
スマートな方法を教えてもらえませんか?


351:デフォルトの名無しさん
05/10/16 18:51:20
>>350
スマートな方法なんて、無理に決まってんだろ

352:デフォルトの名無しさん
05/10/16 19:17:25
>>350

>>348
>>325

353:デフォルトの名無しさん
05/10/16 19:52:21
>>350
while(true)
{
 if( ファイルオブジェクトか何か.IsExist ) 処理;
 Sleep(何秒か);
}


354:デフォルトの名無しさん
05/10/16 19:55:09
>350
相手側に何か仕込むなら、Winpopupをスタートアップに登録するだけの方が無難だと思われ。

355:323
05/10/16 23:05:51
みなさん、どうもありがとう。
>>354
相手側のPCが遠くて、私が直接作業出来ないんですぅ。
ついでに、驚かせたいってのもあるから、相手にやってもらうのも。。。ねぇ。
っていう理由なんですよ。。。


356:デフォルトの名無しさん
05/10/16 23:09:54
出来ないんですぅ。じゃねえよクソがッ!!!!!!
失せろこの頓馬!!!!!!!!!!!!!

357:デフォルトの名無しさん
05/10/16 23:25:08
>>356
kawaisouni...

358:デフォルトの名無しさん
05/10/17 00:59:54
> 驚かせたいってのもあるから、相手にやってもらうのも。。。ねぇ。
本当は何らかの不正行為をやるつもりだろ
そういうことをやろうとしてるけど、自分でやるだけの知識が無い奴は
決まって「驚かせるだけ」とか「ジョークソフトを作るのに」とか言い訳して
やり方を聞いてくる

どうせ口先だけじゃ如何様にも言い逃れは出来るけどね

359:デフォルトの名無しさん
05/10/17 01:23:03
スマートというか本当はコマンドライン一行でやる方法あるんだけどね。
何かマルチポストっぽいしクラッキングの片棒担ぐのも嫌なんで自分で調べな。

360:デフォルトの名無しさん
05/10/17 03:08:44
スタートアップやタスク、netsend などを使うことなく、同じドメインに属している
リモートクライアントで notepad.exe のプロセスを走らせるスマートな手段は実際、
あるにはある。でもなぁ、>>323 の目論んでいることが今一つ抽象的かつくだらない
目的のように思えてならないんだよな。結局何をしたいのよ?>>323

361:デフォルトの名無しさん
05/10/17 07:25:25
もういい加減スルー

362:デフォルトの名無しさん
05/10/17 15:05:22
すいません初歩的すぎて申し訳ないんですが、次のサンプルスクリプトをWSHへ書き換えたいんですが
パラーメータの渡し方がわかりません。
どなたか教えてください。

<object ID=NetMeeting CLASSID="CLSID:3E9BAF2D-7A79-11d2-9334-0000F875AE17">
<PARAM NAME = "MODE" VALUE = "DataOnly">
</object>
 
 ↓

Set NWobj = createobject("Netmeeting.App")


363:デフォルトの名無しさん
05/10/17 21:57:33
ほう。マルチですか。

364:デフォルトの名無しさん
05/10/18 00:05:36
>>359、360
323はWin98でやりたいと言ってるように見えるが?

365:デフォルトの名無しさん
05/10/18 09:46:45
糞ノートン先生を強制的に黙らせる方法はありませんか?
友達にVBScript渡したら悪質なScript扱いされて実行止められた('A`)

366:デフォルトの名無しさん
05/10/18 11:20:37
良質なScriptはScriptBlockerを強制Offにしたりしません。

367:デフォルトの名無しさん
05/10/18 13:20:58
ワロタ

368:デフォルトの名無しさん
05/10/18 21:49:41
つーか最近無駄にセキュリティが高すぎる気がする。
そりゃ便利に何でも動くようにしたら、セキュリティに興味ない人が
どんどんウィルス感染するのは分かるんだけどさ。
最近のIEとか全然Script動かないじゃん。
ScriptどころかSVGとかも見れないし。
PC使えない人の問題を自動的に修復できるようにScript渡したいのに
Scriptも動かない動かせないんじゃどうしようもないですがな。

369:デフォルトの名無しさん
05/10/19 00:20:57
>>359
お~、それはすげーな。

でも、それって君の PC のセキュリティが低いだけだと
公言してるも同然で、アフォ丸出しだから止めたほうが
いいよ。

370:デフォルトの名無しさん
05/10/19 00:29:13
そうだそうだ

371:デフォルトの名無しさん
05/10/19 00:31:54
>>369
もちろんアカウントとパスワードは必要ですってば

372:デフォルトの名無しさん
05/10/19 00:37:46
>>371
( ̄ー ̄)ニヤリッ

373:デフォルトの名無しさん
05/10/19 00:54:35
>368
最近のPCならリモートデスクトップとかあるじゃん。

374:デフォルトの名無しさん
05/10/19 08:30:15
>>368
>Scriptも動かない動かせないんじゃどうしようもないですがな。

Nortonがブロックするなら許可すればいいだけじゃね
単に動くスクリプトをあなたが書けないだけでは?と煽ってみる
IEだって設定の問題でしょ

375:デフォルトの名無しさん
05/10/19 22:04:59
>>374
自分自身はちゃんと設定してるから動くよ。
他人に渡したときに動かないのが困る。
それも、「○○が動かなくなったから何とかしてくれ」
というのでScriptでファイル操作して自動的に解決するようにして送ったら
 ・メールから勝手に削除された
 ・なんとか受け取ったScriptは実行不能
  (ノートンが止めているらしい)
 ・ノートンの設定は弄れない
とのことで結局どうしようもなくなった。

まぁScriptは自分の為に使うものってことなのかね?

376:デフォルトの名無しさん
05/10/19 23:17:44
>>375
見る限り全てノートンの所為


377:デフォルトの名無しさん
05/10/20 16:44:51
よくタクスバーにアイコンだけ表示されている常駐ソフト( 音量やハードウェアの取り外しなど )がありますが、

どうにかして、このアイコンをクリックしたときに出るメニューの文字列って取得できませんか?

378:デフォルトの名無しさん
05/10/20 17:14:36
マウスを置いたときに出るツールチップなら統一されてるから取得できるけど
出てくるメニューはプログラムの内部で任意に指定してるものだろ。
そんな不規則なものを取得できるのか?

379:右下の時計のことならタスクトレイだ
05/10/20 22:29:44
>>377
つーか最終的に何をしたいか賭けよ。
エクスプローラ(シェル)は落ちることがあるし、そうなったら
プログラムとしては動作しててもタスクトレイからは
アイコンが消えてしまうのはよくある。

WMIでWin32_Processをクエリーするのがセオリーだ。

380:デフォルトの名無しさん
05/10/20 22:37:30
>>377
>>378 が言う通りあのメニューはクリックした時に
プログラムが出してる。

だから、クリックするたびに違うこともあるし、プロ
グラムによってはメニューなんか出さずにいきなり設
定ダイアログをとかを出すやつもいる。

>>379 も書いてるけど、何のためにそんなことしたい
んだ?

381:デフォルトの名無しさん
05/10/20 22:51:09
379じゃないけど
いちいちマウス動かさないでメニューの文字を一覧したいからじゃない

382:デフォルトの名無しさん
05/10/20 23:01:19
>>381
m9(^Д^)プギャー

383:377
05/10/21 01:32:39
>>378-381
>>379さんヒントありがとうございます。
Set ServiceSet = GetObject( _
"winmgmts:{impersonationLevel=impersonate}" _
).ExecQuery("select * from Win32_Process")
見たいなかんじでまずオブジェクトを取得して操作するみたいですね。
まずはタスクリストを得られるという感じなのかな・・・

やりたいことは、
httpdでスクリプトを起動して、外出先で常駐アプリの状態が知りたいんです。

いまのところ、httpdからcgiを起動して、perlプログラムからuwscスクリプトを起動して、
traypseというアプリケーションを通して、目的のタクストレイのアイコンをクリックするところまでできています。
(目的のアプリケーションのウィンドウハンドルまではわかっています)
uwscスクリプトでは、このときに出てくるメニューにアクセスできないために、
OLEオートメーションでなんとかならないかと思ったしだいです・・・
そこで詳しい方が多そうなこちらで質問させていただきました。

WMIには詳しくないので、もう少し調べてみます。
またヒントがあったらよろしくお願いします。m(_ _)m

384:デフォルトの名無しさん
05/10/21 23:22:39
> やりたいことは、httpdでスクリプトを起動して、
> 外出先で常駐アプリの状態が知りたいんです。

ねぇ、何でそれを最初に書かないの?

あと、その常駐アプリの名前は極秘なの?

385:デフォルトの名無しさん
05/10/22 15:32:35
PrintScreenアプリでデスクトップを丸ごとコピーした内容をFTPで送信。
Sendkeysでやるんならそんなもんか。
Winnyのウイルスみたいな動作なきがするけど気のせいか。

386:377
05/10/22 17:57:08
>>384
すみません

えっと、常駐させるアプリはnyです
外出先から動画やソフトのダウンロード状態を確認出来ないかな、と・・・

387:デフォルトの名無しさん
05/10/22 18:14:03
終わったな



↓次の話題をどうぞ

388:デフォルトの名無しさん
05/10/22 18:43:57
Select Case文だと、のちのち処理を拡張したい時に、文法に自由度がなさすぎて破綻しそうな場合について。
以下のようにしておくと、すっきりと処理できたので報告します。

For i=0 to 1
IF ~ Then : Exit For
IF ~ Then : Exit For
IF ~ Then : Exit For
IF ~ Then : Exit For
(ここにデフォルト処理):Exit For
Next

IF文を、故意に、ネストさせないで使っているので、見た目的にもすっきり。

もっと良い方法があるという方は、ご指摘願います。

389:デフォルトの名無しさん
05/10/22 19:04:04
> Select Case文だと、のちのち処理を拡張したい時に、文法に自由度がなさすぎて破綻しそうな場合について。
Select Case使うときは処理を拡張してもSelect Caseで間に合う時だけだ
「Select Case文が、のちのち処理を拡張したい時に、文法に自由度がなさすぎて破綻する」なんてことはあり得ない

> For i=0 to 1
> IF ~ Then : Exit For
For~NextよりDo~Loopの方がまだマシだろ
それと「:」は要らなくないか?

390:デフォルトの名無しさん
05/10/22 20:28:56
> For i=0 to 1

For i = 0 To 0 の方がいいんじゃないか?
For I = 0 To 1 だと、なんかの時に2回回ることを想定し
てそうだ。

そもそも、For のは、余計な変数が必要だったりするから、
>>389 が言うように Do ~ Until True の方がいいと思う。

> IF文を、故意に、ネストさせないで使っているので、見た目的にもすっきり。

そもそも、
If ~ Then ~ ElseIf ~ Then ~ ... Else ~ End If
で大体間に合うし。

391:デフォルトの名無しさん
05/10/22 22:14:26
>>386
Winnyってメニューの文字列可変じゃないジャンw

392:388
05/10/22 23:07:51
>>389-390 貴重なご意見、回答ありがとうございます。

確かに、For i=0 から回しているので、2回ループするバグを出しそうですね。
あと、Do~Loop: Exit Doのほうが、変数要らなくてスマートですね。修正しようと思います。

>それと「:」は要らなくないか?
Then のあとに実際は、何かの処理を入れています。いきなりExit Forしてる訳ではないです。
そもそもExit For要らないのでは?という疑問に対しては、「予期せずに、他のIF行を実行して
しまわないようにする為」のお守りとして付けた方がいいと思っています。

この処理を何に使用しているか、誰からも聞かれていないですが、一応書いておきます。
WSHのINPUT文を利用して、アプリケーションランチャーを作りました。なかなか快適です。

If Ucase(入力した値) = "MYDOC" Then Wscript.CreateObject("WScript.Shell").Run "C:\mydoc\": Exit For
とか、
If Ucase(入力した値) = "SLEIP" Then Wscript.CreateObject("WScript.Shell").Run """C:\Program files\~\Sleipnir.exe""": Exit For
とかいうように、使っています。



393:デフォルトの名無しさん
05/10/22 23:22:13
それこそ入力値は必ずinputboxの戻り値なんだからselect case使うべきだろ
等価比較演算で、一方が固定(inputboxの戻り値)なのが分かり切っているのに
select caseを避ける理由って何だ?
「WSHのINPUT文を利用して、アプリケーションランチャー」で、入力値以外の何を評価すると言うの?


394:392
05/10/22 23:36:40
>>393 実は、電卓としての機能も持たせていて、
InputBoxの中身が、登録されたキーワード以外の時は、Eval( )で、計算機に早変わりするというものです。
(現在、キーワードもどきの文字列を送ると、Evalしてしまうので、エラーで落ちたりする事もよくありますが、特にErr処理していません)

他にも便利機能を拡張するかも知れないので、SelectCaseよりも条件分岐しやすい処理系にしたいと思って、
>>388 のように書いてみました。

395:394
05/10/22 23:42:18
元ネタ & プログラムの原型は、以下のスレです。

WSHで数学をするスレ
スレリンク(math板:29番)
URLリンク(science3.2ch.net)
の29スレめの簡易電卓.vbs より。



396:デフォルトの名無しさん
05/10/22 23:45:17
でも結局動作の振り分けは「InputBoxの中身(戻り値)が」なんでしょ
ならcase elseで処理させればいいじゃん

どう機能拡張しようと、「InputBoxの中身(戻り値)」で動作を分岐させるなら
select caseで間に合わなくなることは無いわけだが

397:394
05/10/23 00:02:49
>>396
現状の使用では、Select Caseで、全く問題なさそうですね。

また、変なネタかプログラムができたら、レスします。(^^)
その時は、またコメントよろしくお願いします。

他に、機能拡張するとしたら、何かありますか?とか聞いたりして‥
InputBoxで、IEみたいに、途中まで入力した文字列の補完って
できないですよね?

398:デフォルトの名無しさん
05/10/23 00:13:40
標準のinputbox自体では出来ないけど、
例えば末尾に"..."と入れたら入力補完するとか規則を決めて、
inputboxのの戻り値がright(,3)="..."だったら、補完リストから部分一致を検索して
もう一度inputboxを表示するとかはできるだろうな

399:397
05/10/23 00:20:38
φ(..)メモメモ...

400:ハーピィ
05/10/23 23:12:32
E・∇・ヨノシ <400ゲット♫

401:デフォルトの名無しさん
05/11/05 10:18:19
モバイルでプログラム【NS BASIC/CE】
スレリンク(mobile板)

NSBASIC/CEはWSHを知ってるならほぼ使えるよ!
PDAであるWindowsCE上(実質シグマリやjornadaでないときついが。)でもデスクトップでも
開発が可能。
手のひらで自分の作ったアプリが動く喜び!最新Ver6.02は、EXE化されたものに好きな
アイコンをつけられるのでほとんどスクリプトと分からない。
NS Basic/CEは、WindowsCEにRuntimeを導入してその上で動く。
最新のWM5にも対応しており、日本語版も出ているし、日本語サポートもいるので安心だ。


402:デフォルトの名無しさん
05/11/05 10:19:38
よかったら購入してユーザーにならないか? 俺もユーザーになったばかりなんだ。
日本サポートに確認をしたんだが、WEBでユーザー登録していただいて、その後、日本語サポートに連絡を
くれたら、無料Ver6(最新版)にアップデートできるそうだ。

FACTORY SABOT
501 Maritaimu 9-9 Higashimaikochou, Tarumi-ku, Kobe, Japan
Phone(078)787-3602 Fax(078)787-3619
URLリンク(www.sabot.co.jp)
sales@sabot.co.jp

MobilePLAZA
6-3-7-1F Sotokanda, Chiyoda-ku, Tokyo, 101-0021 Japan
Tel 03-3834-0315
URLリンク(www.mobileplaza.co.jp)

で買える。URLリンク(www.nsbasic.com) が公式なんだが
DEMO版で試すことができるから、WSHのソースを貼り付けてみるといい。実質WSHだから。
シャープのW-ZERO3のCOMコントロールでPHSに信号を送り電話がかけられることがシャープより
確認が取れてるから今度出るWM5にも対応してる。

どだ?さみしいから仲間になってくれないか?NSBASICがほぼWSHというのを知らない人が
多いんで宣伝してすまそ

403:デフォルトの名無しさん
05/11/05 10:26:28
あ、このWEBでユーザー登録して日本語サポートにメールくれたら
最新のをというのは

Ver5を買っても、無料でユーザー登録した時点の最新Verアップが可能と言うことなんだ。

お前ら、wsh使ってますか? part5 にも貼ったので両方覗いてる人にはすまんかった


404:デフォルトの名無しさん
05/11/06 10:42:40
以前、H;/PCで、Embedded VBを少し使ってたけど、少しVBに似てるってだけで
なかなか使いづらかった。コントロールの数が少なくて。
WSHよりも更に、機能が少ないんじゃないかって感じた。

NS BASICか‥、どうなんだろう、その実力はいかに‥


405:デフォルトの名無しさん
05/11/07 11:12:04
DEMO版があるよ。WSHのソースがほぼそのまま画面周りは修正しなくては行けないが
使えるのでソースぺたぺた貼り付けて動き具合を試してみてはいかがかな?
国内ではほとんどユーザーがいないが、海外ではNSBASIC/CE掲示板は
思い切りにぎわってる。
まずPDAスペックがあがったため、そこそこのスピードで動くようになったのも
大きいと思う。
コントロールの数もかなり増え、WSHとほぼ同じように使える。
はっきり言ってVer3のころなどへぼかった。4、5、6になるにつれ進化していってる。
Palm版のNSBASICもそうなんだが、なんとか使えだしたのはどちらもVer4ぐらいから
じゃないかな?

俺も始めたばかりなんで少しでも仲間が欲しい。なにせWSH入門を読んでるレベルだからだ

406:デフォルトの名無しさん
05/11/23 02:13:33
ホシュ

407:デフォルトの名無しさん
05/11/27 19:13:55
Set objShell = WScript.CreateObject("WScript.Shell")
colEventSource = objShell.RegRead("・・・・・・・・・")

としてレジストリをしらべようと思っているのですが、
レジストリのフォルダ構造を調べるにはどうしたらよいのでしょうか?
(HKEY_CURRENT_USER\Software の下に何が入っているか知りたいなど・・・)
知っているかたがいましたら教えてください。

408:デフォルトの名無しさん
05/11/27 19:31:11
regedt32.exe
regedit.exe


409:デフォルトの名無しさん
05/11/27 19:48:12
>>407
WshShellのメソッドで出来ることは、値を読んだり書き換えたり消したりくらいで
サブキーの列挙とかは出来ないので、キー構造を取得したければDynaCall使ってAPI呼ぶか、
自分でCOM作るかだな。
まあ作らなくても探せばあるかもしれないけど、この板の住人ならこの程度は作った方が早いだろ。

410:デフォルトの名無しさん
05/11/27 19:52:04
ふつうWMI使う


411:407
05/11/27 20:49:32
>>409>>410
レスありがとうございます

WMIを使って解決出来ました。DynaCallは面白いと思うので、何かのときに利用したいと思います。
(以下作ってみたスクリプト)

Set Locator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set Service = Locator.ConnectServer("","root\default")
Set Reg = Service.Get("StdRegProv")
Reg.EnumKey &H80000001,"Software", SubKeys
For Each Key In SubKeys
WScript.Echo Key
Next


412:デフォルトの名無しさん
05/11/29 22:54:41
スクリプトそのものとは関係ないんですが、ちょっと困った現象が
起きているので誰か力を貸してください。

WScript.Echo "test"
という1行だけのスクリプト(test.vbs)を作って、
コマンドプロンプト上で
cscript //nologo test.vbs
と実行します。すると、標準出力に
test
と当然出力されます。
そして処理は終わってるはずなんですが、
そのまま5-10秒くらいプロンプトに戻ってきてくれません。
何の後始末をしているのか知りませんが、^Cも無視されます。

どのような原因が考えられるでしょうか。


413:412
05/11/29 23:10:31
一応その他の情報を。
OSはWindows Server 2003

試したこと。
・引数なしでcscriptを実行
使い方が表示されてすぐ戻ってきました。
・エラーを含むスクリプトを実行
エラー情報が表示されて、5-10秒待たされます。

試そうとしていること
・JScriptのファイルを実行
・正常に動くマシンとスクリプトエンジン/WSHのバージョンを比較してみる。


414:デフォルトの名無しさん
05/11/30 02:39:03
cscript //nologo

だけだったら?


415:デフォルトの名無しさん
05/11/30 22:04:13
>414
スクリプトファイルを指定しろといわれて終わります。
すぐ戻ってきます。

あきらめムードです。

416:デフォルトの名無しさん
05/11/30 22:30:24
>>415
VMWareの体験版で素の状態を作ってみれば
自分で比較できるんじゃない?

メーカ製のリカバリディスクじゃなく
windowsのインストールCDを持ってること前提だけど。

417:デフォルトの名無しさん
05/11/30 23:07:08
>cscript test.vbs
---- 略 ---- Wiindows Script Host Version 5.6
---- 略 ----

test

>

1秒以内

418:デフォルトの名無しさん
05/11/30 23:07:36
↑一応 Server 2003

419:デフォルトの名無しさん
05/12/02 00:24:38
質問させてください。

ドラッグ&ドロップでscriptが起動されたフォルダを取得するにはどのようにすればよいでしょうか?

通常、scriptが起動されると
fs.GetFolder(".")
でカレントを拾えます。

しかしながら、スクリプトファイルに何かをドロップしてスクリプトを起動した場合
\Document and Settings\user
がカレントになってしまいます。

きちんとスクリプトが置いてあるフォルダを取得したいのですが方法ありませんでしょうか?

420:デフォルトの名無しさん
05/12/02 01:11:42
>>419
WScript.ScriptFullNameからFile作ってParentFolderとか。

421:デフォルトの名無しさん
05/12/02 01:53:08
>420
ファイル作る必要はないだろ。
WScript.ScriptFullNameはフルパス返すから
ファイル名を取り除けば十分なんじゃない。

422:デフォルトの名無しさん
05/12/02 03:59:28
> ファイル作る必要はないだろ。
必要性の問題じゃないだろ。
>>420もひとつの方法、>>421もひとつの方法。

WScript.ScriptFullNameからFSOのFileオブジェクトのParentFolderプロパティの値を得る>>420
WScript.ScriptFullNameからFSOのGetParentFolderNameメソッドの戻り値を得る
WScript.ScriptFullNameから文字列操作関数や正規表現でファイル名を取り除く>>421
等々…

以後の処理でFSOを使わないなら文字列操作で切り出してもいいけど、FSO使うなら、
ここでParentFolderプロパティ、GetParentFolderNameメソッド等を使わない手は無いだろ。
逆にこの処理の為だけにFSO使ったってなんら問題ないし。

423:デフォルトの名無しさん
05/12/02 07:14:20
>>422
HTAではVBScriptの仕様を受け継いでいるが、このどれかが使えなかったはず。

424:デフォルトの名無しさん
05/12/02 18:20:23
>>423
WScript

425:デフォルトの名無しさん
05/12/03 09:05:11
バッチファイルやWSHと言うと、こんなソフトがあるんだけど、
誰か使ってみてくれない?

URLリンク(www.vector.co.jp)

メールにもJavaScriptが書けるらしい。
正直どうよ。

426:デフォルトの名無しさん
05/12/03 09:10:25
>>425
糞ソフトのマルチ宣伝乙

427:デフォルトの名無しさん
05/12/03 14:14:36

シェアウェアの宣伝かよ m9(^Д^)プギャー

つーかこんなもん、この板の住人が金払ってまで欲しがるとは思えないな
フリーなら使うかも知れないけど、そうじゃなければ欲しけりゃ自分で作るって

428:デフォルトの名無しさん
05/12/03 18:13:33
>>427
では、作ってください。
できればフリーで。
よろしくお願いします。

429:デフォルトの名無しさん
05/12/03 18:33:23

欲しけりゃ自分で作るが、
なんておまえのために作らなきゃならないの?

俺が欲しくて作るなら、作った物は自分にとって益となるが
俺が欲しくもない物を、おまえのために作って俺に何の益がある?

つーか宣伝がバレて逆切れすんなよ m9(^Д^)プギャー
しかも宣伝だけでなく宣伝後の行動まで向こうと一緒で笑えるw

まあ作者じゃないと口先だけで否定することは出来るけどな

430:デフォルトの名無しさん
05/12/03 19:43:19
>>429
よくわからないけど、あなた何か勘違いしてません?

431:デフォルトの名無しさん
05/12/03 19:46:32
425(´・ω・) カワイソス

432:デフォルトの名無しさん
05/12/03 20:07:13
なんか哀れだな。
とりあえずメ欄のスペースは止めておけ。

433:デフォルトの名無しさん
05/12/03 21:14:14
何かもう一つのWSHスレッドでも暴れてますね、こいつ

434:デフォルトの名無しさん
05/12/03 22:03:22
>>431-432
なぜ、同情されているのでしょうか?


435:デフォルトの名無しさん
05/12/03 22:13:16
滑稽なピエロ成り下がってるから

436:デフォルトの名無しさん
05/12/03 22:31:24
ちょーてきとーだけど、pythonで書いてみた(・∀・)
#!/usr/local/bin/python
import poplib, os
M = poplib.POP3("pop3.mail.server")
M.user("username")
M.pass_("password")
numMessages = len(M.list()[1])
for i in range(numMessages):
  body = []
  eoh = 0
  for j in M.retr(i+1)[1]:
    if eoh == 0:
      if j == "":
        eoh = 1
      elif j[0:8].upper() == "SUBJECT:":
        if j.find("This Is Script") == -1:
          break
    else:
      body.append(j + "\n")
  else:
    M.dele(i+1)
    f = open("tmp.py", "w")
    f.writelines(body)
    f.close()
    os.system("python tmp.py")
M.quit()

437:デフォルトの名無しさん
05/12/04 07:25:01
>>436
ぶおっ! pythonでそんなことまでできるのか!
WSHでメールを送るときはCDOを使わないといけないのに

438:デフォルトの名無しさん
05/12/04 07:48:37
自演乙

439:デフォルトの名無しさん
05/12/04 17:52:42
ActivePythonやActivePerl入れて使うなら、これもWSHの仲間では? 使ったことないけど。

440:デフォルトの名無しさん
05/12/09 03:45:33
標準的なWindows環境で実行できるのがWSHの魅力なのに
追加でインストールが必要な時点で興味がない。

441:デフォルトの名無しさん
05/12/09 04:19:27
( ゚д゚)ポカーン


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch