2010年11月29日月曜日

リソース 3 分ハッキング - "印刷中" ダイアログ抑止編

最近 レポート印刷時の "印刷中" ダイアログを抑止する方法という記事を書きました。
記事の概要に書いているように、その記事は某 SNS での回答を元にしています。で、記事ではダイアログ フックによる方法を説明していますが、元スレでは当初、別の方法も提案していました。そちらは汎用性に欠けるので記事には載せませんでしたが、せっかくなのでこのブログの方で取り上げることにします。

"印刷中" ダイアログ自体は、リソース ファイルの中に収録されています。したがって、リソース ファイルを編集してしまえば、表示させないようにするのは簡単です。
もちろん、リソースを書き換えてしまうという方法の是非というのは別途検討されるべきで、これが是とされる状況はあんまり無いだろうなとは思います。ですが、たとえば私の個人環境なんかは使い勝手が増すなら何でも OK なので、そういう一部ユーザにとっては有効かもしれません。

さて、Access の日本語リソース ファイルは通常、下記にあります (Access 2003 の場合です)。

C:\Program Files\Microsoft Office\OFFICE11\1041\MSAIN.DLL

リソース エディタは何を使っても構いません。適当に検索してみてください。
今回は、Resource Hacker を使います。
Resource Hacker は更新が止まっていて古い仕様にしか対応していないので、DLL によっては使っちゃいけませんが、Access のリソースファイルはオーソドックスな機能しか使っていない (っぽい) ので、これでじゅうぶんです。個人的に GUI 慣れしているので、気が楽というのもあります。

さて、MSAIN.DLL をリソース エディタで開き、Dialog/5021/1041 を選択します。



スタイルに「WS_VISIBLE」の指定があるので、これを削除してコンパイルし DLL を上書き保存します (もちろん事前バックアップを忘れずに!)。
これだけです。
リソースを改造した端末では、レポートを印刷しても "印刷中" ダイアログはいっさい出ません。プログラミングも不要です。ファイルも問いません。

リソース魔改造は、作業が手軽な割にはダイアログの外観などを大きく変更できて達成感があるので、わりとお得なカスタマイズといえます。

もちろん、自己責任でどうぞ。

5 件のコメント:

  1. リソース編集ですか。そういえば、昔、あるアプリの入力枠を広げたくて、やったことがありました。
    ある意味、究極のカスタマイズですね。

    ところで、タイトル下の
    YU-TANG's MS-Access Discovery
    のリンク先が、このブログになってますが、、、

    デスカバに跳ぼうとクリックして戻ってきてしまうので、
    あれっ! てなります。

    返信削除
  2. > YU-TANG's MS-Access Discovery
    > のリンク先が、このブログになってますが、、、

    ありゃホントだ。
    直しました。^^;
    ご指摘ありがとうございます。

    返信削除
  3. はじめまして、「非表示にする」検索でここに行き着いて、興味深く読ませていただきました。ものすごく勉強になりました。

    「使い勝手が命!」という趣旨に大いに共感です。Excelの(Accessは使ったことがないんですが...)印刷中ダイアログには以前から辟易していたので、これは!と思い、Excelでも同じようにできないかな、と、リソース編集に挑戦してみました。

    とりあえず、Office11\1041 にある.dll をエディタで片っ端から開いてみたのですが...それらしきダイアログはみつからず... Dialog\30722\1041 かな?と思ったのですが違いますよね。

    Excelではムリなのでしょうか...

    返信削除
  4. うわ一ヶ月前…。
    ちょっと別件で忙しくしていて、放置になって申し訳ないです。
    後で調べてみます。もう解決していたらいいのですが…。

    返信削除
  5. ちょっと見た感じでは、Excel 用のリソースファイルは見当たらないですね。あんまり深く探してないので、断言できませんが、自分は Excel に詳しくないので、専門のフォーラムとかで訊くと一発回答なのかもしれません。

    返信削除