C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[9]: 関連付けファイルの起動


(過去ログ 87 を表示中)

[トピック内 13 記事 (1 - 13 表示)]  << 0 >>

■51855 / inTopicNo.1)  関連付けファイルの起動
  
□投稿者/ らんぺるーる (1回)-(2010/07/22(Thu) 20:24:08)

分類:[VB.NET/VB2005 以降] 

お久しぶりです。らんぺるーるです。
ここの掲示板では何回もお世話になっております。
いつもいつもありがとうございます。

早速で恐縮ですが、ひとつ質問させていただけないでしょうか。

.NETVBで、拡張子「.test」を閲覧するためのソフトである
exeファイルのアプリケーションを作成したとします。
(以降「Aplication.exe」と略します。)

拡張子「.test」に「Aplication.exe」を関連付けします。
関連付けにあたっては、Windowsの機能である
「ファイルを開くプログラムの選択」でおこないました。

そこで、エクセルを使用する感覚で
拡張子「.test」のファイルをダブルクリックした際に、
exeファイルのアプリケーションを立ち上げ、
「.test」のファイルの内容を表示した状態で
起動したいと考えております。

それには、アプリケーション側に関連ファイルから
呼び出された場合の振る舞い、実装をおこなわなければ
ならないと考えていますが、どのようにすればよいでしょうか。


*My.Application.CommandLineArgsで外部ソフト等から
 コマンドライン引数を受け取る方法は知っていますので、
 それに近い形で実現できないでしょうか。





引用返信 編集キー/
■51856 / inTopicNo.2)  Re[1]: 関連付けファイルの起動
□投稿者/ よねKEN (549回)-(2010/07/22(Thu) 21:38:26)
よねKEN さんの Web サイト
No51855 (らんぺるーる さん) に返信
> *My.Application.CommandLineArgsで外部ソフト等から
>  コマンドライン引数を受け取る方法は知っていますので、
>  それに近い形で実現できないでしょうか。

関連付けからの起動はアプリにとってはコマンドライン引数で指定して起動した場合とまったく同じです。
引用返信 編集キー/
■51858 / inTopicNo.3)  Re[1]: 関連付けファイルの起動
□投稿者/ todo (29回)-(2010/07/23(Fri) 09:51:39)
> それには、アプリケーション側に関連ファイルから
> 呼び出された場合の振る舞い、実装をおこなわなければ
> ならないと考えていますが、どのようにすればよいでしょうか。

Excelのように一つのプロセスで複数のファイルを扱うアプリと、メモ帳のように一つのプロセスで
一つのファイルをアプリとでは、実装方法が異なるはずです。

ちなみに、ExcelはDDE通信を使っているようです。

# 拡張子xlsの「開く(O)」にDDE通信が設定されています。
引用返信 編集キー/
■51875 / inTopicNo.4)  Re[2]: 関連付けファイルの起動
□投稿者/ とっちゃん (530回)-(2010/07/23(Fri) 12:00:18)
とっちゃん さんの Web サイト
No51858 (todo さん) に返信
> Excelのように一つのプロセスで複数のファイルを扱うアプリと、メモ帳のように一つのプロセスで
> 一つのファイルをアプリとでは、実装方法が異なるはずです。
>
> ちなみに、ExcelはDDE通信を使っているようです。
>
> # 拡張子xlsの「開く(O)」にDDE通信が設定されています。

一つのプロセスで、複数ファイルを扱う場合は必ずDDE(ShellDDEと呼ぶ)を使って実装する必要があります。

が、.NET はこの部分を全くフォローしていないどころかDDE自体、完全自前で勝手にやれなので
知識がないと実装はかなり困難を極めます。

なので、どうしてもこのパターンをという場合は、VS同様セレクターを登録して
そこから独自のプロセス間通信(好きな実装スタイルをとればいい)を使って、起動してるアプリに
ファイルパスを渡すというのが常套手段となります。

ファイルの受け取りは、起動引数なので、すでに経験済みということで省略。
ClickOnceは関連付けできなかったと思いますが、VSセットアップは関連付けもできるので
ユーザー環境に設定したい場合は、一度ヘルプを読んで見ることをお勧めします。

引用返信 編集キー/
■51878 / inTopicNo.5)  Re[3]: 関連付けファイルの起動
□投稿者/ らんぺるーる (2回)-(2010/07/23(Fri) 13:27:04)
ご回答ありがとうございます。

一つのプロセスで一つのファイルを閲覧するだけで大丈夫です。

アプリ側の実装はパラメータ引数対応済みなので、
無修正でいけそうです。

あとは、ファイルをダブルクリックした際にアプリ側に
2つの引数を渡してあげる方法がわかればいけそうです。

アプリ側の受け取る方の実装は経験済みですが、
関連付けされたファイルから、
アプリ側へ情報を渡す方法は知りません。

アプリ側に渡すのは以下2つのです。
第1パラメータが「起動区分(表示または印刷)」
第2パラメータが「ファイルパス」

アプリ側へ上記2つを渡すように設定するのは
どうしたらよいのでしょうか。






引用返信 編集キー/
■51879 / inTopicNo.6)  Re[4]: 関連付けファイルの起動
□投稿者/ とっちゃん (531回)-(2010/07/23(Fri) 13:54:22)
とっちゃん さんの Web サイト
No51878 (らんぺるーる さん) に返信

> アプリ側の受け取る方の実装は経験済みですが、
> 関連付けされたファイルから、
> アプリ側へ情報を渡す方法は知りません。
>
最終的にどうするのでしょう?
エンドユーザー環境で利用するのですか?それとも
開発してる自分のマシンで「だけ」利用するのですか?

それによってやり方が違います。
前者であれば、インストーラを作ってください。VSセットアップで作成できます。
#ClickOnceでは関連付けはできないはず


> アプリ側に渡すのは以下2つのです。
> 第1パラメータが「起動区分(表示または印刷)」
> 第2パラメータが「ファイルパス」
>
> アプリ側へ上記2つを渡すように設定するのは
> どうしたらよいのでしょうか。
>
関連付け情報の起動パラメータを
/Open "%1" という感じにします。
これで、"/Open" と「ダブルクリックしたファイルのパス」の2つが引数として渡されてきます。

引用返信 編集キー/
■51951 / inTopicNo.7)  Re[5]: 関連付けファイルの起動
□投稿者/ らんぺるーる (3回)-(2010/07/27(Tue) 10:19:43)
No51879 (とっちゃん さん) に返信
エンドユーザー環境での利用を考えています。

> 関連付け情報の起動パラメータを
> /Open "%1" という感じにします。
> これで、"/Open" と「ダブルクリックしたファイルのパス」の2つが引数として渡されてきます。

起動パラメータの指定ですが、
コントロールパネル→ フォルダオプション→「ファイルの種類」タブ
→「詳細設定」ボタン→アクションを選択→「編集」ボタン
→「アクションを実行するアプリケーション」
の箇所に、パラメータを追記してみましたが、
パラメータがアプリケーションに渡されません。

今回はパラメータに以下の2を指定します。
@起動区分(「-print」で印刷をするようにアプリを作成しました。)
Aファイルパス

「アクションを実行するアプリケーション」に以下のように記述しました。
exeファイルのパス -print %1

指定箇所または記述方法に誤り等あれば、
教えていただけないでしょうか。


引用返信 編集キー/
■51955 / inTopicNo.8)  Re[6]: 関連付けファイルの起動
□投稿者/ よねKEN (552回)-(2010/07/27(Tue) 10:39:23)
よねKEN さんの Web サイト
No51951 (らんぺるーる さん) に返信
> パラメータがアプリケーションに渡されません。

アプリケーション自体は起動しましたか?
起動した場合、実際に渡ってきたコマンドラインの情報はどうなっていましたか?

> 今回はパラメータに以下の2を指定します。
> @起動区分(「-print」で印刷をするようにアプリを作成しました。)
> Aファイルパス
>
> 「アクションを実行するアプリケーション」に以下のように記述しました。
> exeファイルのパス -print %1

「exeファイルのパス」は""で括っていますか?
「%1」を「"%1"」としたらどうでしょうか?

引用返信 編集キー/
■51960 / inTopicNo.9)  Re[6]: 関連付けファイルの起動
□投稿者/ とっちゃん (534回)-(2010/07/27(Tue) 11:31:55)
とっちゃん さんの Web サイト
No51951 (らんぺるーる さん) に返信

> エンドユーザー環境での利用を考えています。
>
ということは、自分ではない誰かが使うことを想定しているのですよね?
であれば、ファイルの種類のところで設定をどうこうしようとするのではなく
「インストーラ」を作ってください。

引用返信 編集キー/
■51961 / inTopicNo.10)  Re[7]: 関連付けファイルの起動
□投稿者/ よねKEN (553回)-(2010/07/27(Tue) 11:57:40)
よねKEN さんの Web サイト
No51960 (とっちゃん さん) に返信
> であれば、ファイルの種類のところで設定をどうこうしようとするのではなく
> 「インストーラ」を作ってください。

その「インストーラ」を作るためにも、
まず「関連付け情報」でどう設定されていないといけないのか(インストール後の状態)
を理解しておく必要があるのでは?
#で、今はその段階なんだと私は思っています

それとも、インストーラ作成のツールがよろしくやってくれたりして、
開発者は知らなくても大丈夫だったりするのでしょうか?

引用返信 編集キー/
■51965 / inTopicNo.11)  Re[8]: 関連付けファイルの起動
□投稿者/ とっちゃん (535回)-(2010/07/27(Tue) 13:27:40)
とっちゃん さんの Web サイト
No51961 (よねKEN さん) に返信
> ■No51960 (とっちゃん さん) に返信
>>であれば、ファイルの種類のところで設定をどうこうしようとするのではなく
>>「インストーラ」を作ってください。
>
> その「インストーラ」を作るためにも、
> まず「関連付け情報」でどう設定されていないといけないのか(インストール後の状態)
> を理解しておく必要があるのでは?
> #で、今はその段階なんだと私は思っています
>
> それとも、インストーラ作成のツールがよろしくやってくれたりして、
> 開発者は知らなくても大丈夫だったりするのでしょうか?
>
インストーラの設定する項目がどこにどういう影響をするのか?
なにを設定したいからインストーラではどうやるか?

なら、いろいろとお手伝いもできます。が、残念ですがあのダイアログは
インストーラで設定できる項目が操作できたのは2000までのはずです。
記憶が正しければ、XPから間違ってる場合は、Vistaからは、
XPから新設された別の手段による関連付けの設定ダイアログに代わっていて
インストーラで設定できるものとは別のものとなっています。



ま、それも含めてどういうものなの?ということであれば
http://msdn.microsoft.com/en-us/library/bb773177(VS.85).aspx
ここの、Shell Developers Guide に書かれていますよ。

私の知る限り現存する文書でちゃんとしたものはこれだけです。日本語も英語も含めてね。

引用返信 編集キー/
■51975 / inTopicNo.12)  Re[9]: 関連付けファイルの起動
□投稿者/ らんぺるーる (4回)-(2010/07/27(Tue) 15:49:46)
「アクションを実行するアプリケーション」の記載方法については、
引数をダブルコーテーションで囲むことでうまくいきました。
"exeファイルのパス" "-print" "%1"
よねKENさんありがとうございました。


ただ、本番ではインストーラを作成しますので、
とっちゃんさんのお勧めサイトを参考にさせていただきます。
またインストーラ作成時にわからないことがあれば
質問させて頂くかもしれません。

その際はどうぞよろしくお願い致します。
解決済み
引用返信 編集キー/
■51983 / inTopicNo.13)  Re[9]: 関連付けファイルの起動
□投稿者/ Azulean (583回)-(2010/07/27(Tue) 22:58:35)
No51965 (とっちゃん さん) に返信
> 記憶が正しければ、XPから間違ってる場合は、Vistaからは、
> XPから新設された別の手段による関連付けの設定ダイアログに代わっていて
> インストーラで設定できるものとは別のものとなっています。

Vista からですね。
http://social.answers.microsoft.com/Forums/ja-JP/w7programsja/thread/9a9cda6a-2792-40c1-8e16-4bf289381029

XP でも関連づけのやり方によっては詳細なダイアログは出てきません。
(プログラムから開くで関連づけしたときだったかもしれませんが、記憶が不確かです)
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -