• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:FLASHからアプリケーションの呼出し)

FLASHからアプリケーションの呼出し

このQ&Aのポイント
  • お知恵を拝借したく、メール送信用に作成されたプログラムを起動させるためにFLASHからアプリケーションの呼出しを試みています。
  • sendmail.aspというvbscriptで記述されたプログラムを呼び出すことができますが、パラメーターが正しく渡されていません。
  • サーバーを通さずに動作させた場合、ブラウザが立ち上がりますが、アドレスバーにはパラメーターが表示されません。

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

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.4

VBScript には詳しくありませんので、分かる範囲で回答させていただきます。 ASPについて不明な点がありましたら、「 Microsoft ASP 」カテゴリーで質問してみてください。詳しい方から回答がいただけると思います。 #3の補足欄のプログラムは、見たところ、受け取ったデータをメールの形に加工し、配信する部分と思われます。 GET か POST かを見分けるには、この1歩手前の、送信されてきたデータそのものをASPプログラムが参照する部分を重点的に見てください。 ただ、メール配信プログラムとのことですので、送信メソッドはやはり、GET ではなく POST だと思います。 差出人やメールアドレスなど、ユーザーから送られてくるデータを扱っているのは、  name = Request.Form("P_name")  mail = Request.Form("P_mail")   : この箇所だと思います。 Request.Form に P_*** という名前のパラメータを渡して、参照していますよね。おそらく入力フォームに割り振られた変数の名前で、この名前を元にデータを受信しているのではないでしょうか。 とすると、Flash で送信する変数も P_*** という名前でなければ、このプログラムに情報を渡せないことになります。 先の回答に書きました通り、getURL で必要な変数だけ送信するには、専用のムービークリップを作り、これに変数を設定して送信する必要があります。 LoadVars クラスを利用すると、もっとスマートに送信用の情報を準備できます。 例えば、「送信」ボタンがあるとしますと、  on(release)  {   //オブジェクトの生成   mail = new LoadVars();   //送信する情報の準備   mail.P_name = result1;   mail.P_mail = result2;   mail.P_kenmei = result3;   mail.P_naiyo = result4;   //情報を送信   mail.send( "./sendmail.asp" , "_blank" , "POST" );  } ASP側で使っていると思われる P_*** という名前のパラメータに、Flash で使っている変数 result1 ~ 4 の内容を設定し、ASPプログラムに情報を送信するという意味になります。 もちろん、「送信」ボタンをムービークリップにし、P_*** という名前の変数を用意して、この階層で getURL を実行しても、同様に情報を送信することができます。 言うまでもないことですけど・・・ 呼び出すプログラムのパスや変数のターゲットパスの誤りなど、些細なミスにはくれぐれもご注意ください。

teddy1014
質問者

お礼

DPEさん、 getURLではうまく動かなかったのですが、教えて頂いたsendにて実行したら正しくパラメーターが受け渡されている事が確認出来ました。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • DPE
  • ベストアンサー率85% (666/776)
回答No.3

プログラムがどちらのメソッドに対応しているかは、プログラムの開発者でなければ分かりません。 しかし、getURL の第3引数に "GET" を指定してプログラムにパラメータが正常に渡れば GET 、GET ではうまくいかなくても "POST" なら渡るのであれば POST に対応していると言えます。 アドレスに ? でパラメータを連結する書き方は、GET で送信する時の特徴です。この記述で呼び出すように指示があったのでしたら、GET にも対応しています。 URLからも分かるように、この OKWeb サイトではPHPを利用しています。変数 q に質問番号を入れると、該当する質問を閲覧できます。 このプログラムを拝借して、ちょっとした実験してみますと。 ステージにボタンのインスタンスを1つ、用意します。 フレーム1に  q = 1081049; ボタンに  on(press)  {   getURL( "http://okweb.jp/kotaeru.php3" , "_blank" , "GET" );  } このようなアクションを設定して、動作を確認してみてください。新しいウィンドウが開き、この質問のページが表示されます。 では、getURL の第3引数を "POST" に変更すると、どうなるでしょうか。「ムービープレビュー」ではスクリプトに関係なく、必ず GET メソッドで送信されてしまいます。パブリッシュして HTML ファイルを作り、ブラウザで確認してください。 この時、アドレスバーに注目してください。? 以降は表示されませんが、PHPプログラムにはきちんとパラメータが渡っています。 GET でも POST でも変数が送信できるのですから、つまり、このプログラムは GET にも POST にも対応していると言えます。 なぜ、Flash で変数 q に番号を入れ、getURL で送信すると任意の質問が閲覧できると分かったか・・・それは、アドレスに ? で q というパラメータが連結されていて、q の中身が質問の番号に対応しているからですね。 GET はアドレスにパラメータをつなげるだけで利用できて手軽な反面、プログラムで使っているパラメータや送信する内容が、他者に知られてしまうという欠点があります。 質問の番号や検索のキーワード程度ならまだしも、これが氏名やメールアドレスなどの個人情報だったら、個人情報の漏洩にもつながりかねません。 また、例えばこの回答を GET で送信する、つまり、アドレスに ? で情報をつばげて送信しようとすると、どうなるでしょうか?日本語は直接送信できない問題もありますが、何より、アドレスバーに表示するには字数が多すぎますよね。 アドレスに連結して渡すために、あまり大きな情報は送信できないことも、GET メソッドの欠点です。掲示板の投稿のように、容量が大きくなると予想される情報を送信するには、普通は POST メソッドが利用されます。 呼び出そうとしているASPプログラムは、おそらく、メールを送信するプログラムではないでしょうか。 それでしたら、プライバシーの保護と容量の問題から、POST メソッドにのみの対応である可能性も考えられると思います。

teddy1014
質問者

補足

'送信メールの編集 dim strBody dim strSubject dim MailSendFlg dim CustomerCenterMailAddress dim name dim mail dim kenmei dim naiyo name = Request.Form("P_name") mail = Request.Form("P_mail") kenmei = Request.Form("P_kenmei") naiyo = Request.Form("P_naiyo") strBody="" strBody=strBody & "[お問い合わせ]" & chr(13) strBody=strBody & "お名前: " & name & chr(13) strBody=strBody & "Email: " & mail & chr(13) strBody=strBody & "件名: " &kenmei & chr(13) strBody=strBody & "内容: " &naiyo dim CDoObject Set CDoObject=CreateObject("CDONTS.NewMail") CDoObject.MailFormat = 1 'TEXT format(default) CDoObject.From = "contact@xxxxxxnet.co.jp" CDoObject.To = "contact@xxxxxxnet.co.jp" CDoObject.Subject = "お問い合わせ" CDoObject.Body = strBody CDoObject.Importance = 2 '0:low 1:normal 2:high ''if isNull(strAttachFile) = False then 'strAttachFile は 絶対パス ''CDoObject.AttachFile(strAttachFile) ''end if CDoObject.Send if err.number <> 0 then CDO_NewMail=false CDO_NewMail=Err.Description end if Set CdoObject=nothing Response.Redirect ("default.htm") %> apsプログラムは上記です。これを作成した者が既に居ないという事と、私がプログラムを全く知らないと言う事で、これを見てお分かりになるようであれば教えてください。 どうぞ宜しく御願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • DPE
  • ベストアンサー率85% (666/776)
回答No.2

> 「getURL を実行した階層のタイムラインにある変数を全て送信します。」と言うのは、getURLが記述されているフレームで定義・使用されている変数が全て送信されるという事でしょうか?。(”GET"を付けた場合) その通りです。getURL が記述されているフレームどころか、階層に存在する全ての変数が送信されます。 送信メソッドが GET だからなのではなく、getURL がそのような仕様になっているためです。 例えば _root 階層にムービークリップAとBがあり、それぞれに a1 ・ a2 ・ a3 と b1 という変数があるとします。 ムービークリップAで getURL を、第3引数に GET か POST を指定して実行すると、アドレスに ? で連結しなくても a1 ~ 3 が送信されます。 しかし、_root 階層で実行した場合は、a1 ~ 3 も b1 も送信されません。また、ムービークリップBで実行した時は、b1 だけが送信されます。 これは getURL の特徴で、メソッドが GET でも POST でも同じです。 ヘルプの getURL の項目で紹介されている例を見ていただくと分かりますが・・・ この例では、メソッドが GET でも POST でもURLの後にパラメータは連結されていませんが、それでも変数は送信されます。 それぞれの送信メソッドの特徴により、GET で送信した時はアドレスに?でパラメータが続きますが、POST で送信すると、アドレスバーにはURLだけが表示され、パラメータは見えなくなります。 GET と POST とでは送られてきたデータが格納される場所が違うので、データを処理する方法も変わります。これはデータを受け取る側、つまりCGIやASPの方の問題になります。 大抵はどちらでも対応できるようにプログラムを組むものですが、もし、呼び出すASPプログラムが POST メソッドにしか対応していないのならば、getURL では POST で送信しなければなりません。 LoadVars クラスがなかった Flash 5 では、CGIなどに情報を送るには getURL しか使えませんでした。 「 getURL を実行する階層にある全ての変数が送信される」とは、送信する必要のないものまで勝手に送信されるということでもあり、不便といえば不便です。 ですが、この特徴を逆に利用して、予め送信用のムービークリップを作り、ここに送信したい変数をコピーしておけば、必要なものだけを送信できることになります。普通は「送信」ボタンなどを用意しますから、これを独立したムービークリップにして、そこに送信したい変数を用意する、といった方法が、ポピュラーなパターンです。 Flash MX からは、ザーバーとの変数の送受信を専門に担当する LoadVars クラスが登場し、いちいちムービークリップを用意して変数をコピーすることなく、スクリプトだけでも送受信の準備を済ませられるようになりました。 param1 ~ 4 という変数を用意し、それぞれに result1 ~ 4 の中身を代入して、  getURL("./sendmail.asp" , "_blank" , "GET" ); 相対アドレスになっていますから、サーバーにアップして確認してみてください。 また、相対アドレスではなく http:// から書く絶対アドレスにした場合は、いかがでしょう。 それでもパラメータが渡りませんでしょうか?

teddy1014
質問者

補足

ムービークリップは別のタイムラインを持っているから、と言うわけですね。 ムービークリップのアクションに変数や「getURL」を記述すれば、送信したい変数だけをサーバーに送れるのですね。 「サーバー側のプログラムの問題」と言う事ですが、GETメソッドに対応している、POSTメソッドに対応していると言うのは、何を確認すれば分かりますか?。 どうぞ宜しく御願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

サーバーと連携する作品の場合は、なるべくオンライン環境(サーバーにアップする・ネットにつなぐ、など)で動作確認することをオススメします。 オフライン・ローカル環境ではうまくいかなくても、オンラインでは正常に動く場合もありますよ。 ちなみに、以前、こんな質問もありましたので、ご参考までに。  ・"?"を認識させるには?   http://okweb.jp/kotaeru.php3?q=1005589 PHPというCGIの話ですが、スクリプトの問題ではなく、単に、オフラインで動作確認していたことが原因だったそうです。 文字列と変数を連結したアドレスを getURL に渡し、PHPを呼び出そうとしたところ、? 以降が消えるという現象が、今回のケースとよく似ていると思います。

teddy1014
質問者

補足

DPEさん、 オフラインだと正しく動作しない事は聞いておりましたので、サーバー経由でも試しましたが駄目でした。 システム担当曰く、「オフラインでパラメーターが渡っていないのだから、FLASH側の問題なんじゃないか。」との事です。 そこで質問です。 「getURL を実行した階層のタイムラインにある変数を全て送信します。」と言うのは、getURLが記述されているフレームで定義・使用されている変数が全て送信されるという事でしょうか?。(”GET"を付けた場合) 私は、変数定義やFunctionの定義は出来る限り1フレーム目にまとめて記述するようにしているので、そこで定義した変数は全て送信されてしまうと言う事でしょうか?。 ”GET"とは、そう言う意味(変数をすべて送信)だったのですか?。 どうぞ宜しく御願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • RPG パラメーターについて

    AS/400のRPG言語に携わり1年が経ちます。 お恥ずかしながら質問させていただきますが、 CLを組んで、CALLでRPGを呼び出す時にパラメーターを受け渡すようにしました。 初めてやってみましたが、なんとか動くようになりましたが、 今度はデバッグするときや、コマンドラインで直接プログラムを呼び出す時、CALLのオプションでパラメーターを指定しなければならなくなりました。 例えばOPTという数字変数のパラメータとAという文字パラメーター、Bという論理データのパラメーターにそれぞれ 1、’登録’、’1’というものを渡したい場合、 CALL PGM(EM02PR) PARM(・・・・・・) PARMの記述はどう記入すればよいのでしょうか? おわかりになる方宜しくお願い致します。

  • C言語からのFortranプログラムの呼び出し

    Fortranで記述した以下のような構成の有限要素法プログラムをC言語から呼び出したいのですが,具体的にどのようなコードを記述すればいいのかがわかりません.お教えいただけないでしょうか. サブルーチンinputおよびoutputでは入力および結果ファイルの入出力を行っています. 当方C言語はほぼ初心者です.Fortranのプログラミング環境としてはVisualStudio2005およびVisualFortran9.1を用いています. C言語のプログラミング環境としてはおなじくVisualStudio2005を使用したいとおもっております. [メインプログラム] open (5,file='input.dat') open (6,file='output.dat') /入出力用のファイルを開く call input(parameter1) /各サブルーチンで有限要素法を実行 call bound(parameter2) call matrix(parameter3) call solve(parameter4) call output(parameter5) close (5) /入出力用のファイルを閉じる close (6) stop end

  • 自分のURLアドレスのパラメータを取得して使用する

    済みません、既に同じ質問「javascriptの変数を渡す方法について」をさせて頂いていますが、簡素にしましたのでよろしくお願い致します。 【やりたい事】 自分のURLを仮に(bbb.asp?PARM1="hensu")として、URLから取得したパラメータを変数として使用したいのですが ほぼ初心者なので思い通りに行かず悶々と悩んでいます。 どなたか、そもそも論も含めてでも結構ですので、ヘルプまたは参考サイトをご教示ください。 【現在の状況】 ①bbb.asp?PARM1="hensu"からjavascriptで変数(P_hensu)として取得出来ています。 ②javascriptを抜け出すと変数(P_hensu)の値は入っていません。 (bbb.aspのソース概略) <%@ LANGUAGE=VBScript %> <% Option Explicit %> <script type="text/javascript"> /* パラメータ(PARM1)を取得する */ const searchParams = new URLSearchParams(window.location.search); var P_hensu = searchParams.get('PARM1'); </script> <% '上段で取得した変数(P_hensu)をここで使いたいのですが持ってこれません。 call prog1(P_hensu) %> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> </head> </html>

  • ASPでoo4oを使ってのOracleへの接続について

    ASPとoo4oについて質問させていただきます。 ASPファイルのソースの中でVBScriptでoo4oを使ってOracleに接続する 処理を作成しています。 構文に間違いがあるのか、何度もブラウザでエラーが出てしまいます。 基本の部分だけでもいいので、VBScriptでoo4oを使って Oracleに接続する部分の記述を教えてください。 よろしくお願いします。

  • HTML上に表示されている文字をフラッシュに読み込む?

    ASPファイルにIDとパスワードを入れて、ログインチェックをし、OKなら次のASPファイルを開くようにしております。(よくあるログインページです) メニュー(項目)の部分をフラッシュで作成したのですが、フラッシュの中にHTML上に表示されている文字を読み込むことはできるのでしょうか? ASPファイルから渡されたIDをフラッシュの中に読み込みたいのです・・・ また、読み込めたとして、それを他のHTMLファイルに送る事は出来るのでしょうか? 普通、フラッシュでHTMLのファイルを呼ぶときは getURLを使いますよね? その後に送る文字を記述するのはどうしたら良いのでしょうか? すごく困っています。 どんな些細なヒントでもいいので教えてください。 完璧な答えでなくても結構です。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • ASPからDLLを実行させるには

    ASPからDLLを実行させるにはどう記述すれば良いのでしょうか? 例えば、ASP側でパラメータとDLLをCALLして、そのDLLで処理が行われ復帰値を得る。 上記の内容が記載されているサイトを知っていたら教えてください。

  • WEBページからアプリケーションを起動する方法

    現在ASPを使用したWEBアプリケーションを作成中です。 そこで質問なのですが、 WEBページからVBで作成したアプリケーションを起動させる方法について教えていただけないでしょうか。 方法は、HTMLかJavaScript、ASP、VBScript のいずれかで、 WEBページ内に、JavaアプレットのようにExeを埋め込むか、 リンクをクリックすると、Exeが起動するような形がよいのですが。。 リンクを素で貼り付けたのですが、ダウンロードしますか?というメッセージが出てしまうので。。(当然かもですが;) 初心者のような質問で申し訳ないのですが、よろしくお願いします。 クライアントはWindowsマシン、IEブラウザ限定でもかまいません。 Exeはローカル内のExeです><

  • .aspについて

    はじめまして。 VBScriptにて簡単なサンプルを書いた所, Internet Explorer等のPC用ブラウザでは表示できたのですが 携帯電話ではタグ等がそのまま表示されてしまいました。 VBScriptは携帯端末のブラウザには対応していないのでしょうか? また携帯電話のHPで見受けられる.aspがアドレスとなっているものは どの様なプログラム言語で書かれているものでしょうか? お分かりになる方がいらっしゃいましたら, 宜しくお願い致します。

  • ASPの上手な説明方法は?

    すみません・・・ ASPを全く何も知らない人にどう説明すればよいか解りません。 どなたか~ 教えて下さい。 ASPはOSはwindowsで、IISを使用して…、うちの場合はDBはSQLserverで… プログラムの部分はjavascriptやVBscriptを使って… では、ASPそのものはなんと言えばよいのでしょうか? 上のようにしてできるファイルの拡張子ですよ…とか。 上記のことをブラウザで表現するにはHTMLではなく、拡張子をASPにしないといけない…と言うくらいしか思いつきません。 HTMLを言語というなら、ASPも言語と言ってもよいのでしょうか? ASPを言語というには何か抵抗があるのですが…

  • ブラウザーからサーバ側のaspファイルを読み込む方法について

    クライアント側のVBscriptやJavaScriptなどのスクリプト 言語から画面を遷移しないでプログラム内でaspファイルを 呼びサーバ側での処理をした後にまたその後のプログラム を実行するような処理をしたいのですがどのように記述し たらよいのでしょうか? (クライアントのプログラム内でサーバ側のaspファイルの 関数を呼び処理の結果をクライアントのスクリプト言語に 反映させたいのですが。。。)