Diskuze: c# form - ukončení okna příkazového řádku
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 10 zpráv z 10.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


A proč pro otevření jednoho procesu to otevíráš skrze cmd? V ten moment je rodičovský proces CMD a je jasné, že při zavření cmd se zavřou i potomci.
Rovnou můžeš přeci nastartovat notepad z tvé aplikace
Taky mi není jasné, proč k otevření nějaké aplikace používáš CMD. Proč jednoduše nezavoláš
private void spustaplikaci(string aplikace_kterou_chci_spustit)
{
Process.Start("aplikace_kterou_chci_spustit");
}
to Petr Nymsa & Michal Štěpánek: spuštění toho notepadu byl jen
příklad
Uživatel bude moc
zadat třeba příkaz ipconfig... Já jsem chtěl pokud se přes cmd otevře
nová aplikace tak aby se okno s cmd automaticky zavřelo.
to Petr Nymsa: To stím rodičovským oknem mi funguje nějak jinak, protože
pokud ve spuštěné aplikaci provedu spuštění notepadu přes cmd (mám tedy
spuštěny tři okna vlastní aplikaci, cmd a notepad) a následně křížkem
ukončím cmd tak notepad zůstane spuštěný.
Díky za pomoc a rady...
Spouštěl bych to s dalším parametrem, kterým zvolíš jestli se má příkaz provést v CMD nebo ne.
private void SpustAplikaci(string aplikace, bool cmd)
{
if (cmd)
Process.Start("cmd.exe", "/K " + aplikace);
else
Process.Start(aplikace);
}
Pak můžeš volat buď
SpustAplikaci("notepad", false);
Nebo
SpustAplikaci("ipconfig", true);
Po dlouhé odmlce jsem opět zpátky
Tak jsem to nakonec vyřešil takto:
var procCMD = new Process(); // Novy proces
if (parametrCMD.Contains("exe"))
{
procCMD.StartInfo.FileName = parametrCMD; // Spustim jako aplikaci
}
else
{ // Pokud neobsahuje koncovku spoustim jako parametr cmd
procCMD.StartInfo.FileName = "cmd.exe"; // Spustim CMD
procCMD.StartInfo.Arguments = "/k " + parametrCMD; // Parametr se kterym se spusti CMD
}
procCMD.Start();
Díky za pomoc 
Trošku bych to poupravil
if (parametrCMD.Contains(".exe"))
nebo tam dej
if (parametrCMD.endsWith("exe"))
protože ten soubor může "exe" obsahovat i v názvu...
Nevím zda jsi vyřešil to korektní ukončení okna cmd, pokud ne tak takhle to funguje bez problémů:
internal static class UnsafeNativeMethods
{
[DllImport("user32.dll", EntryPoint = "SendMessageW", CharSet = CharSet.Auto)]
public static extern IntPtr SendMessage(IntPtr hWnd, int zprava, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr FindWindow(string className, string windowName);
}
private void button1_Click(object sender, EventArgs e)
{
var process = new System.Diagnostics.Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.Arguments = "/c " + "notepad";
process.Start();
IntPtr hwnd = IntPtr.Zero;
for (;;)
{
hwnd = UnsafeNativeMethods.FindWindow("ConsoleWindowClass", null);
if (hwnd == IntPtr.Zero)
break;
UnsafeNativeMethods.SendMessage(hwnd, 0x0010 /*WM_CLOSE*/, IntPtr.Zero, IntPtr.Zero);
}
}
Radek Chalupa
www.radekchalupa.cz
Zobrazeno 10 zpráv z 10.