- ベストアンサー
PrintScreenキーを無効にしたい
PrintScreenキーを無効にしたくて、いろいろネット検索して 調べたのですが、うまく動作する方法が見つかりません。 ちなみに、シェアウェアソフトを使用する、という方法は使えません。 よろしくお願いいたします。 ちなみに、下記が試してみて、ダメだったスクリプトです。 *********************************** <script language="JavaScript1.2"> Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp If e.KeyCode = Keys.PrintScreen Then MessageBox.Show("PrintScreen_KeyUp") Clipboard.SetDataObject("PrintScreenは無効です", True) End If End Sub </script> ************************************************ <script type=”text/javascript”> <!-- setInterval(’ClearClipBord()’,100); function ClearClipBord() { window.clipboardData.setData(’Text’,’’); } //--> </script> *********************************************
- hirocchitokyo
- お礼率50% (13/26)
- JavaScript
- 回答数5
- ありがとう数5
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
setInterval('ClearClipBord()' ,100); function ClearClipBord() { window.clipboardData.setData('Text',''); } No.2で回答したものです。 自分の開発したシステムでは、↑これとまったく同じ記述を用いている部分があり、これでコピーとプリントスクリーンはとりあえず阻止できています。
その他の回答 (4)
IE限定ですが・・・ ご存知かもしれませんが、完全に抑止することはできません。 ローカルのキャッシュファイルを見ればどんなことも無意味ですからね・・・。 でも、苦し紛れの一手としては有効でしょう。
お礼
今ちょうど、すぐに試せる環境じゃないのですが、明日試してみます! ありがとうございます! ちなみに、IE限定であるのは問題ないです。 前画面で、「IE以外は先に進めない。強制排除」という、嫌がらせのような面倒なプログラムを組んでますので^^;
補足
リンク先をしっかり見てみたのですが、 「<a href="javascript:clrCB()">Clear clipboard data</a>」 となっている、ということは、「Clear clipboard data」とクリックしないと、データが消えないということでしょうか。 何もしなくて、プリントスクリーンができないようにしたいのですが・・・、物分りが悪くて申し訳ないです。 よろしくお願いいたします。
- yambejp
- ベストアンサー率51% (3827/7415)
難しいですね アプリケーションがアクティブなら別ですが 非アクティブになってしまえば、ブラウザから windowsを制御することはできませんので
お礼
非アクティブで制御できなくなってしまっても構いません。 完全に防ぐのは無理だとはわかっていますので・・・。 でも、できるだけ、抑制したいので、方法があるのでしたら、よろしくお願いいたします。
- NYOI
- ベストアンサー率58% (56/96)
setInterval('ClearClipBord()' ,100); function ClearClipBord() { window.clipboardData.setData('Text',''); } コチラの方はどこか問題があったのでしょうか? あくまでプリントスクリーンを阻止したいだけで、テキストのコピー等は可能にしておきたい、ということでしょうか。
お礼
いえ、テキストのコピーもさせたくないので、それはそれで、別で、BODYタグに、プログラムしています。 「右クリック禁止」や、「ツールバーを表示させない」など、いろいろやったのですが、プリントスクリーンは効いてしまったので、それを阻止したいのです・・・。
PrintScreenを抑止するのはムリみたいですね。 ちなみに、上記のスクリプトはVBScriptですね。
お礼
無理ですか・・・。 確かに、いろいろなサイトで、「無理」「意味がない」とは書かれていました・・・。 上記はVBScriptでしたか・・・。 JavaScriptとの差がわかっていませんでした。 失礼しました。
関連するQ&A
- KeyUpイベントにて
テキストボックスのKeyUpイベントにて『Enter』または『Tab』が押されたら処理をさせようと Private Sub Text_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Text.KeyUp If e.KeyCode = Keys.Enter or e.KeyCode = Keys.Tab Then 処理コード End If End Sub としたのですが『Enter』のときしか処理コードが反映されません ご教授お願いします
- ベストアンサー
- Visual Basic
- VB2008でPictureBoxをキーボードを使って動かしたい
VBを始めたばかりの初心者です。 VB2008を使ってPictureBoxに取り込んだイラストをキーボードを使って自由に動かしたいと思っています。 今作ったものの問題点 1.現状、全く同時に→と↑のキーを押せば右上に動きます。 また、→キーを押してイラストが右に動いているときに、↑キーを押すと上に動きます。 これを右上に動くようにする方法が知りたいのです。 2.キーを押し続けてイラストを動かし続けようとすると、一回動いて止まってから動き続けるという風になってしまいます。 これを止まらずに動くようにしたいのです。 ちなみにこれ↓が今のソースコードです。 Public Class Form1 Private Sub form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Up Then PictureBox1.Top = PictureBox1.Top - 10 End If End Sub Private Sub form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Down Then PictureBox1.Top = PictureBox1.Top + 10 End If End Sub Private Sub form1_KeyLeft(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Left Then PictureBox1.Left = PictureBox1.Left - 10 End If End Sub Private Sub form1_KeyRight(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Right Then PictureBox1.Left = PictureBox1.Left + 10 End If End Sub End Class これ↑を実行する場合は、デザインにPictureBoxを表示してください。PictureBoxに入れるイラストは適当なものを入れてください。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- テキストボックス上でのショートカットメニューを無効にしたい
テキストボックス上で、右クリックをすると、クリップ ボードにある文字列をテキストボックスにペーストする ということをしたいのですが、右クリックを押すと ショートカットメニューが開いてしまいます。 (下記コード参照)ショートカットメニューを無効に する方法はあるでしょうか? Private Sub Text1_MouseDown(Index As _ Integer,Button As Integer,Shift As _ Integer, X As Single, Y As Single) With Text1 If Button = vbRightButton Then If Clipboard.GetText <> "" Then .SelText = Clipboard.GetText End If End If End With End Sub VB6を使用してます。
- ベストアンサー
- Visual Basic
- クリップボードの中身を判別
PHPなどは理解しておりますが、VBに関してはまったく素人で何もわからないものです。 今回、クリップボードの中身を常に監視して、ある文字列が含まれていたらそのまま、それ以外の文字列の場合は空にするアプリが必要になりました。 そこでネットでいろいろ探して次のように作りました。 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click End End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'クリップボードの文字列データを取得する Dim ClipBoardValue As IDataObject Dim ClipBoardString As String Dim okng As Boolean Do 'クリップボードのデータを取得() ClipBoardValue = Clipboard.GetDataObject ClipBoardString = ClipBoardValue.GetData(DataFormats.Text).ToString okng = ClipBoardString.Contains("反応あり") If (okng) Then 'クリップボードに文字列をコピーする Clipboard.SetDataObject("反応あり") Else Clipboard.SetDataObject("") End If Loop End Sub End Class 一つのフォームにボタンを一つ設置し、起動したら監視開始、ボタンをクリックしたら終了という形にしています。 動作させると、以下の問題があります。 ・どんな文字をコピーしてもすぐ空になってしまう ・フォームが表示されない ・起動時にクリップボードの中身が空だとエラーが表示される (オブジェクトのインスタンスにはnewを使用しろとかなんとか。。。) 正しい動作をするコードを教えていただけないでしょうか。 よろしくお願い致します。
- ベストアンサー
- Visual Basic
- VBでラベルの大きさと文字数によってフォントサイズが変化するプログラムについて
VBで、「ラベル」っての、ありますよね。そこに入力された文字数とラベルの大きさによって、フォントサイズを変化させるプログラムを書いたのですが、うまくいきません。何が間違っているのでしょうか? Private Sub name_text_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles name_text.KeyUp Dim nam As Byte nam = Len(name_text.Text) Dim FSize As Short If nam = 2 Then FSize = 36 FSize = Label.Font.Size ElseIf nam = 3 Then FSize = 25 FSize = Label.Font.Size End If Label.Text = TextBox.Text End Sub 何が間違ってますでしょうか?お願いします。
- ベストアンサー
- Visual Basic
- Ctrl + Cなど複数の入力キーの感知
TextBoxでコピーや貼り付け機能などをつけようと思い。 以下のように書きましたが、うまくいきません。 さらに以下の書き方だと例えば、Shift + Zを押した時に Zの文字がテキストボックスに書き込まれてしまいます。 一般的にはどうやって複数のキー入力を感知するのが王道なんでしょうか? VBを勉強し始めたばかりで、わかりにくい説明で申し訳ないです。 Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown 'ctrl + Zで切り取り If e.KeyCode = Keys.Z Then If e.Control Then MsgBox("aa") TextBox1.Cut() End If End If End Sub
- ベストアンサー
- Visual Basic
- TextBoxでEnterキーを押すと、にあるButtonを押したのと同じ効果を出す方法
VB初心者です。 まだ、はじめたばかりなので、上手く質問を説明できませんが、よろしくお願いします。 環境はVisualBasic .net 2003です。 フォームにテキストボックス(TextBox)とボタン(Button)があります。 テキストボックス内でEnterキーを押すと、ボタン(Button)を押したのと同様の効果をだしたいのですが。 VC++6.0だと、SendMessage(WM_COMMAND , ..... のようなやり方でできたはずですが・・・ --------------------------- テキストボックスのコード Private Sub txtTest_KeyDown(ByVal sender As Object, _ ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtTest.KeyDown If (e.KeyCode = Keys.Enter) Then '★★★ここでどういうコードを書いてよいかわかりません。 End If End Sub ---------------------------- ボタンを押したときのイベントハンドラ Private Sub btnTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTest.Click ボタンを押したら、このイベントハンドラを呼び出したい。 もしくは、間接的に呼び出したい。 ------- どなたか、やり方をご存知の方がいらっしゃいましたら、よろしくお願いします。
- ベストアンサー
- Visual Basic
- エクセルBVAのフォーム式のKeyCode~の意味がわかりません
エクセルBVAです Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = vbKeyDown Then KeyCode = 0 End If End Sub ヘルプをみると キーを押したとき、およびキーを離したときに続いて発生します。KeyDown イベントはキーを押すと発生し、KeyUp イベントはキーを離すと発生します。 キーってenterのことですかね? なら、 If KeyCode = vbKeyDown Then KeyCode = 0 End If で、KeyCodeを0ににするってどういうことでしょうか?
- ベストアンサー
- オフィス系ソフト
- VS2005の電卓がエラーだらけ。助けて!!
VS2005で電卓を作ろうとGUI部分はできました。 ただ並べたです。 そしてコードを書くと、変数名の宣言でもうエラー連発です。 クリアボタン(Button17)を押したら、myClear()関数を呼び出すところまで教えてください! Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim myInput As String = "" '入力値 Dim myCalc As String = "+" '演算値 Dim myTotal As Decimal = 0 '合計 Dim myFlag As Boolean = True '入力フラグ(False:数値 True:演算子) End Sub myValue(ByVal setData As Decimal){ myFlag = False myInput += setData TextBox1 = myInput } myCalculate(ByVal setData As String){ Private myWork As Decimal = 0 if(myFlag == False){ myFlag = True myWork = myTotal + MyCalc + myInput myTotal = eval(myWork) myInput = "" TextBox1 = myTotal } else if(setData == "="){ myTotal = 0 MyCalc = "+" } else { MyCalc = setData } } myClear(){ MyCalc = "+" myInput = "" myTotal = 0 TextBox1 = myTotal } Private Sub Button17_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button17.Click myClear() End Sub
- ベストアンサー
- Visual Basic
- Ctrl+vのイベントを解除
VB2010で、データグリッドビューのグリッドにペーストさせたくありません。 Ctrl+vのイベントを解除させる方法はないでしょうか? ご存知の方おしえてください。よろしくお願いします。 Private Sub DataGridView1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DataGridView1.KeyDown If e.Control And e.KeyCode = Keys.V Then 'ココにイベント解除を入れたいです End If End Sub
- ベストアンサー
- Visual Basic
お礼
同じプログラムで、プリントスクリーンを阻止できているんですね・・・。 私の別のプログラム部分に、問題があるのかもしれません・・・。 実際、前は <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> のような一文を先頭につけていたのをはずしたら、使用できるようになったプログラムがあったのです。 なにか余計なものがまだついているのかもしれないです。 ちょっと、何か削ってみることにします。ありがとうございました!
補足
「 <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">」 なども試しに削除してみましたが、やはり、プリントスクリーンが有効になってしまいました・・・。 なんでなのか、お手上げ状態です・・・。 上記プログラム以外に、この件で、他でプログラム指定してる部分などありますでしょうか?