Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Strano
Forum - C/C++ - Strano

Avatar
skirk (Ex-Member)
Pro


Messaggi: 199
Iscritto: 01/09/2005

Segnala al moderatore
Postato alle 2:41
Mercoledì, 02/08/2006
Sto lavorando con Borland C++ 6 per creare un programma simile a control center.
Però ho incontrato un ostacolo. Praticamente quando schiacci un bottone voglio che si apri la shell, allora ho linkato la libreria windows.h e ho usato il  codice ShellExecute:


//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include <windows.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShellExecute(0, 0, "%SystemRoot%\\cmd.exe", 0, 0, 0);


Compila tutto bene, senza errori, ma quando clicco sul bottone non parte :-|. Emh, perchè??

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 12:05
Mercoledì, 02/08/2006
Non è strano, semplicemente credo che la stai usando nella maniera sbagliata, passando gli argomenti sbagliati.

Il prototipo è questo:

Codice sorgente - presumibilmente C/C++

  1. HINSTANCE ShellExecute(      
  2.     HWND hwnd,
  3.     LPCTSTR lpOperation,
  4.     LPCTSTR lpFile,
  5.     LPCTSTR lpParameters,
  6.     LPCTSTR lpDirectory,
  7.     INT nShowCmd
  8. );



e per avviare un file di solito si usa:

Codice sorgente - presumibilmente C/C++

  1. ShellExecute(handle, "open", <fully_qualified_path_to_folder>, NULL, NULL, SW_SHOWNORMAL);



Maggiori informazioni le trovi sull'MSDN online.

Ultima modifica effettuata da pierotofy il 02/08/2006 alle 12:06


Il mio blog: https://piero.dev
PM Quote
Avatar
mar (Normal User)
Rookie


Messaggi: 28
Iscritto: 29/06/2006

Segnala al moderatore
Postato alle 13:59
Mercoledì, 02/08/2006
Si è molto importante soprattutto l'ultimo parametro della ShellExecute, senza di quello non visualizzerai niente.

PM Quote
Avatar
spit-byte (Normal User)
Newbie


Messaggi: 2
Iscritto: 03/08/2006

Segnala al moderatore
Postato alle 18:50
Giovedì, 03/08/2006
CIAO RAGA...

QUI SPIT-BYTE

VOLEVO chiedervi cortesemente chi di voi saprebbe dirmi come posso far un una scelta casuale (rand) tra alcune fraci....come

1 bravo
2 eccellente
3 perfetto
4 ok

cioe ogni volta che fa un qualcosa di giusto in un programma mostri sempre un messagio diverso pero tra questi elencati sopra...

grazie

PM Quote
Avatar
Linux@war (Ex-Member)
Newbie


Messaggi: 5
Iscritto: 21/06/2006

Segnala al moderatore
Postato alle 15:51
Venerdì, 04/08/2006
Per la questione delle frasi casuali puoi tranquillamente basarti su una variabile numerica, infatti tramite una serie di if (o case) puoi in base al valore random preso dalla variabile fare stampare una frase diversa:

char mess0[50]="bravo";
char mess1[50]="eccellente";
char mess2[50]="perfetto";
char mess3[50]="ok";
int x = random(3);
if(x==0) MessageBox(NULL, mess0, "Risultato",0);
if(x==1) MessageBox(NULL, mess1, "Risultato",0); if(x==2) MessageBox(NULL, mess2, "Risultato",0);
if(x==3) MessageBox(NULL, mess3, "Risultato",0);


ps: la funzione ShellExecute utilizza la seguente sintassi

ShellExecute(hWnd, "open", "nome_file.estenzione", NULL, "percorso\\del\\file\\", SW_SHOWNORMAL);

--> Al posto di open come secondo parametro puoi anke utilizzare "print" se ad esempio vuoi stampare un file di testo e puoi inoltre lasciare vuoto il percorso nel caso il file in questione si trovi nella stessa cartella dell'eseguibile.



Ultima modifica effettuata da Linux@war il 04/08/2006 alle 15:54
PM Quote
Avatar
spit-byte (Normal User)
Newbie


Messaggi: 2
Iscritto: 03/08/2006

Segnala al moderatore
Postato alle 0:54
Domenica, 06/08/2006


grazie per avermi risposto
;) mi sei stato d'aiuto

PM Quote