Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Da li je program vec pokrenut - vase misljenje

[es] :: C/C++ programiranje :: Da li je program vec pokrenut - vase misljenje

[ Pregleda: 2830 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

DART_VEJDER
crna gora

Član broj: 58050
Poruke: 84
*.crnagora.net.



Profil

icon Da li je program vec pokrenut - vase misljenje22.08.2006. u 09:42 - pre 214 meseci
Pozdrav svima:

Zelim da provjerim da li je program npr. ( "ime_programa.exe") vec pokrenut...

Ja sam to uradio ovako:

if( ::FindWindow(NULL, "ime_programa")==0) // <-- znaci da nije pokrenut

Mene interesuje sta mislite o ovom nacinu, i imate li neko bolje rijesenje....??

kod žorža ti je ka' u banku!!
oko? sto ce ti oko??
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
161.53.55.*



+9 Profil

icon Re: Da li je program vec pokrenut - vase misljenje22.08.2006. u 09:46 - pre 214 meseci
Prilikom pokretanja možeš i pregledati listu aktivnih procesa...
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.static.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Da li je program vec pokrenut - vase misljenje22.08.2006. u 14:27 - pre 214 meseci
Moze i sa Mutex-ima (posroje neki razlozi zbog kojih je taj nacin bolji):

Code:

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) 

     AnsiString progName = ExtractFileName( Application->ExeName ); 
     HANDLE hMutex = CreateMutex( NULL, true, progName.c_str()); 

     if( hMutex != NULL ) 
     { 
         if( GetLastError() == ERROR_ALREADY_EXISTS ) 
         { 
             //* Or replace this by bringing 
             //* the other program forward. 
             Application->MessageBox( "Program Running!", 
                 progName.c_str(), MB_OK ); 
         } 
         else 
         { 
             try 
             { 
                 Application->Initialize(); 
                 Application->Title = progName; 
                 Application->CreateForm(__classid(TFormMain),&FormMain); 
                 Application->Run(); 
             } 
             catch (Exception &exception) 
             { 
                 Application->ShowException(&exception); 
             } 
         } 
         CloseHandle( hMutex ); 
     } 
     return 0; 

}
 
Odgovor na temu

DART_VEJDER
crna gora

Član broj: 58050
Poruke: 84
*.crnagora.net.



Profil

icon Re: Da li je program vec pokrenut - vase misljenje22.08.2006. u 15:35 - pre 214 meseci
Citat:
Prilikom pokretanja možeš i pregledati listu aktivnih procesa...


Pa dobro, ali ja to trebam odraditi kodom u programu...
Znaci da program vidi, a ne ja...
kod žorža ti je ka' u banku!!
oko? sto ce ti oko??
 
Odgovor na temu

pcaca
Aleksandar
Makedonija

Član broj: 5333
Poruke: 92
62.162.192.*



Profil

icon Re: Da li je program vec pokrenut - vase misljenje22.08.2006. u 16:50 - pre 214 meseci
DART_VEJDER jel ti radis neki virus?
Tri teme koje si otvorio asociraju me na ponasanje virusa
 
Odgovor na temu

Nothingman

Član broj: 31375
Poruke: 308
195.252.79.*



+112 Profil

icon Re: Da li je program vec pokrenut - vase misljenje22.08.2006. u 20:58 - pre 214 meseci
Citat:
pcaca: DART_VEJDER jel ti radis neki virus? :D
Tri teme koje si otvorio asociraju me na ponasanje virusa ;) :D


Indeed ;)
Q: Are there really any systems where
void main() doesn't work?
A: It has been reported that programs using void main() can crash.
Q: The book I've been using, _C Programing for the Compleat Idiot_,
always uses void main().
A: Perhaps its author counts himself among the target audience.
 
Odgovor na temu

DART_VEJDER
crna gora

Član broj: 58050
Poruke: 84
*.crnagora.net.



Profil

icon Re: Da li je program vec pokrenut - vase misljenje22.08.2006. u 23:22 - pre 214 meseci
:-) :-)

Ma kakav virus....

Po meni - uzaludno trosenje vremena...

radim program, pa mi treba vasa pomoc...
kod žorža ti je ka' u banku!!
oko? sto ce ti oko??
 
Odgovor na temu

vaske71

Član broj: 61960
Poruke: 1438
*.dialup.neobee.net.



+109 Profil

icon Re: Da li je program vec pokrenut - vase misljenje22.08.2006. u 23:43 - pre 214 meseci
Program jeste pokrenut !!!
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
161.53.55.*



+9 Profil

icon Re: Da li je program vec pokrenut - vase misljenje23.08.2006. u 07:52 - pre 214 meseci
Citat:
DART_VEJDER: Pa dobro, ali ja to trebam odraditi kodom u programu...
Znaci da program vidi, a ne ja...
To sam i mislio :)
 
Odgovor na temu

savkic
Igor Savkić

Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Da li je program vec pokrenut - vase misljenje23.08.2006. u 14:30 - pre 214 meseci
> Zelim da provjerim da li je program npr. ( "ime_programa.exe") vec pokrenut...

> if( ::FindWindow(NULL, "ime_programa")==0) // <-- znaci da nije pokrenut
> Mene interesuje sta mislite o ovom nacinu, i imate li neko bolje rijesenje....??

FindWindow i FindWindowEx nisu previše pouzdane metode, bolje je koristiti neku od metoda za enumeraciju svih procesa u sistemu. Pogledaj CreateToolhelp32Snapshot i EnumProcesses, dati su i primeri u MSDNu. Ako imaš kontrolu nad oba programa onda je najlakše da koristiš mutexe, kao što je neko već napisao.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.static.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Da li je program vec pokrenut - vase misljenje23.08.2006. u 16:56 - pre 214 meseci
Mutexi su elegantno resenje, pogotovo sto mnogi Installer-i imaju mogucnost
da iskoriste Mutex (najobicniji string) vaseg programa da vas obavesti da "je program
vec pokrenut, i da morate uklnoniti sve njegove instance pre nastavka instalacije".

FindWindow (koliko se secam), zaista ima neke probleme kod Borlanda, a mozda i sire...
 
Odgovor na temu

DART_VEJDER
crna gora

Član broj: 58050
Poruke: 84
*.crnagora.net.



Profil

icon Re: Da li je program vec pokrenut - vase misljenje24.08.2006. u 09:25 - pre 214 meseci
Hmmm.. pokusao sam tako, ali mi samo prvi put fino radi...tj. ako program nije pokrenut - on ga pokrene...

To sam uradio na ovaj nacin (vjerovatno grijesim negdje??)

Code:




     AnsiString progName = "Neki_program";
     HANDLE hMutex = CreateMutex( NULL, true, progName.c_str());

     if( hMutex != NULL )
     {
         if( GetLastError() == ERROR_ALREADY_EXISTS )
         return;
         else
         {
         String FN= NEKI_PATH + "Neki_program";
         String Ac="open";
         ShellExecute(0,Ac.c_str(),FN.c_str(),"","",1);
         }
   }   




Da li ste ovako mislili nesto??

[Ovu poruku je menjao DART_VEJDER dana 24.08.2006. u 11:30 GMT+1]
kod žorža ti je ka' u banku!!
oko? sto ce ti oko??
 
Odgovor na temu

bzero
dev null
europe

Član broj: 5907
Poruke: 371
*.dynamic.sbb.co.yu.

Jabber: bzero@elitesecurity.org
Sajt: www.google.com/search?q=b..


Profil

icon Re: Da li je program vec pokrenut - vase misljenje24.08.2006. u 10:16 - pre 214 meseci
Ovde imas kompletan kod sa objasnjenjem kako to uraditi:

http://support.microsoft.com/kb/q243953/
Never trust an operating system you don't have sources for.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.3dnet.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Da li je program vec pokrenut - vase misljenje24.08.2006. u 11:24 - pre 214 meseci
Čekaj, nisam te razumeo:

Da li želiš da iz JEDNOG programa vidiš da li je DRUGI pokrenut (pa ako nije
da ga pokreneš), ili želiš da ograničiš svoj program na samo jednu instancu?


P.S. Ako je u pitanju ono prvo, da li si ti autor tog DRUGOG programa ili je to
neki "strani" program?

 
Odgovor na temu

DART_VEJDER
crna gora

Član broj: 58050
Poruke: 84
*.crnagora.net.



Profil

icon Re: Da li je program vec pokrenut - vase misljenje24.08.2006. u 15:13 - pre 214 meseci
Izvinjavam se ako nisam najbolje objasnio, ali zelim ono prvo...

Mislio sam da ste shvatili to...

Da, ja sam autor i jednog i drugog....
kod žorža ti je ka' u banku!!
oko? sto ce ti oko??
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.3dnet.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Da li je program vec pokrenut - vase misljenje25.08.2006. u 10:08 - pre 214 meseci
Ma ne... Ti si se dobro izrazio, nego ja nisam dobro citao :)

Evo ti deo nekog mog starog programa, pa probaj nesto da uklopis.
Dakle, ja sam imao neki program (bio je servis) koji treba da u nekom
trenutku pokrene neki drugi program (ako nije pokrenut), ili da ga
maksimizuje i postavi na vrh, ako je bio spusten.

Valjda nisam nesto 'ispustio'...

--- PROGRAM KOJI POZIVA ---

--- CPP ---

Code:

HANDLE lanmsg = FindWindow( C(IDS_SER_MAIN_NT_SERVICE_INVOKING_CLASS).c_str(), NULL );

// dakle, ti samo zameni string (kao prosli put)
//   IDS_SER_MAIN_NT_SERVICE_INVOKING_CLASS,
//      "TLanMsgMainForm"; // <--- OVO TI JE NAZIV KLASE, A NE EXE-A, ONOG PROGRAMA KOGA POZIVAS, POGLEDAJ HELP  !!!

// Ako je program vec pokrenut - podigni ga i postavi u prvi plan!
if ( lanmsg != NULL )

   PostMessage ( lanmsg, WM_USER + 1010, 0, 0 );// < --- POSTOJAO JE NEKI RAZLOG ZASTO SAM SVE OVO RAZLOZIO U TRI KORAKA, A NE SAMO U JEDAN !!!
   PostMessage ( lanmsg, WM_USER + 1011, 0, 0 ); 
   PostMessage ( lanmsg, WM_USER + 1012, 0, 0 );
}
// ako nije pokrenut - pokreni ga!
else
{
   AnsiString Exe = ExtractFilePath( ParamStr(0) ) + C(IDS_SER_MAIN_NT_SERVICE_INVOKING_EXE_FILE);

   // IDS_SER_MAIN_NT_SERVICE_INVOKING_EXE_FILE,
   //    "lanmsg.exe";

   STARTUPINFO StartInfo;
   PROCESS_INFORMATION ProcInfo;
   memset(&ProcInfo, 0, sizeof(ProcInfo));
   memset(&StartInfo, 0 , sizeof(StartInfo));
   StartInfo.cb = sizeof(StartInfo);
   if ( ! CreateProcess( Exe.c_str(),NULL, NULL, NULL, NULL, NULL, NULL, NULL, // <--- POSTOJAO JE RAZLOG ZASTO NISAM KORISTIO ShellExecute(), mozda zatosto 
                         &StartInfo, &ProcInfo ) )
   {
      // ovo izbaci, jer je deo nekog mog starog programa
      // SystemOk = false;
      // GoSendMessageToLog( SERVICE_CREATE_PROCESS_FAILED );
   }
}


--- PROGRAM KOJI SE POKRECE/PODIZE ---

--- H ---
Code:

private:    // User declarations
        // ...
        void __fastcall WndProc( TMessage & );
        // ...


--- CPP ---
Code:

void __fastcall TLanMsgMainForm::WndProc( TMessage &Msg )
{
   switch ( Msg.Msg )
   {
      // ...
      case   WM_USER + 1010:
         ReloadView(); // <--- OVO JE BILO SPECIFICNO ZA MOJ PROGRAM, PA MOZES IZBACITI CEO case BLOK
         break;

      case   WM_USER + 1011:
         Application->Restore();
         break;

      case   WM_USER + 1012:
         Application->BringToFront();
         break;
      // ...
   }
   TForm::WndProc( Msg );
}

 
Odgovor na temu

[es] :: C/C++ programiranje :: Da li je program vec pokrenut - vase misljenje

[ Pregleda: 2830 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.