2012年04月03日

JSで自動メール印刷2

seesaa UI変わりすぎてよくわからんw

「JSで自動メール印刷」で課題のあったExecWB( 6, 2 )ですが、
本来はExecWB( 6, 2, 3 )とすれば完了待ちできるのですが、
この第3引数は、VARIANT of type VT_I2らしく
要するに2byte整数を保持するVARIANTを渡さないといけないらしいです。
これはJScriptでは無理っぽいです。

そこで、C++BuilderXE2でやってみました。
//---------------------------------------------------------------------------
//! IEで印刷
/*!
    @param[in] fname
*/
void __fastcall TFormMain::PrintIE( UnicodeString fname )
{
    Variant ie  = Unassigned;

    try {
        //LogOut("IE起動...");
        ie = Variant::CreateObject("InternetExplorer.Application");
        ie.OlePropertySet("Visible", false);
        //LogOut("IE起動...OK");

        // ページロード
        //LogOut("ページロード..." + fname);
        ie.OleProcedure("Navigate", WideString(fname) );
        if( IeBusyWait(ie, 60) == false ) {
            throw new Exception( UnicodeString().sprintf(L"ie.Navigate() TimeOut(%s)", fname) );
        }
        //LogOut("ページロード...OK");

        // 印刷(ブロッキング)
        //LogOut("印刷...");
        ie.OleProcedure("ExecWB", OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, (short)3 );
        //LogOut("印刷...OK");
    }
    __finally {
        if( VarIsEmpty(ie) != true ) ie.OleProcedure("Quit");
        ie = Unassigned;
    }
}
たしかにコレなら待ってくれますね。。。
全ソースはコチラ
PrintAppSrc.7z


posted by sanahi at 22:04| 滋賀 ☀| Comment(0) | TrackBack(0) | RadStudio | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。