C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: WordとExcelのユーザ操作によるファイルクローズを禁止


(過去ログ 25 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■11461 / inTopicNo.1)  WordとExcelのユーザ操作によるファイルクローズを禁止
  
□投稿者/ まぐねしうむ (4回)-(2007/12/14(Fri) 10:50:29)

分類:[C#] 

開発環境:VS2005
Office :Office2000以降を想定
OS   :Windows2000以降を想定

Word及びExcelのアプリケーションを閉じる[X]は
http://www.atmarkit.co.jp/fdotnet/dotnettips/142closebtn/closebtn.html
等を参考にしてRemoveMenu、DrawMenuBar等で無効化できました。

ファイル(F) => 開く(O)
        => 閉じる(C)
        => 終了(X)
及び

画面右上のウインドウを閉じるを無効にするには?
どうすればよいのでしょうか?
(ユーザによるBookとDocumentのCloseを禁止したい。)

FinerSystemDevと言うツールで、ハンドル、クラス名、キャプションは取れるので
APIを使えば無効化の操作が出来ると思うのですが可能なのでしょうか?

可能であればヒントを頂けないでしょうか?
よろしくお願いします。
引用返信 編集キー/
■11463 / inTopicNo.2)  Re[1]: WordとExcelのユーザ操作によるファイルクローズを禁止
□投稿者/ 魔界の仮面弁士 (549回)-(2007/12/14(Fri) 11:17:27)
No11461 (まぐねしうむ さん) に返信
> (ユーザによるBookとDocumentのCloseを禁止したい。)

Excel.Application の WorkbookBeforeClose イベント
 Word.Application の DocumentBeforeClose イベント

をハンドルし、Cancel = true されてみては如何でしょうか。

引用返信 編集キー/
■11464 / inTopicNo.3)  Re[2]: WordとExcelのユーザ操作によるファイルクローズを禁止
□投稿者/ 774RR (85回)-(2007/12/14(Fri) 11:20:59)
なんかスッゲーうざそうな気がする
シャットダウンのときとか、どうするつもりなんだろう
引用返信 編集キー/
■11465 / inTopicNo.4)  Re[3]: WordとExcelのユーザ操作によるファイルクローズを禁止
□投稿者/ 特攻隊長まるるう (104回)-(2007/12/14(Fri) 11:29:51)
2007/12/14(Fri) 11:33:39 編集(投稿者)

No11464 (774RR さん) に返信
方法としては、魔界の仮面弁士 さんので良いと思いますが、追加情報。

魔界の仮面弁士 さんの方法では[ファイルを開く]の操作は禁止できないと思うので、
メニューの操作が必要なら、以下のリンク先のコードを参考にしてみてください。
[Excel VBA]です。適時、読み替えてください。
メニューの操作については Excel の CommandBars オブジェクトを操作することでできます。
http://homepage1.nifty.com/MADIA/vb/vb_bbs/200512/200512_05120073.html

前のスレッドでも指摘を受けてないようなので、一応書いておきます。
[.NET]以降、Excel のプロセスが残るという問題が発生していますが、
対策してますか?
http://jeanne.wankuma.com/tips/programing/releasecom.html
# 花ちゃんのサイトのリンクが貼れない(;;

>なんかスッゲーうざそうな気がする
>シャットダウンのときとか、どうするつもりなんだろう
確かにw
まあ、プログラムを終了できないとかいうメッセージが表示されたり、何らかの
エラーがでる可能性は高いですね(^^;
ただ、処理中はシャットダウンしないで欲しいという場合もありますし。。。

引用返信 編集キー/
■11472 / inTopicNo.5)  Re[4]: WordとExcelのユーザ操作によるファイルクローズを禁止
□投稿者/ まぐねしうむ (6回)-(2007/12/14(Fri) 14:55:55)
参考にしたHP
http://support.microsoft.com/kb/302815/ja
http://support.microsoft.com/kb/824022/ja

◆Excel(こっちはOK)
static Microsoft.Office.Interop.Excel.AppEvents_WorkbookBeforeCloseEventHandler EventDel_BeforeBookClose;

  //Bookを閉じるのを禁止
  EventDel_BeforeBookClose = new Microsoft.Office.Interop.Excel.AppEvents_WorkbookBeforeCloseEventHandler(BeforeBookClose);
  xlApp.WorkbookBeforeClose += EventDel_BeforeBookClose;

  //Bookを閉じるのを許可
  xlApp.WorkbookBeforeClose -= EventDel_BeforeBookClose;
    
  /// <summary>
   /// BookのCloseを禁止する
    /// </summary>
    private static void BeforeBookClose(Microsoft.Office.Interop.Excel.Workbook Wb, ref bool Cancel)
    {
        Cancel = true;
    }

◆Word(これだと動く、ただEvents4では無くEvents2にしたい)
static Microsoft.Office.Interop.Word.ApplicationEvents4_DocumentBeforeCloseEventHandler EventDel_BeforeDocumentClose;

  //Documentを閉じるのを禁止
    EventDel_BeforeDocumentClose = new ApplicationEvents4_DocumentBeforeCloseEventHandler(BeforeDocumentClose);
    wdApp.DocumentBeforeClose += EventDel_BeforeDocumentClose;

  //Documentを閉じるのを許可
  wdApp.DocumentBeforeClose -= EventDel_BeforeDocumentClose;

    /// <summary>
    /// DocumentのCloseを禁止する
    /// </summary>
    private static void BeforeDocumentClose(Microsoft.Office.Interop.Word.Document Do, ref bool Cancel)
    {
        Cancel = true;
    }

ApplicationEvents4_DocumentBeforeCloseEventHandlerを使うと動きますが
ApplicationEvents2_DocumentBeforeCloseEventHandlerだと「BeforeDocumentClose」の型が
自動的にEvents4になってしまいErrになります。
「BeforeDocumentClose」をApplicationEvents2_DocumentBeforeCloseEventHandlerの型にするにはどうすれば良いでしょうか?
Office2000以降を想定しているためEvents2を使用する必要があります。

表示されるErr
型 'Microsoft.Office.Interop.Word.ApplicationEvents2_DocumentBeforeCloseEventHandler' を
型 'Microsoft.Office.Interop.Word.ApplicationEvents4_DocumentBeforeCloseEventHandler' に暗黙的に変換できません。


> [.NET]以降、Excel のプロセスが残るという問題が発生していますが、
> 対策してますか?
Excel,Word共に開放漏れが無い事を確認しております。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -