Diskuze: Zavřít okno, jakmile skončí Process
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
close=true ;
dej před celý ten cyklus, takto ho nastavuješ na True zcela nezávisle na tom, jestli jsou nějaké podmínky splněné.
Nebylo by nejlepší ten "software" spustit pomocí objektu Process a
použít metodu WaitForExit?
Jinak problém může být že hledáš ten proces pomocí textu okna, který se
může měnit (aplikace běžně do titulku vypisují třeba název otevřeného
souboru atd.). Určitě bych to testoval na název třídy okna (tu zjistíš
např. pomocí Spy++). Tj. vzít property MainWindowhandle a pak GetClasName (na
pinvoke.net najdeš jak ji naimportovat).
Radek Chalupa
Jenže v tom cyklu to být nesmí, takto se to nastaví na true po každé iteraci nezávisle na tom, zda byla splněna podmínka nebo ne.
Stále stejnej problém... Když otevřu okno z forms, který má stejný údaje tak se nezavře, jakmile ale spustím aplikaci kvůli které jsem to udělal tak se to okno (v mým software) přichytne na okno v aplikaci, ale po chvíli se zavře, i když je to okno v té aplikaci pořád otevřené a má stále stejnej MainWindowTitle... Nechápu
Process[] processlist = Process.GetProcesses();
bool close = true;
foreach (var proclist in processlist)
{
if (proclist.MainWindowTitle.ToString().Contains(IdTurnaje))
{
close = false;
break;
}
}
if (close)
Close();
Nakonec jsem to vyřešil trosku krkolomně, ale funguje to
Process[] processlist = Process.GetProcesses();
bool close = true;
Process process = new Process();
foreach (var proclist in processlist)
{
if (proclist.MainWindowTitle.ToString().Contains(IdTurnaje))
{
process = proclist;
close = false;
break;
}
}
if (close)
pocet++;
else
pocet = 0;
if (pocet > 60)
Close();
Zobrazeno 7 zpráv z 7.