|
こんにちは。じぇいじぇいです。
ちらほら見かける例ですが、私もファイルサーバに「ホームディ
レクトリ」を置いて、ほかのパソコンから鶴亀で参照させていま
す。ただ、同時に別々のマシンから鶴亀で参照するとホームディ
レクトリの内容に不具合が出てしまう可能性があるので、下記の
ようなスクリプトをWSH(VBS)で書いて使っています。
やっているのはホームディレクトリにlock.txtというロックファ
イルを作ってから鶴亀を起動し、鶴亀が終了したらロックファイ
ルを消すというだけの処理です。鶴亀を起動する際にロックファ
イルがあるのを見つけると(=ほかのパソコンで鶴亀が立ち上がっ
ているということなので)「強制的に起動するかどうか」聞いて
きます。ロックファイルの中に書いたマシン名と起動時間も表示
してくれるので、遠隔操作で対処するときもやりやすいです。
まあ、こんな感じのことをやっているのですが、こんな適当な処
理でもかまわないので…鶴亀側で実装されることは検討できない
でしょうか。あと「このスクリプトはここを直せばもっとのびる」
というようなお話があればお聞かせいただけると幸いです。VBS
でスクリプトを書くのは初めてなので。
ちなみに、このやり方だと休止状態のときには別途「鶴亀を終了
させて休止状態に入る」スクリプトを書かなければならなかった
りしますが…。鶴亀本体が対応してくれたら「休止状態のときに
はホームディレクトリの占有状況を解除する(現状をすべて書き
出す。復帰時には再読み込みする)」ようなこともできるんじゃ
ないかと淡い期待をもっていたります。
========= ロックファイルを作って鶴亀起動する.vbs
Option Explicit
Dim WShell, FS, oEnv,_
sProg, sArgs, sDocDir, sDocOpt, sMacName,_
iRet,_
fsDocDir, fsLock, tsLock, sCont,_
exeTurukame
Set WShell = WScript.CreateObject( "WScript.Shell" )
Set FS = WScript.CreateObject( "Scripting.FileSystemObject" )
' ----- 鶴亀のパスを取得する(半自動)
Set oEnv = WShell.Environment( "process" )
sProg = oEnv.Item( "PROGRAMFILES" ) + "\turukame\turukame.exe"
'Windows 9x系で動作するかどうかは不明
sMacName = oEnv.Item( "COMPUTERNAME" )
' ----- 引数
Set sArgs = WScript.Arguments
sDocDir = ""
sDocOpt = ""
if sArgs.Count > 0 then
sDocDir = sArgs( 0 )
sDocOpt = " /d """ +_
sDocDir +_
""""
If not FS.FolderExists( sDocDir ) then
MsgBox "指定フォルダ: " + sDocDir + "がありません"
WScript.Quit 1
End If
If FS.FileExists( sDocDir + "\lock.txt" ) then
Set fsLock = FS.GetFile( sDocDir + "\lock.txt" )
Set tsLock = fsLock.OpenAsTextStream( 1 )
On Error Resume Next
sCont = tsLock.ReadLine + vbcrlf
On Error Resume Next
sCont = sCont + tsLock.ReadLine
tsLock.Close
iRet = MsgBox( _
"すでに鶴亀が起動しています。" + vbcrlf +_
"強制起動しますか?" + vbcrlf +_
sCont,_
vbYesNo + vbExclamation _
)
If iRet = vbNo Then
WScript.Quit 1
Else
On Error Resume Next
FS.DeleteFile sDocDir + "\lock.txt"
End If
End If
Set fsLock = FS.CreateTextFile( sDocDir + "\lock.txt" )
fsLock.WriteLine sMacName
fsLock.WriteLine Now
fsLock.Close
End If
' ----- アプリケーションを起動
'終了まで待機
Set exeTurukame = WShell.Exec( """" + sProg + """" + sDocOpt )
While exeTurukame.Status = 0
WScript.Sleep 100
Wend
' ----- ロックファイル削除
On Error Resume Next
FS.DeleteFile sDocDir + "\lock.txt"
If Err Then
MsgBox "ロックファイルが削除できませんでした"
End If
========= 鶴亀を終了させて休止状態へ.vbs
Dim WShell
Set WShell = WScript.CreateObject("WScript.Shell")
' ----- アプリケーションを終了
WShell.AppActivate("鶴亀メール")
WShell.Sendkeys("%{F4}")
' ----- 休止状態
WShell.RegWrite _
"HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shutdown Setting", _
64 ,"REG_DWORD"
' 一部環境でうまく動かず
WShell.SendKeys "^{ESC}U{ENTER}"
|
|