みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C#とwindows APIとの連動方法

添付画像のように
複数のファイルを選択し、右クリックから自作プログラムを起動してファイル名を変更するソフトを作りたいです。
つまり以下のような処理を行いたいのです。
(1)ファイルを選択 → (2)右クリックメニューから自作ソフトを選択 → (3)自作ソフトがファイル名を変更


(2)の右クリックメニューへ自作プログラムを追加するには、レジストリを修正すればよい事がわかりました。
そうなると後は、自作ソフトがwindowsが現在選択しているファイル名を取得する必要があります。

しかし、Win32APIやgoogleで検索してもそれらしい情報を見つけることが出来ません。
選択ファイル名を取得する方法をご存じの方、ぜひご教授願えたらと思います。
わかりにくい質問で申し訳ございません。本当に困っております。

投稿日時 - 2014-07-17 01:16:46

QNo.8681355

すぐに回答ほしいです

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

簡単に。。。

1.レジストリの登録の際に「プログラム名 "%1"」でコマンドパラメータを指定できるようにする。
2.自作ソフト内で起動コマンドラインを取得して名称変更するプログラムを作成。

起動時のコマンドラインの取得方法は、

String[] CmdLines;
CmdLines = System.Environment.GetCommandLineArgs();

で取得できます。

CmdLines[0]:プログラム名称
CmdLines[1]:コマンドラインパラメータ1
CmdLines[n]:コマンドラインパラメータn

投稿日時 - 2014-07-17 10:45:35

補足

ご回答ありがとうございます。

一つ疑問なのですが
コマンドライン引数はプログラム起動時に、プログラムへ値を渡す方法ですよね?
例えばexplorer.exeを起動する場合は、「explorer.exe C:\text.txt」のように記述すると思うのですが
肝心のC:\text.txtの部分はどうやって調べればよいのでしょうか?

私の作りたいソフトの処理を簡単に書くと以下のようになります。
 (1)windowsデスクトップ上で、ファイルを選択する
 (2)その状態で、右クリックメニューを表示して自作ソフトを起動する。
 (3)自作ソフトが選択されているファイル名を変更する。

上記のような処理を行いたいのですが、自作ソフトに値を渡す方法はコマンドライン引数を使うとして
その引数の取得方法(この場合は、選択中のファイル名)が調べ方が分かりません。
ぜひその部分をご教授願えたらと思います。

投稿日時 - 2014-07-17 19:37:14

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

> 自作ソフトに値を渡す方法はコマンドライン引数を使うとして
> その引数の取得方法(この場合は、選択中のファイル名)が調べ方が分かりません。

#2にSystem.Environment.GetCommandLineArgsを使った方法がちゃんと書いてありますけど。
どこがどうわからないのですか?

参考:
http://dobon.net/vb/dotnet/programing/commandline.html

投稿日時 - 2014-07-19 21:55:28

補足

私のコマンドライン引数の理解がまだ不十分なようです。
詳しいご回答ありがとうございます。

投稿日時 - 2014-07-21 03:07:54

ANo.1

ドラッグ&ドロップ ファイル名取得 のキーワード検索すれば一杯情報出てきますので
その中から自分で理解できるものでも探してください

Microsoftの説明例
http://support.microsoft.com/kb/307966/ja

投稿日時 - 2014-07-17 09:16:29

補足

ドラッグ&ドロップを使用する場合
一度自作ソフトを起動して、起動したソフトにファイルをドラッグ&ドロップすることになると思います。
私が作りたいのはその方法ではなく右クリックメニューからダイレクトに処理が実行される形態です。

イメージとしては、例えばファイルを圧縮する場合
ファイルを選択して右クリックから「zipへ圧縮する(Q)」を押せばダイレクトにファイルはzipに圧縮されます。そういうイメージで処理したいんです。

投稿日時 - 2014-07-17 09:40:24

あなたにオススメの質問