『巡回』に命令を追加したいNo.00273
やすひさ さん 00/04/12 22:12
 
 こんにちは。やすひさです。

〜@niftyの会議室巡回(Nif.hsc)について〜
 各会議室で『MRE』(未読を読む)をされていますが、
 その後に『RC D』(会議室に来たときの既読数に戻す)を実行したいです。

 そのためにはスクリプトのどこに何を追加すればいいのでしょうか。

〜秀ネットの会議室巡回(HideNet.hsc)について〜
 また、秀ネットで上記と同じ事をするにはどうすればいいのでしょうか。
#『RC SHOW』で現在の未読位置を知ることができるのはわかりましたが...


 恐れ入りますが、教えて頂けないでしょうか。

PS.
 普段はメインのPCで巡回しています。
 でも、たまに違うPCで巡回したいときがあるのですが、
 メインのPCには違うPCで読んだ発言も取り込みたいので、
 このような事をお尋ねしました。

[ ]
RE:00273 『巡回』に命令を追加したいNo.00274
秀まるお さん 00/04/13 10:25
 
>  その後に『RC D』(会議室に来たときの既読数に戻す)を実行したいです。

 MREコマンドを送っている場所は、NIF.HSCの1172行目付近です。

 こんな風になってます。

        send "MRE ROOM:" + #room + "^M"
        wait postidle(1) "^M^J>"

 それを、

        send "MRE ROOM:" + #room + "^M"
        wait postidle(1) "^M^J>"
        send "RC D^M"
        wait postidle(1) "^M^J>"

 っとすれば、たぶんうまくいくと思います。(RC Dコマンドを知らないのでなんで
すが…)

>  また、秀ネットで上記と同じ事をするにはどうすればいいのでしょうか。

 秀ネットにはRC Dコマンドに相当するコマンドが残念ながらありません。しいてや
るとすれば、各会議室ごとの未読数を何らかの方法で記憶して、Aコマンド実行後に
各会議室ごとに「R -n」(nは未読数)コマンドで未読ポインターを元に戻すやり方
になると思います。

 って訳で、さっそくそのようなスクリプトを作ってみました。

 まずは、以下のサブルーチンをhidenet.hscの最後付近にでも入れておきます。

GetPointers:
    readbuffer 3, #line
    @@CouncilCount = value(part(#line, 0, 1))
    if( @@CouncilCount == 0 )
        return;
    endif
    ##i = 3
    ##iCouncil = @@CouncilCount;
    while( ##iCouncil > 0 )
        readbuffer ##i, #line
        @@UnreadCount[##iCouncil] = value(part(#line, 11, 5))
        ##i = ##i + 1
        ##iCouncil = ##iCouncil - 1
    endwhile
return

RestorePointers:
    ##iCouncil = 1
    while( ##iCouncil <= @@CouncilCount )
        if( @@UnreadCount[##iCouncil] != 0 )
            send ##iCouncil + "^M"
            wait ">"
            send "R -" + @@UnreadCount[##iCouncil] + "^M"
            wait ">"
            send "E^M"
            wait ">"
        endif
        ##iCouncil = ##iCouncil + 1
    endwhile
return

 んでもって、hidenet.hscの100行目付近に

        send "A^M"
        wait postidle(1) "^M^J>"

 って処理があるんですが、ここを、

        wait postidle(1) "^M^J>"
        call GetPointers
        send "A^M"
        wait postidle(1) "^M^J>"
        call RestorePointers

 に変更すれば、未読ポインターを元に戻してくれます。

 お試しください。


[ ]
RE:00273 『巡回』に命令を追加したいNo.00275
江袋文人 さん 00/04/13 10:38
 
やすひささん、こんにちは。

>  普段はメインのPCで巡回しています。
>  でも、たまに違うPCで巡回したいときがあるのですが、
>  メインのPCには違うPCで読んだ発言も取り込みたいので、

僕も自宅、職場、別々のPCでパソ通することがありまして、僕の場合は
スクリプトを変更せず、次のようにしています。

(1) 職場のPC(メインで使う)で「@nifty」「@nifty自宅」という2つ
  のホストを作成。このとき、プロパティの違いは
  - 名前
  (前者は"@nifty"、後者は"@nifty自宅")
  - 使用するストックファイル
  (前者は"@nifty.stk"、後者は"@nifty自宅.stk")
  だけで、あとは同じにする。そして、職場では「@nifty」でパソ通
  する。

(2) 自宅のPC(たまに使う)では「@nifty自宅」というホストを作成。
  そして、自宅では「@nifty自宅」でパソ通する。

(ここからがミソ)

(3) 自宅でパソ通したときは、ストックファイル
  "C:\Program Files\HideTerm\@nifty自宅.stk"
  をFDに(大きい場合は圧縮して)コピーし、職場に持っていく。

(4) 職場のメインPCで、FDからストックファイルを
  "C:\Program Files\HideTerm\@nifty自宅.stk"
  に復元し、秀タームを起動する。

(5) 全体図には

| +-@nifty.stk
| +-@nifty自宅.stk

  といったツリーが見えると思うので、
  +-@nifty自宅.stk
  の "+"の部分をクリックすると

| +-@nifty.stk
| |
| --@nifty自宅.stk
|  |
|  +-4月2日〜(2回)

  のように展開される。そこで
   +-4月2日〜(2回)
    ~~~~~~
  の日付をクリックすると反転表示となるので、すかさず「Ctrl+C」
  でコピー。

  そして、今度は
  +-@nifty.stk
  の "+"の部分をクリックし、

| --@nifty自宅.stk
| | |
| | +-4月2日〜(2回)
| |
| --@nifty.stk
|  |
|  +-4月1日〜(5回)

  と展開したら、「@nifty.stk」の部分が反転表示されると思うので、
  その状態で「Ctrl+V」を押すと、自宅でパソ通した情報が職場のPC
  の「全体図」に取り込まれる。

ちょっと分かりづらかもしれませんが、僕はこのような方法で、別のPC
でアクセスした情報をメインのPCで使用しています。

通信費も節約できていいと思うのですが、いかがでしょうか。

[ ]
RE:00274 『巡回』に命令を追加したいNo.00279
やすひさ さん 00/05/09 07:10
 
 秀まるおさん、情報ありがとうございました。

>         send "MRE ROOM:" + #room + "^M"
>         wait postidle(1) "^M^J>"
>         send "RC D^M"
>         wait postidle(1) "^M^J>"
>
>  っとすれば、たぶんうまくいくと思います。(RC Dコマンドを知らないのでなんで
> すが…)

 上記だと、会議室の外から未読を読むようになっていますので、
 上手くいきませんでした。で、下記の様に改造しました。
#未読のある会議室に一旦入って『MRE』(未読を読む)をし、
#『RC D』の後、会議室を出るようにしています。

        send "MES " + #room + "^M"
        wait postidle(1) "^M^J>"
        send "MRE^M"
        wait postidle(1) "^M^J>"
        send "RC D^M"
        wait postidle(1) "^M^J>"
        send "E^M"
        wait postidle(1) "^M^J>"

 また、パティオについても同様に修正してみました。

 980行目辺りの
        send "MRE^M"
        timeout 0
        wait postmilliidle(500) "^M^J>"
 を、
        send "1^M"
        wait postmilliidle(500) "PATIO(N)>"
        send "MRE^M"
        timeout 0
        wait postmilliidle(500) "PATIO(N)>"
        send "RC D^M"
        wait postmilliidle(500) "PATIO(N)>"
        send "E^M"
        wait postmilliidle(500) "^M^J>"
 としました。


>  秀ネットにはRC Dコマンドに相当するコマンドが残念ながらありません。
>  って訳で、さっそくそのようなスクリプトを作ってみました。

 ありがとうございました。思ったような動作をするようになりました。

[ ]
RE:00275 『巡回』に命令を追加したいNo.00280
やすひさ さん 00/05/09 07:10
 
 江袋文人さん、そんな方法があったんですね。情報ありがとうございます。

 今のところ#00273、#00274、そして前発言の方法でやっていきます。
 ただし...

> 通信費も節約できていいと思うのですが、いかがでしょうか。
 この方法は会社のLAN経由telnet接続でのみ利用しています。(^^;

[ ]