マクロからのカレントディレクトリ取得

  1. こんにちは。以前いただいた「ファイル名を引数にしてアプリ起動」するマクロの改造途中に問題に突き当たったので質問させていただきます。
    タイトルの通りですが、マクロからMeryのカレントディレクトリ(「ファイルを開く」で最後に開いたフォルダとか)を取得するにはどうすればいいのでしょうか?
    と、いうかそれ以前にそのようなことはできるのでしょうか?ご教授お願いします。

     |  みそ  |  返信
  2. こんばんは、お返事遅れて申し訳ごさいません。
    ブログ更新と返信が無い時はMery開発中だと思ってくださいw

    > マクロからMeryのカレントディレクトリ(「ファイルを開く」で最後に開いたフォルダとか)を取得するにはどうすればいいのでしょうか?
    > と、いうかそれ以前にそのようなことはできるのでしょうか?ご教授お願いします。

    むむっ、編集中のファイル名であれば「document.FullName」で取得できますのが、
    カレントディレクトリ(最後に開いたディレクトリ)を取得するメソッドはありません。。。
    Mery本体のパスを取得するメソッドなどもありますので、代用できればいいのですが、
    もしどうしても必要とされていましたら実装しても良いかと思っていますが、いかがでしょう?

     |  Kuro  |  返信
  3. > もしどうしても必要とされていましたら実装しても良いかと思っていますが、いかがでしょう?
    そうしていただけるとうれしいです。
    編集途中のファイルを自動で保存するようにしたかったんです。いただいたマクロは事前にいったん保存することが必須でしたので・・・
    よろしくお願いします。

     |  みそ  |  返信
  4. > 編集途中のファイルを自動で保存するようにしたかったんです。いただいたマクロは事前にいったん保存することが必須でしたので・・・

    そういうことであれば、「document.Save()」で引数を指定しなければ、編集途中のファイルを上書き保存することができますよ。(一度も保存してない場合は上書きではなく、名前をつけて保存を聞いてきます。)

    ダメでしょうか・・・。

     |  Kuro  |  返信
  5. > 名前をつけて保存を聞いてきます。
    む、そうだったのか・・・
    まあそれでもいいんですが、できれば
    (一度も保存されていない場合、)固定の名前で書き出し→コマンドラインコンパイラに渡してコンパイル
    というようなことがしたいのです(保存するに値しないコードで開発用のフォルダが埋まってしまうのは嫌なので・・・)
    できればでいいのですが・・・

     |  みそ  |  返信
  6. なるほど、そういうことでしたか。
    たとえばMery.exeのパスを取得することは可能ですので、一度も保存してない場合は
    そこに「temp」などのフォルダを設けておいて、そこに重複しないランダムなファイル名で書き出す、
    などという方法などいかがでしょう。
    (カレントディレクトリだと、どこに保存されるか把握しきれない気がしますので。。。)

     |  Kuro  |  返信
  7. 名前変えることにしました。いちいちひらがなで打つの面倒なんで・・・w

    > そこに重複しないランダムなファイル名で書き出す
    乱数的なのを生成するのが面倒そうですし、「一時的」でいいのでそこまでする必要はないと思います・・・
    と、ここで気づいたのですが、editor.FullNameを使うとC:\Program...\Mery.exeという風に実行ファイル名まで返ってきてしまうため、そのディレクトリに書き出す、ということができません・・・。
    これは使い方が悪いだけなのか、それとも仕様なのか・・・?

    > カレントディレクトリだと、どこに保存されるか把握しきれない気がしますので。。。
    確かにそれは一理ありますね。気がついたらこんなところに・・・みたいなのはちょっと嫌ですね・・・w

     |  miso  |  返信
  8. ども、こんばんは。

    > 名前変えることにしました。いちいちひらがなで打つの面倒なんで・・・w

    了解スw

    > これは使い方が悪いだけなのか、それとも仕様なのか・・・?

    確かに。。。フォルダ名だけ抜き出す方法とかもあるにはありますが、よく考えてみるとMery本体と同じ場所に保存する必要もないですね。。。固定フォルダにユニークな名前で書き出せば良いかと思います。ご使用のマクロがJScript(JavaScript)であれば簡単にユニークなファイル名を生成できますので、適当なフォルダに一時ファイルを書き出してお使いのコンパイラに渡せるんじゃないかと思います。

    会社で昼休みにサンプルを作ってみたのですが、会社に忘れてきてしまって。。。

    一応、ユニークファイル名を生成するスクリプトは、

    var FileName = (new Date().getTime()) + '.txt';

    こんな感じでそれなりにユニークなファイル名になりますので、お役に立てればと思います。

    HSPに渡してコンパイルが終わったあとに削除するというロジックを入れとけばゴミもできないし、使えるかなと思うのですが。。。

     |  Kuro  |  返信
  9. > ども、こんばんは。
    こんばんは。
    「こんばんわ」と「こんばんは」とでどっちが正しいんでしょうかね。至極どうでもいいですが。

    > 固定フォルダにユニークな名前で書き出せば良い
    やはりそうなりますね・・・。
    実はその方向で改造を進めてたりしましたw
    ただMery's Factoryのマクロライブラリに投稿してみようかと考えていたりする(宜しいでしょうか?)ので設定なしでどこかに書き出す・・・というのが目標でしたが
    よくよく考えてみるとみんな用途が一緒な訳がないのでそこはどうしようもない・・・
    つーわけで「設定なしですぐ動作」というのはあきらめることにしました。

    > 会社で昼休みにサンプルを作ってみたのですが、会社に忘れてきてしまって。。。
    昨日もお仕事ですか。お疲れ様です。そしてわざわざありがとうございます。

    > var FileName = (new Date().getTime()) + '.txt';
    日付からファイル名を生成するというのは盲点でした。

    > HSPに渡してコンパイルが終わったあとに削除するというロジックを入れとけばゴミもできない
    これも盲点でした。ただそれなら内部でファイル名固定してどんどん上書きしてっちゃえばいいような気が・・・。

    ともかく、これで問題は解決しました。一つ一つ丁寧に教えていただきありがとうございました。
    それでは。

     |  miso  |  返信
  10. こんばんわw

    > 「こんばんわ」と「こんばんは」とでどっちが正しいんでしょうかね。至極どうでもいいですが。

    個人的には、「こんばんわ」のほうが可愛らしくて好きですがw

    > ただMery's Factoryのマクロライブラリに投稿してみようかと考えていたりする(宜しいでしょうか?)ので設定なしでどこかに書き出す・・・というのが目標でしたが
    > よくよく考えてみるとみんな用途が一緒な訳がないのでそこはどうしようもない・・・
    > つーわけで「設定なしですぐ動作」というのはあきらめることにしました。

    そういうことでしたかっ!ぜひ、ぜひ、ご投稿頂けると嬉しいです。となると、やはりMery本体と同じフォルダに一時ファイルを作成っていう動作が望ましいですね。本体パスからフォルダ名だけ抜き出すこともできるといえばできると思いますが、ちょいと面倒ですね。。。

    > 昨日もお仕事ですか。お疲れ様です。そしてわざわざありがとうございます。

    いえいえ、おもしろそうなマクロだったので。そして、みそさんの開発されているソフトにも興味がありまして、お役に立てれば幸いですw

    > > HSPに渡してコンパイルが終わったあとに削除するというロジックを入れとけばゴミもできない
    > これも盲点でした。ただそれなら内部でファイル名固定してどんどん上書きしてっちゃえばいいような気が・・・。

    確かに、固定ファイル名でも問題ないですね。問題はHSPがコンパイルして実行してる間にファイルが捕まれてしまっていると削除できないし、実行が終わるまでマクロを待機させることができるかどうか・・・。

    進展があればぜひご報告くださいね!
    Factoryのマクロライブラリもさびしいのでご投稿いただけると助かりますw

     |  Kuro  |  返信
  11. > 個人的には、「こんばんわ」のほうが可愛らしくて好きですがw
    うちの母親は「アホっぽくなる」とか言ってました・・・w
    たしかに「...わ」の方がかわいらしい印象を受けますね。

    > ぜひ、ぜひ、ご投稿頂けると嬉しいです。
    許可ありがとうございます。まあ自分は改造(下手すると改悪)しかしてませんが・・・

    > となると、やはりMery本体と同じフォルダに一時ファイルを作成っていう動作が望ましいですね。
    HSPでならやり方もわかるんですが、それはどう考えても無理ですねw
    やり方を教えていただけたら恐縮です。

    >開発されているソフト
    http://www.symphonic-net.com/misodengaku/wordpress/?p=377とかhttp://www.symphonic-net.com/misodengaku/laboratory/においてあります。
    しっかし改めてみてみるとろくでもないものばっかり作ってるなぁ・・・w

    > HSPがコンパイルして実行してる間にファイルが捕まれてしまっていると削除できない
    たぶんソースコードはコンパイル時に読んで、後は関係ないと思いますし、コンパイルはほぼ一瞬で終わるので問題ないと思われます。

     |  miso  |  返信
  12. 酔っ払いです。こんばんわ。

    > > ぜひ、ぜひ、ご投稿頂けると嬉しいです。
    > 許可ありがとうございます。まあ自分は改造(下手すると改悪)しかしてませんが・・・

    そんなことはないですよ、こうしてご協力頂けるとテンションがあがってしまいますw

    > > となると、やはりMery本体と同じフォルダに一時ファイルを作成っていう動作が望ましいですね。
    > HSPでならやり方もわかるんですが、それはどう考えても無理ですねw
    > やり方を教えていただけたら恐縮です。

    酔っ払いなので正しいかどうかは怪しいところですが、以下のようなスクリプト(遠回りかも)を作ってみました。

    var s = editor.FullName;
    var a = s.split("\\");
    a.splice(a.length - 1, a.length);
    var fn = a.join("\\") + "\\" + new Date().getTime() + ".hsp";
    alert(fn);

    Mery本体のフォルダと同じ位置でユニークなファイル名を生成します。

    > しっかし改めてみてみるとろくでもないものばっかり作ってるなぁ・・・w

    拝見させていただきましたw
    ユックライザは斬新すぎますね。。。手持ちに顔の写ってる写真がなくて動作できなかったですけど、すごい技術力だと思います、これw
    MOSAIC2、ウケましたwww どうみてもリカちゃんと大石(ry

    > たぶんソースコードはコンパイル時に読んで、後は関係ないと思いますし、コンパイルはほぼ一瞬で終わるので問題ないと思われます。

    とりあえず、HSPインストールしてみました。
    なんとか完成させたいところです。

     |  Kuro  |  返信
  13. > 酔っ払いです。こんばんわ。
    酒は飲みません。飲めません。こんばんは。

    > そんなことはないですよ、こうしてご協力頂けるとテンションがあがってしまいますw
    ありがとうございます。

    > 酔っ払いなので正しいかどうかは怪しいところですが、以下のようなスクリプト(遠回りかも)を作ってみました。
    (中略)
    > Mery本体のフォルダと同じ位置でユニークなファイル名を生成します。
    しっかり動作しました。ただ(当初は)自分の環境で動かすことしか考えてなかったため、それを直すのに手間取ってます・・・orz
    できても明日(今日?)以降になると思います・・・。

    > ユックライザは斬新すぎますね。。。
    実は斬新でも何でもないです・・・
    http://noo.sakura.ne.jp/yukkuri/をみて、「これならHSPでも出来るんじゃね?」と思い作ったものです。
    しかもベースとなっているのはHSPのサンプル(HSPのインストール先\sample\hspcv\facedetect.hspあたり)です。

    > MOSAIC2、ウケましたwww どうみてもリカちゃんと大石(ry
    これも他の人のアイデア丸パクr(ry
    どう見てもアレなのは作ってたときちょうどひぐらしにはまってたせいですw

    > とりあえず、HSPインストールしてみました。
    > なんとか完成させたいところです。
    一応需要はあるのかな?こんなの使うのは自分ぐらいなモンだと思ってましたが。

     |  miso  |  返信
  14. こんばんは。

    作業の進行状況ですが、もう公開しちゃってもいいかなーというぐらいにはなっています。
    ただ、コンパイラ(というか実行ファイル)が指定されていなかったときにアラートを表示→マクロ終了としたいのですが、
    そのマクロの終了のさせ方がわかりません・・・
    そこだけ何とかなればもう公開しようと思っています。

    さて、Meryの新バージョンはいつ公開されるんでしょうか・・・

     |  miso  |  返信
  15. こんばんは。

    > できても明日(今日?)以降になると思います・・・。

    できたらぜひ教えてくださいね!

    > > ユックライザは斬新すぎますね。。。
    > 実は斬新でも何でもないです・・・
    > http://noo.sakura.ne.jp/yukkuri/をみて、「これならHSPでも出来るんじゃね?」と思い作ったものです。

    なるほど、モトネタがあったんですねw
    しかし残念なことに手元の画像ではうまいこと認識してもらえませんでした、、、

    > どう見てもアレなのは作ってたときちょうどひぐらしにはまってたせいですw

    ウケましたw
    あとはユキンとか面白かったw

    > 一応需要はあるのかな?こんなの使うのは自分ぐらいなモンだと思ってましたが。

    私も当時に小さなサークルでHSPやってました。
    作ったゲームといえば、課長のヅラを扇風機で吹き飛ばすゲーム、セクハラ上司を撲殺するゲーム(これは別の人がメインで作りましたが)など・・・。

     |  Kuro  |  返信
  16. > なるほど、モトネタがあったんですねw
    > しかし残念なことに手元の画像ではうまいこと認識してもらえませんでした、、、
    アニメ画像向けのプロファイルを使ってるんで普通に人を写した写真とかだとうまく認識しません・・・
    元ネタのページのアイマスの画像とか(割と)認識しやすいです。
    もちろんプロファイルをどっかから探してきて(HSPにも同梱されてますが・・・)それと差し替えてやれば普通の写真でも認識します。
    スケールを小さい値にするともしかしたら認識するかも・・・です。

    > 私も当時に小さなサークルでHSPやってました。
    なんだかんだでHSP触ったことのある人って多いんだなぁ・・・

    > 作ったゲームといえば、課長のヅラを扇風機で吹き飛ばすゲーム、セクハラ上司を撲殺するゲーム(これは別の人がメインで作りましたが)など・・・。
    どういうゲームだw
    自分はゲームとか作るのよりツール作るのの方が向いてますね・・・

     |  miso  |  返信
  17. こんなにスレッドが伸びるとは思ってなかったので、幅がとても狭いですねw

    > アニメ画像向けのプロファイルを使ってるんで普通に人を写した写真とかだとうまく認識しません・・・

    なるほど、そういうことでしたか。
    で、アニメ絵で試してみ顔の色がだめなのか使い方が悪いのか、どうもうまく検出してくれませんでした。。。
    おかしいなぁ・・・。

    > なんだかんだでHSP触ったことのある人って多いんだなぁ・・・

    意外と人気ありますよね、メジャーなソフトはあんまり無いけど。。。
    HSPコンテンストの映像をYoutubeで見ましたけど、やっぱ面白いですね。
    みんな発想が自由でいろいろと刺激を受けましたw

    > どういうゲームだw

    www 技術力が低すぎてマウス連打系のゲームしか作れなかったスw

    > 自分はゲームとか作るのよりツール作るのの方が向いてますね・・・

    私も最近はゲームを作る夢は諦めて、もっぱらツールばっかりですね。Delphiも
    フリーなので機会があればイジってみてくださいな。面白いですよ。

     |  Kuro  |  返信
  18. > こんなにスレッドが伸びるとは思ってなかったので、幅がとても狭いですねw
    確かにw。
    なんかものすごく話が脱線してる気もしますが・・・w

    > で、アニメ絵で試してみ顔の色がだめなのか使い方が悪いのか、どうもうまく検出してくれませんでした。。。
    > おかしいなぁ・・・。
    もしかしたら一回検出かけた後Ctrl+OでXMLと画像を絶対パスで指定し直すと直るかもです。。。
    絶対テスト不足だろこれorz

    > 意外と人気ありますよね、メジャーなソフトはあんまり無いけど。。。
    > HSPコンテンストの映像をYoutubeで見ましたけど、やっぱ面白いですね。
    > みんな発想が自由でいろいろと刺激を受けましたw
    MOSAICも元はコンテストで投稿されてたのをみて、「これなら(ry」と思い作ったものです。
    確かに作ること自体は造作もないことだったのですが、アイデアのなさに絶望しました・・・

    > www 技術力が低すぎてマウス連打系のゲームしか作れなかったスw
    一年ぐらい前のHSPフォルダがバックアップに残ってたんでちょいとみてみたらあまりのひどさに笑ってしまいました・・・ww

    > 私も最近はゲームを作る夢は諦めて、もっぱらツールばっかりですね。Delphiも
    > フリーなので機会があればイジってみてくださいな。面白いですよ。
    Delphiですか・・・
    ちょっといじったこともあったんですが、何が何だか全くわからず、その時以来触れてませんw
    これを機にちょっと勉強してみるかな・・・

     |  miso  |  返信
  19. > なんかものすごく話が脱線してる気もしますが・・・w
    ほんとですね、つい違う方向に・・・w
    別スレッド立てなきゃw

    XMLと画像を絶対パスで指定したらいけました!
    軽く感動しちゃいました、これは面白いwww
    すごい精度だ・・・、いろんな画像で試してますw

    つぎはMOSAICも試してみますw

    ・・・(みそさんのサイトに書き込んだほうが良いネタかも)

    > 一年ぐらい前のHSPフォルダがバックアップに残ってたんでちょいとみてみたらあまりのひどさに笑ってしまいました・・・ww

    それ、あります、ありますw
    私も昔作ったソフトとか発掘してみるとほんとヒドイものばかりで。
    特にオリジナルサウンドノベルとかの恥ずかしさと言ったら・・・w

    ツール開発であれば画面周り作るのが断然Delphiのほうが楽ですからw

     |  Kuro  |  返信
  20. > > なんかものすごく話が脱線してる気もしますが・・・w
    > ほんとですね、つい違う方向に・・・w
    > 別スレッド立てなきゃw
    >
    > XMLと画像を絶対パスで指定したらいけました!
    > 軽く感動しちゃいました、これは面白いwww
    > すごい精度だ・・・、いろんな画像で試してますw
    ものすごーく嫌な予感がしたんですがやっぱりかw
    直さないとなぁ・・・

    > つぎはMOSAICも試してみますw
    アレは一時期必死こいて作ってたんですが、USBメモリ上のデータ消失事件によりMOSAIC含め大量のソースコードを失い、それに伴い開発終了したものです・・・
    もう一度書き直そうかとも思ったんですが、もうさすがにやる気がわかなくて・・・

    > ・・・(みそさんのサイトに書き込んだほうが良いネタかも)
    さて、どこに書き込めばいいんだろう?
    ちゃんとしたフォーラムみたいなのを導入してみます。。。

    > 特にオリジナルサウンドノベルとかの恥ずかしさと言ったら・・・w
    ノベルとか物語?系はまずいww

    > ツール開発であれば画面周り作るのが断然Delphiのほうが楽ですからw
    ボタンをドラッグで持ってって配置、みたいなやつでしたっけ?
    アレは羨ましい・・・

     |  miso  |  返信
スポンサーリンク