PDA

Visualizza la versione completa : Problema apertura finestra dos non voluta nonostante senza richiamo batch non avvenga


freetom
12-03-2011, 17:45
Ho un file .bat che contiene:

@echo off

start /wait 1.exe
start /wait 2.exe
start /wait 3.exe
start /wait 4.exe
start /wait 5.exe
start /wait 6.exe
start /wait 7.exe
start /wait 8.exe
start /wait 9.exe
start /wait 10.exe
start /wait 11.exe
start /wait 12.exe
start /wait 13.exe
start /wait 14.exe
start /wait 15.exe
start /wait 16.exe
start /wait 17.exe
start /wait 18.exe
start /wait 19.exe
start /wait 20.exe
start /wait 21.exe
start /wait 22.exe
start /wait 23.exe
start /wait 24.exe
start /wait 25.exe
start /wait 26.exe
start /wait 27.exe
start /wait 28.exe
start /wait 29.exe
start /wait 30.exe

@exit

Ora tutto ok tranne il fatto che una volta cliccato mi apre una finestra dos nera che vorrei evitare...

Preciso che tutti gli exe richiamati sono costruiti in modalità win application con :




#define STRICT
#define WIN32_LEAN_AND_MEAN
#include <windows.h>

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow)
{

//mio cod

}



e inoltre per ognuno nel programma DEV c++ ho scelto come opzione di compilazione (NON APRIRE CONSOLLE)

Inoltre se li clicco singolarmente uno ad uno.. non mi si apre nessuna consolle...

Invece richiamandoli dal file .bat sopradetto ecco comparire l'odiosa finestrella :dhò:
:)

Posso eliminarla in qualche modo?

Grazie infinite agli/alle esperti/e windows/terminators... :D

lolide
12-03-2011, 20:54
La finestra che si apre non è per il bat, ma perchè chiami start per eseguire gli exe.

Intanto non capisco la necessità di aprire tutti quegli exe. Evidentemente hai pensato male il tuo progetto.
Facevi prima, qualche mese fa, a chiederci qual'era il tuo progetto e te lo facevamo direttametne noi, invece di fare 30 domande al giorno su queste cose.

Comunque per evitare quelle finestre, dovresti fare un programma in C, chiamando in un ciclo tutti i programmi senza start, usando ShellExecute (http://msdn.microsoft.com/en-us/library/bb762153(v=vs.85).aspx) settando nShowCmd a SW_HIDE per nascondere la finestra.
ShellExecute ritorna un handle al processo. Questo lo passi a WaitForSingleObject (http://msdn.microsoft.com/en-us/library/ms687032(v=vs.85).aspx) che aspetta fin quando il processo sarà chiuso.

Ti rimando anche a questo (http://www.dreamincode.net/forums/topic/158653-wait-after-shellexecute/page__p__940944&#entry940944) post per leggere (in inglese) più precisamente cosa fare.

freetom
12-03-2011, 21:00
Originariamente inviato da lolide
La finestra che si apre non è per il bat, ma perchè chiami start per eseguire gli exe.

Intanto non capisco la necessità di aprire tutti quegli exe. Evidentemente hai pensato male il tuo progetto.
Facevi prima, qualche mese fa, a chiederci qual'era il tuo progetto e te lo facevamo direttametne noi, invece di fare 30 domande al giorno su queste cose.

Comunque per evitare quelle finestre, dovresti fare un programma in C, chiamando in un ciclo tutti i programmi senza start, usando ShellExecute (http://msdn.microsoft.com/en-us/library/bb762153(v=vs.85).aspx) settando nShowCmd a SW_HIDE per nascondere la finestra.
ShellExecute ritorna un handle al processo. Questo lo passi a WaitForSingleObject (http://msdn.microsoft.com/en-us/library/ms687032(v=vs.85).aspx) che aspetta fin quando il processo sarà chiuso.

Ti rimando anche a questo (http://www.dreamincode.net/forums/topic/158653-wait-after-shellexecute/page__p__940944&#entry940944) post per leggere (in inglese) più precisamente cosa fare.




"La finestra che si apre non è per il bat, ma perchè chiami start per eseguire gli exe."

Cosa dovrei chiamare anzichè lo start per usare il .bat per me più che sufficiente per non avere la finestra? O per . bat sono sempre presenti???

tnx
ciao

alka
15-03-2011, 11:10
Si sta già affrontando un problema analogo o strettamente correlato in questa discussione (http://forum.html.it/forum/showthread.php?s=&threadid=1451113).

Loading