ユーザーがファイルをコンソールアプリのウィンドウにドラッグアンドドロップできるようにして、ファイルをアプリのアイコンにドラッグアンドドロップ(またはリンク、さらに悪いことにコンソールにコマンドラインを書き込む)しないようにしたいと思います。アプリのウィンドウにドロップしたファイルのパスのリストを取得するにはどうすればよいですか?
3 に答える
キーボードを聞くだけです。ファイルをコンソールウィンドウにドラッグすると、ファイル名が直接入力されたかのように、ウィンドウにキーボードイベントが表示されます。
これにより、ファイルをまたはPowerShellウィンドウにドロップして、cmd
直接入力した場合と同じように完全なファイル名を取得できます。これは、独自のアプリケーションでも同じように機能します。
コンソールアプリケーションはそのウィンドウを所有していませんcsrss.exe
。その結果、ウィンドウを見つけても、HANDLE
ドラッグアンドドロップに登録したり、ドロップメッセージを処理したりすることはできません。したがって、コンソールアプリケーションはcsrss.exe
、コンソールAPIを介して転送されるメッセージのタイプに制限されます。それらはここにリストされています:http://msdn.microsoft.com/en-us/library/windows/desktop/ms683499.aspx ドラッグアンドドロップはそれらの中にはありませんが、コンソール内のマウスイベントは含まれています。
最善の策は、おそらくコンソールアプリケーションのように見えるが、Windowsコンソールを使用しないアプリケーションを作成することです。代わりに、画面にテキストとカーソルを描画してキーボード入力を行い、コマンドラインインターフェイスを作成します。
この種のものは「コンソールエミュレーター」と呼ばれ、おそらくあなたのニーズを満たすすでに構築されたものを見つけることができます。
コンソールアプリケーションにウィンドウがないため、できません。標準の入力、出力、エラーストリームがあります。
コンソールアプリケーションを含むウィンドウは、CMDアプリケーション(cmd.exe)のウィンドウであり、Windowsコンソールの基本的な動作を変更することはできません。
CMDは端末(putty、telnet、sshなど)のように機能します-キーボードからアプリケーションに文字を送信し(正確には-「標準入力」に文字を送信します)、アプリケーションの「標準出力」によって生成された文字を表示します。
標準ストリームについて少し読んでください。 http://en.wikipedia.org/wiki/Standard_streams
Windows7でのCMD.exeの動作
ドラッグ/ドロップからファイル名(フルパス付き)を渡すことができます。コマンドウィンドウに「ファイルアイコン」を1つドロップすると、ファイル名が「入力」されますが、CR / LF(改行)文字がないため、「readline」機能は機能しません。
複数のファイルアイコンをドロップすると、1つのファイルのみが渡されます。
申し訳ありませんが、言語を間違えた場合。