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


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

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

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

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q任意のファイルアイコンの右クリックメニューに「秀丸で開く(H)」を追加したい

windows10(6bit)と秀丸最新版をつかっています。

すべての種類のファイルについて、それを選んで右クリックメニューを表示させたときに
「秀丸で開く(H)」(Hはショートカットキー)が表示されるようにはどうすればよろしいのでしょうか?

以上、お手数をおかけして恐縮ではございますが、よろしくお願い申し上げます。

Aベストアンサー

> <再度 2.のメニュー>ということは、
> 「その他」→「動作環境」→「関連付け」の次に「コンテキストメニューのキー」があるはずなのでしょうか?

はい、「スタートメニュー等への登録」の直ぐ下に表示されています。


> ひでまるのバージョンは、8.54(32bit)です。

回答1でも書きましたが、秀丸 8.58(64bit) (ファイル名:hm858_x64_signed.exe)で確認しています。
http://hide.maruo.co.jp/software/hidemaru64.html

Qbatでファイル名を変更したい(元ファイル名の一部を削除したファイル名に)

batファイルを使ってファイル名を変更する方法を教えてください。
例えば、
変更元ファイル:tata1234.exe
変更先ファイル:tata.exe(元ファイル名の一部を削除した名前)

流れでは、あるファイルをbatにドラッグ&ドロップして
COPY %1 %TMP%\%~nx1
REN %TMP%\%~nx1 ???????
変更したファイルを元ファイルのあったフォルダに移動(orコピー)

別ファイルに出力したりしないと無理でしょうか?宜しくお願いいたします。

Aベストアンサー

元ファイル名の先頭4文字まで残して5文字目以降を消すということでいいでしょうか。

set NAME=%~n1
REN %TEMP%\~nx1 %NAME:~0,4%.%~x1

>変更したファイルを元ファイルのあったフォルダに移動(orコピー)
これはどういう意味?変更とは?

QEXCELで右クリックメニューの追加

EXCELで右クリックメニューを追加するにあたり、以下のコードをネットで取得しました。
右クリックメニューを階層化してさらに、いくつか選べるようにするにはどうしたら良いのでしょうか?
-------------------------------------------------------------
Dim Newb
Set Newb = Application.CommandBars("Cell").Controls.Add()
With Newb
.Caption = "コマンド"
.OnAction = "Sample_cmd"
.BeginGroup = False
End With

Sub Sample_cmd()
MsgBox Now
End Sub
-------------------------------------------------------------
判る方お願いします。

Aベストアンサー

余計なコメントもありますが、Controls.Add を入れ子にして行くだけです。

Sub AddRightClik()

Application.CommandBars("Cell").Reset

With CommandBars("Cell")
With .Controls.Add(Type:=msoControlPopup)

.Caption = "Direction Movement(&E)" '"Move Enter(&M)" 'Direction of movement
.OnAction = "MoveChkCk"
'.Visible = False
'.BeginGroup = True

With .Controls.Add(Type:=msoControlButton)
.Caption = "Right(&R)" 'right side moves right
.OnAction = "MoveEnterCk"
'.FaceId = 39
End With
With .Controls.Add(Type:=msoControlButton)
.Caption = "Down(&D)" 'It moves to the under.It moves below.Movement in the under Lower direction
.OnAction = "MoveEnterCk"
'.FaceId = 40
End With
With .Controls.Add(Type:=msoControlButton)
.Caption = "Up(&U)" ' Up movement
.OnAction = "MoveEnterCk"
'.FaceId = 40
End With
With .Controls.Add(Type:=msoControlButton)
.Caption = "Left(&L)" 'It moves to the left side.It moves to the left.Left movement
.OnAction = "MoveEnterCk"
'.FaceId = 40
End With

End With
End With

End Sub

余計なコメントもありますが、Controls.Add を入れ子にして行くだけです。

Sub AddRightClik()

Application.CommandBars("Cell").Reset

With CommandBars("Cell")
With .Controls.Add(Type:=msoControlPopup)

.Caption = "Direction Movement(&E)" '"Move Enter(&M)" 'Direction of movement
.OnAction = "MoveChkCk"
'.Visible = False
'.BeginGroup = True

With .Controls.Add(Type:=...続きを読む

Q右クリックでメニューを出さずダイアログボックスを出す方法

よろしくお願いします。
右クリックをすると「メニュー」が表示されますよね。
その表示をさせずダイアログボックス(よくPOP広告でとびでて来る奴)を表示させ、通常のメニュー画面を出させないようにしたいのですが、わかる方教えてください。

要するに「ソースの中身」を知られたくないのです。
お願いします。

Aベストアンサー

こんにちは

まず、htmlで記述されている以上、右クリックだけ対策をしても、ブラウザのメニューからファイルを保存する事が出来るので、不完全である事をご理解下さい。
もし、どうしてもというのであれば、Flash等を使うという事で可能になると思われます。

Qバッチファイルでの%を含むファイル名の取得

以下はEドライブを走査してフォルダごとのjpgやpngなどのファイルの数を全て表示するバッチ処理ですが。基本的に上手く動きますが%を含むファイル名、フォルダ名に当たると上手く動きません。どうしたらいいでしょうか?”ファイル名、フォルダ名に%を使うな”という回答以外でお願いします。

@echo off
pushd E:\
for /f "delims=" %%j in ('dir /b /s /a:d') do call :sub "%%j"
exit /b

:sub
echo ///////////////////////////////////////////////////////////////////////////
for /f "delims=" %%x in ('dir /b %1 ^| find /c ".jpg"') do call :jpg %%x
for /f "delims=" %%x in ('dir /b %1 ^| find /c ".JPG"') do call :jpg2 %%x
for /f "delims=" %%x in ('dir /b %1 ^| find /c ".png"') do call :png %%x
for /f "delims=" %%x in ('dir /b %1 ^| find /c ".bmp"') do call :bmp %%x

echo %1
echo jpg %jpg_c%
echo png %png_c%
echo bmp %bmp_c%
echo JPG %jpg2_c%
goto :EOF

:jpg
set jpg_c=%1
:echo %1
goto:EOF

:jpg2
set jpg2_c=%1
:echo %1
goto:EOF

:png
set png_c=%1
:echo %1
goto:EOF

:bmp
set bmp_c=%1
:echo %1
goto:EOF

:all
set all_c=%1
:echo %1
goto:EOF

以下はEドライブを走査してフォルダごとのjpgやpngなどのファイルの数を全て表示するバッチ処理ですが。基本的に上手く動きますが%を含むファイル名、フォルダ名に当たると上手く動きません。どうしたらいいでしょうか?”ファイル名、フォルダ名に%を使うな”という回答以外でお願いします。

@echo off
pushd E:\
for /f "delims=" %%j in ('dir /b /s /a:d') do call :sub "%%j"
exit /b

:sub
echo ///////////////////////////////////////////////////////////////////////////
for /f "delims=" %%x in ('di...続きを読む

Aベストアンサー

こんにちは。いろいろと試されてますね。

以下の例は拡張子がjpgのファイルがあるフォルダとファイル数を表示するバッチの例です。"%"が含まれても問題ありません。
表示するだけでなく環境変数に格納したいならもう少し記載が
必要になります。

pushd e:\
dir /s *.jpg | findstr "のディレクトリ 個のファイル"


人気Q&Aランキング

おすすめ情報