| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
a3093 Lt


Registrado: 27 May 2004Mensajes: 97Ubicación: Las Palmas de Gran Canaria
|
Publicado: Vie 24 Nov, 2006 4:06 am Asunto: Nombre de la aplicacion |
|
|
Hola amigos,
¿Cómo se puede saber el nombre y ruta de una aplicación que se está ejecutando y que no tiene formularios? Lo de los formularios lo digo porque no me vale Application->ExeName
Estoy usando el WinMain... ¿alguno de sus parametros indica el nombre de la aplicación?
| Código: |
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
|
Muchas graciasssss |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Vie 24 Nov, 2006 6:32 am Asunto: |
|
|
Usando la siguiente funcion del API de windows puedes encontrar si tu aplicacion se encuentra ejecutandose, la funcion en si
se denomina AppInstaceExists
| Código: | BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;
hInst = hInstance;
// Check if another application instance is already running
if ( AppInstanceExists() == TRUE )
{
HWND hWndOtherInstance;
hWndOtherInstance = FindWindow(szWindowClass, szTitle);
if ( hWndOtherInstance != (HWND)NULL )
{
// Application is running in current user's session
if (IsIconic(hWndOtherInstance))
ShowWindow(hWndOtherInstance, SW_RESTORE);
SetForegroundWindow(hWndOtherInstance);
}
else
{
MessageBox(NULL, TEXT(
"An instance of this app is running in another user's session"),
szTitle, MB_OK);
}
return FALSE;
}
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL,
hInstance, NULL );
if (!hWnd)
return FALSE;
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
WTSRegisterSessionNotification(hWnd, NOTIFY_FOR_THIS_SESSION);
return TRUE;
}
|
En este enlace del soporte de Microsoft puede encontrar la respuesta
http://support.microsoft.com/kb/310153 _________________
 |
|
| Volver arriba |
|
 |
a3093 Lt


Registrado: 27 May 2004Mensajes: 97Ubicación: Las Palmas de Gran Canaria
|
Publicado: Vie 24 Nov, 2006 10:54 am Asunto: |
|
|
Muchas gracias César, pero lo que yo quiero es algo más sencillo... y que no lo encuentro por ningún lado
Lo único que me hace falta es saber cual es el nombre del fichero de mi aplicación y la ruta absoluta donde está.
 |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Vie 24 Nov, 2006 11:03 am Asunto: |
|
|
No entiendo. Si te refieres al nombre y ruta del ejecutable tienes las funciones ExtractFilePath y ExtractFileName:
| Código: | AnsiString RutaAbsoluta = ExtractFilePath(Application->ExeName);
AnsiString NombreEjecutable = Application->ExeName |
Si te refieres a otra cosa tendrás que explicarlo mejor. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
a3093 Lt


Registrado: 27 May 2004Mensajes: 97Ubicación: Las Palmas de Gran Canaria
|
Publicado: Vie 24 Nov, 2006 11:14 am Asunto: |
|
|
ya lo encontreeeeeee
__argv[0] contiene la ruta absoluta y el nombre de la aplicación.
Ahí va un ejemplo:
| Código: |
MessageBox( NULL, __argv[0], "__argv[0]", MB_OK );
|
Si se saben otras formas de hacerlo,por ejemplo que ya venga separado lo que es la ruta del nombre de la aplicación díganmelo y así me ahorro unas líneas de código  |
|
| Volver arriba |
|
 |
a3093 Lt


Registrado: 27 May 2004Mensajes: 97Ubicación: Las Palmas de Gran Canaria
|
Publicado: Vie 24 Nov, 2006 11:24 am Asunto: |
|
|
Gracias Angel por tu respuesta, lo que pasaba es que no puedo utilizar Application->ExeName porque no estoy usando la librería Forms.
No obstante gracias por lo de "ExtractFilePath". No me acordaba de esa función, la utilicé hace mucho tiempo cuando programaba en c++. Luego lo dejé para pasarme al mundillo de Java pero ahora ya he vuelto por estos lugares. |
|
| Volver arriba |
|
 |
|