WinExec() na eVC++ ???

  • 4 Odpowiedzi
  • 1267 Wyświetleń

0 użytkowników i 1 Gość przegląda ten wątek.

WinExec() na eVC++ ???
« dnia: Marzec 09, 2006, 11:36:31 »
Witam

Mam pytanie. Czy istnieje odpowiednik funkcji WinExec() w eVC++

I drugie pytanie
Jaka jest etykieta i czy w ogole istnieje pamieci w PPC 2003
Może C: a może w ogóle jest to zypełnie innaczej. Pytam się bo niestety w programie File Exploler da wyjśc sie najwyżej do My Device ???

Pozdrawiam.

WinExec() na eVC++ ???
« Odpowiedź #1 dnia: Marzec 09, 2006, 11:57:49 »
1. Istnieje. Poszukaj w MSDNie - tam jest więcej niż można sobie wyobrazić.
2. Nie wiem dokładnie o jaką "etykiete pamięci" chodzi ale na pewno nie ma czegos takiego jak "c:", bo to jest relikt z czasów DOSa. Najwyższym poziomiem systemu plików jest "\" (czyli w File Explorerze My Device). Wszystkie ścieżki trzeba podawać w postaci bezwzględnej - w całości.

WinExec() na eVC++ ???
« Odpowiedź #2 dnia: Marzec 09, 2006, 13:54:52 »
Bardzo mi miło za któtką odpowiedź kolego  :? .

   Przed zadaniem pytania wiedziałem że istnieją funkcje ShellExecuteEx() oraz CreateProcess(). Są to bardzo złożone funkcje. Chodzilo mi głównie o jakąś prostą alternatywę. Jeśli nie ma to trudno -> zająć sie trzeba złożonymi.
   Najlepiej by było jakby ktoś był miły i pokazał część kodu który potrafi otworzyc wybrana aplikacje jak WinExec() lub podał link do strony gdzie może jest taki problem rozwiązany w jakimś samplu.
   Zwracam się z Taka prośbą bo na pewno nie jeden z was -> bardziej zaawansowanych ode mnie poruszał juz taki problem.

Pozdrawiam.

WinExec() na eVC++ ???
« Odpowiedź #3 dnia: Marzec 24, 2006, 17:45:44 »
Trochę to trwało ale znalazłem odpowiedź na moje pytanie i wam je przedstawiam. Otóż zająłem się rozgryzaniem funkcji CreateProcess() i znalazłem coś w internecie:
Creating a Process with CreateProcess
The function CreateProcess is the standard way of creating processes. The code in Listing 5.1 prompts the user for the filename of an application (for example, "pword.exe" for Pocket Word) and then calls CreateProcess to run the application.

Listing 5.1 Creates a process with CreateProcess
void Listing5_1()
{
  TCHAR szApplication[MAX_PATH];
  PROCESS_INFORMATION pi;
  if(!GetTextResponse(_T("Enter Application to Run:"),
      szApplication, MAX_PATH))
    return;
  if(CreateProcess(szApplication,
        NULL, NULL, NULL, FALSE, 0,
        NULL, NULL, NULL, &pi) == 0)
    cout « _T("Cannot create process") endl;
  else
  {
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
  }
}


Dodatkowo zastosowałem to w moim przykładowym programiku i działa. Przedstawię część kodu. Mam nadzieję ze komuś się to przyda.
void CUruchomDlg::OnUruchom()
{
// TODO: Add your control notification handler code here

//////// NOWY KOD ŹRÓDŁOWY ///////

UpdateData(TRUE);

CString strNazwaProg;
PROCESS_INFORMATION pi;

strNazwaProg = m_aplikacja;

if (strNazwaProg == "Notes")

CreateProcess(TEXT("Windows\\notes.exe"),NULL,NULL,NULL,FALSE,0,NULL,NULL,NULL, &pi);

if (strNazwaProg == "Pocket Excel")

CreateProcess(TEXT("Windows\\pxl.exe"),NULL,NULL,NULL,FALSE,0,NULL,NULL,NULL, &pi);

if (strNazwaProg == "Pocket Word")

CreateProcess(TEXT("Windows\\pword.exe"),NULL,NULL,NULL,FALSE,0,NULL,NULL,NULL, &pi);

if (strNazwaProg == "Solitare")

CreateProcess(TEXT("Windows\\solitare.exe"),NULL,NULL,NULL,FALSE,0,NULL,NULL,NULL, &pi);

if ((strNazwaProg != "Notes") && (strNazwaProg != "Pocket Excel") &&
(strNazwaProg != "Pocket Word") && (strNazwaProg != "Solitare"))

strNazwaProg = TEXT("Windows\\") + m_aplikacja + _T(".exe");
CreateProcess(strNazwaProg,NULL,NULL,NULL,FALSE,0,NULL,NULL,NULL, &pi);

//// KONIEC KODU /////

}


Pozdrawiam

Wielkie dzieki!
« Odpowiedź #4 dnia: Kwiecień 27, 2006, 21:35:19 »
Wielkie dzieki za opisanie wlasnych doswiadczen!

Kiedys probowalem utworzyc proces i mi nie wychodzilo. Dzieki Twojemu bezinteresownemu podzieleniu sie wiedza znalazlem swoj blad :)

A przy okazji spytam sie: Czy dzialasz na eVC, czy w necie?  jesli stare eVC, to co wykorzystujesz do tworzenia aplikacji? MFC czy zwykly kod?

Pozdrawiam