PDA

View Full Version : [C++]ShellExecute+Jar


Slash90
11-02-2013, 10:05
Salve raga, sto cercando di far partire un programma java da un mio progetto C++.
L'istruzione è la seguente:

HINSTANCE i=ShellExecute(NULL,"open","java"," -jar C:\\Users\\Fabrizio\\Desktop\\prova.jar",NULL,SW_SHOWNORMAL);


Il problema è che il jar non viene avviato (ho provato ad avviarlo manualmente da linea di comando e va senza problemi).

Provando il progetto sulla macchina di un mio collega (con windows vista 32bit), il jar invece parte senza problemi.

Sto usando Visual C++ Express 2008 su una macchina con Windows7 64bit (in bootcamp su mac).

Dove sbaglio?
Qual'è il problema??

sottovento
11-02-2013, 11:37
Hai inizializzato COM?

Su MSDN (http://msdn.microsoft.com/en-us/library/windows/desktop/bb762153%28v=vs.85%29.aspx) c'e' scritto:


Because ShellExecute can delegate execution to Shell extensions (data sources, context menu handlers, verb implementations) that are activated using Component Object Model (COM), COM should be initialized before ShellExecute is called. Some Shell extensions require the COM single-threaded apartment (STA) type. In that case, COM should be initialized as shown here:

CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)



Ad ogni modo, se la ShellExecute() funziona, ritorna un valore SICURAMENTE maggiore di 32, altrimenti ritorna un codice di errore.
Hai provato a stamparlo e decodificarlo? (la lista dei possibili errori e' sempre nella pagina MSDN)