私はExploratorからファイルを開く必要があるアプリケーションを作成しています。もちろん、私はargsを使用してそれを行うことができますが、Exploratorはすべてのファイルに対して新しいアプリケーションを開きます。たとえば、既存のアプリにargsを送信したいのですが、新しいアプリを開かないでください。"Open with ..."既存のフォーム
0
A
答えて
1
エクスプローラは、常にアプリケーションの新しいインスタンスを開きます。必要なのは、開いている他のインスタンスがあるかどうかを制御することです。存在する場合は、コマンドラインを渡して新しいインスタンスを閉じます。
.NETフレームワークで役立ついくつかのクラスがありますが、最も簡単な方法はMicrosoft.VisualBasic
への参照を追加することです(GAC内にあるはずです...名前を無視してC#でも機能します)。 WindowsFormsApplicationBase
から派生することができます。これはすべての定型文のコードです。以下のような
何か:
public class SingleAppInstance : WindowsFormsApplicationBase
{
public SingleAppInstance()
{
this.IsSingleInstance = true;
this.StartupNextInstance += StartupNextInstance;
}
void StartupNextInstance(object sender, StartupNextInstanceEventArgs e)
{
// here's the code that will be executed when an instance
// is opened.
// the command line arguments will be in e.CommandLine
}
protected override void OnCreateMainForm()
{
// This will be your main form: i.e, the one that is in
// Application.Run() in your original Program.cs
this.MainForm = new Form1();
}
}
は、その後、あなたのProgram.cs
で、代わりに起動時に、Application.Run
を使用して、我々はない:
[STAThread]
static void Main()
{
string[] args = Environment.GetCommandLineArgs();
var singleApp = new SingleAppInstance();
singleApp.Run(args);
}
関連する問題
- 1. Open Barebones IE with Shortcut
- 2. Open CL with AMD
- 3. SendTo/Open With
- 4. debug.keystore open with promp
- 5. open failed:ENAENT with getAbsolutePath()
- 6. Open BytesIO(xlsx)with xlrd
- 7. Version One - Open Story with API
- 8. ios app open safari with background
- 9. open weather map API with laravel
- 10. Java Open HttpsUrlConnection with pfx Certificate
- 11. Open Office Base日時既定値
あなたがすべてで何かをしようとしたことがありますか?これはwinformsですか? – Jcl
はい、winformsです。 – Freshek