Newsgroup: it.comp.programmare.win32
Titolo: Dos nascosto

Come lancio una sessione dos, con eseguibile e parametri senza che
appaia la finestra nera tipica?

Ciao, Vinz486!
Il giorno 28/11/2003 alle ore 02:57 hai scritto:
 V> Come lancio una sessione dos, con eseguibile e parametri senza che
 V> appaia la finestra nera tipica?
Non puoi.
Puoi invece creare un programma windowed senza finestra (solo il WinMain)
che si comportera' allo stesso modo (tranne ovviamente che per l'I/O su
console) ma non avra' nessuna finestra (e se si pianta l'unico modo per
toglierlo di mezzo sara' attraverso il task manager).
Bye

pui fare un collegamento al programma che contiene i parametri da passare al
tuo eseguibile e impostare nelle proprietą del collegamento di eseguirlo
ridotto a icona.
Ciao
    Domenico
"Vinz486" <vinz_486_@_libero_._it> ha scritto nel messaggio
news:bq6a2e$hrm$4...@newsreader.mailgate.org...


Non puoi.
Non so se l'avete mai usato ma RemotelyAnywhere di mette su un server
telnet "bindato" con la shell dos.
Ti connetti e sei una normalissima finestra dos, ma sul pc dove è
eseguito non appare nulla...
questo mi fa pensare che un metodo esista...

appaia la finestra nera tipica?
Se usi un programma con un interfaccia GUI e relativa winmain allora
basta non rendere visibile la finestra .
Se da una GUI devi far girare una applicazione consolle in maniera
invisibile , puoi usare il flag non documentato CREATE_NO_WINDOW nella
funzione CreateProcess .

Ciao, Vinz486!
Il giorno 28/11/2003 alle ore 16:45 hai scritto:
 V> Non so se l'avete mai usato ma RemotelyAnywhere di mette su un server
 V> telnet "bindato" con la shell dos.
 V>
 V> Ti connetti e sei una normalissima finestra dos, ma sul pc dove è
 V> eseguito non appare nulla...
 V>
 V> questo mi fa pensare che un metodo esista...
E perche' allora non chiedi direttamente a loro ?
Perche' chiedi una cosa e poi non ti fidi di quello che ti si risponde ?
Naturalmente non mi crederai se ti dico che non e' esattamente la stessa
cosa.
Io come fare te l'ho detto, adesso sono fatti tuoi.
A me queste cose fanno irritare in un modo indescrivibile.
Bye

funzione CreateProcess .
   In realta` e` documentato, pero` la documentazione dice che
"Windows Me/98/95:    This value is not supported.".
-- 
S.L.

 appaia la finestra nera tipica?
non è una sessione, non è DOS e la risposta è nella documentazione:
"Process Creation Flags
[...]
CREATE_NO_WINDOW Windows NT/2000/XP: This flag is valid only when 
starting a console application. If set, the console application is run 
without a console window.
[...]"
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.1.5. C, C++ and ASM developers
                               and beta testers are welcome!

A me queste cose fanno irritare in un modo indescrivibile.
Giornata pesante ?
Fino a prova contraria nessuno che scrive sul ng dovrebbe porsi su un
piedistallo.  Vinz486 ha chiesto una cosa, tu gli hai risposto, per
quelle che sono le tue competenze, che non e' possibile (e sono
d'accordo con te, ma e' ininfluente), lui _gentilmente_ ha fatto
presente un suo dubbio, tu salti sulla sedia .
Chi sei tu affinche' cio' che scrivi debba essere preso per oro colato
?
Stefano "HappyMan" (Lago Maggiore - NO)
--
Personal Web 
http://www.sgr.info
Email happyman69 (at) 
despammed.com

Ciao, Stefano!
Il giorno 29/11/2003 alle ore 11:54 hai scritto:
 SH> Giornata pesante ?
Abbastanza.
 SH> Chi sei tu affinche' cio' che scrivi debba essere preso per oro colato
Io non pretendo che le mie parole vengano prese per oro colato, ci
mancherebbe. Il fatto e' che una persona che evidentemente non sa nulla di
cio' di cui sta parlando chiede un consiglio, gliene viene dato uno che
indubbiamente e' corretto, poi porta un esempio che non c'entra un fico
secco per confutare un'affermazione.
E' come se chiedessi come fare per far andare la mia macchina a benzina con
il diesel e qualcuno mi rispondesse che non e' possibile, poi per confutare
l'affermazione dicessi 'si ma il mio amico ha la stessa macchina e va a
diesel'. Non risponderesti anche tu che se proprio voglio posso metterci il
diesel nel serbatoio e vedere se continua a camminare per molto ?
Se per esempio avesse detto subito che aveva visto un esempio di quel genere
avrei anche potuto spiegargli perche' non e' la stessa cosa. Invece ha
aspettato una risposta, non gli e' piaciuta e ha portato un esempio che non
c'entra niente per cercare di fare la figura di quello che ne sa di piu'.
Questo mi fa irritare in maniera indescrivibile.
Se poi tu o chiunque altro sa come fare un'applicazione console senza che si
apra la relativa finestra (la finestra minimizzata e' comunque una finestra
che si puo' vedere) ben venga.
Bye

 appaia la finestra nera tipica?
Se la lanci da explorer o comunque da un posto "generico", e` vero
quello che ti ha detto 1Sconosciuto: non c'e` modo, perche` e`
direttamente il sistema operativo che ti crea la console.
Se invece la sessione la lanci da un tuo programma, ossia puoi
controllare il metodo con il quale l'eseguibile viene invocato, si puo`
fare (ed e` quello che presumo faccia RemotelyAnywhere): e` sufficiente
lanciare il processo con CreateProcess() agendo in modo opportuno sul
campo wShowWindow della struttura STARTUP_INFO. Non ricordo se sia
necessario specificare anche degli handle "custom" per gli standard
input/output, comunque e` sufficiente provare.
Non serve usare il flag CREATE_NO_WINDOW, che peraltro e` supportato
solo da NT/2000.
-- 
Lorenzo


#include <windows.h>
int main(int argc, char **argv)
{
    HWND hHwnd = ::FindWindow(NULL, NULL);
    unsigned long pidCur;
    unsigned long pid;
    pidCur=GetCurrentProcessId();
    while (hHwnd != 0)
    {
           if (::GetParent(hHwnd) == 0)
           {
               GetWindowThreadProcessId(hHwnd, &pid);
               if ((unsigned long)pid == pidCur)
               {
                  ShowWindow(hHwnd,false);
                  Sleep(3000);
                  break;
               }
           }
        hHwnd = GetWindow(hHwnd, GW_HWNDNEXT);
    }
    ShowWindow(hHwnd,true);
    Sleep(1000);
    return 0;
}
questo è uno dei diversi metodi..
ciao :)
------------------------
http://visualwx.altervista.org/
nuova release 0.77e [freeware]
VisualWx rad per c++,python,perl,lua e wxwindows

Ciao, Bobo!
Il giorno 30/11/2003 alle ore 02:21 hai scritto:
 BO>                   ShowWindow(hHwnd,false);
[...]
 BO> questo è uno dei diversi metodi..
Bel tentativo.
Bye


bel tentativo di che?
forse dovresti essere un po' meno arrogante non trovi?
ma...
--


se funge)
Funge funge...
La CreteProcess commentata visualizza la finestra, quella che c'è,
invece, usa CREATE_NO_WINDOW e la finestra non appare.
Ora il problema è un'altro: sia la WaitForInputIdle che la
WaitForSingleObject non funzioano, nel senso che non attendono nulla,
sia usando INFINITE come parametro che mettendoci un valore
arbitrario.
Non attendono comunque e ritornano... perchè?
Vi posto il codice:
---------------------------------------------------
#include "stdafx.h"
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
 	// TODO: Place code here.
 
	STARTUPINFO sti;
	PROCESS_INFORMATION pinfo;
	pinfo.dwProcessId = 0;
	pinfo.dwThreadId = 0;
	pinfo.hProcess = 0;
	pinfo.hThread = 0;
	sti.cb = sizeof(sti);
	sti.lpReserved = NULL;
	sti.lpDesktop = NULL;
	sti.lpTitle = NULL;
	sti.dwX = 0;
	sti.dwY = 0;
	sti.dwXSize = 0;
	sti.dwYSize = 0;
	sti.dwFillAttribute = NULL;
	sti.dwFlags = NULL;
	sti.wShowWindow = SW_HIDE;
	sti.cbReserved2 = 0;
	sti.lpReserved2 = NULL;
	sti.hStdInput = NULL;
	sti.hStdOutput = NULL;
	sti.hStdError = NULL;
	char cmdLine[] = "Rapina.exe 443 23";
CreateProcess(NULL,cmdLine,NULL,NULL,FALSE,CREATE_NO_WINDOW,NULL,NULL,&sti,&pinfo);
//CreateProcess(NULL,cmdLine,NULL,NULL,FALSE,NULL,NULL,NULL,&sti,&pinfo);
 
	WaitForInputIdle(pinfo.hProcess, INFINITE);
	WaitForSingleObject(pinfo.hProcess, INFINITE);
 
	char pid[1024];
	wsprintf(pid,"%d",pinfo.hProcess);
	MessageBox(NULL,"Processo Terminato",pid,0);
 
	return 0;
}
-----------------------------------------------------------

Non attendono comunque e ritornano... perchè?
Ehm... perchè il processo terminava, come non detto...

Ciao, Vinz486!
Il giorno 30/11/2003 alle ore 16:30 hai scritto:
 V> Cosa ti fa pensare che io non sappia di cosa sto parlando?
Per la domanda stessa e per l'esempio che hai portato.
 V> Cosa ti fa pensare che quello che dici tu č "indubbiamente corretto"?
Prova il contrario, se ci riesci.
 V> E infatti, il fatto che RemotelyAnywhere lo faccia, di fatto, confuta
 V> la tua affermazione.
Tu lo vuoi fare dall'interno di un altro programma ? Non l'hai detto. Cosa
ti fa pensare che io sia in grado di leggerti nel pensiero ?
 V> Sai, io RemotelyAnywhere lo uso da molto tempo, č un programma
 V> normalissimo, e se lo puň fare lui... si puň fare.
Io uso da anni 
msdn.microsoft.com
 e li ci sono tutte le risposte.
 V> Mi spieghi perchč non č la stessa cosa?
Perche' e' un programma che chiama un altro programma.
 V> Cosa pensi? Che posti domande qui per "farmi bello"? Ma cosa me ne
 V> frega di fare la figura di quello che ne sa di piů? Ma se neanche ti
 V> conosco.
Non so perche' posti e non mi interessa.
Bye

Ciao, Bobo!
Il giorno 30/11/2003 alle ore 16:21 hai scritto:
 BO> bel tentativo di che?
La finestra si apre ugualmente e il programma la nasconde.
Bel tentativo.
 BO> forse dovresti essere un po' meno arrogante non trovi?
Con 20 anni di esperienza posso permettermi di esserlo.
Bye

ti fa pensare che io sia in grado di leggerti nel pensiero ?
"Come lancio una sessione dos, con eseguibile e parametri senza che
appaia la finestra nera tipica?"
Con "lanciare una sessione dos" intendevo ovviamente da parte di un
programma, del codice, qualcosa da scrivere e compilare... non parlavo
mica di impostazioni di windows, altrimenti non avrei certo postato
qui ma su un gruppo tipo os.winxp o roba del genere, non credi?
Grazie all'aiuto di altri utenti, che ringrazio, sono riuscito a
risolvere il mio problema, non perchè loro mi "leggono nel pensiero"
ma semplicemente perchè hanno voluto (saputo) aiutarmi senza fare
tante storie come te.
Potevi usare qualcuno di quei 20 anni di esperienza (che ti assicuro
ho anch'io, in svariati campi) per imparare a comportarsi in maniera
decente in luoghi di cooperazione aperta e spontanea che sono i
gruppi.
Ora basta.

 Con 20 anni di esperienza posso permettermi di esserlo.
beh in questo caso si è dimostrato che hai sbagliato .
Nessuno ti obbliga a rispondere e se non ne hai voglia non farlo


Nessuno ti obbliga a rispondere e se non ne hai voglia non farlo
In 20 anni sara' diventato un bravissimo tecnico, ma non gli sono
serviti per imparare a porsi correttamente nei confronti degli altri
utilizzatori di un ng.


Ciao, Vinz486!
Il giorno 01/12/2003 alle ore 21:38 hai scritto:
 V> Con "lanciare una sessione dos" intendevo ovviamente da parte di un
 V> programma
Ovviamente per te.
 V> Grazie all'aiuto di altri utenti, che ringrazio, sono riuscito a
 V> risolvere il mio problema, non perchè loro mi "leggono nel pensiero"
 V> ma semplicemente perchè hanno voluto (saputo) aiutarmi senza fare
 V> tante storie come te.
Oh quanto mi dispiace...
 V> Potevi usare qualcuno di quei 20 anni di esperienza (che ti assicuro
 V> ho anch'io, in svariati campi) per imparare a comportarsi in maniera
 V> decente in luoghi di cooperazione aperta e spontanea che sono i
 V> gruppi.
Se non ti vado bene puoi sempre ignorarmi.
Bye

Ciao, Bobo!
Il giorno 01/12/2003 alle ore 22:11 hai scritto:
 BO> non hai letto la domanda dell'OP ?
 BO> voleva appunto nascondere la finestra...
 BO> perciò prima di parlare leggi meglio..
Appunto:
"Come lancio una sessione dos, con eseguibile e parametri senza che
appaia la finestra nera tipica?"
Se conosci l'italiano saprai anche che la frase "senza che appaia la
finestra nera" non significa "facendo in modo che appaia e poi scompaia".
 BO> beh in questo caso si è dimostrato che hai sbagliato .
Dimostrato dove ?
 BO> Nessuno ti obbliga a rispondere e se non ne hai voglia non farlo
Nessuno ti obbliga a leggere le mie risposte.
Bye

Ciao, Stefano!
Il giorno 01/12/2003 alle ore 22:47 hai scritto:
 SH> In 20 anni sara' diventato un bravissimo tecnico, ma non gli sono
 SH> serviti per imparare a porsi correttamente nei confronti degli altri
 SH> utilizzatori di un ng.
Come ho detto agli altri, nessuno ti obbliga a leggermi.
Bye

 Nessuno ti obbliga a leggere le mie risposte.
certo che sei maleducato non poco..
č inutile cercare di farti capire qualcosa
addio
--


 certo che sei maleducato non poco..
E non sa neanche formattare bene il quoting... :-PPP 
-- 
Luc

Ciao, Luc!
Il giorno 02/12/2003 alle ore 13:49 hai scritto:
 >> certo che sei maleducato non poco..
 L>
 L> E non sa neanche formattare bene il quoting... :-PPP
Ohhh ecco... cattivo cattivo... uffa !!!
Bye

finestra nera" non significa "facendo in modo che appaia e poi scompaia".
^^^^^^^^^^^^ --> definizione di: "arrampicarsi sugli specchi"
Visto che hai 20 anni di esperianza, saprai compilare il codice che ho
postato: dimmi cosa fa? Appare? Scompare? Esce dall'angolino? Si
ovalizza?
Mi fai troppo ridere...

Ciao, Vinz486!
Il giorno 02/12/2003 alle ore 16:52 hai scritto:
 V> Visto che hai 20 anni di esperianza, saprai compilare il codice che ho
 V> postato: dimmi cosa fa? Appare? Scompare? Esce dall'angolino? Si
 V> ovalizza?
Appare e poi scompare.
 V> Mi fai troppo ridere...
Buon per te.
Bye

 Io uso da anni 
msdn.microsoft.com
 e li ci sono tutte le risposte.
AH AH AH !!!
ROTFL & plonk
-- 
Davide DG.