Uruchamianie zewnętrznej aplikacji 4463 5

O temacie

Autor Lavius

Zaczęty 9.11.2008 roku

Wyświetleń 4463

Odpowiedzi 5

Lavius

Lavius

Użytkownicy
posty96
  • Użytkownicy
Otóż pracuję nad dość rozbudowanym wielo serwerowym launcherem do WoWa. Otóż projekt jest już prawie gotowy a zatrzymałem się na sprawie można powiedzieć - błahej. Otóż chcę aby po kliknięciu w dany przycisk został uruchomiony plik wow.exe.

AnsiString ss=Form1->Sciezka->Lines->Strings[0]+"/wow.exe";
const char * ur=ss.c_str();
WinExec(ur, SW_SHOW);

Otóż szybko o co chodzi - w AnsiStringu ścieżka jest sama lokalizacja pliku, dodajemy więc do niej końcówke "wow.exe", konwetujemy na const char * gdyż WinExec innych nie akceptuje i próbujemy uruchomić.

Program się kompiluje, ale po kliknięciu w button nic się nie dzieje, ma ktoś jakikolwiek pomysł co jest nie tak?
 

dreyhal

dreyhal

Użytkownicy
posty9
  • Użytkownicy
Sczytaj wartość zwracaną przez WinExec oraz postaw breakpointa na WinExec i sprawdź co zawiera ur.
A tak w ogóle to CreateProcess używaj :D . Chyba że chcesz grać w WoWa na Windows 3.0 :D
 

Lavius

Lavius

Użytkownicy
posty96
  • Użytkownicy
Hmmm... Prawdę mówiąc nigdy nie korzystałem z CreateProcess xDD Mógłbyś go tak mniej/więcej omówić?

chcesz grać w WoWaTo nie projekt osobisty xD Zamierzam zbić na nim fortunę i zawładnąć światem xDD
 

dreyhal

dreyhal

Użytkownicy
posty9
  • Użytkownicy
http://msdn.microsoft.com/en-us/library/ms682425.aspx
tylko sie nie bój tej listy parametrów, tam połowę i tak możesz nulle podać
 

Lavius

Lavius

Użytkownicy
posty96
  • Użytkownicy
Zachowam się jak pierwszy lepszy noob ale poproszę o przykład gotowca który będzie odpalał dajmy na to plik executable zawarty w C:/Program Files/Program/Program.exe

Mam nadzieję że jesteś gotowy pomóc ^_^
 

dreyhal

dreyhal

Użytkownicy
posty9
  • Użytkownicy
Kod dla Visual C++ 2008 Express
#include <stdio.h>
#include <tchar.h>
#include <windows.h>


int _tmain(int argc, _TCHAR* argv[])
{
STARTUPINFO si;
PROCESS_INFORMATION pi;

ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( ?, sizeof(pi) );

CreateProcess( TEXT("C:\\Program Files\\Windows Media Player\\wmplayer.exe"),  
TEXT("C:\\Program Files\\Windows Media Player\\wmplayer.exe"),
NULL,  
NULL,  
FALSE,
0,
NULL,  
NULL,  
&si,
? );

LPTSTR pszMessage;
DWORD dwLastError = GetLastError();

FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
dwLastError,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&pszMessage,
0, NULL );


wprintf(L"%s\n", pszMessage);

LocalFree(pszMessage);
getchar();

return 0;
}
makra TEXT("") służą zamianie znaków unicode na ascii, jeśli wyłączysz unicode to możesz je pominąc. Podobnie konwersja (LPTSTR) oraz litera "L" w funkcji wprintf
 


0 użytkowników i 2 gości przegląda ten wątek.
0 użytkowników
Do góry