Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [VB.NET]Process.start & DOS

    Allora salve a tutti!

    Ho questa situazione: devo far partire un programma dos con il programma che sto scrivendo. Il proglema e' che usando il classico process.start("...") non ho effetto... cioe mi appare per un attimo una finestrella dos che si riuche istantaneamente e il programma non parte...

    mi sapete dare un consiglio?

    Grazie e ciao a tutti!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Probabilmente sbagli il percorso dell'applicazione o non specifichi la riga di comando nel modo corretto, oppure l'applicazione termina immediatamente il proprio lavoro così che tu non abbia tempo e modo di leggerne l'output.

    Dovresti però fornire qualche indicazione in più, ed eventualmente il codice "incriminato", per poter essere più specifici o fare altre ipotesi.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Allora il comando e il seguente:

    dim processo as new process
    processo.Start(variabile_path_dell_exe &"\start.exe")

    Ora: il file exe e' un file che gira sotto dos. E' un vecchio gioco dos. Se lo faccio partire con il doppio click parte normalmente (nel senso diventa a tutto schermo e parte). Eseguendo il processo invece appare la finestrella dos e si chiude immediatamente. Il percorso non e errato perche se no mi avrebbe dato errore exception. Quindi non credo siano le ipotesi che hai dato te...


  4. #4
    Invece di richiamare l'exe richiama il suo file .pif.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da Pamput
    Quindi non credo siano le ipotesi che hai dato te... [...]
    Escludere alcune delle ipotesi significa comunque restingere il campo di ricerca ad altre ipotesi più plausibili... proprio per questo è utile fornire dettagli.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    niente ... nemmeno con il pif...

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Prova a creare un file che chiami, ad esempio

    s.bat

    in cui scrivi

    pathdellexe\start.exe
    pause

    e nel tuo programma fai partire il file s.bat al posto dello start.exe

    Cosi' vedrai qual e' l'errore ...

    Tra parentesi, secondo me il programma start.exe cerca qualche file nella propria cartella che non trova perche l'avvio avviene nella cartella dell'eseguibile VB ...

  8. #8
    Allora... facendo un paio di tentativi (avevo gia provato in precedenza con i file bat... avevo pure provato a utilizzare un programmino non in .NET): sono riuscito a farlo partire con qualche artifizio... ma non e proprio quello che mi aspettavo... allora l'exe correttamente solo e unicamente se risiede nella stessa cartella del programma da me creato. Suppongo che non riesca a trovare le directory di sua appartenenze, mi spiego meglio:

    il mio programma (che chiamero per convenienza START.EXE) facciamo conto che sta nella cartella C:\START\

    Il programma dos (DOS.EXE per convenzione) facciamo che risiede nella cartella:
    C:\PROGDOS
    Ora teniamo conto che il programma DOS.EXE ha necessita di utilizzare altri file contenuti nella cartella (o in sottocartelle) C:\PROGDOS (ad esempio un file chiamato FILE.XXX, che di conseguenza si trova nella cartella C:\PROGDOS\FILE.XXX)
    Se io lo faccio partire dal programma START.EXE, il file DOS.EXE sembra autoconvincersi di essere nella cartella C:\START e non nella propria (C:\PROGDOS) e di conseguenza non cerca i file che gli interessano nella cartella propria ma in C:\START, ovvero cerca un fantomatico file contenuto in C:\START\FILE.XXX, che naturalmente non esista, e cio gli impedisce di avviarsi correttamente... cio naturalmente avviene anche con i file BAT... ora: come risolvere questo problema??

  9. #9
    Crea un file pif in cui inserisci come "cartella di lavoro" la cartella del programma, quindi avvia il pif. In alternativa puoi usare Process.Start passandogli un ProcessStartInfo in cui avrai specificato come WorkingDir la cartella del programma:
    codice:
    Dim ps As Process
    Dim psi As New ProcessStartInfo("c:\progdos\dos.exe")
    psi.WorkingDir="c:\progdos\"
    ps=Process.Start(psi)
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Sei un grande!!! era quello che mi interessava

    Grazie a tutti per la gentile collaborazione

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 © 2025 vBulletin Solutions, Inc. All rights reserved.