5 :
名無し~3.EXE:02/05/25 00:35
とりあえず、アゲときます。
∧_∧ ∧__∧
_ ( ´∀`(・∀・ )__ < ネタが無いのに立てたんだね。ヴァカみたい♪
|≡( 11 )( 121 )≡|
`┳(__)(__) (__)(__)━┳
,..,..┴,...,...,...,....,....,.....,....,┴,,,,..
7 :
名無し~3.EXE:02/05/26 01:20
前スレ、話題がなくて終わってたろ。
なに考えてんだ。
優良スレgae。
8 :
名無し~3.EXE:02/05/26 01:28
wshでファイル管理って出来ます?
例えば、一定期日経過したファイルは自動的に消すとか。
11 :
名無し~3.EXE:02/05/26 01:54
>>10 あんた、カコイイよ! ホントにthx!
解読して改造しまつ
>>7 まぁ、どっかで誰かに需要があるときが来るでしょ。
その時にこのスレの住人が暖かく迎えてあげる、
ということにしませんか?
raspppoeで接続、切断ができるwsh教えてください。
>>11 過去ログや
>>1にリンクされてるソースアプ板さえ見ない奴を温かく迎えろと?
>>13 特殊な知識がいる世界だからある程度仕方ないと思う。俺は。
11逃がした。
もう来ねえよ!(w
>12
raspppoeというのが分からなかった。
調べてみると、すごいアプリ(兼ドライバー)だ、でも私の環境には必要ないものでもある。
また、こういうものなら切断が必要な事態が分からない。
かつ、日本語のサイトにも接続の方法はあったが、切断はないのでこれ以上のことは分からない。
C:\WINNT\System32\rasphone.exe -d "接続名"
のショートカットをスタートアップかタスクの起動時に入れておけばよいのではと思う。
問題が複雑でなければ、より単純な方法で解決されることをお勧めします。
またそれによって何が出来るかっていう価値観を提示してもらえれば、それに見合った方法をということです。
>11
キリ番Getおめでとう。この番号を取得したからには精進し、マスターしなければならない。
とりあえずは、それを自分用に改造すると言うことなのでおいておいて、
それによってどういった利点があるのかということを教えてもらえるとうれしい。
ファイルの削除、移動、コピー、更新はこまいことを言ってしまえばキリがない。
アレぐらい単純でもファイルタイプ判定ぐらいはつけておくべきだったと後から思ったのでね。
>13,14
お二方の意見は理解しました。
立場が違えばなんとやらだなぁ、と言うことを実感。
悩みは漠然と考える人もいるし、きっちりと考える人もいる。要求もまた然りだと思います。
聞いたうえで、簡潔に、もしくは少し長めに、または答えないと言うのはどうでしょうか?
もちろん個人的にですね。
駄レススマソ。
>15
あ、15さんだ。(本物?)
まぁそういわず、書き込んでいってください。
>16
本物だよ。
それを証拠に、まもなく俺の掲示板に書き込みするから(w
もう一つのスレは、また復帰する気だけど、こっちは、あんたにまかせるよ。
(いや、あのスレAA&ツッコミが面白くて、ずっとROMってるんだよなあ)
18 :
名無し~3.EXE:02/05/26 10:10
11キタ━━━(・∀・)━━━!!!!
19 :
おっとっと夏だぜ:02/05/26 18:53
WSHで東洋証券の自動トレードシステムを作ろうと昨日から
勉強しています。
ID、PASSなどをテキストボックスに入力までは作れましたが、
認証のアイコンをクリックする方法がわかりません。
以下の部分のimageをクリックすれば注文画面に入りますが
自動でクリックする方法は知りませんか?。
------------------------------------
<INPUT TYPE="image" SRC="../image/bt_2_2.gif" ALT="セオヌァシツケヤ" BORDER=0>
</FORM>
------------------------------------
20 :
おっとっと夏だぜ:02/05/26 18:54
この<INPUT>を見つけて <INPUT>.click() は?
そのINPUT要素にname属性がない場合は、0序数で指定します。
同一FORM内でのSELECTとINPUTの数がnとすると、
forms(0).elements(n - 1).click()
ですね。
23 :
韮←ゲジゲジみたい:02/05/27 17:54
ところでVBScriptでExcel操作したいのだけれど、
Set objExcelApp = CreateObject("Excel.Application")
したあとのobjExcelAppのプロパティやメソッドは、
どうやったらわかるの?
ドキュメントとかあるの?
かなり探してるけど無い・・・。(私の運が悪いのかな?)
24 :
韮←ゲジゲジみたい:02/05/27 17:58
こんなのどうでしょう?
Option Explicit
Dim sCopySrc
Dim sCopyObj
sCopySrc = "コピー元" ' コピー元
sCopyObj = "コピー先" ' コピー先プリフィックス
' ファイルサフィックス
Dim sFix, sSufix
Dim yy, mm, dd
Dim syy, smm, sdd
Dim fs, folder
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
sFix = Array( "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" )
yy = Year( Now )
mm = Month( Now )
dd = Day( Now )
if mm >= 1 and mm < 10 then
syy = yy
smm = "0" & mm
else
syy = yy
smm = mm
end if
25 :
韮←ゲジゲジみたい:02/05/27 17:59
続き...
if dd >= 1 and dd < 10 then
sdd = "0" & dd
else
sdd = dd
end if
' コピー
sCopyObj = sCopyObj & syy & smm & sdd
sSufix = ""
Dim i
for i=0 to ( UBound( sFix ) - 1 )
On Error Resume Next
Set folder = fs.GetFolder( sCopyObj & sSufix )
if Err.Number <> 0 then
fs.CreateFolder sCopyObj & sSufix
fs.CopyFolder sCopySrc, sCopyObj & sSufix, True
if Err.Number <> 0 then
MsgBox Err.Description() & " " & Err.Source()
end if
exit for
end if
sSufix = sFix( i )
Err.Clear
next
26 :
韮←ゲジゲジみたい:02/05/27 18:07
>> 24-25
使用方法
例えばコピー元を”開発物”とします。
この開発物というフォルダと同じ場所に、このvbsファイルを保存します。
sCopySrc="コピー元" → sCopySrc="開発物"
sCopyObj="コピー先" → sCopyObj="開発物"
とします。
vbsをダブルクリックして起動します。
すると”開発物20020527”というフォルダができ、”開発物”フォルダの中身がすべてコピーされます。
もう一度vbsをダブルクリックすると”開発物20020527A”というフォルダができます。
1日に27個までコピーができます。
バックアップに使用することを目的としています。
ところで全角スペースは半角に直すか消して実行してね!
27 :
韮←ゲジゲジみたい:02/05/27 18:17
前スレ11番さんの翻訳JavaScript改造してみました
以下を translatedisp.htm として保存
<html>
<head>
<title>翻訳</title>
<script language="JavaScript">
<!--
function moji_hantei( sitei, henkan, moji )
{
while( moji.indexOf( sitei ) != -1 ){
moji = moji.replace( sitei, henkan );
}
return moji
}
// --></script>
</head>
<body>
<script language="JavaScript">
<!--
str = location.search;
str = str.substring(1,str.length);
document.write( moji_hantei( "%20", " ", str ) );
// --></script>
</body>
</html>
28 :
韮←ゲジゲジみたい:02/05/27 18:17
以下をtranslate.htm として保存
<script language="vbscript">
<!--
Set oTextRange = external.menuArguments.document.selection.createRange
strTranslate = oTextRange.text
a=Asc(Left(strTranslate,1))
If 0<= a And a<=255 Then
mode="ENJA"
Else
mode="JAEN"
End If
strURL = "
http://www.excite.co.jp/world/text/?wb_lp=" & mode & "&before=" & strTranslate
Set objIE = CreateObject("InternetExplorer.Application")
With objIE
Call .Navigate2( strURL )
.Visible = False
Do While .Busy Or .ReadyState<>4
Loop
' strRet = "原文<br>" & strTranslate & vbCrLf & "<br><br>訳文<br>" & vbCrLf & .document.World.after.Value
strRet = .document.World.after.Value
Call .Quit()
End With
Set objIE = Nothing
window.open "translatedisp.htm?" + strRet ,"","resizable=yes,scrollbars=yes,width=640,height=400"
-->
</script>
29 :
韮←ゲジゲジみたい:02/05/27 18:19
以下を translate_install.vbs として保存
Set WshShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
iMsg = MsgBox("IEのコンテキストメニューに「翻訳」を追加します。" & vbCrLf & "よろしいですか?",vbYesNo)
If iMsg=vbNo Then WScript.Quit
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\翻訳\",Fs.BuildPath(Fs.GetParentFolderName(WScript.ScriptFullName),"translate.htm"),"REG_SZ"
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\翻訳\contexts",&H10,"REG_DWORD"
MsgBox "インストール完了"
以下を translate_uninstall.vbs として保存
Set WshShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
iMsg = MsgBox("IEのコンテキストメニュー「翻訳」を削除します。" & vbCrLf & "よろしいですか?",vbYesNo)
If iMsg=vbNo Then WScript.Quit
WshShell.RegDelete "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\翻訳\"
MsgBox "アンインストール完了"
30 :
韮←ゲジゲジみたい:02/05/27 18:21
>27-29
translatedisp.htmとtranslate.htmとtranslate_install.vbsとtranslate_uninstall.vbsを
同じフォルダに保存する。
translate_install.vbsを実行するとインストール完了
31 :
韮←ゲジゲジみたい:02/05/27 18:27
>27-30
Win2000でのみテスト済み
でもなぜか初回起動時のみVisualInterDevが起動される・・・なぜだ?
>19
日計り君?
コスモの自動更新も作ってくれ。
あと、マケスピ起動したら自動でログインして
マイページを開くとか・・・。
質問者も回答者も
>>1を読まんとは・・・。やっぱこのスレダメじゃん。
ゲジゲジキタ━━━(・∀・)━━━!!!!
36 :
韮←ゲジゲジみたい:02/05/28 09:21
今見た スマソ
WSHつーか、中身はほとんどVBScriptなんでしょ?
WSHはVBS,JScript,Ruby,Perl,etc
を使用できる。
>17
それは、本意ではないなぁ。やるからには出来る限りのことはするけどね。
本物?とか聞くのは野暮だし別に疑ってはいないけど、
ここでは11さんのアイデンティティを見ていないと思うので、そこら気長に待つことにしますわ。
>19
ブラウジングの自動化は、結構需要がありそうなので、
下記はとてもマクロ的で他にイカす方法はごまんとあるが、最もメンテしやすい方法を紹介。
Dim window
Sub Wait()
With window : Do While .Busy Or .readyState <> 4:WScript.Sleep(100):Loop: End With
End Sub
Set window = CreateObject("InternetExplorer.Application")
window.Visible = True
までを定例句として、先頭に置く。
後は、ソースとにらめっこしながら、
window.Navigate2 "
http://www.google.co.jp/"
wait
window.document.f.lr(1).checked = True
window.document.f.q.value = "何か"
window.document.f.submit()
wait
window.document.links(12).click()
こんな感じで書いていけばよろしいかと。
>23
餅は餅屋。
mk:@MSITStore:C:\Program%20Files\Microsoft%20Office\Office\1041\VBAXL9.CHM::/html/xltocObjectModelApplication.htm
で当たりを付けた方が良いと思われ。
>23-24は、ツールとしての使用を考え、全→半空白化し、ソースアプ板に再掲キボン。
あそこならそのままインデントがきれいに出る。
42 :
韮←ゲジゲジみたい:02/05/29 10:13
>40
Thanks!
24-25のソースうぷすますた
43 :
韮←ゲジゲジみたい:02/05/29 10:30
お題です。
The Internet Archive: Building an'Internet Library'
(url:
ttp://www.archive.org/)
というページがあります。
過去のWebページを保存してるそうです。
*.urlファイルのコンテクストメニューに
このサイトを使って「過去のこのページを検索する」
みたいなものを追加できないでしょうか。
風邪引いた…
>41
これまた渋いところを。。
FileObjectのDateLastModifiedプロパティが読み取り専用であることがわからんと、見過ごされます。
そうですね、ネタがあったらまたカキコお願いしまつ。
>43
頼むから、個別にリンクしてくれ。そこのURLは1に書いてあるので十分でしょ。
それと、ツールとしての再利用を考えると、res=7は消したほうがイイ。
もちろん、違いについて比較するべき何かがあればいいんだけど…。
>44
ちょっと考えてみた。
そのページリンクおよびテーブルを取得するのは簡単だけど、それを選択するいいUIが思いつかない。
あくまでShellコンテキストから入るほうがいいのかな?
個人的には、IEのコンテキストで拡張するほうがよさげな感じなのだが。
アレならDialogを介在できるし、使い勝手もシームレスだ。
まぁ、IEは使っていないよという人ならやらざるをえないんだろう。
どうすればいいんだ、createPopUpでメニュー作る?
でもウチの頭じゃ現在のマウス位置が取得できない。教えてくれぃ。
47 :
韮←ゲジゲジみたい:02/06/01 04:58
>>45 スマソ でもなぜかres=7が消せないよぅ
鬱だ。
| | ∧
|_|Д゚) イヤ、アノ、、、
|文|⊂) 削除人カ管理人シカ削除デキマセンヨ
| ̄|∧| 消シトキマスカ?
IEコンテクストの場合はこうですね。
3行に収めてみました。
external.menuArguments.event.srcElement.href はちょっと長すぎですが (^_^;;
// C:\WINDOWS\WEB\pastsearch.html として保存
// (htmlの場所・名前を変更するときはregの内容も変更する)
<script language="javascript" defer>
if(external.menuArguments.event.srcElement.tagName == "A") try {
external.menuArguments.navigate("
http://web.archive.org/web/*/"+external.menuArguments.event.srcElement.href);
} catch(e) {}
</script>
// pastsearch.reg として保存
REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\過去を検索]
@="C:\\WINDOWS\\WEB\\pastsearch.html"
"contexts"=dword:00000022
51 :
韮←ゲジゲジみたい:02/06/01 22:13
イーサネット上、TCP/IP で繋がっているリモートコンピュータ(NetBIOS名か
IPアドレスのどちらかまたは共にわかっている)のOS名、サービスパック、
IEバージョン、IEサービスパック、適用されたHotFIX、導入されている
アプリケーション(アプリケーションの追加と削除の項目)、MACアドレス、
サポート情報について抜き出すことは、WSHを使うことで可能でしょうか?
53 :
名無し~3.EXE:02/06/05 10:24
WSHで複数アプリの自動インストールとか、Windowsのパッチを順番にあてるとか、
そういう自動処理って可能ですか?
54 :
名無しさんEXCEL:02/06/05 23:04
やったことないけど
NTコマンド類を順次実行は
netstart-? >D:hogehoge.txt
ipconfig/all >D:hoge.txt
58 :
名無し~3.EXE:02/06/09 03:05
WSHで指定ファイルのバージョン情報を得ることは可能でしょうか?
自己レス。
FileSysyemObjectにGetFileVersionメソッドをハッケソ。
だが、目的のバージョンは表示されず・・・。
このメソッドどこから情報を得ているのだろうか?
さらに自己レス。
いろいろ調べてみたが、どうやら普通にバージョンリソースの
FileVersionから取得してるようだ。当たり前か・・・。
どうやら原因は俺がバージョンを取得したいファイルのほうが、
FileVersionにアルファベットを埋め込んでいるせいのようだ。
スレ汚しスマソ。
61 :
名無し~3.EXE:02/06/13 23:03
age
wshを使って,win2kにて,ユーザの一括登録を行おうと
思っていますが,「初回ログオン時にパスワードの変更
を求められる」のチェックボックスにチェックを入れ
ることができません。
「パスワードを無期限にする」とかは、フラグをたてる
ことで,チェックすることができたんですが,「初回ログ
オン時に・・・」はどうすればいいのかわかりません。
何か対応した変数があるのでしょうか。
net user
コマンドでガシガシ登録するのはダメ?って大丈夫だったらWSHなんて使わないか。スマソ。
>62
Set Container = GetObject("WinNT://Domain")
Set NewUser = Container.Create("User", "NewUserName")
NewUser.SetPassword ("TemporaryPass")
NewUser.RequireUniquePassword = True
NewUser.SetInfo
こういうこと?
ウチの環境ではmmcの設定がうまくいっていないので4行目うまくいかないんですけど。
ヽ(`Д´)ノウワァァン!!NT4SP6SRP1+IE5.5SP2の環境で名無しさん募集中。。さんの
スクリプトを実行(ターゲットは127.0.0.1)すると「無効な構文です」 って言われる。
W2k から上記環境に刺すと「オブジェクトを作成できません」って
言われる。NT4にも対応しているはずなのに…。
もしかして、ADSI みたいに何かインストールしないと刺したり刺されたり
できないとか?どなたか、うまい解決策を教えてください…。
>66
エラーが出るのは何行目ですか?
16行目と仮定すると、WMIのインスコが必要です。>3を見てね。
>64
ありがとうございます。WinNTプロバイダを利用した方法では、
名無しさん募集中。。氏がおっしゃるように、4行目で
「DSスキーマの規則に違反する行為を試みました。」
とのエラーが出てうまくいきませんでしたので、LDAP
を利用してやってみたところ、解決することができました。
Set usr = GetObject("LDAP://CN=Jack, OU=Sales, DC=Aaa, DC=Com")
usr.Put "pwdLastSet", CLng(0)
usr.SetInfo
こんな感じです。
WinNTプロバイダを利用してやる場合は、mmcの設定
が必要とのことですが、どのような設定が必要か教え
ていただけますか。
>67
Σ(゚Д゚)<ソウダッタノカ!!
確かに16行目の GetObject でエラーを吐きます。今日上司に導入
していいか聞いてみよぅ。しかしすべての端末に導入することを考えると…
まあ、入れておけば次回から管理が楽になるから、これだけなんとか
頑張っちゃおう。どうもありがとうございました。
Set bobj = WScript.CreateObject("basp21")
Url = WScript.Arguments.Item(0)
rc = bobj.W3get("-d c:\down " & Url)
これを保存先のフォルダをダイアログで決められるようにするにはどうしたらいいのでしょうか。
勉強始めたばかりでよくわかりません。
>>72 すみません、ダイアログは出るのですが保存が出来ないです…。
エディタに書いてある文の一部を選択した後、それを新しくエディタに貼り付けて任意のフォルダに保存するという一連の動作をWSHでできますか?
もしできるなら、やり方を教えて頂けるとありがたいです
>67
できますた!!上司にWMICOREを落としてもらって、早速自分が人柱に。
結果、>57 氏のスクリプトなど、動くようになりました。
後は、どうやってみんなの端末に導入するか、だけです。本当に
ありがとうございました。
>>72 そうです。2chブラウザのJaneというソフトの外部コマンド用です。
98なのでそのままは使えませんが、ありがとうございました。
>74
それは出来ないというのが、普通の回答かなぁ。
エディタというのが、OLEオートメーション対応のものって一般的に言ってないし。
もしWSHでやりたいんであれば、IEをUIにしてテキストを選択させる?
取得したテキストでもってファイル化しエディタ起動してというのが簡単に思いつくけど
それでは前提条件が違うよね。
>75
それは良かったです。
ところでそんな環境がたくさんあるんですか。
こちとら、想像外です。
まぁWMIを入れておけば、使い道もありますし、(リモートでシャットダウンするとか)
最初の苦労と思ってがんばって下さい。
>76
解決…,-文面を見ると-されたようですね。
せっかくなのでソースキボン。
>>77 会社のPCが、全部で200台強あるそうなのです。どうやらログオンスクリプトと
リソースキットのShutdown.exeを利用すると、インストールだけしてとっとと
シャットダウンするアカウントが作れるそうなので、ちょっと調べてみようかと。
これができれば一般ユーザの方にも手伝っていただけるので作業が非常に
楽になるだろうと考えています。
>>74 TeraPadでDoMacroを使えばできるんじゃないかな。
>74
クリップボード拡張ソフトスレ見れ
WSHでダイアログのタイトルを取得する方法はありますか?
82 :
名無し~3.EXE:02/06/24 18:57
MSの公式ドキュメントってDLできないの?
前はDLできたのに。
83 :
韮←ゲジゲジみたい:02/06/24 23:51
>>83 よろしくですにゃ。
アプリケーションをインストールする際に表示される画面のタイトルです。
86 :
韮←ゲジゲジみたい:02/06/26 22:37
>>84 理解できない・・・。もうちょっと詳しく・・・、スマソ
>>84 まず、聞く前に質問のしかたをどっかで調べてくることを勧める。
>72
Script for .NET Frameworksってなになに?
>>85 どうもありがとうございますにゃ。
アプリケーションの自動インストールに使いますにゃ。
ウィンドウのタイトル名を取得してそのウィンドウをアクティブにし、
ボタンを押していきます。
>>87 ごめんにゃ。
ネコなので知能が足りないのかにゃ・・・
95 :
名無し~3.EXE:02/06/27 17:10
>92
違うので、と言おうと思ったら先に書かれてたですね。
それと…、11さん。
ゴメン、謝るから前スレっての消してクレー。
98 :
名無し~3.EXE:02/06/27 19:05
100 :
名無し~3.EXE:02/06/27 19:27
たくさん釣れてるにゃ。
今日はごちそうにゃ。
(゚Д゚;≡;゚д゚)
盛り上がってまいりますた!
しまたぁー!釣り職人だったか。吊られたよ。もうだめポ。
釣れた【つれた】[名]
自分の当てずっぽうレスを大勢に突っ込まれ&馬鹿にされた時に厨房が悔し紛れに言う単なる逃げ口上の最後っ屁。その後放置される。
>>106 当てずっぽうかにゃ?
今回の場合、文体じゃにゃいかにゃ?
でも、大漁だったからいいにゃ。
108 :
名無し~3.EXE:02/06/27 21:13
109 :
名無し~3.EXE:02/06/27 21:14
110 :
名無し~3.EXE:02/06/27 21:42
Windowsの凋落と共に消え去る言語を覚える漢達に敬礼ッ!!
111 :
名無し~3.EXE:02/06/27 21:56
今後は、全員、語尾にニャなどを付けるニャ。
義務にゃ。
指定したURLのファイルを取ってきて
ローカルHDDにコピーするという
単純なスクリプトを書こうとして
挫折したにゃ。
どうしたらいいにょ?
とかいう感じでよろしくにぇ。
112 :
名無し~3.EXE:02/06/27 22:22
>111
キモイにゃ。Σ(゚Д゚)
114 :
名無し~3.EXE:02/06/28 12:29
今後は、全員、語尾にニャなどを付けるりゅん。
義務りゅん。
指定したURLのファイルを取ってきて
ローカルHDDにコピーするという
単純なスクリプトを書こうとして
挫折したりゅん。
どうしたらいいりゅん?
とかいう感じでよろしくりゅん。
時代は仙台りゅん。
116 :
名無し~3.EXE:02/06/28 16:31
今後は、全員、語尾にぴょんなどを付けるぴょん。
義務ぴょん。
入力した単語で複数の検索エンジンで検索して、
結果を検索エンジンごとのフレームに分けて表示するという
単純なスクリプトを書こうとして
挫折したぴょん。
どうしたらいいぴょん?
とかいう感じでよろしくぴょん。
118 :
名無し~3.EXE:02/06/28 18:25
119 :
<丶`∀´> :02/06/28 18:49
今後は、全員、語尾にニダなどを付けるニダ。
義務ニダ。
入力した単語で複数の検索エンジンで検索して、
結果を検索エンジンごとのフレームに分けて表示するという
単純なスクリプトを書こうとして
挫折したニダ。
どうしたらいいニダ?
とかいう感じでよろしくニダ。
120 :
名無し~3.EXE:02/06/28 18:50
IEのコンテキストメニューで「Bookshelfで単語を検索」って可能ですか?
当方2.0しか持ってないんです。
秀丸のマクロでそのようなものがあり非常に重宝してるんですが。
>>85 ご紹介ありがd
MKEditorでも使えるようにしてみました。
>84
インストーラのバイナリ解析しないと無理
>88
・期待通りのこと
WSHと.NET Frameworkの統合版
言語はC#, JScript.NET, J#, VB.NET等。
変数が厳密に型付けされている。
・期待はずれのこと
まだ英語ベータ版のみで現在配布していない。
開発中のこと。
>90
なんで?
>91
あぁ、やっぱり。AppActivateはProcessIDも引数に取れます。
ProcessIDならWMIで取得できるし、似たタイトルでSendkeys誤爆しないので確実といった意味ですよ。
WMIを使わないならば、11さんの言ったとおり返り値判別ですけど。
>110
言語なんて頭が固くなければ何種類かは入るし。
>113
(・∀・)イイ!
>123
すいませんでした。その目的でTeraPadのインストールまではしたんだけどチェック漏れました。
これ以上は言い訳だから書かないけど。
それとウチDanaなんだけど、…ダメ?
いつからここは小学校になったのだ?
>111>114
windowをIEのインスタンスとおくと、
window.document.body.parentElement.outerHTML
をテキストストリームに書く。
>117>119
どこで挫折したのかを書かないと答えられない。
おそらく検索結果はGETで出力するだろうから、locationURLを取得して、
WSHで作ったframeに押し込んでやればいいのではないかな。
>122
"BookShelfがインスコされたパス\bs98jl.exe" -h -d "検索対象文字"
をシェル実行。
あと、わからないことがあったら放課後、職員室にくるように。
おまえら全員職員室に正座だ!
>>124 Dana落としてみました。普通のメッセージではダメみたいです。
ソースは当然公開されてないし、技術情報みたいのもないようなので、
どうやら無理っぽいです。スイマセン・・・。
答える都合上まとめて括ってしまったが、それは正座ものの質問ではないです。
気を悪くされたらスマソ。
>127
あ、試みて頂いてくれてありがとうございます。
その通りですね。状況が状況なので強いる気は全くないです。
#2chブラウザによっては名前数字、E-mail省略しないにするとこの場の該当ログを拾ってくれることに気がついて、
余計なことを言い放ってしまったと鬱。
↑上のほうは122さんへのレスね。
>>124 VC++やエスプレッソを使えばできますにゃ。
131 :
名無し~3.EXE:02/07/01 16:25
134 :
名無し~3.EXE:02/07/01 17:05
136 :
名無し~3.EXE:02/07/01 17:09
>>135 だからキモイっつってんだろおおおおおおおおうおおおあああああ!!!!!!!
>136
ごめんにゃさい
今年35ですにゃ
つーか、なんなの?おまえら
にゃんこ大好きだよ
148 :
名無し~3.EXE:02/07/01 21:16
149 :
名無し~3.EXE:02/07/01 21:19
wmiの使い方が詳しく載ってるところ教えて。
どういうメソッドとかあるのかさっぱり分からん。
150 :
名無し~3.EXE:02/07/01 21:27
き・も・い
きもくないにゃん
>>にゃんこ
荒らすのは止めてくれ。あなたが普通の言葉で書き込めば済むこと。
>>156 おお、こりゃなかなかいい感じ。
どもども。
>>152 アラーシが途中から戦法変えてきてんの気付けよ。
煽られんなっつーの。
本物は3回しか書き込んでないっつーの。
>>158 おいおい、責任転嫁かよ。いいわけレスでいちいちageないでくれ。
反応してる奴が一番ウサイにゅ
というか本物が一番うざい
メール欄参照。
>>156 ConnectServerメソッドの引数ですが、Rubyを256倍使うための本p.206-207に詳しい
解説があります。
もちろんSDKにはリファレンスがあると思いますけど、日本語なのがありがたいですね。
SDKに含まれるツール群も、オブジェクトモデル理解に役立つと思います。
今インストールしてないので詳しくは忘れましたけど、なんとかオブジェクトブラウザとかいう
名前のツールですね。現在のインスタンスを読み込んでプロパティの値を調べたりできます。
SDK今どこで落とせるんだろう…。
MSDN Web版は、しょっちゅうURLが変わって困るなぁ。
>>159 この場合、「責任転嫁」という言葉は適切じゃないだろ・・・
よーく文章を読んでみろ。
これじゃ知っている言葉を並べただけのヴァカだぞ。
>>161 負け犬が吠えてますな・・・
煽れないのがそんなに悔しいか?
(・∀・)カエレ!!
164 :
にゃんこ ◆NYA9/moE :02/07/02 10:19
偽物が場を盛り上げてる間に
トリップつけてみましたにゃん
にゃんで1000を目指しますか?
,,,,.,.,,,,
ミ`Д´ミ <ほしゅ
""""
tes
170 :
前スレ680:02/07/18 06:45
ぐは!便利よ、これ。ついさっきwsh始めました。で、私にどうしろと?
sendkeys を使って 無変換 キーを送りたいのだけど、
無変換 ってどう表せば良いの?
29じゃないの?
>173 >174 サンクス!
dat落ちしたかと思った…。
>171
まずは、自動実行に関する汎用のアイデアがあったらカキコしてください。
って言うかお願い。
>172
2バイト文字、NFER、XFERも同様に送れない。
なので、>174さんのURLに書いてあるプログラムかなんかで送るのが常道か。
と、思ったけど送れるの?
WshShell.SendKeys 29
WshShell.SendKeys "{29}"
WshShell.SendKeys "29"
全部ダメだったけど???
前スレHTML化キタ━(゚∀゚)━!!!!
>>176 WshShell.SendKeys "{NONCONVERT}"
でもダメですなあ。
WSHOM.OCXを覗いた限りでは定義されてるっぽいんだが、
ヘルプに載ってないってことは使えないってことか・・・。(-"-
180 :
名無し~3.EXE:02/07/22 13:10
>178
教えて、キー定義はどこに書いてあるの?
オブジェクトブラウザでは見えなかったYO。
>>180 バイナリエディタ
私のWSHOM.OCX(5.6.0.6626)では、0xCBA0から。
ただし、
>>178でも言ってるとおり「それっぽい」ってだけなんで、
この部分がSendKeysの定義であるかは保証しない。
182 :
名無し~3.EXE:02/07/23 21:59
age
分かった。ありがとう。ウチのでも同じところにあった。
どっから参照しているのかとか
区切り子であるはずのnull文字の個数の規則性がつかめないので
少し残念だがここまでであきらめるしかない。
>>183 普通に4バイトごとになってると思うけど・・・。>nullの個数
185 :
名無し~3.EXE:02/07/24 11:00
WSH(VBScript) で外部サーバのデータベース(Oracle)に
接続したいのですが、どうすればいいのでしょうか?
ほかのサイト見ても、
サーバの指定方法まではなかったので。
おねがいします
>>185 ADO使ってODBCデータソースを指定すればそのまま行けるんでわ?
187 :
名無し~3.EXE:02/07/24 15:41
>186
具体的なやり方を教えていただけますか?
厨でスマソ
>187
こういうこと。
VBSに限らないで、VBでも一緒だからそれを含めて調べたほうがいいな。
環境がなく未確認だがADO2.1以上でいけるはず。
Const adOpenKeyset = 1
Const adLockOptimistic = 3
Set cnn = Wscript.CreateObject("ADODB.Connection")
Set rec = WScript.CreateObject("ADODB.Recordset")
' Oracleとの接続を確立する
cnn.Open "Provider=MSDAORA;" & _
"Data Source=NT;", "scott", "tiger"
' SQLステートメントを指定してレコードセットを作成する
rec.Open "select * from EMP", cnn, _
adOpenKeyset, adLockOptimistic
↑元ソース(VB)を参考に示しておく。
ttp://homepage2.nifty.com/inform/vbdb/ado_oracle.htm ほとんど変わらない。
違いはWSHの制限として明文化されたことだけです。
>183
多分180と同人物だよね。
趣味ならいいんだけど、コレまでの経緯で定義文字は参照しないこともあるっていう
結論が出ているのだからそれ以上(180-183の間)は時間の無駄としか思えない。
そこまでするのならWScript.exeを逆汗した方がイイのでは?
…とか提案しておいて言えた義理じゃないが、自分だったらやりたくねぇ(w
>>188 - 189
なるほど、VB と同じやりかたでいいんですか。
どうもありがとうございました m(__)m
191 :
名無し~3.EXE:02/07/25 02:16
以下のスクリプトがうまく動かないのですが、原因わかる方教えて下さい。
ウチの環境では「8」、「9」が返されるべきところで「0」が返って来るんだが...。
Win98SE/WSH5.6
var re = /hoge(\d+)\.txt/i;
var i;
for (i = 1; i < 10; i++)
{
WScript.Echo(getNum('hoge0' + i + '.txt'));
}
function getNum(Path)
{
if (Path.match(re) != null)
return parseInt(RegExp.$1);
return null;
}
すまん、解決した。よってレス無用。
193 :
名無し~3.EXE:02/07/25 03:50
>191-192
レス無用と書かれてもなぁ。
正規表現の一般的な罠なんだから、解決方法書こうよ。お願い。
冒頭コレにすれば取得したい範囲では問題はなくなる。
var re = /hoge0*(\d+).txt/i;
いまさら8進法も使うこともなさそうなんだが、メタキャラクタマッチよりも後回しで優先順だけ高い。
191は聞くだけ聞いて自分は貢献しようとしない厨ですから
>>194 >>195 おお、スマンスマン。俺の解決法は、
parseInt(RegExp.$1)
↓
parseInt(RegExp.$1, 10)
197 :
名無し~3.EXE:02/07/30 01:32
すいません、さっきはじめたばかりの初心者なんですが、
「C:\WINDOWS\Temp\*.tmp」を消そうとして以下をつくったのですが、
そんなファイルは存在しませんといわれてしまいました。
こういうときどうするのがスマートなんでしょうか?
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.GetFile("C:\WINDOWS\Temp\*.tmp")
objFile.Delete True
>>197 GetFileメソッドの引数にはワイルドカード使えないんじゃ・・・。
Const TemporaryFolder = 2
Set Fs = CreateObject("Scripting.FileSystemObject")
Fs.DeleteFile Fs.GetSpecialFolder(TemporaryFolder).Path & "\*.tmp", True
>>198 ありがとうございます。
ただ、いただいたコードを実行したところ
行:3
文字:1
エラー:書き込みできません。
コード:800A0046
と怒られてしまいました。。。
なお、WinXP-Proで、いつもAdminitaratorで作業しています。
>>199 多分、*.tmpファイルの中にどっかのプロセスが現在使用してる
ファイルが含まれてるんだろう。
例えば、HTMLHelpを開いてたりするとそうなる。
エラーは一応、On Error Resume Nextを入れれば回避できる。
ただこれでは、エラーが出た時点で、メッセージを出さずに削除処理を
中止して次へ進むだけなので、使用中のファイルを除いて削除
したいのなら、TEMPフォルダのFilesコレクションを、For Eachで回して、
一つづつ削除するのがいいのでは。
201 :
名無し~3.EXE:02/08/09 20:43
このスレ イイ
人居ます?質問したいんだけど・・・。
あまりいません。
>>202 一応みてる。
質問来たら、答える気になればきっと答える。
点呼3
全く居ないわけじゃない様子。
206 :
11:02/08/14 03:38 ID:AxCXFV0k
点呼4
207 :
202:02/08/14 11:18 ID:t/R3SZGG
では よろしくお願いします。
'---ScriptRun.vbs------------------------------
Set TP = CreateObject("DoMacro.TeraPad")
FilePath = TP.FilePath
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run "FilePath"
Set TP = Nothing
DoMacroなんですが 編集中のVBS・JSを実行したいんですよ。
勘だけでやっていたので 詰まってしまいました。勉強してこよ・・・。
>>207 TeraPadにマクロ機能もたせるDoMacro使ってないので
よくわかんないけど、一応。
FilePathはまずいんじゃないか?
FP = TP.FilePath
とでもしてみるとか。
あとはwsript.exeの引数に編集中のファイルのパスを指定する形で起動とか
実験するのメンドイので、適当な答えでスマソ
# 埋もれてるスレなので
# 質問の時くらいはageても良いかもとか思う。
# 強制IDになったから荒らしも少しは減るだろうし。
連続スマソ
TeraPadで単に編集中のvbs/jsファイルを実行するだけなら、
WSHにこだわらなくても、
ツールに
実行ファイル wscript.exe
コマンドラインパラメータ "%f" %*
上書き保存する
を登録して使うとかでもいいんでない?
210 :
202:02/08/14 19:09 ID:t/R3SZGG
レスありがとうございます。
>>208 FilePathをFPにしても 無理みたいですね・・・。
エラー内容は『行:8 文字:1 エラー:指定されたファイルが見つかりません。』
ってなってます。
>>209 あー そういう方法もあるんですか・・・
DoMacroでやる事にこだわりすぎていました(笑)
『%*』はなくてもいいみたいですね。
入れた方が良いのかな?
>>207 8行目
WSHShell.Run "FilePath"
"で括る必要はないだろ。
ついでに俺の使ってるスクリプト
var fso = new ActiveXObject('Scripting.FileSystemObject');
var shl = new ActiveXObject('WScript.Shell');
var tp = new ActiveXObject('DoMacro.TeraPad');
var arg = WScript.Arguments;
var tmp = fso.GetSpecialFolder(2).Path + '\\wshtmp.';
var ext, prm = '';
if (arg.length > 0) {
ext = fso.GetExtensionName(arg(0)).toLowerCase();
if (arg.length > 1) {
prm = arg(1);
}
if (fso.FileExists(arg(0)) && (WScript.ScriptFullName != arg(0)) && ((ext == 'js') || (ext == 'vbs')))
{
try {
fso.DeleteFile(tmp + '*');
}
catch(e) {
}
var tf = fso.CreateTextFile(tmp + ext);
tf.Write(tp.GetAllText());
tf.Close();
if (prm != '/c') {
shl.Run('wscript ' + tmp + ext);
}
else {
shl.Run('COMMAND /K cscript ' + tmp + ext);
}
}
}
213 :
202:02/08/15 12:41 ID:xTVZ2osb
>>211 ホントですね。
括りを外したら きちんと動作しました。
スペースが入りのフォルダ対策に括っておいたんですけど 入らないんですね。
# スペース入りのフォルダなんて作りませんが 一応。
>212
これいいなぁ。
GetAllTextメソッドをGetSelTextに変えたのも作っておいて選択範囲を実行なんてのも
問題点の絞込みに役立ちますね。
>213
そういう意味なら
"""" & FilePath & """"
じゃないの?
215 :
211:02/08/15 23:43 ID:OHF1rEI2
>>214どもです。さすがに
>>212のままではチトあれなんで、
ご意見を踏まえつつ、VBSで書き直し。
Dim Fso, Shl, Tp, Arg, Temp, tmp, ext
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Shl = CreateObject("WScript.Shell")
Set Tp = CreateObject("DoMacro.TeraPad")
Set Arg = WScript.Arguments
tmp = Fso.GetSpecialFolder(2).Path & "\wshtmp."
If Arg.Count > 0 Then
ext = LCase(Fso.GetExtensionName(Arg(0)))
If Fso.FileExists(Arg(0)) And ((ext = "js") Or (ext = "vbs")) Then
On Error Resume Next
Fso.DeleteFile(tmp & "*")
Set Temp = Fso.CreateTextFile(tmp & ext)
If Tp.GetSelStart = Tp.GetSelEnd Then
Temp.Write Tp.GetAllText
Else
Temp.Write Tp.GetSelText
End If
Temp.Close
If ArgExists("/c") Then
Shl.Run "COMMAND /K cscript " & tmp & ext
Else
Shl.Run "wscript " & tmp & ext
End If
End If
End If
Function ArgExists(Prm)
Dim i
ArgExists = False
For i = 1 To Arg.Count - 1
If Arg(i) = Prm Then
ArgExists = True
Exit For
End If
Next
End Function
216 :
名無し~3.EXE:02/08/16 05:15 ID:Tm/LIADi
Hourglass・・・何でダメなんだろう
こんな初歩的すぎるような質問じゃ怒られるかな。
大した使い方はしてません。
いくつかのファイルをあっちのマシンからからこっちのマシンににコピーするだけのvbsなんですが、ものがデカいのでちょっと処理に時間がかかる。
いまはマシンが処理中だぞと、だから余計な手出しはするなと(みんな必ずマウ
スをカチカチやってる)、砂時計を出したいんです。
MousePointer = "Hourglass"
・・・処理・・・
MousePointer = "Default"
Msgbox "コピー完了"
web上のどこだったかお役立ちサイトみたいなところで拾ってきた書き方なんで
すが、これじゃダメみたいです。
>216
その質問は初歩でなくとても高度なものです。
なのでコピー中の表示だったら、ShellオブジェクトのCopyHereメソッドを使ってダイアログを表示させ注意を促すのが得策かも。
VBと違って、Screenオブジェクトって無いんスよ。だから上記のプロパティも書き方もダメ、と。
とかいってAPI叩いてどうにかなんないかなとか試していたのは秘密。
Dim Shell, oFolder
Set Shell = WScript.CreateObject("Shell.Application")
Dim sFolder,sFile
sFolder="C:\WinNT\Temp"
sFile="D:\Documents and Settings\hogehoge\Local Settings\Temp\bigfile.tmp"
Set oFolder=Shell.NameSpace(sFolder)
oFolder.CopyHere sFile
な感じで。
( ゚Д゚)・・・MousePointerってなんだろう?
って思ってたのは秘密にしておいて良いでつか?
それはそうと、スクリプト処理中に手を出して欲しくない時は、
MsgBoxをループさせてます。
しかも画面一杯に近い大きさのMsgBox( ゚∀゚)y--┘~~~
「このフォルダのカスタマイズ」 って一体どうなっちゃうんだろう。
>218
彼はVBでいうところの
Screen.MousePointer = Hourglass
がやりたかったのだと思われ。
できたら応用は利くと思うんだが、私の方はちょっとあきらめムード…。
最大化ダイアログそれいいなぁ、アイデア頂きます。
こんな感じで。
Dim window, txtDisp, i
Set window = WScript.CreateObject("InternetExplorer.Application", "IE_")
window.Navigate2 "about:blank"
With window.document.parentWindow
.document.write "<html><head><style>body{height:100%;font-family:'MS ゴシック';text-align:center;font-size:60;" & _
"background-color:menu;overflow:hidden;border-style:none;border-width:1pt;cursor:wait;}" & _
"</style><head><body><div id='txtDisp'></div></body></html>"
.moveTo 0,0
.resizeTo .screen.availWidth,.screen.availHeight
.document.title = "作業中"
Set txtDisp = .document.getElementById("txtDisp")
txtDisp.innerText = "作業中だ、邪魔するなYO"
End With
window.toolbar = False
window.statusbar = False
window.menubar = False
window.Visible = True
WScript.Sleep 5000 ' ここで時間のかかる作業
window.Quit
Set window = Nothing
220 :
216:02/08/18 12:25 ID:WfqKi9Zo
>>217 レス感謝します
プログレスバー(っていうんでしたっけ)簡単に出せるんですね
ちょっとびっくり
↓みたいな感じでやってて、プログレスバーを出すのは無理だと
思ったので、砂時計を考えたんです。
Dim source, destination, fs
Set fs = CreateObject("scripting.FileSystemObject")
source = ("-----")
destination = ("-----")
fs.CopyFile source, destination, True
>>219 Screen.MousePointer = Hourglass
そう、たしか原文はそんな感じでした。
でも何だかエラーで怒られ、ためしにScreenを消してみたらエラーが出
なくなった。
これでOKかと思ったら、けっきょく何もしてくれなかった、と。
スミマセン
おバカな質問で流れを乱してしまいました
プログレスバーを出せるというよりも、Shell.Applicationにお任せすると、
あのダイアログが勝手に出ると思ったほうがいいかも。
VBSで利用できるグラフィカルなインターフェイスはメッセージボックスと
インプットボックスだけ。
wshを使って右クリックを表示させることは可能ですか?
224 :
名無し~3.EXE:02/08/26 21:54 ID:Auq8je+P
>>223 右クリックを表示???
質問ならばageれ。
WScript.Echo "右クリック"
226 :
名無し~3.EXE:02/08/27 13:02 ID:hzdkbXyS
ブラウザ上で、表示されているHTMLの操作(例えば文字や背景の色を変える、
画像を消したり、拡大する)ということは可能でしょうか?
よろしくお願いします。
228 :
名無し~3.EXE:02/08/27 18:57 ID:NEnobPxp
ActivePerl 入れて、
eg\Windows Script Components\First.wsc
を右クリック->登録でよくない?
>223
微妙にウケタ。
まぁマジに返すと、自動実行と自動操縦はちっと違うんですがねー。
>226
IEならばDOMレベル、Shellレベル双方に可能。227さんの言った通り。
レベル的にはもう一つあるような感じだがなし崩しでやっているのでようわからんのですわ。
サンプル挙げとく。開いているGoogleを黒くします。
Set oShell = WScript.CreateObject("Shell.Application")
For Each window In oShell.Windows
Set oDocument=window.document
If TypeName(oDocument)="HTMLDocument" Then
If oDocument.title="Google" Then oDocument.body.style.backgroundColor = "black"
End If
Next
>228
自分はPerlScriptは逃げました。
だったらPerlを使った方がコミュニティも確立しているし、文法的には変わらないけど
荒野を好きこのんで迷走する感じで。
モジュールが使えたのはちと感動しましたが。
というわけで力になれなくてスマソ。
231 :
名無し~3.EXE:02/08/31 23:04 ID:COirDX1R
アクティブなウィンドウ(タイトル?)を取得し、
それが xyzzy なら Ctrl+c Ctrl+f 、MDIBrowser ならAlt+↑といった具合に、
アプリケーションごとに異なるキーを Sendkeys で送るスクリプトを作り、
マウスのホイールボタンを押した時に呼び出して使おうかと思っているのですが、
Sendkeys 以外は、さっぱりわかりません!
アクティブなウィンドウの取得と、その比較って、
JScript では、どのようにすれば良いですか?
>>231 > マウスのホイールボタンを押した時
ホイールボタンのクリックをどうやって判断してるんですか?
マウスのユーティリティーにそういう機能があるんじゃないの?
単なる推測だけど。
変な時間に目が覚めた。
>>231 JScriptでは、うまくいかんかったのでVBScriptで。
とりあえず、タイトル取得まで。あとはがんばれ。
Dim Dc1, Dc2, hWnd, cap, l
Set Dc1 = CreateObject("DynamicWrapper")
Set Dc2 = CreateObject("DynamicWrapper")
Dc1.Register "user32.dll", "GetForegroundWindow", "f=s", "r=h"
Dc2.Register "user32.dll", "GetWindowTextA", "i=hrl", "f=s", "r=l"
hWnd = Dc1.GetForegroundWindow
if hWnd <> 0 Then
cap = String(256, 0)
l = Dc2.GetWindowTextA(hWnd, cap, 255)
if l > 0 Then MsgBox cap
End If
236 :
231:02/09/01 07:53 ID:9F64xAy5
おはようございます。
>>232 ほぼ233さんのいうとおりで、
ClockLauncher というソフトを常駐させていて、
そのソフトにホイールクリックを監視して
任意のプログラムを実行する機能があるのです。
前スレ680さん、朝早くから有り難うございます。
ここまで教えていただければ後は自分で補えるかもと思い
早速実行してみたのですが、
ActiveX コンポーネントはオブジェクトを作成できません。:'DynamicWrapper'
というエラーが Set DC1 の行で発生してしまうのです。
環境に問題があるのでしょうか?
環境は、
Win2kSP3
wsh 5.6
IE 5.5SP2
です。
というか、Intelli Mouse互換マウス使ってるんなら、
マウスドライバでアプリごとに、各ボタンの挙動を指定できるから、
それでやれば良いんじゃないの?
とか、思った。
239 :
231:02/09/01 20:06 ID:utY+/SER
>>237 >>3のリンクから dynawrapNt.zip をダウソしたのですが、
これってどうすれば利用できるようになるのでしょうか?
240 :
231:02/09/01 20:37 ID:utY+/SER
MAKE.BATを実行すれば良かったんですね。スマソ
>>236のエラーは出なくなったのですが、
今度はDc2.Registerの行で、
プロシージャの呼び出し、または引数が不正ですというエラーが出てしまうのです。
どうすれば良いでしょうか?
>>240 もしかして、環境依存なのかも・・・。
ウチの環境では
>>234をコピペするだけで動くけど。
Win98SE
WSH 5.6
IE 5.01sp2
242 :
231:02/09/01 23:59 ID:utY+/SER
>>241 そうですか・・・。
私にはエラーが出る原因がわからないので、
タイトル取得と比較はCで作成してしまいました。
ただ、CでSendkeysを再現しようとすると非常に面倒なので、
そこだけJScriptを呼び出すという、非常に不恰好な仕上がりになりました。
ありがとうございました。
>>242 終了した話題を蒸し返してすいませんが、エラーの原因と思われるもの
が分かりました。
DynaCallのNT版のソースや、
>>3のページを見た限り、
NT版では引数の型指定で r (参照)が定義されてないので、
Dc2.Registerの行の"i=hrl"がエラーになるみたい。
NT版は参照渡しが出来ないのだろうか?
244 :
:02/09/05 19:15 ID:qqlWL1jz
19に書き込んでいる方と同じような質問なんですが、
submitボタンを自動でクリックするする方法がわかりません。
例えば、
>34の
google検索のボタンを自動で押すのではなく
I'm Feeling Luckey
のほうのボタンを押すためには
window.document.f.submit()
をどう書き換えれば良いのでしょうか。
245 :
244:02/09/05 19:17 ID:qqlWL1jz
すみません。
>34 ×
>39 ○
246 :
244:02/09/05 19:27 ID:qqlWL1jz
すみません。もうひとつ質問させてください。
例えば、
<select name="KAZU">
<option value="">▼数を選択してください</option>
<option>1</option><option>2</option><option>3</option>
</select>
のように、<option>にvalueが定義されていない場合、
自動的に選択するにはどうすれば良いのでしょうか。
247 :
244:02/09/06 12:27 ID:I9u5zhZr
244の方は何とか自分でわかりました。
246誰か教えてください。
window.document.all.KAZU.selectedIndex = 1
では?
249 :
244:02/09/06 13:43 ID:I9u5zhZr
ありがとう。
selectedIndexの部分がわかりませんでした。
250 :
名無し~3.EXE:02/09/06 23:31 ID:xN6oAzsE
あの、がいしゅつかもしれませんが。
JScriptxで、URLのラベル(?)を見て処理したいのですが、
<a href="
http://www.where.to.go">Label</a>
みたいになっていて、この</a>の前のLabelという文字列はどうやったら取得できるでしょうか。
この文字列を比較して、条件を満たしたらその前のURLにジャンプしたいんです。
ぶしつけな質問ですみません。よろしくお願いします。
domれ。
文字列中で " を扱うにはどうしたらいいですか?
>243
NT系もAnsiでいいんでしたっけ?半可通発言ですまんです。
APIいじりは面白いんですが、時間を取られるのが、一番つらいです。
強制終了繰返して不安定→再起動とか。
なので、うまくいくラッパーの関数、クラスとか持ち寄ってWSH版Win32Api.txtみたいなのを
作っていけないかなぁ、と妄想を垂れ流してみる。
>250
ttp://www.openspc2.org/html_v3/ ttp://www.microsoft.com/japan/developer/library/jpisdk/dhtml/references/dhtmlrefs.htm ここら辺をじっくり読む事をお勧めする。
簡単なサンプルを示す。今起動しているIEのアンカー全てを列記します。
Set oTS = WScript.CreateObject("Scripting.FileSystemObject").OpenTextFile("anchorlist.txt", 2, True)
Set oShell = WScript.CreateObject("Shell.Application")
For Each oWindow In oShell.Windows
Set document = oWindow.document
'MsgBox TypeName(document)
If TypeName(document)="HTMLDocument" Then
For Each oAnchor In document.all.tags("A")
oTS.Write oAnchor.href & "," & oAnchor.innerText & vbNewLine
Next
End If
Next
oTS.Close
255 :
250:02/09/07 10:35 ID:VTrRLQIF
>>254 innerTextですね!できました。
リンクも大変参考になります。
どうもありがとうございました。
タブブラウザのスクリプト対応からか、DHTML関係の質問ばっかりに見えるんだけど、
スレ違いではないのかな。
ヘタすると乗っ取られそうな気が。
>>252 VBScriptなら "" (ダブルクォーテーション2つ)
258 :
名無し~3.EXE:02/09/07 23:52 ID:hXONB4T8
スレテンプレートの外部コンポーネント
BASP21 - メール、ファイルエンコード、文字コード変換、FTP/HTTPアップ、その他
ttp://www.hi-ho.ne.jp/babaq/basp21.html を使ってメールの送信を行おうとしています。
その機能自体は、なんとか実装できそうなのですが
ひとつ疑問があります。
メールの送信時にパスワードって不要なんですか?
パスワードの設定をしないでメールが送れてる
ようなのですが・・・???
当方、excelの延長でちょっとVBAがわかる程度のスキルです。
ちょっと気になるので
わかるかたお答えお願いします。
普通SMTPにはパスワードが設定されてないから大丈夫なんじゃないの?
260 :
名無し~3.EXE:02/09/08 00:00 ID:29xq9xoD
>>259 解答ありがとうございます。
すると
SMTPってのは、どこのプロバイダのものを使ってもいいってことですか?
>>258 ん?メールの送信にユーザーは必要無いと思うけど。
WSHとは関係無いが。
別に差出人のメールアドレスが存在しないアドレスでもメールは出せるよね。
サーバーのほうで制限しない限り。
262 :
名無し~3.EXE:02/09/08 00:11 ID:29xq9xoD
>>261 ただ単に、メールを送るのにもなんらかの制限があるもんだと
思い込んでいました。
ようは出す分には、そこら辺の郵便ポストみたいに
気軽に誰でも出せるけど
郵便受けには鍵が掛かっているってイメージですね。
勉強になりました。ありがとうございました。
**
スレ汚し失礼しました
>>郵便受けには鍵が掛かっているってイメージですね。
つか、そのまんま受け取り拒否と言う表現でいいと思う。
>>254 むむぅ・・・。バイナリ見てみたら、r も定義されてるみたいだ。>NT版
よくわかりませんが、アーカイブに入ってるccupd.vbsがそのままで
動くんであれば、Ansiでいいんだと思いますが。
ついでに r が使えることもわかるし。
もしそうなら、
>>243は全くの見当違いということになるな。(-_-
D&Dしたファイルを開くスクリプトってどうやって書いたらよろしいんでしょうか?
たとえば、txtファイルをD&Dしたらメモ帳で開く、みたいなスクリプトがほしいんですけど
267 :
265:02/09/08 17:42 ID:n4AN3fBn
>>266 おぉ!できました。
なるほどって感じです。なぞってもんはわかってみると大したことないもんですね
>>267 謎というか、リファレンスに書いてあるけど。
>>266 いや、別に謝んなくてもいいと思いますが。
私は実際に試せないので、所詮、推測に過ぎませんから。
> メモリが"read"になることはできませんでした のエラーと
> VBScriptでサポートされていないオートメーションです のエラーが出る。
ってことはUserWrap.Registerの行は無事に通過してるってことでしょうか?
NT系でも r は使えるみたいですね。
>>234はドコが駄目なのかな?
Dim Dc, hWnd, cap, L
Set Dc = CreateObject("DynamicWrapper")
Dc.Register "user32.dll", "GetForegroundWindow", "f=s", "r=h"
Dc.Register "user32.dll", "GetWindowTextA", "i=hrl", "f=s", "r=l"
hWnd = Dc1.GetForegroundWindow
If hWnd <> 0 Then
cap = String(256, 0)
L = Dc2.GetWindowTextA(hWnd, cap, 255)
If L > 0 Then MsgBox cap
End If
とかかな?9x版と、NT版の仕様の違いがよくわからん。(-"-;
間違えた・・・。スレ汚しスマソ。
Dim Dc, hWnd, cap, L
Set Dc = CreateObject("DynamicWrapper")
Dc.Register "user32.dll", "GetForegroundWindow", "f=s", "r=h"
Dc.Register "user32.dll", "GetWindowTextA", "i=hrl", "f=s", "r=l"
hWnd = Dc.GetForegroundWindow
If hWnd <> 0 Then
cap = String(256, 0)
L = Dc.GetWindowTextA(hWnd, cap, 255)
If L > 0 Then MsgBox cap
End If
ほぼ雑文モード。
>269-270
いや、私はAPIを使って目的を果たしたことないから、
使える680さんを尊kの目で見ているんですよ。
270の方で出来ました。
ただし、取得できるアプリとそうでないものがあります。
デスクトップ(Program Manager)とIrvineは取得できる。
A BoneとDanaは取得できない。(スレタイとかファイル名とかでどうしても長くなる所為か)
タイトルの文字数が多いと取得できない感じです。
また、出るエラーは
"read"になることはできませんでした の方。
あ、言い遅れてましたが当方W2kSP3です。
自分としては急いてはいないつもりなんだけど、提案としては初めてだし、
やりたい事の初めの取っ掛かりが形にならないのでもどかしく思っている。
↑9x系とNT系の違いを吸収できるアクティブウィンドウのタイトル文字取得関数の事。のみならず、今後の方針も含めてね。
WSHで普通に取得できるリテラル群と親和性が高いものであるべきだとか。
かつ、標準では出来ないが、出来たら応用性が高くなるものだとか。
ブラックボックス化しても特に困らない事だとか…。
おお、
>>270でいけましたか。
9x版とNT版の違いは
9x ・・・ 各関数ごとにDynamicWrapperのインスタンスを作成しなければならない。
NT ・・・ 2つ以上のインスタンスを作成してはいけない。
ってとこなんでしょうかね?って、まったく逆じゃん・・・。Σ(´Д`ズガーン
取得できないのはこちらでも確認しました。
Win98SEでは、タイトルバーの文字列が39バイト以下でないと駄目でした。
(それ以上の時は空、もしくは文字化け。さらに84バイト以上は強制終了)
ってことで結局、
L = Dc.GetWindowTextA(hWnd, cap, 40)
が正解っぽいです。こうすれば、長いタイトルのときも始めの39バイトだけ取得できるので、
あとはスクリプト側でなんとかすると。でも、NT系では取得可能バイト数が違うかも。
(´-`).。oO(JScriptからてっとりばやくInputBox使うにはどうするのが良いかな・・・)
var oIE = WScript.CreateObject("InternetExplorer.Application");
oIE.Navigate2("about:blank");
var s = oIE.document.parentWindow.prompt("何か");
じゃだめ?
>>274 今はそんな感じでやるか、
.wsfでVBScriptとJScriptを混在させるかどっちかでやってます。
どっちにしろ、あまりスマートじゃないなぁと思ったので、
いいアイディア無いかなぁと。
InputBox表示する.vbsファイル作っておいて、
それを呼び出すとか言う方法もあるみたいですね。
http://www.borncity.com/WSHBazaar/WSHEnvironment.htm ちなみに友人には
「JScriptにこだわらないで、InputBox必要ならVBScriptでやれば良いじゃん」
って言われて終わりでした。
ごもっとも。
なんで欲しいかって言ったら、
決め打ちで処理しちゃう適当極まりないJScriptファイル作ったら、
それが意外に使うので、
いちいちファイルの中身を書き換えないで、対話式に出来るようにしようと思ったら、
InputBox作れないので、VBScriptに書き換えるということが何度かあったのですよ。
InputBoxだせるActiveX Control導入は、
出先とかで使えないので、ちと辛いしなぁ・・・。
# JScript.NETコンパイラって.NET framewrok SDKに付いてるのか?
> # JScript.NETコンパイラって.NET framewrok SDKに付いてるのか?
付いてる
277 :
sage:02/09/15 01:18 ID:eH1Nj97e
間違った、こっちに入れるのか、
Cでアルゴリズムの講義を受けた程度なんだけど
VBSとJscript、はじめるならどっちがとっつきやすいかしら?
VBS
VBScriptよりはJScriptの方がCに似てはいる
CからならJSだろ。
>>279 End Ifが許容できるならVBS、if構文は{}で囲ませろというのならJS
284 :
名無し~3.EXE:02/09/16 13:28 ID:eUUqbFAL
>>279 ; 打つのが怠いならVBS
癖になってるならJS
上げちまった
スマソ
286 :
名無し~3.EXE:02/09/16 15:02 ID:tMOJQdxd
HTML内のスクリプトで自身のパスを取得するために、
GetAbsolutePathName("ABC.html")としたのですが、
どこに置いてもC:\Windows\デスクトップ\ABC.HTML
と帰ってきます。
VBSで同じ処理をすると正しいパスを返してくれるのですが...
ブラウザはIE6.0を使っています。
>286
Mid(self.location.pathname, 2)
288 :
名無し~3.EXE:02/09/16 19:43 ID:kGUhlVmI
>287
解決しました!!
ありがとうございました m(_ _)m
c:\folder\001.txt
c:\folder\002.zip
c:\folder\003.txt
c:\folder\004.zip
c:\folder\005.zip
c:\folder\006.log
c:\folder\007.log
c:\folder\008.txt
を
c:\folder\LOG\006.log
c:\folder\LOG\007.log
c:\folder\TXT\001.txt
c:\folder\TXT\003.txt
c:\folder\TXT\008.txt
c:\folder\ZIP\002.zip
c:\folder\ZIP\004.zip
c:\folder\ZIP\005.zip
な感じに拡張子毎分けるスクリプトおながいします。
>289
これって…、種類でソートして振分けのほうが早くない?(語尾上げ)
用途が共感できるものなら作るけど。
それ次第ということで。
>>289 Cygwinのshell scriptだとこんなん。
--
#!/bin/sh
for i in /c/folder/*; do
case $i in
*.log)
if [ ! -d LOG ]; then mkdir LOG; fi; mv $i LOG/ ;;
*.txt)
if [ ! -d TXT ]; then mkdir TXT; fi; mv $i TXT/ ;;
*.zip)
if [ ! -d ZIP ]; then mkdir ZIP; fi; mv $i ZIP/ ;;
*)
echo "unknown: $i" 1>&2 ;;
esac
done
--
別にWSHでもできなくはないだろうが、道具は用途によって使い分ける
方がいいかと。
>>291 Cygwinインスコできて、ある程度使える奴が、
こんなこと質問すると思うか?(w
// js だけど
path = "c:\\"
folder = new Enumerator( (new ActiveXObject("Scripting.FileSystemObject")).GetFolder(path).Files )
files = new Array()
for ( ; ! folder.atEnd(); folder.moveNext() ) files.push( folder.item()+'' )// .Path .Name
// でこの、ファイルの配列 files を?
files.sort() // これは要らないけど気持ち。// files.push(folder.item()) でも、sort() はできるみたい
// 拡張子順に並べ替えるとしたら
function sortfunc(l,r){
var lext = l.replace(/^.+\.(.+)/,'$1')
var rext = r.replace(/^.+\.(.+)/,'$1')
//↓マッチしない場合(拡張子なし)、(どちらもは除く)
if(lext==l){ if(rext!=r)return -1; }
else if(rext==r) return 1;
//↓拡張子あり、(またはどちらもなし)
lext = lext.toLowerCase(); rext = rext.toLowerCase()
if(lext > rext)return 1; if(lext < rext)return -1; return 0;
// 文字列をそのまま大小比較できるのだっけ?
}
files.sort(sortfunc)
WScript.Echo(files.join('\n'))
// 拡張子別の配列の配列を作るとしたら。
function xxxxx(files){
var A = new Array() // A[i].ext にその拡張子、A[i][j] に各ファイル(パス)
A[-1] = new Array() // 拡張子ないのは、ここに。
for(var i=0, f, ext, flag; i<files.length; i++){
f = files[i]
ext = f.replace(/^.+\.(.+)/,'$1').toLowerCase()
if(ext == f.toLowerCase() || ext=='' ){ A[-1].push(f); continue }
flag = 0
for(var a=0; a<A.length; a++)
if(A[a].ext == ext){ A[a].push(f); flag=1; break }
if(flag)continue
var Aa = new Array()
Aa.ext = ext; Aa.push(f)
A.push(Aa)
}
return A
}
A = xxxxx(files)
// テスト表示
s = ''
for(i=0; i<A.length; i++)
s += A[i].ext +' '+ A[i].length +'\n\t'+ A[i].join('\n\t') +'\n'
s = A.length +' / '+ files.length+'\n'+ s
+ (A[-1].length ? '- '+A[-1].length+'\n\t'+A[-1].join('\n\t'): '')
WScript.Echo( s )
以上は、>289 へ、でした。
ずさんかも。それより、的はずれかな。
296 :
名無し~3.EXE:02/09/21 22:04 ID:89kPHuWY
c:\doc にあるファイルを
\\host\share にコピーしたいのですが、
その時パスワードを聞かれるのですが、
どうしたらスクリプト内でパスワード認証通過できますか?
// JScript.
var net;
net = new ActiveXObject("WScript.Network");
net.MapNetworkDrive("I:", "\\\\computer2\\public","True","jdoe","jdoepassword");
' VBScript.
Dim net
Set net = CreateObject("WScript.Network")
net.MapNetworkDrive "I:", "\\computer2\public","True","jdoe","jdoepassword"
>>289 NTのバッチファイルなら2行でできる。
for %%i in (*.*) do if not exist %%~xi md %%~xi
for %%i in (*.*) do move %%i %%~xi
フォルダに . がつくけどね。
>289
wsh勉強中の俺にぴったりの課題なのでやってみた。
引数なしで実行するとカレントディレクトリ内を整理、
引数にディレクトリ名を与えるとその中を整理する。
関数 furiwake が>298の2行に相当するが、やっぱり長くなるね。
vbsみたいに for (file in files) とか書けたらいいのにと思う。
var WshShell = new ActiveXObject("WScript.Shell");
var fso = new ActiveXObject("Scripting.FileSystemObject");
var objArgs = WScript.Arguments;
if (objArgs.length == 0) {
furiwake(WshShell.CurrentDirectory);
} else {
for (i = 0; i < objArgs.length; i++) {
if (fso.FolderExists(objArgs(i))) {
furiwake(objArgs(i));
} else {
WScript.Echo("フォルダが存在しません: " + objArgs(i));
}
}
}
function furiwake(currentDirectory) {
var files = new Enumerator(fso.GetFolder(currentDirectory).Files);
for (; !files.atEnd(); files.moveNext()) {
var ext = fso.GetExtensionName(files.item()).toUpperCase();
if (!fso.FolderExists(ext)) fso.CreateFolder(ext);
fso.MoveFile(files.item(), ext + "\\");
}
}
300 :
299:02/09/22 04:08 ID:YH+heuC8
上のやつ間違ってました。関数 furiwake を以下のもので置き換えてください。
スレ汚し、すんまそん (;´Д⊂ 300ゲトー
function furiwake(path) {
var files = new Enumerator(fso.GetFolder(path).Files);
for (; !files.atEnd(); files.moveNext()) {
var ext = fso.GetExtensionName(files.item()).toUpperCase();
if (!fso.FolderExists(path + "\\" +ext)) fso.CreateFolder(path + "\\" +ext);
fso.MoveFile(files.item(), path + "\\" +ext + "\\");
}
}
>>289 見たら、既に、299-300 が、、、まあ別の方法として。
// .js フォルダー落して。
var set_extA = new Array('log', 'txt', 'zip')
if( 1 != (new ActiveXObject("WScript.Shell")).Popup('実行?', 60, '実行確認', 1) )WScript.Quit()
if( ! WScript.Arguments.length)WScript.Quit()
var path= WScript.Arguments(i)
var FS = new ActiveXObject("Scripting.FileSystemObject")
if( FS.FolderExists(path) ){
for(var i=0, dest; i<set_extA.length; i++) try{
dest = path +'\\'+set_extA[i]
if( ! FS.FolderExists(dest) )FS.CreateFolder(dest)
FS.MoveFile( path +'\\*.'+set_extA[i], dest+'\\')
}catch(e){}
}
> 299-300 の WshShell.CurrentDirectory
これ知らなかった。引数ないときは、そこで、という事と思うが、
どこになるか、不定のようだけど。
fso.GetParentFolderName(WScript.ScriptFullName) の方がいいんではないかな、、、
字下げに使っている、  も知らなかった。
" " -- em space 、これって何?、
>>293 の 3 行目
folder = new Enumerator( (new ActiveXObject("Scripting.FileSystemObject")).GetFolder(path).Files )
何で、folder って名付けるかな、files だよな。(次の行で、配列 files がでるからまずいけど)
fldとかflsとか書くなぁ
305 :
名無し~3.EXE:02/09/23 04:08 ID:me6GPEiA
よく、「ログオフするとお気に入りが消える」みたいなFAQがありますが、
それはそれで不便ですね。
小生としては、たとえば
「*.mpgファイルはRecentにいれない」とか
「特定のディれくとrににあるファイルは、開いてもRecentに入らない」とかの
オプションがほしいわけですよ。
これはレジストリいじってもできそうもないから、やはり、Wshを使って、
Recentに*.lnkが作られるタイミングを見張っておいて、
指定されたものを削除するのがいいと思うのですね。
これって、Wshでできるでしょうか。
正規表現で該当の*.lnkファイルを消すのはできそうですが、「見張る」のは
どうやったらいいかわかりません。
よろしくお願いします。
>305
某掲示板で見つけた常駐監視htaです。適当に変更して使ってください。
下手すると、タスクマネージャから殺さないとダメですのでトリガは適当なものを考えて。
<html><head>
<script language="VBScript">
Dim oFS, timerId, sTraceDir
sTraceDir = "C:\Documents and Settings\Administrator\Recent"
window.resizeTo 0,0
timerId = 0
Set oFS = CreateObject("Scripting.FileSystemObject")
Sub tracer()
Dim bFlagFound
bFlagFound = False
For Each oFile In oFS.GetFolder(sTraceDir).Files
bFlagFound = bFlagFound Or LCase(oFS.GetExtensionName(oFile.Path)) = "lnk"
Next
If bFlagFound Then
lMes = MsgBox("継続しますか?",vbRetryCancel, "見つけました")
If lMes = vbCancel Then
window.close
End If
End If
End Sub
timerId = setInterval("tracer()", 5000)
</script>
<hta:application minimizeButton="no" maximizeButton ="no" applicationname="非表示ダイアログ"
singleinstance="yes" border="none" borderstyle="raised" showintaskbar="no" ersion="1.00" id="objHTA">
</head></html>
>>301 間違ってる!、
5行目、WScript.Arguments(i) 、i → 0
>>305 >308 は、例えば、こうなるかな。
<script language="JScript">
dir = "%どこか%\\Recent"
TgPathPtnA = new Array( /\.mpg$/i, /.+\\iyada\\[^\\]+$/i )// リンク先パスから一致探すパターン
LnkFilePtn = /\.lnk$|\.url$/i // .url はないか
function 何かする(ファイルパス){ /*お仕事*/ }
window.resizeTo(100,100)// テストなので、0,0 にしてない
FS = new ActiveXObject("Scripting.FileSystemObject")
WS = new ActiveXObject("WScript.Shell")
function tracer(){
var flag, flsA =[], cnt =0
var fls = new Enumerator( FS.GetFolder(dir).Files )
for (; ! fls.atEnd(); fls.moveNext()) flsA.push(fls.item()+'')
for(var i=0, tp; i<flsA.length; i++)
if( LnkFilePtn.test(flsA[i]) && (tp= WS.CreateShortcut(flsA[i]).TargetPath) )
for(var j=0; j<TgPathPtnA.length; j++)
if( TgPathPtnA[j].test(tp) ){ 何かする( flsA[i] ); cnt++ }
if(cnt && ! confirm( cnt+' 、続ける?' ) ) close() // これをどうするか?
}//
setInterval(tracer, 5000) // 5 秒間隔
</script>
>>305 全然知らないのだが、考えてみる。
Windows で何か起きたとして、それを知るには、
Windows から、教えてもらう (HTML中のスクリプトのイベントのように) か、
Windows が記録したものを、周期的に読みにいく(事後になってしまうが)
(この場合は直接 Recentフォルダを調べる) か、、なのかな。
多分ふつうのスクリプトからは、Windows の出来事を、
見張れない、教えてもらう通知してもらう、受取る方法がない?。
なら間隔おいて自分で調べるとすると、スクリプトが終わらぬよう居座り続けないとならない。
( Sleep を繰返す、ちょっと恐いというかずっと続けて大丈夫なものなのか?、
余計な負荷になるのではとか、そのまま本当に眠ってしまうのではとか、、)
窓を持てるスクリプトならどうか?、
でも、HTA にしても、Windows のイベントは、ないみたいだし。
もう一つエクスプローラのフォルダ窓に付属の HTT なら、
フォルダで起こった事を?、(表示に関わる事のみか?)。
MS 以外のスクリプトは、Windowsで起きた事を中継してくれないか?
(上から続き)
他のプログラムから、教えてもらうとしたら?
1、何か起きたら、スクリプトを起動してもらう。
ソフトで、そういうのないか?
Windows のタスク(スケジューラ?)、
これから呼び出すとか考えても、事でなく時が主だし、
それも日単位だし、終了時やログアウト時はないし。
イベントの様なものでは、スタートアップしかないのか、、
2、スクリプトの中で、他のプログラムとやりとりする。
ActiveXうんたら?、COMコンポーネント?。
>>2 ttp://www.roy.hi-ho.ne.jp/mutaguchi/wsh/ の
"関連サイトへのリンク" に色々、紹介されている。
でも、そのプログラム側からこちらに、通知はできないのか?
スクリプト側から、周期的にそのオブジェクトのプロパティを調べるしかないかな。
WSH なら、WScript.CreateObject() の引数に、
イベント時に呼び出してもらう、こちらの関数(の接頭辞)を指定できるというのあり。
でも、WScript だからスクリプトを終わらせない様にしないと。
( Sleep の他に、MsgBox を出しっぱなしにする方法もある?)
よく判らないよ。
313 :
名無し~3.EXE:02/09/24 14:43 ID:fUwhMaE9
314 :
313:02/09/24 15:26 ID:fUwhMaE9
補足。readmeに書き忘れた。
*.exeでなくて*.vbsを実行したいときは第二引数を
"C:\WINDOWS\system32\wscript.exe C:\test.vbs"
とか
"C:\WINDOWS\system32\wscript.exe \"C:\test test\test.vbs\""
てな感じにしてね。
かなり適当なのでうまく動かない状況が多いかも。
>313
見つかんないよ。
それCOM化してくれたら神。
>>312 Windows のタスク、間違ってた!、
日単位だけでなく、[詳細設定] で、「タスクを繰り返し実行」間隔 分/時
っていうのが、あった。
10分とか1時間に1回程度の実行でいいなら、これを使えばいいのか。
>313
わっ、
でも使えない、残念。MFC70.DLL がない。
readme 補足してある。 js だとだめなのか、、、
望んだ元の 305 は、見に来たかな、、、
>319
しまった、何を見てたんだろう、個人のページを貼ってしまった。
そこの人、ごめんなさい。
>313
mfc70.dll と msvcr70.dll
.js でも全然問題ないよ。
第2引数、"wscript X:\〜\xxx.js" でも。
>319
もう一度、VA021021 の kobataku さん、ごめんなさい。
322 :
名無し~3.EXE:02/09/25 10:13 ID:vw6HyGET
>321
リテール版なら再配布は自由なのでOKじゃないの
>>322 個人のページにリンクしたことを気にしているのでは?
気にしなきゃいいのに。
まあvector上だから
そんな気にすることたぁないさね
325 :
名無し~3.EXE:02/09/26 03:13 ID:osmhTbQP
登録しておいたアプリケーションを強制終了させる
ことってWSHで可能でしょうか。
一々タスクマネージャー開いて、アプリ名探して、殺すのが面倒です。
cgywinのps.exeでPID見えるのですが、killコマンドが弾かれるので、
いちいちマウスで殺して、コマってます。
328 :
名無し~3.EXE:02/09/27 14:32 ID:LtWILKoX
set db = WScript.CreateObject("DAO.DBEngine")
と書くと、DAO.DBEngineという名前のオートメーションクラスが見つかりませんでした。
とさ。よくわかってないが、なぜ?
329 :
328:02/09/27 16:40 ID:LtWILKoX
DAO.DBEngine.36 でしたとさ。
>325
すでに答え出てるけど、前スレ547にもサンプルあるーよ。
XPならtasklist.exeとかtaskkill.exeなんてコマンドもあるーよ(>2のリンク参照)。
>>331 スクリプトが起動した時刻を記録するファイルを作っておいて
スクリプト起動時にはそのファイルをロックして記録、
処理が終わったら解放するようにしておけばどうかな?
起動時にロックされていたら何もしないで終了。
で、チェックは記録されていた時刻と更新時刻を比較する。
333 :
11:02/09/28 20:14 ID:Kh7JELSG
ファイル生成の監視ですが、WMIを使えば可能らしいです。
私はうまくできなかったのですが…。
ExecNotificationQueryメソッドを使い、"__InstanceCreationEvent"を指定し、
CIM_FileDataのインスタンスの生成を監視するわけです。
実際に書いてみたコードも載せておきます。一応、C:\testの監視をおこなうように作ってます。
しかし、これは正常に動作しないばかりか、暴走してしまいます。
しかもスクリプトのプロセスも殺せません。
どなたか、動くようにする方法を教えてください。
Set Locator = WScript.CreateObject("WbemScripting.SWbemLocator") 'SWbemLocatorオブジェクト作成
Set oService = Locator.ConnectServer 'SWbemServicesオブジェクト取得
Set oEvent = oService.ExecNotificationQuery _
("select targetinstance.Name from __InstanceCreationEvent within 10 where " & _
"targetinstance isa 'CIM_DataFile' and targetinstance.Drive = 'C:' and " & _
"targetinstance.Path = '\\test\\'")
On Error Resume Next
Do
WScript.Sleep 100
Set oEvt = oEvent.NextEvent(500)
If Err.Number <>0 Then
Err.Clear
Else
MsgBox oEvt.TargetInstance.FileName & "が生成しました。"
Exit Do
End If
Loop
334 :
11:02/09/28 20:14 ID:Kh7JELSG
メール欄を入れ忘れてました…。
335 :
313:02/09/29 01:29 ID:GDGFvQwi
>>318-319 DLL同梱してなくてゴメン。
.NET Framework入れたらMFC関連のDLLも入ると思いこんでました。
考えてみればMFCは.NETとは関係ないから入らないのね。
.NET+NT系限定だけどJScriptだけでディレクトリ監視。
ただコンパイルしないと駄目っぽいのがニントモカントモ…
コンパイルしてちゃWSHとは言えないかな?
import System.IO;
var watcher : FileSystemWatcher = new FileSystemWatcher();
var result : System.IO.WaitForChangedResult;
watcher.Path = "c:\\temp"; //監視するディレクトリ
// watcher.Filter = "*.txt"; // フィルタ。拡張子とか指定可能
watcher.NotifyFilter = ( NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName );
watcher.EnableRaisingEvents = true;
for (;;) {
result = watcher.WaitForChanged( WatcherChangeTypes.All );
System.Console.WriteLine( result.ChangeType + " : " + result.Name );
}
336 :
313:02/09/29 01:31 ID:GDGFvQwi
import System.IO; してるくせに
System.IO.WaitForChangedResultとか書いちゃ意味ね〜
337 :
313:02/09/29 02:01 ID:GDGFvQwi
338 :
313:02/09/29 02:20 ID:GDGFvQwi
あぁ何書いてるんだか。can be created なら問題無いじゃん。
SWbemServicesの方がcannotだったのよ〜と言い訳してみる…
無駄レスばっかでハズカシ.
\\HostA\Shared の情報を取得して、
前回より新しいファイルやフォルダがあったら、
表示するか確認後にフォルダを表示する。
っていうスクリプト出来ますか?
ログイン時に
共有フォルダに新しいファイルが存在します。
共有フォルダを表示しますか?
はい いいえ
こういうことがしたいんです。
>339
それは、仕事に使うものかな。だとしたらやれる事を事前に吟味しておかないと、
更に欲が出てきていっぱいいっぱいになってくるような感じがする。
まずざっと見足りないと思う事。
共有フォルダって言うからには皆が更新する物。
自分が関与しないファイルもあればするファイルもある。
また、ずっと後に関与するものもあるかもしれない。
で、区切りは前回のログオンのみでいいの?後は消しちゃって。
また朝、忙しかったら読み飛ばしちゃうかも。
会社で共有フォルダ管理って、結局数がものすごくなってみてらんない状態になると思う。
あっという間に対応しきれなくなる。
スクリプトに全ファイル監視させるのは良いとして自分が見る上でのフィルタとかはいいのかな?
ぱっと見言えるのはそんなとこかな。
この案件では最近の話題の更新したタイミングをシビアに判定するとかは考えなくてもよさそう。
アプローチとしてはデータベース作って格納するのが一番かと思います。
長文スマンス。
341 :
教えて君:02/09/29 20:14 ID:AiYdhk+3
>341
スクリプトっていうのはじぶんでかきかえるためにテキストで出来ているんだ。
だから一行目はじぶんのすきなようにかきかえるんだよ。
343 :
名無し~3.EXE:02/09/29 22:38 ID:tiAhOVr/
>>341 一行目に
#!/usr/bin/wsh.exe
あるいは
#!c:/Program Files/Windows Scripting Host/WSH.EXE
を忘れずに
>>340 いあ、、自宅です。
父親と生活パターンが違うので、
父親から頼まれたことや、頼むことは
共有フォルダに突っ込んで終わりということが多いので。
突っ込むだけで相手に解れば楽だなと。
345 :
教えて君:02/09/30 02:01 ID:YQd8Nmnx
>>342,343
い、言われたとおりにしたけど、出来ませんでした。
た、助けてください。
346 :
魚:02/09/30 20:46 ID:Ogl2JPPx
>341>345
なんだか??一行目の("URL","保存先パス") をあなたの有用なものに変えるだけ。
保存先パスをフォルダまでしか指定していないとか?ファイル名まで指定する。
でダメなら一行目だけでも見せてくれ。
>342
ふぅ。それはそれで中途半端かも。
>343
嘘つき。UNI板に(・∀・) カエレ!!
>344
おっけ。先走りすまん。なら当初ので作ってみるわ。
変更ファイル名ぐらいは列記します。
>346
実際どうなんだろうね。まともな返答も無いとこは、みんなの認識の表れだと思うけど。
349 :
339:02/10/02 01:01 ID:7Te+4er2
>>348 おお、、、ありがとうございます。
確かにずれてますね。。
あと、共有フォルダのパスが見つからなかった(相手がオフラインだった)場合にエラーが。。
まぁ、これでも十分実用できるんで有り難いです。
ありがとうございます。
>>333 これ、ウチではちゃんと動いてますよ。
Exit Do を消して、監視するフォルダをRecentにして、
1時間ほど走らせても大丈夫でした。
タスクマネージャでプロセスも殺せるし。
なんで11さんのとこではだめだったのかな?
ちなみにOSはXP Pro(SPとか当ててない)です。
352 :
351:02/10/03 01:59 ID:bNDTSPtv
# 351は元の依頼主の305さんではありません。念のため。
353 :
331:02/10/03 03:36 ID:lTDdwMTD
>313 watcher.exe の(使用の)続きと >332 ファイルのロック
単純にそのファイルがあれば止め、なければ作ってスクリプトが終わる時に削除
と試してみたが、どうも関係ない、一つずつ終わってから次が呼ばれているのかなと。
で、直接、watcher.exe から呼び出さず、watcher.exe から呼ぶのは、
スクリプトを呼ぶスクリプトにすれば、ファイルのロックの効果あり。
多分、これで、watcher.exe から呼び出されなくなってしまう事もなくなり、
うまくいくと思うのだが、、、でなければお手上げ。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=22 WMI は、98やMeではダウンロードしないとならないし、何となく無縁と思っていたら、
Meには最初から入っているのか。慌てて調べ始め、、英語読めないので眺めているだけだけど。
スクリプトから様々なイベントの通知を要求する事ができる、、
(その要求の仕方・どこの何のイベントをどう指定すればいいのかとか、が、、、)
そして、○.nextevent() で待機し受取る、、
でも今の所、例題で試してみても云とも寸とも言わないのだが、、
と思ったら、確かに 11 氏のは暴走する。Query だけでそうなる、
.NET は更に判らない。import や : 、何だろう、、
なにぶん、ファイルの共有ってなんだっけとか、しばらく考えてしまうレベルなので。
MSDN で迷って色々見てたら、こんなのあった、「イベントのスクリプティング」
ttp://www.microsoft.com/japan/msdn/columns/scripting/scripting04092001.asp VBSでは新しい事は何も書いてないと思うが、 JS+HTMLで、:: なんて知らなかった
354 :
331:02/10/03 03:43 ID:lTDdwMTD
XP ではならないと。
305さんは?、お題に使わせもらっただけです
355 :
名無し~3.EXE:02/10/03 11:18 ID:6LFz1Z7L
で、結局WSHに適したエディタってどれ?
356 :
名無し~3.EXE:02/10/03 15:02 ID:P5KaGb0m
357 :
名無し~3.EXE:02/10/03 17:32 ID:AlIxbRN6
358 :
名無し~3.EXE:02/10/03 17:36 ID:xL+22D4K
にゃ
359 :
:02/10/03 18:07 ID:tFV6PnVF
>>355 VBそのものや、OfficeのVBエディタ作成・編集。
コードをTextエディタコピペ・保存。
これ西京。
360 :
:02/10/03 18:09 ID:tFV6PnVF
付け加え
参照設定に使いたいOLEのライブラリファイルを
登録しとけば、メソッド・プロパティ補完もしてくれる。
まぁ、基礎の話だが。
361 :
339:02/10/04 10:07 ID:/KKA8WnK
>>350 レス遅れて申し訳ないです。
試してみましたが、接続可能な共有フォルダを指定しても
フォルダ\\hoge\hogeが見つかりません
接続が可能な状態になったら再試行してください。
と言われてしまいます。
こちらの共有フォルダをローカルパス/ネットワークパスで指定してもダメでした。
もしや、2バイト文字が原因か?と思って、英数字のみのフォルダを指定してみましたが、
やっぱりダメでした。。。
関係なさそうでしたが、一応、環境依存の部分も変えて試してみましたが、ダメ。
逆に、相手がオフラインだとsearcher.vbsでエラーが出てしまいました。
---
行: 19
文字: 1
エラー: パスが見つかりません。
コード: 800A004C
ソース: Microsoft VBScript 実行時エラー
sony_humanResource = HumanResource.new("sony")
sony_finance = Finance.new("sony")
sony_activeField = ActiveField.new("sony")
sony_convention = Convention.new("sony")
sony_participant = Participant.new("sony")
sony_newCommer = NewCommer.new("sony")
sony_oldCommer = OldCommer.new("sony")
sony_purpose = Purpose.new("sony")
のように連続的にオブジクトを作って、出来上がったsony_XXXXってオブジェクトを
グループ化させたいんですが、どのような方法がありますか。
------------------------------------------------------------------------
厨な方法:
store(HumanResource, sony_humanResource)
store(Finance, sony_finance)
store(ActiveField, sony_activeField)
store(Convention, sony_convention)
store(Participant, sony_participant)
store(NewCommer, sony_newCommer)
store(OldCommer, sony_oldCommer)
store(Purpose, sony_purpose)
363 :
362:02/10/04 19:00 ID:8rno8yQ2
すれ違いです。すみません。
>361
すまねっス。思い違いをしていたようだ。
13・14行目をこれに差し替えてください。
sCommonFolder = csCommonFolder
Do Until oFS.FolderExists(sCommonFolder)
365 :
339:02/10/06 00:52 ID:+xvAjjJy
366 :
名無し~3.EXE:02/10/07 01:15 ID:Cil0OTne
今表示してるホームページを
IE右クリックのメニューから
テキスト形式で保存できるスクリプト
キボンヌ…
367 :
ai:02/10/09 03:47 ID:sL2zw+rV
質問があります。
wshからexcelではなく、excelVBAを操作することって出来ますか?
例えば、excel起動していない時に、VBAで【*.xls→*.csv】を行うとか、
特定のブックの特定のRange.valueをクリップボードに送信する、みたいな
処理ってできますか?
その辺りに詳しい方いらっしゃいますか?
>>367 Set oEXCEL = CreateObject("Excel.Application")
とか宣言すれば
Set oBOOK = oEXCEL.WorkBooks.Open(filename)
でfilenameを開いたり、
つまりExcelのオブジェクトがそのまま使えます
369 :
ai:02/10/09 15:56 ID:sL2zw+rV
>>368 いえいえ、excelのオブジェクトとexcelのVBAインタプリタって違いますよね。
excelのブックを開いたら自動的にVBAを実行するようにして、WSHからその
ブックを開くようにすればいいのでしょうけど、直接WSHからVBAのインタープリタ
を操作できないのかなと思いました。
例えば、マクロを記述していないワークブックに対して、WSHからVBAエンジンを
操作して、そのワークブックの内容に変更を加えたりできないのかということ
です。
370 :
ai:02/10/09 16:11 ID:sL2zw+rV
>>368 すみません。私の勘違いでした。
>Excelのオブジェクトがそのまま使えます
Excelのオブジェクトがつけえれば、Windows上からあらゆるメッセージを
遅れるのですね。勉強になりました。
WMI 勉強中、
オブジェクト・ブラウザ?のようなものができる事までは判ったが、
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=23 中身はさっぱりわからない。MSDNを見にいくのもつらい、、、
↑試す場合、Directoryの付くクラスで、[インスタンス]のボタン押すと凍ります。
HTA です。
3日前に戻る >366 デジャブ?
右クリック→ソースを開く、エディタから保存、でだめなのは何故?
前スレにあった、"Microsoft.XMLHTTP" と、"ADODB.Stream"
使った事なかったので、試してみた。(次に)。
ローカルのHTMLから使えるのはいいのだけど、、、
(この場合、既に中身があるのに、また取って来るなんて無駄だが)
と思ってついでに、FileSystemObject も試してみたら何も言わずに動く。
拡張(右クリック)メニューでない場合は、ちゃんとダイアログが出るのだが、
そういうものなのか?、
<script type="text/javascript">
var saveFolder = "C:/ユーザー/机/一時保存/"
// 保存先のフォルダ。既にある所でないとだめ。
var useTitle = 0
// 保存するファイル名にタイトルを使うか
var pW
if(window.external && (pW =external.menuArguments) ) {// IE拡張(右クリック)メニューからなら
var url = pW.location.href
if( ! /[\\\/]$/.test(saveFolder)) saveFolder += '/'
var path = saveFolder.replace(/[\/]/g,'\\')
+ ( useTitle ? pW.title.replace(/["\\*:\/<>?|]/g,
function(c){ return '%'+(c.charCodeAt(0)).toString(16) } )//"
: url.replace(/.+[\/]/,'') )
+'.txt' // ← 更に .txt と付けるなら
var ans = prompt('保存先ファイル名、?', path);
if(ans){ path = ans.replace(/\0.*/,'');
xxxxx(url, path) }/// 有効な保存先のパスかどうかは確認してない
}
function xxxxx(url, path){
var XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP")
XMLHTTP.open( "GET", url, false )
XMLHTTP.send() // 「指定されたリソースは見つかりません」
xmlBody = XMLHTTP.responseBody // 待たなくてもいいの?
var ADODB_Stream = new ActiveXObject("ADODB.Stream")
ADODB_Stream.Type = 1 // binary
ADODB_Stream.Open();
ADODB_Stream.Write(xmlBody);
ADODB_Stream.Savetofile(path, 2); // 1 上書きしない?、 2 上書き?
}
</script>
373 :
名無し~3.EXE:02/10/10 12:02 ID:rfv83ovk
タスクスケジューラからプログラム実行することは可能なれど,
プログラム中からタスクスケジューラに登録されたタスクを実行するのは不可能?
a
wshを利用すれば、
インターネットショートカットのリンク先を修正する作業をコマンドラインで
できますか?
>373
そういう作成・実行するCOM Addinがリソキに入っていたような気がするんだけど、
Scheduler.SchedulingAgentなProgId持つやつ。
持っていないので、なんともいえない。
タスクってセキュリティコンテキストを違うところにできるしね。自動に作成・実行できたら穴なんじゃないかな。
>375
できますよん。説明するのが面倒なので、
mk:@MSITStore:C:\Program%20Files\Microsoft%20Windows%20Script\ScriptDocs\Script56.CHM::/html/wsmthcreateshortcut.htm
をみてね。
377 :
373:02/10/11 09:03 ID:4r94Tb6C
>>376ども。
確かに実行できたら穴です(w
しかし諸事情で,Admin権限でしか動かないスクリプトを制限ユーザが動かす必要が出てきました。
しかもフリーソフトは使わずに軽作業で…。
更に,ユーザの好きな時に実行できる必要があります。
1つ考えたのは,タスクスケジューラでログオン時実行にして常駐させ,普段は隠しておく,
なんてのですが,何か他に画期的な方法はないものか。。
378 :
373:02/10/11 09:05 ID:4r94Tb6C
ちなみに,タスクとパスワード設定は管理者権限で作成するので,問題はないです。
VBA見たくF1押すだけでヘルプ起動し、キーワード入れてくれたら名ァ……
380 :
379:02/10/11 12:40 ID:qUec8PhK
あ、例えば、オブジェクトブラウザで参照設定した後、各オブジェクトを閲覧
しているときにF1押したら、ヘルプで検索してくれる機能(VBAなど)も
Wscriptで出来たら名ァ……
381 :
名無し~3.EXE:02/10/11 14:25 ID:Ihh3hJW+
テキストファイルから
正規表現 [a-zA-Z0-9\._-]*\@[a-zA-Z0-9\._-]*
にマッチした単語だけ抜き出してテキストファイルに書き出す
スクリプトありませんか
つーかその正規表現ならfor-nextでなんとかなるだろう。
>377
そういうことならユーザ偽装かなぁ。スクリプト実行時だけユーザを変えるってやつ。
ASPのサンプルがMSDNにあったと思ったんだけど、今見たらASP.NET版にリニューアルしてしまって使えん。
ADSIでADsを操作してユーザ変更してCACLS.EXEをEcho付で実行して権限取得みたいなの。
具体的にはうろ覚えにて説明できん。すまん。
>379
こっちはCHMヘルプクンで実現してますよ。
>380
こっちはWSH補完クンがズバリそのものなんだけど…、680さんお願い。オブジェクトツリーでのフィルターたのんます。ダメ?
リンクは
>>85参照のこと。
>381
smtp.freeserve.ne.jpみたいなボトルメールがやりたいの?
Adultサイト巡ってもいないのにアワビを大量にお届けされちゃったりしてあんま幸せな思い出がないんだよなー。アレ。
逆にSPAM元のアドレス大量にもってFrom:・To:・X-Mailer:・Reply-ToをAnd:一致でメールボックスから削除するスクリプトきぼーんしたいほど。