SORU
29 Ocak 2009, PERŞEMBE


Bir çalıştırılabilir her iki konsol ve GUI uygulaması olabilir mi?

CLİ veya bir GUI uygulaması olarak çalışacak C# bir program bayraktan içine geçirilir ne bağlı olarak yapmak istiyorum. Bu yapılabilir mi?

Bu İlgili Sorular buldum ama tam olarak benim durumu anlatmıyorlar:

CEVAP
29 Ocak 2009, PERŞEMBE


Her iki konsolu bir program bir uygulama olan ve olmayan konsol* bir program olabilir mi açıklıyor Raymond Chen's blog 11* *puan: OS bilmesi gerekirprogram çalışmaya başlamadan öncekullanmak için alt sistemi olan. Program çalışmaya başladıktan sonra, geri dönüp diğer mod istemek için çok geç.

Cade's answer 14* *işaret eder. Program çalışmaya başladıktan sonra AttachConsole arama tekniği kullanır. Bu programı başlatan komut istemi konsol penceresine geri yazmak için izin veren bir etkiye sahiptir. Ama bu makaledeki yorumlar ölümcül bir kusur olduğunu düşünüyorum işaret:Alt süreç gerçekten konsol kontrol etmiyor.Konsol girişi kabul üst işlemin adına devam eder ve ana süreç çocuk için diğer şeyler için konsol kullanmadan önce çalışmalarını tamamlamaları için beklemeniz gerekir farkında değil.

Chen'in Madde 16 ** işaret eder.

İlk nedirdevenvkullanır. Aslında iki program alarak çalışıyor. Biridirdevenv.exeana GUİ programı olan, ve diğer., ^em>devenv.comkonsol modu görevleri işleyen , ama eğer non-konsol-benzeri bir şekilde kullanılırsa, bu görevlerini iletirdevenv.exeve çıkar. Teknik Win32 kuralına dayanırcomdosyaları seçilen ilerlemekexebir komut yazdığınızda dosya uzantısı olmadan.

Windows Script Host mu bunun daha basit bir varyasyon var. Tamamen ayrı iki ikili dosyaları, sağlarwscript.exevecscript.exe. Aynı şekilde, Java sağlarjava.exeprogram konsol içinjavaw.exe-konsol olmayan programlar için.

Servet trading ikinci tekniği nedirıldasmkullanır. Süreç o tırnakıldasm's yazar her iki modda çalıştırmak yaparken geçti. Sonuçta, burada ne var:

  1. Program konsol-modu bir ikili olarak işaretlenmiş, her zaman bir konsol ile başlar. Bu giriş ve çıkış yönlendirmesi normal olarak çalışmasını sağlar.
  2. Eğer program Modu konsol komut satırı yeniden başlattı kendini parametreleri yoktur.

Sadece FreeConsole ilk örneği bir program konsol olmaktan vermesi çağrısında bulunmak için yeterli değil. Bu program, başlayan sürecin çünkücmd.exe, " konsol modu bir program başladı ve programın çalışmasını durdurmak için bekliyor. "bilir FreeConsole arama yaparıldasmkonsol kullanarak durdurmak, ancak ana işlem yapmazbaşlayınkonsolu kullanarak.

Kendini yeniden ilk örneği (komut satırı parametresi bir ekstra ile, sanırım). Ya da ikinci derece üst bağlı olmayacağını garanti eder, DETACHED_PROCESS and CREATE_NEW_CONSOLE, denemek için iki farklı bayraklar vardır CreateProcess konsol çağırdığınızda. Bundan sonra, ilk örneği sona erdirmek ve komut istemi komutları işleme devam etmek için izin verebilirsiniz.

Bu tekniğin yan etkisi GUI arayüzü programı başlattığınızda, hala bir konsol olacak. Ekranda bir an için yanıp söner ve sonra kaybolur.

Servet trading parçası kullanarak ilgili makaleeditbinprogramı değiştirmek-konsol modu bayrak kırmızı ringa olduğunu. Derleyici veya geliştirme ortamı veya yarattığı kontrol etmek için bir ayar seçeneği sağlar. Her şeyi daha sonra değiştirmek için gerek yoktur.

Alt satırında o zamaniki ikili olabilir, ya da bir anlık bir titreme konsol penceresi var. Kötünün iyisi olan karar, uygulamaları arasından seçim yapabilirsiniz.

* diyorumolmayan konsolyerineGUIaksi halde yanlış bir ikilik. Bir program yok diye bir konsol GUI zorunda anlamına gelmez. Servis bir uygulama örneğidir. Ayrıca, bir program bir konsol varvewindows.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • PaulGBelliveau

    PaulGBellive

    5 Mart 2009
  • Sergio Fernandez

    Sergio Ferna

    1 EKİM 2009
  • Chaîne de TheMoustic

    Chaîne de T

    5 Kasım 2006