Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    C++ Eseguire comando sul prompt (senza visualizzare console)

    Ciao a tutti, sono 2 giorni che cerco su google una soluzione e non trovo niente di chiaro.

    Il mio scopo è quello di creare un exe che faccia partire la mia applicazione java con il comando
    codice:
    javaw -jar Programma.jar
    .

    - Non mi accontento di un semplice .bat perché voglio mettere l'icona del programma.
    - Non voglio che si veda la console.
    - Ho provato JSmooth, execJ, Java Launcher ma nessuno di questi funziona (strani errori di seg fault o array out of bounds)



    Dopo mille ricerche sono giunto al seguente codice:
    codice:
    #include <windows.h>
    #include <stdlib.h>
     
    int main() {
      system("javaw -jar Programma.jar");
     
      /** Queste 2 righe prendono la console e la nascondono */
      HWND hwnd=FindWindow("ConsoleWindowClass",NULL);
      ShowWindow(hwnd,SW_HIDE);   
     
      return 0;
    }
    Ma per qualche motivo folle, il programma termina dicendo che
    javaw non è riconosciuto come comando interno o esterno (stessa cosa con java, javaw.exe e java.exe)... Non vede le variabili d'ambiente!
    Sono su Windows 7 (64bit) per intenderci (probabilmente su XP questo codice funzionava, ma ho bisogno della piena compatibiità).


    Su google trovo moltissima gente che consiglia di provare con ShellExecute() o CreateProcess(), vi chiedo di avere il buon cuore di scrivermi il codice completo (e magari testato) perché queste funzioni hanno una documentazione obbrobbriosa con degli esempi puntualmente non funzionanti.
    Il cinghiale è un animale raffinato

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    Su google trovo moltissima gente che consiglia di provare con ShellExecute() o CreateProcess(), vi chiedo di avere il buon cuore di scrivermi il codice completo (e magari testato) perché queste funzioni hanno una documentazione obbrobbriosa con degli esempi puntualmente non funzionanti.
    E fanno bene.. la system non va usata!!

    La documentazione su MSDN online è fatta bene, puntuale e con esempi che funzionano..

    Spiega cosa non ti funziona, il forum non è fatto per "scrivermi il codice completo (e magari testato)"

    sorry

  3. #3
    Originariamente inviato da Stoicenko
    ...

    Spiega cosa non ti funziona, il forum non è fatto per "scrivermi il codice completo (e magari testato)"

    sorry
    Per risponderti mi autocito:
    Originariamente inviato da SimoVinci
    Ma per qualche motivo folle, il programma termina dicendo che
    javaw non è riconosciuto come comando interno o esterno (stessa cosa con java, javaw.exe e java.exe)... Non vede le variabili d'ambiente!


    Ok che la system() non va usata, ma cosa proponi come alternativa? Come posso eseguire il comando "javaw -jar Programma.jar" senza visualizzare una console?


    Ho chiesto (gentilmente mi pare, parlando di buon cuore) di scrivermi l'intero codice semplicemente per 2 motivi:
    1- Se hai letto bene capirai che chiedo un codice cortissimo
    2- Ho già ricevuto risposte di gente che mi dice di guardare la documentazione di ShellExecute o CreateProcess senza altri consigli. Purtroppo su queste pagine non trovo neanche un esempio che faccia al caso mio (e a volte che non si fa neanche compilare). Non mi sembra di chiedere la luna con un esempio, sorry
    Il cinghiale è un animale raffinato

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: C++ Eseguire comando sul prompt (senza visualizzare console)

    Originariamente inviato da SimoVinci
    - Ho provato JSmooth, execJ, Java Launcher ma nessuno di questi funziona (strani errori di seg fault o array out of bounds)
    Che problema ti ha dato JSmooth? Io lo uso da una vita e mi ha sempre funzionato correttamente :master:
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Dunque, JSmooth

    1- Prima di installarsi mi obbliga a scaricare e installare la JVM a 32 bit (ho già l'altra!)
    2- Una volta installato
    - lo apro
    - scelgo lo skeleton WindowedWrapper
    - setto i giusti parametri in Executable (con icona)
    - in application gli do il percorso del mio Jar
    - l'ultimo pannello non lo tocco
    - compila correttamente
    - sposto l'exe nella cartella del programma.
    - lo eseguo
    - Si apre la classica finestra "Il programma ha smesso di funzionare", ci sono i dettagli che sono i seguenti:

    codice:
    Firma problema:
      Nome evento problema:	APPCRASH
      Nome applicazione:	PneumoArchive2.exe
      Versione applicazione:	0.0.0.0
      Timestamp applicazione:	4650b8ed
      Nome modulo con errori:	jvm.dll
      Versione modulo con errori:	11.2.0.1
      Timestamp modulo con errori:	49724dc7
      Codice eccezione:	c0000005
      Offset eccezione:	000dee08
      Versione SO:	6.1.7600.2.0.0.256.1
      ID impostazioni locali:	1040
      Informazioni aggiuntive 1:	0a9e
      Ulteriori informazioni 2:	0a9e372d3b4ad19135b953a78882e789
      Ulteriori informazioni 3:	0a9e
      Ulteriori informazioni 4:	0a9e372d3b4ad19135b953a78882e789
    
    Leggere l'informativa sulla privacy online:
      http://go.microsoft.com/fwlink/?link...8&clcid=0x0410
    
    Se l'informativa sulla privacy online non è disponibile, leggere quella offline:
      C:\Windows\system32\it-IT\erofflps.txt

    Forse il problema è Windows 7 a 64 bit, io vorrei trovare un codice che funzioni su qualsiasi piattaforma Windows (XP, Vista e 7).
    Il cinghiale è un animale raffinato

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.