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++ - [API] ShellExecute non funziona :(
Forum - C/C++ - [API] ShellExecute non funziona :(

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Exor (Normal User)
Rookie


Messaggi: 30
Iscritto: 29/08/2009

Segnala al moderatore
Postato alle 23:12
Sabato, 29/08/2009
rieccomi con 2 post XD
scusate ma ho molti dubbi ...

Il problema è che l'api ShellExecute non mi funziona ...

l'ho usata così

ShellExecute(NULL,"open","ren.exe","C:\prova.a prova.c",NULL,SW_HIDE);

mi serve per rinominare un file che però deve nascondere la finestra.

questo non funzionava ... allora ho provato a sostituire SW_HIDE con SW_SHOWNORMAL ma la finestra non si vede neanche -.-
quindi ho riprovato con CreateProcess e non va nemmeno quest'API ...

opco dopo mi è venuta l'illuminazione: ho pensato siccome sono con Windows 7 forse è colpa delle autorizzazioni amministratore quindi ho cercato un po' ed ho trovato CreateProcessAsUser ma non ho capito come funziona :rofl:

vi chiedo: ho centrato il problema ? .. se no quale potrebbe essere la soluzione ?

sono 2 settimane che ci sto su ma non riesco a capire -.-

PS: dimenticavo, windows.h lo includo eh :rotfl:

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 9:49
Domenica, 30/08/2009
scusa, ma se devi solo rinominare un file usa la rename no?

Codice sorgente - presumibilmente C/C++

  1. #include <cstdio>
  2.  
  3. int main()
  4. {
  5.    rename("c:\\prova.a", "prova.c");
  6.    return 0;
  7. }



perché fare fatica con la ShellExecute?

PM Quote
Avatar
Exor (Normal User)
Rookie


Messaggi: 30
Iscritto: 29/08/2009

Segnala al moderatore
Postato alle 11:38
Domenica, 30/08/2009
ehm ... sapevo questo, però se per esempio dovessi lanciare un comando dos, nasconedendo la finestra ?

PM Quote
Avatar
NetProgrammer (Member)
Pro


Messaggi: 175
Iscritto: 28/06/2008

Segnala al moderatore
Postato alle 13:19
Domenica, 30/08/2009
Per lanciare un comando dos da c++ su win basta che usi la system("nomecomando");
Tutto quì...XDXD
Ciao

PM Quote
Avatar
Exor (Normal User)
Rookie


Messaggi: 30
Iscritto: 29/08/2009

Segnala al moderatore
Postato alle 13:49
Domenica, 30/08/2009
si XD ....
questo lo sapevo anch'io XD
ma non nasconde la finestra dos però :rofl:

ecco perchè mi serve la ShellExecute

Ultima modifica effettuata da Exor il 30/08/2009 alle 13:49
PM Quote
Avatar
giuseppe93 (Ex-Member)
Pro


Messaggi: 166
Iscritto: 02/08/2009

Segnala al moderatore
Postato alle 15:00
Domenica, 30/08/2009
Ciao!! Secondo me basta che usi la funzione rename("miofile.estensione","nuovonome.estesione");
devi includere stdio.h poi nascondi il tuo programma scrivendo questo:
HWND hwnd=FindWindow("ConsoleWindowClass",NULL);
     ShowWindow(hwnd,SW_HIDE);
all'inizio del programma includendo windows.h
Così rinomini e il tuo programma gira in background!
;)

PM Quote
Avatar
NetProgrammer (Member)
Pro


Messaggi: 175
Iscritto: 28/06/2008

Segnala al moderatore
Postato alle 20:48
Domenica, 30/08/2009
Ok...xdxd però non ho capito se vuoi nascondere la finsetra del tuo prog o la finestra che si apre quando lanci un comando dos??

PM Quote
Avatar
steve__92 (Normal User)
Rookie


Messaggi: 22
Iscritto: 14/07/2009

Segnala al moderatore
Postato alle 0:23
Lunedì, 31/08/2009
Testo quotato

Postato originariamente da giuseppe93:

Ciao!! Secondo me basta che usi la funzione rename("miofile.estensione","nuovonome.estesione");
devi includere stdio.h poi nascondi il tuo programma scrivendo questo:
HWND hwnd=FindWindow("ConsoleWindowClass",NULL);
     ShowWindow(hwnd,SW_HIDE);
all'inizio del programma includendo windows.h
Così rinomini e il tuo programma gira in background!
;)



thanks for the info!
solitamente non mi interessano questo genere di cose, però saperle potrebbe ritornare utile delle volte :heehee:

ps. sapete indicarmi una guida (possibilmente in ita, ma mi accontento pure di inglese se scritto facile) sulle variabili (perchè credo che siano variabili) HWND, DWORD, HANDLE, ecc... (quelle usate con le windows api) ?


ps. scusate per l'intrusione

EDIT:
ho provato a lanciare un programma con visual c++ ee 2008 e ho notato che non è FindWindow("ConsoleWindowClass",NULL); ma è FindWindowA("ConsoleWindowClass",NULL);

Ultima modifica effettuata da steve__92 il 31/08/2009 alle 0:28
PM Quote
Avatar
NetProgrammer (Member)
Pro


Messaggi: 175
Iscritto: 28/06/2008

Segnala al moderatore
Postato alle 9:45
Lunedì, 31/08/2009
Allora secondo me non serve una guida sulle variabili ma sulle WIN API in quanto la FindWindowA ovvero la FindWindow con la A finale dovresti sapere a che si riferisce,per la guida sulle variabili per conoscere che significa DWORD HANDLE ecc.. quelli sono concetti ovvero sapere che cos'è 1 DWORD è una cosa che si apprende non studiando le variabili ma la base di funzionamento che c'è dietro un pc; è come se chiedessi di studiare una guida sulle varibili per capire cos'è un int...ti pare possibile???

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo