(SO yanıtlarını aradım ve bu soruna net bir çözüm bulunamadı.)Konsol penceresi Win32 GUI programından gösterilmeden alt konsol programları nasıl çalıştırılır?
Bir MFC GUI programı üzerinde çalışıyorum. Bu program, konsol programı ve kabuk komut dosyası (.cmd) dahil olmak üzere çeşitli alt programlar yürütür.
Başlangıçta bir GUI penceresi ve bir konsol penceresi (AllocConsole
ile oluşturulan) görüntülendiğinden, alt işlemlerden birçok konsol çıktısı vardır. Ancak birçok kullanıcı konsol penceresinden şikayet etti, bu yüzden konsol penceresini gizlemeye karar verdik. ,
if (AllocConsole())
{
::ShowWindow(::GetConsoleWindow(), SW_HIDE);
}
Tamam hiçbir konsol penceresini ama konsol oluşturma anda görülebilir titreşim vardır:
Öncelikle aşağıda gibi çalıştı. Konsol penceresinin görüntülenmesini tamamen engellemek, ancak kısa zamanda başarısız olmak için çocuk süreçlerinin oluşturulması için birkaçCreateProcess
seçeneği denedim ve pratik olarak imkansız olduğunu düşünüyorum.
Bu büyük bir anlaşma değildir. Başlangıçta geçici pencere titreşimini göz ardı edebiliriz.
Çocuk konsol penceresini tamamen gizlemek gerçekten imkansız mı?
titreşim bekleniyor; bir konsol penceresi oluşturup gizliyorsunuz. Soru şu ki, kullanıcının onu görmesini istemiyorsanız, neden bir konsol penceresi yaratıyorsunuz? ShellExecute veya CreateProcess' ile ilgili sorun nedir? –
@Code Gray Bu program CreateProcess çeşitli konsol programları. AllocConsole olmadan, ayrılmış ve kontrol edilemeyen konsol penceresi oluşturulacak, her zaman yok edilecektir. – 9dan
Bunun ne anlama geldiğini bilmiyorum. Birkaç * farklı * konsol programı çalıştırıyorsunuz ve eğer 'CreateProcess' kullanıyorsanız, her seferinde eski olanı yeniden kullanmak yerine yeni bir konsol penceresi oluşturulacak mı? Evet ...? Bunun derdi ne? –