Page 2 of 2 FirstFirst 1 2
Results 16 to 21 of 21

Thread: Met AllocConsole blijft programma actief.

  1. #16
    Met Dos box bedoel je de command prompt (CMD), of daadwerkelijke de Dosbox MS DOS emulator? Ik heb het geprobeerd met de eerste, en ik neem aan dat het überhaupt niet werkt in de laatste..
    1+1=b

  2. #17
    Ja, daarom had ik "dos box" in de eerste post ook tussen quotes gezet.

    Het moment dat ik AllocConsole; aanroep (door rechtstreeks te klikken op de exe) en dus een nieuwe "dos box" / CMD venster open werkt alles. Maar op het moment dat ik al een "dos box" / CMD venster open heb en dan het programma uitvoer (en er dus geen AllocConsole; aangeroepen wordt) ben ik om een of andere manier de controle op de invoer kwijt.
    Niets is zo gemakkelijk als het lijkt.

  3. #18
    Het is overigens logisch dat de GetNumberOfConsoleInputEvents 0 is.
    Want jij doet wel een AttachConsole (waarna je gewoon read en write kunt doen naar het conole) maar je originele console loopt ook gewoon door. Die zal dus de input eerst krijgen en dan zit er geen input-event meer in de buffer.

    Als je het bijvoorbeeld start met
    start /wait jouw_programma.exe
    dan zal de originele console wachten tot test.exe afgelopen is.
    En dan werkt het dus wel.

    PS. Je kon zien dat de originele console gewoon doorloopt want die reageert na het starten (zonder start/wait) gewoon op commando's terwijl jouw programma meeloopt op de achtergrond.

  4. #19
    Maar het probleem is nu net dat wanneer ik geen AttachConsole aanroep het niet werkt. Op het moment dat ik AttachConsole aanroep werkt het wel.
    Niets is zo gemakkelijk als het lijkt.

  5. #20
    Quote Originally Posted by Greta View Post
    Maar het probleem is nu net dat wanneer ik geen AttachConsole aanroep het niet werkt. Op het moment dat ik AttachConsole aanroep werkt het wel.
    Hoezo? In je code roep je altijd AttachConsole aan. Alleen in geval van starten vanuit cmd is het resultaat true.
    Je zegt toch dat het niet werkt als je het programma in een cmd console start. Dan is AttachConsole dus true.

    AttachConsole is false als je het programma direct in de verkenner start en dan wordt AllocConsole gestart (een aparte console scherm). Overigens zette je daar niet eens de focus op dus de focus blijft bij de verkenner.

    AttachConsole koppelt dus aan een eventueel parent console (dat alleen kan bij cmd). Maar de cmd blijft wel direct doorlopen en je programma 'loopt ernaast'. Cmd accepteert ook nog gewoon input (waardoor jouw programma geen input meer kan verwerken).

    De enige manier om dat op te lossen is de cmd te 'bevriezen' en geen input meer last afhandelen. Dat kan dus via start /wait (wacht tot aangeeoepen programma gestopt is). Misschien dat dat ook in code kan maar ik weet dat niet zeker.

    Uiteraard kun je ook de hele AttachConsole eruit slopen en altijd een AllocConsole doen. Maar in dat geval krijg je bij het starten vanuit cmd een tweede console te zien.

    Het hangt er een beetje vanaf wat je met het programma wil doen.

  6. #21
    Bedankt voor de heldere uitleg. Nu begrijp ik wat er fout gaat. Op dit moment gebuikt ik inderdaad ook al continu AllocConsole. Maar ben hier toch niet echt tevreden mee.
    Niets is zo gemakkelijk als het lijkt.

Page 2 of 2 FirstFirst 1 2

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •