[ DART_VEJDER @ 22.08.2006. 09:40 ] @
Pozdrav svima!

Interesuje me da li mogu , i kako , uciniti da se aplikacija koju napravim ne prikazuje pod "Applications" vec u "Processes" u Task Manager-u...???




Da se nista ne pokazuje u task bar-u, uradio sam sljedece:

void __fastcall TForm1::FormShow(TObject *Sender)
{
ShowWindow(Application->Handle,SW_HIDE);
}

(Imate li bolje rijesenje za ovo??)
[ itf @ 22.08.2006. 09:43 ] @
Aplikacija i nije ništa drugo već proces.
[ X Files @ 22.08.2006. 14:44 ] @
Citat:

void __fastcall TForm1::FormShow(TObject *Sender)
{
ShowWindow(Application->Handle,SW_HIDE);
}


Pogledaj ovde:
http://www.elitesecurity.org/t167265-0#1086892

Takodje, imaj u vidu da kod koji je predvidjen da se izvrsi JEDANPUT a stavljas
ga u OnShow ili OnActivate (cak i OnPaint), treba da ima konkretnu zastitu
da se ne izvrsi vise puta STO JE SASVIM MOGUCE !!!:

--- PSEUDO ---

Code:

TVOJ_ON_SHOW()
{
   static bool HasPassedOnceOnShow = false;
   if ( !HasPassedOnceOnShow )
   {
      HasPassedOnceOnShow = true;
      // OVDE KOD KOJI SE IZVRSAVA JEDANPUT
   }
   // OVDE KOD KOJI TREBA DA SE IZVRSI UVEK KADA DODJE U EVENT ...
}

[ DART_VEJDER @ 22.08.2006. 15:33 ] @
Citat:
Aplikacija i nije ništa drugo već proces.


ma dobro, ali mene interesuje u TASK MANAGER-u u TAB-u applications da ne stoji ime moga programa vec (Ako bas mora) da bude samo u Processes
[ kiklop74 @ 22.08.2006. 19:19 ] @
Samo procesi koji su registrovani kao servis se ne nalaze u task listi.

Dakle ti treba da registrujes tvoj program kao servis. Za to se koristi API RegisterServiceProcess. Pogledaj detalje u helpu.
[ Nibble @ 23.08.2006. 01:47 ] @
Mozes da pokusas napravit process injecting progie.Problem je u tome sto ga danas skoro svaki firewall "skonta".
Evo ti ovaj matori dokument pa pokusaj sta skontat :)
[ savkic @ 23.08.2006. 14:50 ] @
> Interesuje me da li mogu , i kako , uciniti da se aplikacija koju napravim ne prikazuje pod "Applications" vec u "Processes" u Task Manager-u...???

U Application tabu se prikazuju vidljivi top level prozori, a to su oni čiji parent je Desktop i imaju postavljen WS_EX_APPWINDOW a nemaju WS_EX_TOOLWINDOW extended stil.


void __fastcall TForm1::FormShow(TObject *Sender)
{
ShowWindow(Application->Handle,SW_HIDE);
}

> (Imate li bolje rijesenje za ovo??)

Na WinNT sistemima je to najlakše rešenje, na Win9x sistemima možeš koristiti RegisterServiceProcess.
[ X Files @ 23.08.2006. 16:52 ] @
Citat:

void __fastcall TForm1::FormShow(TObject *Sender)
{
ShowWindow(Application->Handle,SW_HIDE);
}

Problem kod ovog koda je sto ova izmena nije 'trajna', vec se nekim
eksternim (i nenamernim) dogadjajima SW_HIDE moze izgubiti:

bcbdev faq:
Citat:

"Hiding the form's taskbar icon with ShowWindow is not permanent.
Certain actions will cause the taskbar icon to reappear. You can
remove a program's taskbar icon and prevent it from ever appearing
again by making the hidden application window a tool window. Tool
windows never have a taskbar icon. Making the application window a
tool window has the side effect of removing the program from the list
of programs that appear when the user presses ALT-TAB."


Za alternativu, pogledajte ovde:
http://www.elitesecurity.org/t167265-0#1086892
[ DART_VEJDER @ 23.08.2006. 20:55 ] @
Nije mi jasno...

Kaze:
Citat:

You can
remove a program's taskbar icon and prevent it from ever appearing
again by making the hidden application window a tool window. Tool
windows never have a taskbar icon.


ja sam sad probao: stavio da mi je Forma bsToolWindow

Ikona mi nije nestala iz taskbara....

Na sta on misli u ovom tekstu?? Kako dobiti sta ovdje pise?
[ DART_VEJDER @ 24.08.2006. 09:20 ] @
Evo da javim da sam rijesio (??) problem...

Uradio sam to na ovaj nacin:

Code:

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
        try
        {
                 Application->Initialize();
                 Application->Title = "moj_program";
                 Application->CreateForm(__classid(TForm1), &Form1);
                 Application->ShowMainForm = false;    // dodao ovo
                 //ShowWindow(Application->Handle, SW_HIDE);     <-- ne znam da li jos ovo da dodam? mislim da nema potrebe
                 Application->Run();
        }
        catch (Exception &exception)
        {
                 Application->ShowException(&exception);
        }
        catch (...)
        {
                 try
                 {
                         throw Exception("");
                 }
                 catch (Exception &exception)
                 {
                         Application->ShowException(&exception);
                 }
        }
        return 0;
}


Uglavnom, ovaj kod uzrokuje da se aplikacija ne vidi, da joj se ne vidi ikona u taskbaru i da ne bude vidljiva u Applications Tab-u vec u Processes...

Tacno sto sam ja trazio... Da li vam se svidja ovakav nacin??
[ Nibble @ 24.08.2006. 11:35 ] @
ne
[ DART_VEJDER @ 24.08.2006. 15:12 ] @
Zasto?

[ X Files @ 25.08.2006. 10:17 ] @
Kombinacija:
Code:

Application->ShowMainForm = false; 
::ShowWindow( Application->Handle, SW_HIDE ); 

i
Code:

Application->ShowMainForm = true; 
::ShowWindow( Application->Handle, SW_SHOW ); 

... je kod Borland C++ Buildera cesta. Ne znam na sta je Nibble mislio (mozda se nismo
najbolje razumeli).