アプリ版:「スタンプのみでお礼する」機能のリリースについて

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


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

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

「C#とwindows APIとの連動方法」の質問画像

A 回答 (3件)

簡単に。

。。

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

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

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

で取得できます。

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

この回答への補足

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

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

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

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

補足日時:2014/07/17 19:37
    • good
    • 0

> 自作ソフトに値を渡す方法はコマンドライン引数を使うとして


> その引数の取得方法(この場合は、選択中のファイル名)が調べ方が分かりません。

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

参考:
http://dobon.net/vb/dotnet/programing/commandlin …

この回答への補足

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

補足日時:2014/07/21 03:07
    • good
    • 0

ドラッグ&ドロップ ファイル名取得 のキーワード検索すれば一杯情報出てきますので


その中から自分で理解できるものでも探してください

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

この回答への補足

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

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

補足日時:2014/07/17 09:40
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!