以下のキットを使うと、コマンドプロンプトで手軽に C# のビルドができます。(%windir%\Microsoft.NET\Framework\v4.0.30319 に環境があります)処理自体の元々は VB.net ですが、単純な実行部分は Code Translation for .NET (C#<->VB.NET) で変換して、後は適当にエラー処理するだけでした。 参考ドキュメント 方法 : My 名前空間を使用する (C# プログラミング ガイド) これを利用するには、Microsoft.VisualBasic.dll の参照が必要ですが、『PATH=C:\Windows\Microsoft.NET\Framework\v4.0.30319;』というパスと、コマンドラインとしては『csc.exe /r:Microsoft.VisualBasic.dll cf.cs』で可能です。(64ビット環境では、Framework64というフォルダがあると思います) ※後、注意事項としてクリップボードのアクセス時には [STAThread] が必要です。 ( このクラスを使用するには、Main メソッドが STAThreadAttribute 属性でマークされている必要があります。 )
using System;
using Microsoft.VisualBasic.Devices;
using System.Collections.Specialized;
class MyModule {
[STAThread]
static void Main() {
string[] argv;
argv = System.Environment.GetCommandLineArgs();
string ActType;
if ((argv.Length == 1)) {
ActType = "name";
}
else {
ActType = argv[1];
}
// VB.net で言うところの、My.Computer
// http://msdn.microsoft.com/ja-jp/library/ms173136.aspx
Computer myComputer = new Computer();
// SHIFT キーを押しているがどうか
if (myComputer.Keyboard.ShiftKeyDown) {
if ((ActType == "name")) {
// フルパスで表示
ActType = "path";
}
else {
// ファイル名だけで表示
ActType = "name";
}
}
StringCollection FileList;
string delimStr = "\\";
char[] delimiter = delimStr.ToCharArray();
string[] aData;
// エクスプローラから取得したファイル
// 一覧形式のデータがあった場合
if (myComputer.Clipboard.ContainsFileDropList()) {
FileList = myComputer.Clipboard.GetFileDropList();
foreach (string FilePath in FileList) {
if ((ActType == "path")) {
Console.WriteLine(FilePath);
}
else {
aData = FilePath.Split(delimiter);
Console.WriteLine(aData[(aData.Length - 1)]);
}
}
}
// 通常のテキストデータがあった場合
if (myComputer.Clipboard.ContainsText()) {
Console.WriteLine(myComputer.Clipboard.GetText());
}
}
}
関連する記事 ▼ 元となった VB.net のコード
Imports System.Collections.Specialized Module MyModule ' ******************************************** ' クリップボードにあるファイル情報を標準出力へ ' ( エクスプローラの「コピー」で取得した内容 ) ' 引数による処理タイプの決定 ' name : ファイル名のみ ' path : フルパス ' ******************************************** Sub Main() ' 文字列の配列 Dim argv As String() ' コマンドラインの取得 argv = System.Environment.GetCommandLineArgs() Dim ActType As String ' 引数が無い場合は、名前のみ If argv.Length = 1 Then ActType = "name" Else ' name または path ActType = argv(1) End If ' SHIFT キーを感知できた場合は処理を反転する ' 要するに引数無しで SHIFT キーを押していたらフルパス If My.Computer.Keyboard.ShiftKeyDown Then If ActType = "name" Then ActType = "path" else ActType = "name" End If End If Dim FileList As StringCollection Dim FilePath As String Dim ClipString As String = "" ' フルパスから名前だけを取り出す為のデリミタ Dim delimStr As String = "\" Dim delimiter As Char() = delimStr.ToCharArray() Dim aData As String() ' クリップボードにファイルのデータがあった場合 If My.Computer.Clipboard.ContainsFileDropList() Then 'データを取得する FileList = My.Computer.Clipboard.GetFileDropList() '取得したファイル名を列挙する For Each FilePath In FileList If ActType = "path" Then Console.WriteLine( FilePath ) Else aData = FilePath.Split(delimiter) Console.WriteLine( aData(aData.Length - 1) ) End If Next End If End Sub End Module
タグ:C#
|
|
【C#の最新記事】
- C# : PHP と連携してバイナリデータを WebClient.UploadDataAsync でそのままアップロードする
- C# : WebClient で JSON データを取得後 Json.NET でオブジェクト化( ついでに PropertyInfo でプロパティデータ一覧を foreach で取得 )
- C# : Microsoft Access の接続で、他の RDBMS( ここでは MySQL ) にエクスポートを行う
- C# : TKMP.DLLを使った、Gmail 用メール送信テンプレート
- C# : DataGridView を使用したナチュラルな行データの更新
- C# の delegate : メソッドの引数にメソッドを渡して使用する方法と、JavaScript の function(){} と同じ使用方法( 匿名 )
- PowerShell 移行用 C# コンソールアプリのコードテスト( ZIP 圧縮 )
- 解く事が目的では無い、身に付ける事が目的の C# 初心者用の問題を作ったので良かったらどうぞ (4)
- 解く事が目的では無い、身に付ける事が目的の C# 初心者用の問題を作ったので良かったらどうぞ (3)
- 解く事が目的では無い、身に付ける事が目的の C# 初心者用の問題を作ったので良かったらどうぞ (2)
- 解く事が目的では無い、身に付ける事が目的の C# 初心者用の問題を作ったので良かったらどうぞ (1)
- ComboBox : C# : Form アプリケーションで良く使うコントロール / VS2012 にて
- printui.dll を VB.net または C# から呼び出す/ DllImport で LoadLibraryA / VS2010
- LINQ で List
のソート - VS2010(C#)WPF : ListView 内に GridView を配置する
- Windows ストア用の System.Collections.Generic 名前空間には、SortedList はありません。
- 情報が全くみつからない Microsoft.Live
- VS2010(C#) バッチ(コンソールアプリ) Twitter 投稿
- Windows8(C#) の WebView の LoadComplete で取得した URL 内のアクセストークンを Split で取得
- Facebook C# SDK の 5.4.1.0 のダウンロード





























