- ベストアンサー
Access2007 フォーム上データのコピー禁止
- Access2007において、フォーム上のデータをコピー禁止する方法について質問です。
- 具体的には、[CTRL]+[C]の禁止と右クリックメニューのコピー禁止ができるかどうか知りたいです。
- さらに、既定の右クリックメニューでコピーだけを外す方法や、カスタムメニューの作成についても教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Access2007は持ち合わせておりませんので、別のアプローチを http://www.loadsystem.net/api/lsapi15.txt こちらを利用して、マウスボタンクリック時とキークリック時イベントに ClearClipBord_Data としてはどうでしょう? フォームのプロパティの『キーボードイベント取得』は、はいにしておいて。 ユーザーが何かする度に空にしてしまう・・(^^ゞ Sub ClearClipBord_Data() If OpenClipboard(0) Then EmptyClipboard CloseClipboard End If End Sub ※APIに関して私は全くの門外漢ですので、質問には答えられませぬ。 Win XP & Access2002 にて検証。
その他の回答 (2)
- nicotinism
- ベストアンサー率70% (1019/1452)
失礼しました。コントロール上ではフォームのマウスクリック時イベントは発生しませんね・・ となると、フォームのマウスボタン移動時かな?
- nicotinism
- ベストアンサー率70% (1019/1452)
こちらの環境では問題なく動きましたけど? 新規MDBの標準モジュールの内容です。 試しに、Windows XP でAccess2010のMDBとACCDBでも大丈夫でしたよ。 Option Compare Database Option Explicit Declare Function OpenClipboard Lib "User32" (ByVal hWnd As Long) As Long Declare Function CloseClipboard Lib "User32" () As Long Declare Function EmptyClipboard Lib "User32" () As Long Sub c1() If OpenClipboard(0) Then Call EmptyClipboard Call CloseClipboard End If End Sub
補足
nicotinismさん ありがとうございます。 再度、行ってみたら通りました。 これにより、プリントスクリーンという大物が使用不可になり、喜んでおりますが、右クリックによるコピーがなぜか生きたまま、ということはクリップボードのデータがクリアされていない、という状況です。 マウスクリックを、クリック時、移動時、解放時の全てでプロシージャーを呼び出したのですが、クリアされないんです。 何か設定が悪いのかもしれないので、もう少し見てみます。 大変勉強になりました。 ありがとうございました。
お礼
nicotinismさん。 ありがとうございます。 以前、プリントスクリーンを防止する際に考えたことがありましたが、その時は具体的にどうやるのかわからずにあきらめてしまいました。 簡単にできるんですね。やってみますね。
補足
nicotinismさん。 もしおわかりになればと思いましてお尋ねいたします。 標準モジュールに、教えていただいたサブモジュールを設定したのですが、 OpenClipboard EmptyClipboard CloseClipboard がいずれも「定義されていません」とエラーになってしまいます。 リンクされていた場所にあった、以下の記述をとってきて Declare Function OpenClipboard Lib "User32" (ByVal hWnd As Long) As Long Declare Function CloseClipboard Lib "User32" () As Long Declare Function EmptyClipboard Lib "User32" () As Long を別途定義したのですが、OpneClipboardはそれで通ったのですが、EmptyClipboard、CloseClipboardはやはり定義されていないとでてしまいます。 この辺の知識が未熟で、不勉強なためよくわかっておらず、ネットで検索してもいまひとつわかりません。 何かアドバイスがありましたらお願いします。(こういうことを勉強しなさいみたいなことでもかまいません)