Получение хеш-сумм.
Цитата: N от 07.09.2022, 14:33Добрый день 🖐
Учусь потихоньку C#, но не всё получается, сейчас пытаюсь написать программу для вычисления хеш-сумм, пытаюсь сделать это через cmd, что бы бросая файл на программу, выводились хеш-суммы. Но есть проблема, если указать прямой путь, то всё работает, а как указать путь бросаемого файла, не знаю (если вообще это возможно). Надеюсь понятно объяснил.
P.S. Знаю, что таких программ много, но хотелось бы научиться самому, а лучшая возможность это практика.if (checkBox1.Checked) { Process process = Process.Start(new ProcessStartInfo { FileName = "cmd", Arguments = "/c certutil -hashfile "E:\Windows\Win10_21H2_Russian_x64.iso" SHA1 | findstr ^[0-9a-f]$", UseShellExecute = false, CreateNoWindow = true, RedirectStandardOutput = true }); label1.Text = process.StandardOutput.ReadToEnd(); }
Добрый день 🖐
Учусь потихоньку C#, но не всё получается, сейчас пытаюсь написать программу для вычисления хеш-сумм, пытаюсь сделать это через cmd, что бы бросая файл на программу, выводились хеш-суммы. Но есть проблема, если указать прямой путь, то всё работает, а как указать путь бросаемого файла, не знаю (если вообще это возможно). Надеюсь понятно объяснил.
P.S. Знаю, что таких программ много, но хотелось бы научиться самому, а лучшая возможность это практика.
if (checkBox1.Checked)
{
Process process = Process.Start(new ProcessStartInfo
{
FileName = "cmd",
Arguments = "/c certutil -hashfile "E:\Windows\Win10_21H2_Russian_x64.iso" SHA1 | findstr ^[0-9a-f]$",
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardOutput = true
});
label1.Text = process.StandardOutput.ReadToEnd();
}
Цитата: Nico от 08.09.2022, 23:55Добрый, на одном форуме предложили скомпилировать этот код
[spoiler title=""]using System; class Program { static void Main(string[] args) { foreach (var arg in args) Console.WriteLine(arg); Console.ReadKey(true); } }[/spoiler]
но учитывая что вы работаете с формой, наверное это стоит сделать следующим образом в Program.cs
[spoiler title=""]static void Main(string[] args) { if (args.Length > 0) { foreach (var arg in args) MessageBox.Show(arg); //посмотреть что приходит в виде аргументов и делать обработку тут } else { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } }[/spoiler]
Собственно получится так, что если файлы перетащить на exe вы их обработаете без формы, если аргументов запуска не будет - запуститься форма
Добрый, на одном форуме предложили скомпилировать этот код
using System;
class Program
{
static void Main(string[] args)
{
foreach (var arg in args)
Console.WriteLine(arg);
Console.ReadKey(true);
}
}
но учитывая что вы работаете с формой, наверное это стоит сделать следующим образом в Program.cs
static void Main(string[] args)
{
if (args.Length > 0)
{
foreach (var arg in args) MessageBox.Show(arg);
//посмотреть что приходит в виде аргументов и делать обработку тут
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
Собственно получится так, что если файлы перетащить на exe вы их обработаете без формы, если аргументов запуска не будет - запуститься форма