「フォームを起動すると同時に、そのフォーム内でFlashで作った動画が動き出す」
というものをやりたいのですが、
OLEでやってみたら別ウィンドウで実行されてしまったり、
AutoActivateを3-自動にしたのですが、ダブルクリックでないと実行しない
です。一体何が自動なのやら・・・。
根本的に、OLEでできるものなのか、もしできないとしたら
どのような方法でなのなら可能か、ご指導願います・・・。
Shockwave FlashのActiveXコントロールを使ってなら
やったことがあります。
プロジェクト>コンポーネント
からShockwave Flashを選んで、
Formに配置して、
Private Sub Form_Load()
ShockwaveFlash1.Movie = "(ファイル名)"
Call ShockwaveFlash1.Play
End Sub
で、できると思います。
参照設定の方のShockwave Flashではやってことがないのでわかりません。
ありがとうございます。
やってみたのですが、うまく作動しません。
エラーは出ないんですが、動画がながれません。
指定するファイルは、swf形式のものでよいのでしょうか?
一応、swf、exe、htmlを試してみましたが駄目でした。
試しに存在しないファイル名を指定しても同様の結果でした。
プロパティで何か設定が必要なのでしょうか・・・?
追記 実行中にフラッシュ部分を右クリックすると、
ムービーをロードできません
というメニューがでます。
swf形式で大丈夫ですよ
ファイル指定が間違ってるんでしょうか。
ためしに、
Dim sFileName as string
sFileName="(ファイル名)"
if Dir(sFileName)<>"" then
ShockwaveFlash1.Movie = sFileName
Call ShockwaveFlash1.Play
Else
MsgBox "みつかりません"
End if
としてみてはどうでしょう。
なんか、根本的にswfファイルを開くことができません。
有効なwin32アプリケーションではありませんとかどうとかエラーがでます。
きっとそのせいでしょう。
その問題さえなければ、Loreleyさんの教えてくださった方法で
正解のようです。ありがとうございました。
問題が既にVBの域を超えたので、この質問は解決とさせてきただきます。
ほんとに助かりました。ありがとうございました。
駄目ですやっぱりできません・・・。
swfファイルのプロパティで、プログラムをInternet Explorerに設定したら
見れたのですが、やはりVBでは動きません。
相変わらずムービーをロードできないようです。
先ほど教えていただいたメッセージボックスでの判定にもひっかかりません。
ちゃんとファイルは発見しても、なんらかの問題で実行できないようです。
VBもFlashも初心者で、問題の検討もつきません・・・。
しつこくてすいませんが、よろしくお願いします。
う〜〜ん。
考えられることを羅列してみます
1. swfファイルが外に出ようとしている。
たとえば外部のファイルを読みにいったり、
続きのファイルにジャンプしたり。
2.MovieプロパティではなくてLoadMovieメソッドを使っている
これはうちでもできませんでした。
3.swfファイルを変えてみる。
同じswfファイルだけで試していませんか?
できれば自作のものがベストですが。
4.ファイル名に全角や半角スペースが含まれる。
思い切ってCドライブの最初にもってって、a.swfとかに名前を変えてためしてみましょう
それと、「有効なwin32アプリケーションではありません」というようなエラーメッセージは
swfファイルを直接ダブルクリックしたようなときに出るメッセージですが
それ以外の場合ででますか?
swfは単体で動くものではないので、ダブルクリックするとそんなメッセージがでてしまいます
あとは、Flashを入れなおすといいかもしれませんね。
私は以前、Flashビューアみたいなものをダウンロードしたことがあります
(Macromediaから)
それをインストールしてみるとか。
原因が判明しました。
swfファイルのアドレスを指定していませんでした。
プログラムとswfファイルが同一フォルダ内にあるので、
そういう場合はアドレスの指定はいらなかったような気がするのですが。
ただ、C:\〜・・・からちゃんと指定すると、ちゃんと動いてくれました。
問題は、小規模に配布する予定があるので、
「同じフォルダ内(もしくはそこからさらに深層のフォルダ)にある
swfファイルを指定する。」
ことが必要になってくるのです。
問題点がフラッシュからアドレスの指定に変化してしまいましたが、
よろしくお願いします。
プロジェクトファイルをダブルクリックした場合は
プロジェクトファイルのあるパスがカレントディレクトリになります。
一方、VBを先に起動して
ファイルを開くや最近使ったファイルでプロジェクトを開くと
VBのインストールしてあるファイル
(c:\program files\DevStudioなど)
がカレントディレクトリになります。
exeにした場合はexeを直接起動すればexeのあるパスがカレントディレクトリになりますが
ショートカットだとその設定によって
(ショートカットのプロパティをみればわかると思います)
カレントディレクトリが違います。
商品として売られているアプリの場合は
レジストリやiniファイルなどにインストールしたパスを
記録してそれをつかったりしています。
ちなみにカレントディレクトリは
app.pathで実行中に取得できます。
chdirかなんかで変更もできるはずです。
ありがとうございます。
chdirで検索したら、curdir関数とやらを発見しました。
カレントディレクトリのアドレスを取得するそうです。
それに強引にswfファイル名を足して、Shockwaveflash.moveに与えました。
そしたら無事動きました。なんて強引な。
だめですね、俺。弱すぎますね。
こんどこそほんとに解決です。お手を煩わせてすいませんでした。
ありがとうございました。
ツイート | ![]() |