View Full Version : [C] Recupero path dell'exe
Ciao, ho una domanda sul C, sto usando VC++ per modificare un grosso progetto C (non mfc), vorrei sapere se esiste il modo di recuperare il path dell'exe del programma stesso....ossia, se metto l'exe in "C:\Pippo", vorrei che in una variabile mi trovassi appunto questo path, così da usarlo all'interno del programma.
Grazie
Ciao, ho una domanda sul C, sto usando VC++ per modificare un grosso progetto C (non mfc), vorrei sapere se esiste il modo di recuperare il path dell'exe del programma stesso....ossia, se metto l'exe in "C:\Pippo", vorrei che in una variabile mi trovassi appunto questo path, così da usarlo all'interno del programma.
Grazie
a memoria nella funzione main (int argc, char* argv[]) il primo elemento di argv è il path completo dell'applicazione
variabilepippo
24-09-2007, 09:24
L'ho scritta al volo senza testarla ma dovrebbe funzionare:
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
string PercorsoExe(void)
{
TCHAR szPath[MAX_PATH];
string path = "";
if (GetModuleFileName(NULL, szPath, MAX_PATH))
{
path = szPath;
path = path.substr(0, path.rfind("\\") + 1);
}
return path;
}
int main(){
cout << PercorsoExe() << endl;
}
Con qualche piccola modifica la puoi convertire in C.
a memoria nella funzione main (int argc, char* argv[]) il primo elemento di argv è il path completo dell'applicazione
A memoria è il nome dell'eseguibile.
Uhm, io ho questa come main:
int WINAPI
WinMain(HINSTANCE instance, HINSTANCE previnst, LPSTR cmd, int show)
E in cmd ho solo la riga dei parametri che ho passato all'exe, non il suo path...:(
Uhm, io ho questa come main:
int WINAPI
WinMain(HINSTANCE instance, HINSTANCE previnst, LPSTR cmd, int show)
E in cmd ho solo la riga dei parametri che ho passato all'exe, non il suo path...:(
ahh ma è un app win32, allora prova con il suggerimento di variabilepippo :)
variabilepippo
24-09-2007, 09:47
ahh ma è un app win32, allora prova con il suggerimento di variabilepippo
Anche se non fosse un'applicazione win32 sarebbe impossibile ricavare il percorso dell'eseguibile dal parametro argv, secondo lo standard C99 argv contiene esclusivamente il *nome* del programma. ;)
Allora, prima di tutto grazie di tutti i preziosi consigli.
Ricercando con SanGoogle, ho trovato la funzione GetModuleFileName e funziona!
Mi torna tutto il path però, compreso il nome del .exe.
Con un'altra funzione, rimpiazzo il nome dell'exe con il nome del file che mi serve cercare in quel path e sono a posto.
Grazie ancora cmq!
variabilepippo
24-09-2007, 09:54
Ricercando con SanGoogle, ho trovato la funzione GetModuleFileName e funziona!
Mi torna tutto il path però, compreso il nome del .exe.
:eek:
Scusa, ma hai visto il mio codice? Non avevi bisogno di raccomandarti a SanGoogle, nel codice viene mostrato inoltre come estrarre il percorso dal path completo.
string PercorsoExe(void)
{
TCHAR szPath[MAX_PATH];
string path = "";
if (GetModuleFileName(NULL, szPath, MAX_PATH))
{
path = szPath;
path = path.substr(0, path.rfind("\\") + 1);
}
return path;
}
Sisi, ma l'ho visto DOPO aver fatto la ricerca, visto che mi bloccava.
Cmq userò il tuo, è più corretto.
tomminno
24-09-2007, 10:48
Allora, prima di tutto grazie di tutti i preziosi consigli.
Ricercando con SanGoogle, ho trovato la funzione GetModuleFileName e funziona!
Mi torna tutto il path però, compreso il nome del .exe.
Con un'altra funzione, rimpiazzo il nome dell'exe con il nome del file che mi serve cercare in quel path e sono a posto.
Grazie ancora cmq!
Ma se devi cercare un altro file perchè non usare GetCurrentDirectory e FindFirstFile?
variabilepippo
24-09-2007, 11:04
Ma se devi cercare un altro file perchè non usare GetCurrentDirectory e FindFirstFile?
Suggerimento più che valido.
Uh, in effetti potrebbe fare al caso mio....purtroppo sono molto 'basic' come conoscenze del C, con VB avrei avuto decisamente meno problemi....sorry.
Proverò anche queste funzioni, di certo saranno più "eleganti" del metodo che ho usato io....:)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.