Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [C] interagire col prompt

    Salve,
    sto creando un programma che ha bisogno di interagire con il prompt eseguendo i comandi dos e visualizzare le risposte.
    In pratica invece che usare il prompt dei comandi in console lo voglio utilizzare da un mio form visualizzando le risposte in una memo.

    so che si puo usare una funzione di stdlib.h:

    System("dir");

    Questa funzione esegue il comando "dir" ma non mi da la risposta del prompt e poi mi visualizza per una frazione di secondo la console nera.

    come posso fare per interagire in "background" col prompt dei comandi?

    a voi i commenti...
    Visitate ed iscrivetevi a
    www.myhackerzone.altervista.org

  2. #2

    up

    up
    Visitate ed iscrivetevi a
    www.myhackerzone.altervista.org

  3. #3
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    per mantenere aperta la console di win
    è sufficente aggiungere una istruzione di pausa come system("pause") oppure attendere un input da tastiera

    se ho capito bene

  4. #4
    no, io nn la devo far vedere...
    Da un mio form devo poter inviare i comandi e visualizzare i risultati senza visualizzare la console nera.

    io ho provato a fare eseguire i comandi con "ShellExecute" e a nn far visualizzare la console ma nn so come visualizzare il risultato.

    codice:
    ShellExecute(NULL, "open","cmd","/k dir",NULL,SW_HIDE);
    La console c'e ma e' hiddata, infatti se guardi nei processi vedrai cmd.exe e l'istruzione "dir" viene eseguita.

    io ho pensato che magari si possa leggere il contenuto della console con le apposite funzioni che puoi trovare nell SDK ma nn so se e' il metodo giusto anche perche molto laborioso.

    volevo sapere se c'erano delle funzioni che mi permettono di interagire direttamente con il prompt tipo Sistem("dir") pero che mi facciano vedere la risposta del prompt sempre senza visualizzare la console (in background).

    spero di essere stato il piu chiaro possibile...
    Visitate ed iscrivetevi a
    www.myhackerzone.altervista.org

  5. #5
    UP
    Visitate ed iscrivetevi a
    www.myhackerzone.altervista.org

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,468
    Originariamente inviato da bacca87
    no, io nn la devo far vedere...
    Da un mio form devo poter inviare i comandi e visualizzare i risultati senza visualizzare la console nera.

    io ho provato a fare eseguire i comandi con "ShellExecute" e a nn far visualizzare la console ma nn so come visualizzare il risultato.

    codice:
    ShellExecute(NULL, "open","cmd","/k dir",NULL,SW_HIDE);
    La console c'e ma e' hiddata, infatti se guardi nei processi vedrai cmd.exe e l'istruzione "dir" viene eseguita.

    io ho pensato che magari si possa leggere il contenuto della console con le apposite funzioni che puoi trovare nell SDK ma nn so se e' il metodo giusto anche perche molto laborioso.

    volevo sapere se c'erano delle funzioni che mi permettono di interagire direttamente con il prompt tipo Sistem("dir") pero che mi facciano vedere la risposta del prompt sempre senza visualizzare la console (in background).

    spero di essere stato il piu chiaro possibile...
    Puoi usare la redirezione ...

    Se dai il comando

    dir >c:\temp\elenco.txt

    viene creato il file nella cartella indicata (che deve comunque esistere) e poi puoi leggere questo file ...

  7. #7
    Come ti ha scritto anche oregon puoi usare :

    system("DIR c:\\Programmi > c:\\dir.txt");
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  8. #8
    ok grazie mille per le vostre risposte cmq accetto volentieri anche altri pareri...
    Visitate ed iscrivetevi a
    www.myhackerzone.altervista.org

  9. #9
    Potresti usare le API apposite :

    FindFirstFile, FindNextFile & FindClose.

    Sicuramente una soluzione più elengante di "System("dir")"

    Guarda qui (fonte MSDN) :

    Obtaining Directory Information
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  10. #10
    Non conosco C ma mi pare evidente che Samuele_70 voglia eseguire un comando e catturarne l'stdout.
    Mi pare una cosa abbastanza semplice. In python esiste la popen2 adatta allo scopo:

    c = popen2.popen4("comando")
    print c[0].read()

    In C sarà qualcosa di molto simile (mi pare di ricordare che ci sia la execv(), che potrebbe essere adatta allo scopo. Può essere?). Probabilmente esiste una funzione complementare che ti permette di "catturare" l'stdout.
    Saluti.
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.