2012-11-29 10 views
6

Kiedy mam aplikację Win32, która nie jest konsolą (AFAIK, konsola-ność aplikacji Win32 jest połączona z serwerem exe), uruchomienie jej z konsoli cmd.exe natychmiast powróci do wiersza poleceń, uruchamiając aplikację "w tle "(czy może mieć jakiś GUI, czy nawet otworzyć własne okno konsoli)?Czy jest możliwe dołączenie do wywoływania powłoki cmd nieblokowej aplikacji Win32?

Czy w pliku wykonywalnym innym niż konsola można wykryć, że został uruchomiony z cmd.exe i" dołączyć "go do uruchamiania cmd.exe?

Należy zauważyć, że istnieją różne pytania/odpowiedzi związane z tym, ale wydaje się, że to dokładne podejście nie zostało zbadane. (Może to nie jest możliwe.)

+1

To po prostu nie działa dobrze w praktyce, użytkownik musiałby użyć "start/wait yourapp.exe", aby uniknąć procesów walczących przez konsolę. Prosty i niezawodny sposób polega na umieszczeniu w ścieżce/Subsystem: Console Twojej aplikacji na ścieżce –

Odpowiedz

5

Możesz to zrobić bardzo łatwo. Wystarczy przekazać ATTACH_PARENT_PROCESS do AttachConsole.

To, czy wynik końcowy nie jest rozsądny, czy praktyczny, jest czymś, czego nie mogę powiedzieć. Oba procesy odczytałyby i zapisały na tej samej konsoli, która mogłaby stać się dość dziwna.

+0

. Czy to ma sens? Proces cmd.exe nie byłby świadomy dołączonego innego procesu, prawda? Oba procesy będą pisać i czytać niezależnie od tej samej konsoli? –

+0

Nie jestem pewien, czy miałoby to sens. Tak jak mówisz, oba procesy mogą korzystać z tej samej konsoli. –

+0

A jeśli ktoś zamknął okno konsoli, aplikacja, która do niego dołączyła, również zostanie zamknięta. –

Powiązane problemy