HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0827
サルバドール・ダルビシュ#epackの使い方、宜しくお願いします。4解決


サルバドール・ダルビシュ

リンク

2013/8/27(Tue) 22:00:26|NO.56707

HSP初心者の者です。宜しくお願いします。
ランチャーみたいな物を作ってるんですが、
実行ファイルの中に実行ファイルを埋め込むことは出来るみたいなのですが、
いざ、#epackとexec命令を使って作ったのですが、
実行するとエラー14がでました。
そこでネットで調べたら、

>埋め込まれた実行ファイルを起動 するには、一度ハードディスク上にファイルとして出力して、
これをexec命令で起動させないとダメ!

と書いてました。
一度ハードディスク上にファイルとして出力とは、どうしたら出来るのでしょうか?
出来れば簡単な説明とソースコードをお願いします。



この記事に返信する


名無し

リンク

2013/8/27(Tue) 22:16:23|NO.56708

ノートパッドを使ってみてはどうでしょうか?
ノートパッドは、テキストファイルだけではなく、exeや画像(bmpやjpgやpng)も開いたり保存したりできますよ。



FunnyMaker

リンク

2013/8/27(Tue) 22:50:43|NO.56709

口で言うより見せた方が早いものです。

ということで、サンプルを作りましたので、UPします。

http://kie.nu/1heP

debug2.exe を実行すると確認ダイアログが出ますので、OKしてもらいますと、子供の実行ファイルが
出てきます。そしてそれを exec 命令で呼び出します。

ここでひとつ問題が出ます。それは、「子供実行ファイルをどうするか?」です。
>ランチャーみたいな物を作ってるんですが、
ですよね、ということは、使い終わった子は削除するのが理想ですよね。
(でなければ、次回からは、今吐きだした子を呼び出すだけで良いから、そもそもはじめにパックする
意義がなくなる。)
使い終わったら、"ランチャー自身が子を delete 命令で削除する" という機能を入れるべきです。
.......というのが、あくまで私の意見です。最終的な仕様は質問者様が決めるものですが。

あと余談ですが、「ランチャーみたいな物」が実行ファイルを吐きだしてそれを呼び出す というのは
面白い発想ですね。普通なら直近にフォルダを作ってそこに小物を溜めようと思うのですが...。
質問者様には何か特別な構想があるのでしょうか...? ちょっぴり気になります。



あり

リンク

2013/8/27(Tue) 23:41:03|NO.56711

もし、埋め込むプログラムがHSP製の物だけなら、execで自分自身を起動して
コマンドラインによってrunで起動するaxファイルを分岐させる方法もあります。

少し手順がややこしいですが

// プログラムA(A.hsp) gsel 0, 1 color 255 : boxf color 255, 255 font MSGOTHIC, 48 mes "プログラムAを起動しました"
をファイル名"A.hsp"で保存してオブジェクトファイル作成でA.axを作成し
次に

// プログラムB(B.hsp) gsel 0, 1 color ,255 : boxf color , ,255 font MSGOTHIC, 48 mes "プログラムBを起動しました"
を"B.hsp"で保存して同様にB.axを作ります。

最後に

// ランチャー本体 #packopt name "exec_test" #packopt hide 1 #epack "A.ax" #epack "B.ax" // コマンドラインの内容によって起動するaxファイルを分岐する if dir_cmdline = "start_A" : goto *A_run if dir_cmdline = "start_B" : goto *B_run button "A", *A_exec button "B", *B_exec gsel 0, 1 stop *A_exec // コマンドラインに"start_A"を送って自分自身を起動 exec "exec_test.exe start_A", 0, "" stop *B_exec // コマンドラインに"start_B"を送って自分自身を起動 exec "exec_test.exe start_B", 0, "" stop // exeに埋め込んだプログラムを起動 *A_run run "A.ax", "" stop *B_run run "B.ax", "" stop
を適当な名前で保存し、一度コンパイル+実行をしてから(しなくても大丈夫かも)
実行ファイル自動作成で"exec_test.exe"を作ります。

これで一つの実行ファイルだけで自身に埋め込んだ
複数のプログラムを起動する事ができます。



サルバドール・ダルビシュ

リンク

2013/8/28(Wed) 21:30:25|NO.56716

名無しさん、FunnyMakerさん、ありさん、
お答えありがとうございます。

●FunnyMakerさん、
丁寧にサンプルまでありがとうございます。
初心者に大変助かります。
サンプル、大体やりたかった事です。

>使い終わったら、"ランチャー自身が子を delete 命令で削除する" という機能を入れるべきです。

はい、削除は入れようと思ってます。

>質問者様には何か特別な構想があるのでしょうか...? ちょっぴり気になります。

いや〜・・構想ってほどのHSPの知識もないので、
基本的に自分に便利なソフトを作ってます。
ただ、仰ったように、「直近にフォルダを作ってそこに小物を溜め」でも良いのですが・・・

●ありさん、
丁寧にありがとうございます。
ありさんの、axファイルを分岐させる方法、良いですね。
時間が有る時に、この方法で昔作った自作のソフトを1つにしたいと思います。

一応、解決なんですが、
もう少し、色々な方法も知りたいので、
宜しくお願いします。



ONION software Copyright 1997-2023(c) All rights reserved.