痔になりやすい生活習慣とは?

画面キャプチャを抑止したいのですが、
ASPまたはJavaScriptでPrintScreenキーを抑止することは可能でしょうか?
JavaScript無効状態でも機能するよう、可能であればASPで制御したいと思ってるんですが。。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

> >JavaScript無効状態でも機能するよう、可能であればASPで制御したいと思ってるんですが。


> は、ASPを誤解しているような・・・気がします。

ASP はサーバ側で HTML を生成してユーザーのブラウザに送るだけのものです。
クライアントの OS やら何やらに影響を与えるのは JavaScript やら ActiveX コントロールなど、ユーザー側で動作する何かでやるしかありません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

ASPの性質上、無理なのですね。
JavaScriptで制御することっていうのは可能なのでしょうか?
printscreenにもoncopy="return false"のようなものがあれば良いのですが。

お礼日時:2006/04/12 09:56

> JavaScriptで制御することっていうのは可能なのでしょうか?


> printscreenにもoncopy="return false"のようなものがあれば良いのですが。

ですから #1 さんが回答しているように、意味ないです。
仮に JavaScript で出来たとしても、PrintScreen を無効にする範囲はブラウザで表示している当該ページがアクティブな状態だけでしょう。
例えばブラウザで当該ページを表示した状態でデスクトップをクリックしてデスクトップをアクティブな状態にして(ブラウザのタイトルバーが薄い色になる)、PrintScreen をクリックすればデスクトップに表示されている全てがコピーできちゃいます。

もしブラウザの範囲外でも PrintScreen が無効にできちゃうとなれば、それは悪意のあるスクリプト以外の何者でもないでしょう。
考えてみてください。
右クリックを禁止する JavaScript が書いてあるページをユーザーがブラウザで表示したまま、デスクトップに置いてある Excel のデータファイルを [右クリック]-[名前を変更] が禁止されてしまったら・・・
たかだかブラウザの中で表示しているだけの HTML ファイルから Windows の機能の有効/無効を設定できるような事があってはならんわけです。

「盗られたくないモノなら表示しない」
鉄則でしょう。
解像度の低い画像を表示させるだけにするとか、解像度が高い画像がほしければメールで管理者に連絡するとか、解像度の高い画像を会員のみのダウンロードにするとか。
そんな方法ではダメですか?

この回答への補足

確かにブラウザ範囲外を制御できたら危険な場合もありますね。PrintScreenに関しては諦めることにします。

>「盗られたくないモノなら表示しない」
もっともな意見ですが、表示させなければWEBシステムとして意味がないので…。100%は不可能でも、盗りにくくすることはしたいので。

ソースの保存禁止処理の方もまだ方法が不明なので、そちらの方の調査を進めていくつもりです。
(ソース保存をほぼ完全に防止しているサイトは存在します。”ほぼ”と書いたのは、自分の知らない方法で保存する方法が存在するかもしれないからです。マウスソーサ、キーボード操作、ダウンロード支援ソフト各種は確認済みです。)

補足日時:2006/04/19 11:13
    • good
    • 0

無理だと思います。


というか、PrintScreenを禁止しても、キャプチャツールを禁止
できないので、やる意味はあまりないんじゃないかな~。

あと
>JavaScript無効状態でも機能するよう、可能であればASPで制御したいと思ってるんですが。。
は、ASPを誤解しているような・・・気がします。
    • good
    • 0
この回答へのお礼

ASPについて調べなおしてみました。
「スクリプトをサーバ側で処理し、処理結果のみをブラウザに送信する」ものなのですね。
まだあまり理解できてないかもしれませんが。。。

お礼日時:2006/04/12 09:52

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QPrintScreenキーを無効にしたい

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>


*********************************************

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....続きを読む

Aベストアンサー

setInterval('ClearClipBord()' ,100);

function ClearClipBord() {
window.clipboardData.setData('Text','');
}

No.2で回答したものです。
自分の開発したシステムでは、↑これとまったく同じ記述を用いている部分があり、これでコピーとプリントスクリーンはとりあえず阻止できています。

Qスクリーンキャプチャ防止する方法

スクリーンキャプチャを使用すると簡単に画面コピーや出力ができてしまいます。
最近の最新技術ではhttp://www.cyphertec.net/techno6.html
のようにキャプチャソフトを使用した場合に違う画像を表示させ防止することができるようです。
これを簡単に実現する方法はないでしょうか?

Aベストアンサー

色々調べてみましたがやっぱり技術としてはそんな最新というほどのものでもないかと思います。ってかやはり物理的に制限することは無理です。
基本的にはPrintScrennキーをキーフックして無効化すること、他に有名な静止画、あるいは動画キャプチャツールのプロセス名を見張っていてそれが起動していたら起動しちゃだめという警告を出す、リモート系からのアプリに関しても同じ手法。
というようなことで制限しているようですが、破る方法は幾らでもあるようです。有名ソフトでも標準的な使い方でない方法で使うか、単純にJAVAなど何でも良いのでキャプチャプログラムを自作するとかで。

http://revilog.com/program/2006/03/006906.html
http://d.hatena.ne.jp/masahiror/20060228/pb#c1141200359
http://d.hatena.ne.jp/rand/20060228/1141120000
http://www.earthnut.net/archives/20060222_2104.php


実現する方法については上記で説明したような手法で行うとするなら、それほど高等なテクニックを使っているわけではありませんから、キャプチャ系のプログラムを作ったことのある人なら作成は簡単だと思います。

ただしやはりそこに表示させている以上、どうにかすればクラックは可能です。最終的にはデジカメで接写するというやり方にはどうやっても対抗できないでしょうし。

色々調べてみましたがやっぱり技術としてはそんな最新というほどのものでもないかと思います。ってかやはり物理的に制限することは無理です。
基本的にはPrintScrennキーをキーフックして無効化すること、他に有名な静止画、あるいは動画キャプチャツールのプロセス名を見張っていてそれが起動していたら起動しちゃだめという警告を出す、リモート系からのアプリに関しても同じ手法。
というようなことで制限しているようですが、破る方法は幾らでもあるようです。有名ソフトでも標準的な使い方でない方法で使う...続きを読む

Q日付型のフィールドに空白を入れる方法を教えてください

ASP(VBScript)でSQLサーバにINSET INTO文を使ってデータを格納しているのですが、日付の部分がNULLの時、「1900/1/1」が入ってしまいます。
そのまま、空白を入れる方法はどうやったらよろしいのでしょうか?

TABLE1の内容は
番号|内容|日付です。

INSERT INTO TABLE1 VALUES ( 1, 'あいう', '')

結果
1|あいう|1900/1/1

Aベストアンサー

あとは、プログラムの書き方次第ですね、、、


If hensu=Null Or hensu="" Then
dt = "NULL"
Else
dt = "'" & hensu & "'"
End IF

E_SQL = "INSERT INTO TABLE1 VALUES & _
"( 1,'あいう', " & dt& ")"
の様に書きます。

QMAX値を条件にデータを取得するには?

SQL文で困っています。
ご教授下さい。


下記のようなデータがあった場合、それぞれの区分毎に
年月が最大(最新)のデータを取得したいです。
(実際には1レコードにその他項目があり、それらも取得します。)
<検索対象データ>
区分 年月   金額
-----------------------------
A   200412  600
A   200503  560
B   200311  600
B   200508  1000
B   200504  560
C   200508  400
C   200301  1100


<取得したいデータ>

区分 年月   金額
-----------------------------
A   200503  560
B   200508  1000
C   200508  400

よろしくお願いします。

Aベストアンサー

テーブル名をXXXとすると次のようなSQLでよいと思います。(最善の方法かどうかは自信がないですが)

select B.* from (select 区分, max(年月) as 年月 from XXX group by 区分) As A
inner join XXX as B on A.区分 = B.区分 and A.年月 = B.年月
order by B.区分

Qデータベース内のテーブル名の取得

お世話になります。
初心者的な質問でしたらすいません。
SQL文にてデータベース内のテーブル名を
調べることができると聞いたことがあるのですが、
可能でしょうか。

もし、可能であれば、SQLの記述を教えてください。
お願いします。

Aベストアンサー

select * from tab;

私の場合、テーブル名だけ手っ取り早く知りたいとき、↑を打ちます。その他の情報も知りたいときは#2さんの仰るとおり、user_tablesで取得します。

QExcelで2つのファイルの違い(Diff)をとりたい

Excelでファイル名が同じで更新日付の異なる2つのファイルがあります。
この2つのファイルで内容が変わっている部分を知りたいのですが、良い方法はあるでしょうか?
(もしくは内容が変わっているかどうかだけでも知りたい)

比較が必要なファイルが大量にあるため、一つずつ見比べる時間が無く、困っています。

Aベストアンサー

使ってないのでお勧めはわかりませんが、こちらのフリーソフトを試してみては?
http://search.vector.co.jp/search?query=excel+%94%E4%8Ar

QWebページ上のボタン等の位置を移動したい。

こんにちわ。
いまASP.NETのWebフォームにパネルを置いて,その上にボタンなどのオブジェクトを配置しようとしています。
ところがフォームに直接ボタンを配置するときは,
任意の位置に配置できるのですが,
パネルの上だと任意の位置に配置できません。
VBのようにプロパティでx/y座標を指定しようと思ったのですが,
それらしいプロパティが見当たりません。
どうすれば任意の位置に配置できるでしょうか?
教えてください。よろしくお願いします。

Aベストアンサー

#1 です。

WebForm で何もコントロールを選択していない状態か、新規の WebForm で [レイアウト]-[位置]-[自動配置オプション] を選択。
<オプション> ダイアログの左側 [HTML デザイナ]-[CSS 配置] が開いてる状態になりますので、右側の配置オプションで [ツールボックス、貼り付け、またはドラッグ・・・] にチェックを入れて「絶対配置」を選択して [OK] をクリック。
コレ以降フォームに貼り付けたコントロールは絶対配置になりますので好きな場所に移動できます。

って方法もありますね。

QExcel 特定のシートを印刷不可にする方法

教えてください。

Excelで、特定のシートを印刷不可にする方法はありますでしょうか?

Book全体で印刷不可にする方法は、以下
'==========================
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Cancel = True '※1
タイトル = "ペーパーレス運動実施中!"
スタイル = 48 'vbexclamation
メッセージ = "印刷しないでください"
応答 = MsgBox(メッセージ, スタイル, タイトル)
End Sub
'==========================
で可能なことは認識しています。

よろしくお願いします。

Aベストアンサー

そこまでできてるならあとはシート名でチェックすればいいのでは?

Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name <> "特定のシート名" Then Exit Sub
Cancel = True '※1
タイトル = "ペーパーレス運動実施中!"
スタイル = 48 'vbexclamation
メッセージ = "印刷しないでください"
応答 = MsgBox(メッセージ, スタイル, タイトル)
End Sub

こんな感じかな。

Qwebページの印刷制限について

ウェブページの印刷制限について伺いたい事がございます。

現在ウェブページをプリントアウトできないような仕組みについて
色々と調べております。

現状分かった段階では、歌の歌詞サイトのページで、
印刷制限が何かしらの仕組みとして設けられているのを確認できました。
http://www.utamap.com/showkasi.php?surl=39761&title=%B0%A6%C9%EF&artist=%C3%E6%BF%B9%CC%C0%BA%DA&ss=%BE%BE%CB%DC%CE%B4&s

FLASHと何かしらのプログラムにより、印刷プレビューしても真っ白な状態になっています。

このように、OS側のプリンタ制限等以外にウェブプログラム等を用いてプリンタできないようにするためにはどのような手法や具体的に何が必要で(具体的なものがあれば非常に助かります)あるかをご教示頂ければと思います。

宜しくお願いいたします。

Aベストアンサー

…こうして見ると、印刷にこだわる質問も少なくないのですね

> ウェブプログラム等を用いてプリンタできない

という事がもし完全にできてしまったらそもそも恐ろしいわけで…とにかく、常識(良識)の範囲ではクライアント側の任意の印刷設定を強制的にコントロールなどできない、という事をまずご理解下さい。

直接プリントアウトした結果を非表示にするだけなら、ANo.1の回答者様のアドバイスにもあります様にCSSを使用すれば簡単にできます。
ただ、根本的解決にはなりません。
【理由】
・クライアント側で、こちらのが参照するCSSを読み込まない、もしくは環境により適用されない場合、印刷できてしまう。
・スクリーンショットを撮って印刷できてしまう。

ANo.2の回答者様もご指摘の通り、この「スクリーンショット」という飛び道具的手段をとられれば、

> 現状分かった段階では、歌の歌詞サイトのページで、
> 印刷制限が何かしらの仕組みとして設けられているのを確認できました。
> http://www.utamap.com/showkasi.php?surl=39761&title=%B0%A6%C9%E...

残念ながら上記でも簡単に印刷できてしまいますね。

例えばPDFファイルなら作成の際にセキュリティ制限で「印刷を許可しない」という状態にはできます。しかし、PDFファイル自体はダウンロードできてしまうので、データを入手される事は防げません。また、PDFファイルであろうとスクリーンショットならいくらでも印刷できてしまいます。

クライアント側で「表示できて」しまったものは何らかの手段で必ず印刷が可能である、という事です。

> ウェブページをプリントアウトできないような

そもそもどうしてクライアント側でプリントアウトさせたくないのでしょう?インターネットで広く情報を提供したいからWebコンテンツを制作したいのではないのですか…?

…こうして見ると、印刷にこだわる質問も少なくないのですね

> ウェブプログラム等を用いてプリンタできない

という事がもし完全にできてしまったらそもそも恐ろしいわけで…とにかく、常識(良識)の範囲ではクライアント側の任意の印刷設定を強制的にコントロールなどできない、という事をまずご理解下さい。

直接プリントアウトした結果を非表示にするだけなら、ANo.1の回答者様のアドバイスにもあります様にCSSを使用すれば簡単にできます。
ただ、根本的解決にはなりません。
【理由】
・クライア...続きを読む

QCloseとDisposeの違い

みなさまこんばんわです。よろしくお願い申し上げます。

VB.NET 2008でコーディングしています。
CloseとDisposeの違いについて教えていただきたいのです。

これらのメソッドは、開いたファイルを閉じるときなどにも使いますが、今回お尋ねするのは、フォームを閉じるとき、しかも、自ら呼び出すとき(Me.Close() と、Me.Dispose() )のみに限ったこととしてお話しさせていただきます。

たとえば、ShowDialog() で呼び出したフォームは、そのフォーム内でMe.Close() しても、プロセスは残り、たとえば、タイマーコントロールのイベントに記述していますと、それは実行され続けます。

これを防ぐために、Me.Dispose() を使います。すると、きれいにプロセスは終了し、イベントは発生しない模様です。

そこで、「フォームを閉じる」意味のMe.Close() をすべてMe.Dispose() に変えてしまいました。確実にプロセスを破棄出来ると思ったからです。Webで調べると、違いは「再利用できる、できないの違い」という答えがありましたが、それはきっと、ファイルやオブジェクトのことで、フォームの場合は、再びShowまたはShowDialogで表示させることは可能でしたので、特に問題は感じていませんでした。

ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。調べてみると、Me.Dispose() が原因。Me.Close() に変えるとうまくいきました。

わけわからなくなってきました。。。

ちなみに、その残ったフォームは、スタートアップフォームであり、別のフォームからShowまたはShowDialogメソッドで呼び出したものではありません。

ここで4つの仮説を立ててみました。

1. ShowDialogで呼び出したフォームは、Me.Dispose()、Showで呼び出した、あるいは、スタートアップフォームは、Me.Close() すれば破棄できる

2. ShowDialogで呼び出したフォームは、Me.Dispose()、スタートアップフォームは、Me.Close()、Showで呼び出したフォームは、どちらでも、破棄できる

3. 呼び出し方ではなく、別の要因が存在する

4. 併記する必要がある場合がある

Me.Close()
Me.Dispose()

または、

Me.Dispose()
Me.Close()



どれが正しいのでしょうか?どなたがご存じの方がいらっしゃいましたら、ご教授いただけませんでしょうか? どうぞよろしくお願い申し上げます。ありがとうございました。

みなさまこんばんわです。よろしくお願い申し上げます。

VB.NET 2008でコーディングしています。
CloseとDisposeの違いについて教えていただきたいのです。

これらのメソッドは、開いたファイルを閉じるときなどにも使いますが、今回お尋ねするのは、フォームを閉じるとき、しかも、自ら呼び出すとき(Me.Close() と、Me.Dispose() )のみに限ったこととしてお話しさせていただきます。

たとえば、ShowDialog() で呼び出したフォームは、そのフォーム内でMe.Close() しても、プロセスは残り、たとえば、...続きを読む

Aベストアンサー

Me.Close()
Me.Dispose()
は根本的に違うものです。

formについて、Close()メソッドはフォームの表示を終了させるメソッドです。

ほかのクラスも同様。すべてのDispose()メソッドについて、これはインスタンスの破棄を明示的に行うものです。

>再利用できる、できないの違い

Dispose()はインスタンスが破棄されるため、再びコンストラクタを用いて、インスタンスを生成しないいけません。

一方Close()はインスタンスが残っているので、それを利用することができます。

>1. ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。調べてみると、Me.Dispose() が原因。
Me.Close() に変えるとうまくいきました。

通常はどちらでもうまくいきます。

>2. ShowDialogで呼び出したフォームは、Me.Dispose()、スタートアップフォームは、Me.Close()、Showで呼び出したフォームは、どちらでも、破棄できる

ShowDialogの場合は、メソッド内部で、ハンドルが破棄されているため、Close()メソッドの際にDispose()メソッドが呼び出されます。

>3. 呼び出し方ではなく、別の要因が存在する

そう思います。

>4. 併記する必要がある場合がある

インスタンスを明示的に破棄したほうがよい場合は多く存在します。
Disposeが使えるメンバはIDisposableをインターフェースとして持っているメンバです。
これらのメンバは、外部とのやり取りを行うものが多くあります。
たとえばSQLClientに含まれるようなメンバです。

外部とのコネクションを確実に破棄を保障してほしいなどという場合がありますよね、このようなときに使用します。

Using構文を使用するのとまったく同じ理由になります。
正確にはUsing構文を使用できるメンバには条件があります、IDisposableをインターフェースとして持っているメンバに限るというものです。

ほかにもガーベージコレクタによるファイナライズを伴うかどうかという違いがあります。
Disposeの場合はファイナライズが同時に行われるため、使用していたメモリ空間を開放することができます。

上記のような理由により、
Me.Close()
Me.Dispose()
は両方書いたほうがよいと思います。

蛇足ですが、
Me.Dispose()
Me.Close()
はエラーになります。
Me.Dispose()により、Me本体(インスタンス)は削除されてしまいます。
存在しないMeに対してCloseメソッドを要求することはできないためです。

Me.Close()
Me.Dispose()
は根本的に違うものです。

formについて、Close()メソッドはフォームの表示を終了させるメソッドです。

ほかのクラスも同様。すべてのDispose()メソッドについて、これはインスタンスの破棄を明示的に行うものです。

>再利用できる、できないの違い

Dispose()はインスタンスが破棄されるため、再びコンストラクタを用いて、インスタンスを生成しないいけません。

一方Close()はインスタンスが残っているので、それを利用することができます。

>1. ところが、アプリ...続きを読む


人気Q&Aランキング