• ベストアンサー

javaで取得可能な環境変数の値(モニタ解像度)をcgiの変数に代入するには?

cgiをperlで作成しています。 クライアントの画面解像度がjavaで取得出来ることを知りました。 そこでその解像度情報をcgiの中で利用したいのですが、javaの変数の値をcgiの変数へ代入する方法がわかりません。 お分かりになる方是非ご教授下さい。 よろしくお願い致します。 追記1 画面の解像度をcgiで利用したいので、代わりの方法があればそちらもよろしくお願い致します。 追記2 cgiカテゴリでも同様の質問をしていますが、そちらは削除予定です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

JavaではなくJavaScriptのことですよね。 JavaScriptのカテゴリーにあるのでそう解釈します。 JavaとJavaScriptは名前は似ていますが全くの別物ですので注意して下さい。 JavaScritp側は var Dwidth = screen.width; var Dheight = screen.height; document.write("<img src='foo.cgi?dwidth=" + Dwidth + "&dheight=" + Dheight + "' width='1' height='1'>"); としてやり cgi側は #!/usr/local/bin/perl use CGI qw(:standard); # JavaScriptから値を受け取る $Dwidth = param('dwidth'); $Dheight = param('dheight'); # 空画像表示 @array = ("47","49","46","38","39","61","01","00","01","00","80","00", "00","ff","ff","ff","00","00","00","21","f9","04","01","00", "00","00","00","2c","00","00","00","00","01","00","01","00", "40","02","02","44","01","00","3b"); print "Content-type: image/gif\n\n"; for (@array) { $data = pack('C*',hex($_)); print $data; } これでJavaScriptで受け取った変数をCGI側で使えます。 この場合は $Dwidth と$ Dheight に入ります。

arvent
質問者

お礼

ありがとうございました。大変分かりやすかったです。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

javascriptのことなら、 formの中のフィールドにセットしてsubmitすればいいのでは、 あるいは、 location.href="xxx.cgi?x="+screen.width+"&y="+screen.height とかするとか 勘違いしてたらすみません。

arvent
質問者

お礼

ありがとうございました。大変分かりやすかったです。

関連するQ&A

  • モニタの解像度を変えることができません。

    モニタコントロールパネルで解像度を変えようとすると、画面がちらつき、結局解像度をかえることができません。OS9をクリーンインストールしたらできなくなりました。急いでおりまして、アドバイスをよろしくお願い致します。

    • 締切済み
    • Mac
  • javaScriptの変数をJavaの変数に代入する。

    jspで作ったプログラムがあるこのような場合変数を共有する方法はありますでしょうか? 以下の場合iの(JavaScript)値をjavaの変数iに代入したい場合どうすればいいでしょうか? <%! String s[] ={A,B,C,D,E} %> function chek(){ for(i = 0;i< 5 ;i++){ <%! int i =%> = i;//←この部分です //document.form1.desc.valueにはBの値が入っている if(<%! s[i] %> == document.form1.desc.value){ alert("Bです"); } }

  • モニターの解像度

    三菱のRDT231WLM-Dのモニターですが、解像度が1920×1080です、今までの解像度が1280×1024でした。画面のプロパティーから最大に持っていっても1600×1200までしか設定が出来ません。大きくする方法を教えてください。 それと画面が横長の23インチなものなので画面が横に伸びて表示します。此れは普通の画面に変更が出来ますか?出来たら戻す方法を教えてください。 OSはWINDWS XPです。

  • モニターの解像度を変えたら映らなくなった

    普段デスクトップパソコンを15ピン対応のテレビでモニターしています。モニター解像度外の解像度にパソコンを設定しまい画面が突然映らなくなってしまった。テレビ画面には本機では画面の表示が出来ませんというメッセージが出てそれ以外は真っ黒な画面です。リカバリディディスクでCドライブのみ消去するリカバディをしましたが駄目でした。ちなみにリカバディ方法はあとふたつあってひとつはHDDの内容を全て消去する。もう一つはCドライブの容量を決めてからリカバリする方法があります。出来れば丸一日かけてXPサービスパック2からサービスパック3にアップデートしたのでサービスパック3のままで解像度を戻す方法はありませんか?モニターディスプレイは他には持っていません。

  • 解像度の違うモニターでの解像度設定

    DELLの20インチワイドディスプレイと20インチディスプレイ(いずれも液晶)を使っています。 片方が最大解像度1680*1050,片方が1600*1200です。 この二つのディスプレイを使ってデュアルモニターにしようとしました。 ところがそれぞれのモニターの解像度を最大の状態でデュアルにする方法がわかりません。 3200*900という二つ合わせた解像度になってしまうため、どちらのモニターもゆがんだ画面になってしまいます。 なんとか二つのモニターを別々に解像度を設定する方法はありませんでしょうか? つかっているグラフィックボードはGeForce5700ultraでドライバーは今日ダウンロードしてきた最新版です。 よろしくお願いします。

  • php 解像度 取得

    phpで解像度を取得し、サーバー内のlogファイルに解像度を書き込みたいのですが、どうしたらいいでしょうか? javascriptのscreen.widthなどの変数を用いるしかないのでしょうか? もしそうなら、javascriptからphpへの変数の受け渡しの方法も教えて頂きたいです。 <link rel="stylesheet" type="text/css" href="/akusesukaiseki.php"> 今はこういう形で全てのページにアクセス解析のphpを張り付けています。

    • ベストアンサー
    • PHP
  • 変数に値を代入するのに、まずundef、次にNULL文字を足して、それから入れたい値を足すって回りくどくないですか?

    KENTさんの作ったメールフォームのコードをフォローしています。 Clip Mail v1.1です。 http://www.kent-web.com/data/clipmail.html その中で、メールフォームから送られてきたデータを取り入れるサブルーチンに関する質問です。  undef(%in); $in{$key}.="\0";  $in{$key}.=$val; 最初の  undef(%in); はサブルーチン中の冒頭にあり、残り2行とはかなり離れた位置にあります。 これまで私がこういうコードを書く場合、  %in;  $in{$key}=$val; と書いてきました。この他、変数の宣言にはourとかmyとか付けてますけど、KENTさんがこのプログラムを書いた当時はmyはともかくとして、ourを付けることはあまり普及していなかったのではないでしょうか。 さて、C言語などだと変数を用いる前に宣言だけでなく初期化も行っていないといけないわけですが、Perlの場合は初期化されていない変数はundefとして自動認識されます。  undef(%in); と、私がやっているような  %in; の違いは初期化もきちんとしているか、ただ宣言だけで初期化はPerlにお任せしているかの違いです。Perlの仕様上はどちらでもいいでしょう。 分からないのは残りの2行のコードです。  undef(%in); でキチンと初期化してある変数に対して、まず  $in{$key}.="\0"; とします。なんでNULL文字なんか入れないといけないのでしょう。それも単純に  $in{$key}="\0"; ではなくて、  $in{$key}=$in{$key}."\0"; です。 更に3行目で  $in{$key}.=$val; とするわけですが、こんな2行かけた代入を行わなくても、私がこれまでやってきたように  $in{$key}=$val; で実用上の用は足りると思うのですが・・・ 1行目は何となく分かるんです。変数の初期化は、Perlに自動認識の機能があるのを知っていても、他の言語を知っている方は、やはり言語任せに出来ないのではないでしょうか。 残りの2行のコードも多分そんなところだと思います。実用上は私のやり方で足りると思うので。ただC言語なんかでもこんな代入の仕方をしているのを私は見たことがないし、まあ、こんな代入の仕方をしないといけない言語もあるのでしょうが、ではその言語でこのやり方をせずに私がやるような方法を取った場合、どんなエラーが出るのでしょう。 どなたか分かる方、教えていただけないでしょうか。

  • 大きいモニター程、同じ解像度なら文字は粗く見える?

    画面のサイズと解像度について http://www.iwane-web.jp/pc/gamen-kaizoudo.html ↓は↑から抜粋したものです。 > 解像度が同じ場合、モニターのインチ数が大きくなるほど文字は大きく、 小さくなるほど文字も小さくなります。 > これは単純に点の大きさが大きくなったり小さくなったりするからです。 > つまり、解像度が同じ1920×1080であるなら、21.5インチのモニターより、23インチのモニターの方が文字が大きくなります。 5インチのスマホ 12.5インチのモバイルPC 15.5インチのノートパソコン 17.3インチのノートパソコン 21インチのデスクトップパソコン 42インチのテレビ 60インチのテレビ 上記いずれの解像度も 【 1920×1080 】 だった場合、 大きいサイズの画面のドット程、1ドット(ピクセル)のサイズが大きくなるということですよね? そこに文字や絵を表示させると 【 小さいサイズの画面より、大きいサイズの画面の方が、汚く(粗く)見えるんじゃないですか? 】 例えば、【 A 】という文字を12ピクセルで描画したとしましょう。 仮に5インチのスマホ(解像度1920×1080)の 1ピクセルあたりのサイズが 2×3 ミリ 60インチのテレビ(解像度1920×1080)の 1ピクセルあたりのサイズが 24×36 ミリだとして、 3×4=12 ピクセル上に A を描画すると、 5インチスマホだと、6×12 ミリ=★72m2★ 60インチのテレビだと、72×144 ミリ=★10368m2★ 上に【 A 】が描かれる訳でしょ? 1つのピクセルが大きい程、文字はカクカクして、その分粗く見えるんじゃないですか? そう考えると、画面が大きいほど高解像度にしないと、(同じ解像度だった時の)小さい画面の文字と★同等な綺麗さの文字★として見えないのではないでしょうか? スマホで 1920×1080 というのと、 パソコンで 1920×1080 というのと、 テレビで 1920×1080 というの、 画面のサイズが違うのにどれも【フルハイビジョン】と言われても、上記の疑問があって、一概に良いとは思えないんですよねー おかしいと思いませんか? 画面サイズが大きい程、解像度が同じなら、汚く見えるんじゃないですか? 画面サイズが大きい程、解像度を高いものにしないと、見やすいとは言えないのではないでしょうか? よろしくお願い致します。

  • cgi環境変数の変更方法?

    cgi環境変数の変更方法? perlで書かれたcgiプログラムがあります。 そのcgiではcgi環境変数内のREMOTE_ADDRを読出し、特定のIPアドレス【特定の端末】であれば特別処理を行っております。 今回、別の端末【別のIPアドレス】から同じ特別処理をする必要が生じました。 サーバ側のcgiプログラムを修正すれば簡単なのですが、著作権上の問題があって出来ません。 そこで端末側のプログラムがC#のWebClientクラスを使用してサーバと交信しているのを幸いとして myClient.Headers.Set("REMOTE_ADDR", "xxx,xxx,xxx,xxx"); ← 従前のIPアドレスへの変更 のステートメントを追加して強制的にIPアドレスを変更しようとしました。 ところがサーバ側のcgi環境変数には、HTTP_REMOTE_ADDRという新しい要素が加わっただけであり、目的とするREMOTE_ADDRを修正出来ません。 調べてみると、apacheがHTTP_タグを追加しているとのことです。 この追加をやめさせREMOTE_ADDRに当方が望むIPアドレスを設定することは可能でしょうか?

  • モニタ解像度の落とし方について

    こんにちわ。 先日 PanasonicのレッツノートCF-Y5LW8AXRを購入しましたが 標準解像度が良すぎて 結果表示される文字サイズが小さく 見えづらくって困っています。 色々と試したのですが 鮮明な文字表示のまま 解像度を1024x768にする事ができません。 どなたか 良いアイデアは無いでしょうか? [私がやってみた事一覧] ・ユーザーサポートに電話して 解像度を1024x768に落としたときの文字を鮮明に表示する方法について聞きましたが そこまではユーザーサポート外と言われました。 ・画面プロパティ’設定’より 解像度を落としましたが 文字が不鮮明になります。 ・画面プロパティ’デザイン’よりフォントサイズを大きくしましたが  CSSなどで設定されている画面は文字が小さいままでした。 (勿論 ブラウザの文字サイズも最大にしています) ・インテル製のチップを使っているので インテルダウンロードサイトに行って ファイルを試していましたが 適切なものが見つかりませんでした。 ・CF-W2が1024に対応してビデオチップも同じものということで Panasonicダウンロードサイトでドライバダウンロードして インストール試みましたが 機種名などではじかれるようです。 どなかた 良い案はございませんでしょうか? 見えづらく 困っている状況です。 このままでは PCを買い換えようかとも考えております。 宜しくお願いいたします。

専門家に質問してみよう