Exor (Normal User)
Rookie
Messaggi: 30
Iscritto: 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
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
|
|
lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
scusa, ma se devi solo rinominare un file usa la rename no?
Codice sorgente - presumibilmente C/C++ |
#include <cstdio>
int main()
{
rename("c:\\prova.a", "prova.c");
return 0;
}
|
perché fare fatica con la ShellExecute?
|
|
Exor (Normal User)
Rookie
Messaggi: 30
Iscritto: 29/08/2009
|
ehm ... sapevo questo, però se per esempio dovessi lanciare un comando dos, nasconedendo la finestra ?
|
|
NetProgrammer (Member)
Pro
Messaggi: 175
Iscritto: 28/06/2008
|
Per lanciare un comando dos da c++ su win basta che usi la system("nomecomando");
Tutto quì...XDXD
Ciao
|
|
Exor (Normal User)
Rookie
Messaggi: 30
Iscritto: 29/08/2009
|
si XD ....
questo lo sapevo anch'io XD
ma non nasconde la finestra dos però
ecco perchè mi serve la ShellExecute
Ultima modifica effettuata da Exor il 30/08/2009 alle 13:49 |
|
giuseppe93 (Ex-Member)
Pro
Messaggi: 166
Iscritto: 02/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!
|
|
NetProgrammer (Member)
Pro
Messaggi: 175
Iscritto: 28/06/2008
|
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??
|
|
steve__92 (Normal User)
Rookie
Messaggi: 22
Iscritto: 14/07/2009
|
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
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 |
|
NetProgrammer (Member)
Pro
Messaggi: 175
Iscritto: 28/06/2008
|
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???
|
|