Так же, как когда вы делаете ссылку в окнах, чтобы открыть.txt файл, он может открыть NotePad.exe и Word.exe при загрузке текста из файла в редактор. Как я могу сделать это с помощью своего настольного приложения. У меня есть настраиваемый тип файла для него с расширением.mmi. Я хочу, чтобы, когда пользователь дважды щелкнет этот тип файла, он не только откроет мое приложение, но и загрузит данные в него в соответствующие области моего приложения. Я понимаю, как установить тип настраиваемого файла для моих настроек приложения, но где я потерял, как получить информацию о файле, которая запускает открытие моего приложения, чтобы я мог получить данные из него.
Например. Если я открываю.html и выбираю использовать notepad.exe, html теперь загружается в только что открытом текстовом редакторе.
Это для приложения "От приложения", а не для консольного приложения, которое начинается с основного файла с аргументами, что может помочь или изменить что-либо.
Пример:
public partial class FormDashboard : Form
{
public FormDashboard()
{
InitializeComponent();
}
private void FormDashboard_Load(object sender, EventArgs e)
{
//I want to get what file trigger the app to open here, and apply the data accordingly throurght the forms application.
}
Ответ на ваш вопрос ничем не отличается от приложения WinForms и консольного приложения.
Путь .mmi
файла, инициировавшего ваше приложение будет args[0]
в вашем приложении Main
метод (предполагается, что подпись Main(string[] args)
).
Поэтому, зная, что файл .mmi
был дважды щелкнул, чтобы вызвать ваше приложение, по сути, будет бесплатным - после того, как вы попросите Windows открыть файлы .mmi
с вашим приложением.
Вот пример - где я просто использовал текстовый файл Test.mmi
и просто консольное приложение ConsoleApplication1
для PoC:
/*
* Program.cs
*/
using System;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
if (args.Length > 0)
{
// Open and display the text in the double-clicked .mmi file.
Console.WriteLine(File.ReadAllText(args[0]));
}
// Pause for 5 seconds to see the double-clicked file text.
Thread.Sleep(5000);
}
}
}
После того, как Windows .mmi
файлы .mmi
с ConsoleApplication1.exe
, ConsoleApplication1.exe
отобразит текст в Test.mmi
(Whatever....
), когда я дважды Test.mmi
нему:
Единственное, что может отличаться от предложенного PoC, - это то, что вам нужно, с файловым путем, который входит в качестве args[0]
.
Имя файла будет передано вашему приложению в качестве первого параметра командной строки. Вы можете воспользоваться этим кодом:
static void Main(string[] args)
{
if (args.Length > 0)
{
//do stuff with args[0]
}
}
Или, если вы находитесь в WPF, обработайте событие Application.Startup
и получите параметр из e.Args
.
Я думаю, вам нужно только прочитать аргументы командной строки. Файл, который нужно открыть, должен быть вашим уникальным аргументом.
class MyClass
{
static void Main(string[] args)
{
// args[0] = file name to be opened by your application