めも

パスワードを思い出したので、メモ再開

複数のMS-WordのドキュメントをPDFへ変換する

結論としては、pdfにしてからまとめればいいことにする。
まとめるのはスクリプトじゃできないから、個々にpdf化するスクリプトに変更した。
PDFにするのに変更履歴とかコメントが不要だったので、それも潰した。

本当は結合までしたかったけど、VBScriptでのやり方が分からない。
iTextSharpとpowershell使えばできるんだが、、、COMじゃないとVBSから呼べないし。
結局、pdfをまとめるのは、CubePDF Pageを使った。
自動化したかったらPDFtkを使えばいいし。

Option Explicit

' 検索対象ファイル拡張子
Dim targetFileExp
targetFileExp = Array("doc", "docx")

Dim objFso
Set objFso = CreateObject("Scripting.FileSystemObject")

Dim objWord
Set objWord = CreateObject("Word.Application")

Dim objDoc
Dim objView
Dim strInFile
Dim strOutFile

' 一応見せておく
objWord.Visible = True

' カレントディレクトリのファイルリストから抽出する
Dim exp
Dim file

For Each exp in targetFileExp
    For Each file In objFso.GetFolder("./").Files
        if UCase(objFso.GetExtensionName(file)) = UCase(exp) Then
            strInFile = file.path
            strOutFile = objFso.BuildPath( file.ParentFolder , objFso.GetBaseName(file.Name) & ".pdf" )

            WScript.Echo "PDF変換:" & file.Name

            Set objDoc = objWord.Documents.Open(strInFile)
            If Err.Number = 0 Then
                ' 変更履歴マージ
                objDoc.Revisions.AcceptAll
                ' 変更履歴オフ
                Set objView = objWord.ActiveDocument.ActiveWindow.View 
                objView.RevisionsView = 0               ' 0:wdRevisionsViewFinal
                objView.ShowRevisionsAndComments = False

                'PDF形式で保存
                objDoc.SaveAs2 strOutFile, 17           ' 17:PDF
                objDoc.Close
            Else
                WScript.Echo "エラー:" & Err.Description
            end if
        End If
    Next
Next

objWord.Quit

set objFso = Nothing
set objDoc = Nothing
set objWord = Nothing

MsgBox "終了"

はてな記法シンタックスハイライトにVBScriptが無いので、vbで表示

複数のMS-Wordのドキュメントを1つにまとめる

たくさんあるMS-Wordのドキュメントを1つにまとめたくてスクリプト作ってみた。
でもいまいちだな。
セクション単位で追加してるけど、印刷設定は元のドキュメントを引き継いでくれないから、
常に先頭の印刷書式に依存してしまう。
全部同じなら使えそうなので、一応メモしておく。
(エラーとはか考えてない)

Option Explicit

' 検索対象ファイル拡張子
Dim targetFileExp
targetFileExp = Array("doc", "docx")

Dim objFso
Set objFso = CreateObject("Scripting.FileSystemObject")

Dim objWord
Set objWord = CreateObject("Word.Application")

Dim objNewDoc
Dim strInFile
Dim strOutFile

dim objSelection

' 一応見せておく
objWord.Visible = True

' カレントディレクトリのファイルリストから抽出する
Dim exp
Dim file

For Each exp in targetFileExp
    For Each file In objFso.GetFolder("./").Files
        if UCase(objFso.GetExtensionName(file)) = UCase(exp) Then
            strInFile = file.path
            If strOutFile = "" Then
                ' 親フォルダ名を結合ファイル名に
                strOutFile = objFso.BuildPath( file.ParentFolder , objFso.GetFileName(file.Name) & "_ALL." & objFso.GetExtensionName(file) )
                WScript.Echo "doc結合:" & strOutFile
                'Set objNewDoc = objWord.Documents.Add                      ' 新規の場合はこっち
                Set objNewDoc = objWord.Documents.Open(strInFile)           ' 先頭の書式に合わせる場合はこっち
                Set objSelection = objWord.Selection
            Else
                WScript.Echo "  +:" & file.Name

                objSelection.InsertFile(strInFile)
                objSelection.InsertParagraphAfter
                objSelection.InsertBreak(2)             ' 2:wdSectionBreakNextPage
                objSelection.Collapse(0)
            End if

        End If
    Next
Next

objSelection.WholeStory() 
objSelection.Fields.Update()

objNewDoc.SaveAs2 strOutFile
objNewDoc.Close

objWord.Quit

set objFso = Nothing
set objNewDoc = Nothing
set objWord = Nothing

MsgBox "終了"

はてな記法シンタックスハイライトにVBScriptが無いので、vbで表示

SSPIを使ったSSL/TSLのソース

www.geocities.jp

nPOPukSSPIj、nPOPukのクライアント証明書のサポートしたやつ。
ジオシティーズのせいで消滅しちゃうサイト。
消える前にソースのダウンロードした方がいいやつ。

SSPIってなんであんなに面倒なインタフェースなんだろうか。

自マシン内のTCP通信を解析

ローカルでWebAPIを開発時に、クライアントからHTTPのbody部などがちゃんとセットされてるか確認したかった。
Wiresharkだと、ループバックアドレスなど自マシン内の通信は見れない。

RawCapだとちゃんと見れる、便利。(要.Net2.0)

RawCap - A raw socket sniffer for Windows
https://www.netresec.com/index.ashx?page=RawCap

採取したログはWiresharkで見れる。
やっぱりWiresharkは必要。

RawSocketでも使ってるのかな。