Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como saber si una aplicacion se esta ejecutando? (https://www.clubdelphi.com/foros/showthread.php?t=12659)

Javi2 23-07-2004 10:49:21

Como saber si una aplicacion se esta ejecutando?
 
Hola,

Mi pregunta es bastante sencilla: ¿Cómo puedo saber si una aplicación (por ejemplo Word) se está ejecutando en mi ordenador o en otro ordenador de mi red?

Muchas gracias.

ruina 23-07-2004 12:15:51

pues usando FindWindow, que es una funcion de windows (la ayuda está en win32 SDK reference)

para encontrar una ventana puedes hacerlo mediante el título (que no te vale porque cambia en función del documento) o mediante el nombre la clase. Para averiguar el nombre de la clase del programa que quieres buscar puedes usar el programita winsight32, que muestra todas las ventanas abiertas, su nombre de clase y el nombre del ejecutable.
espero que te sirva.

Halfo 23-07-2004 12:34:43

A ver te cuento lo que yo hice para chequear si en una maquina esta corriendo el Emule (de entrada decirte que si se trata de una maquina remota no se como acceder a esa información sin instalar un espia o servidor que pueda correr en dicha maquina) . aqui te pongo el codigo del espia que use para detectar en si corria el emule. Consta de dos funciones, y deberias cambiar el texto "emule" por el que te sirva en tu caso (esta en C++Builder)
Lo saque del MSDN:
//---------------------------------------------------------------------------
bool __stdcall EnumProc(HWND hWnd,/*LPARAM*/long/*lp*/)
{
unsigned long* pPid; //LPDWORD
unsigned long result; //DWORD
void *hg; //HGLOBAL
unsigned long id;

if(hWnd==NULL)
return false;

hg = GlobalAlloc(GMEM_SHARE,sizeof(unsigned long));
pPid = (unsigned long *)GlobalLock(hg);

result = GetWindowThreadProcessId(hWnd,pPid);

if(result){
char title[110];
char className[95];
char totalStr[256];
GetClassName(hWnd,className,95);
GetWindowText(hWnd,title,110);
id=*pPid;
ultoa(id,totalStr,10);
strcat(totalStr,"\t");
if(title){
strcat(totalStr,title);
strcat(totalStr,"\t");
}
strcat(totalStr,className);
//FormMain->ListBox1->Items->Add((AnsiString)totalStr);
if (ServerForm->Procesos)
ServerForm->Procesos->Add((AnsiString)totalStr);
}
else{
GlobalUnlock(hg);
GlobalFree(hg);
return false;
}
GlobalUnlock(hg);
GlobalFree(hg);
return true;
}
//---------------------------------------------------------------------------
bool __fastcall TServerForm::CheckEmule()
{
EmuleConectado=false;
Procesos = new TStringList();
try
{
long lp=0;
EnumWindows((WNDENUMPROC)EnumProc,lp);

for (int indice=0;indice<Procesos->Count;indice++)
if (Procesos->Strings[indice].AnsiPos("eMule")!=0)
{
EmuleConectado=true;
break;
}
}
__finally
{
delete Procesos;
}
Escribir("CheckEmule " + AnsiString((short)EmuleConectado));
return EmuleConectado;
}
//---------------------------------------------------------------------------

delphi.com.ar 23-07-2004 15:58:05

Otro ejemplo: http://www.clubdelphi.com/foros/showthread.php?t=11849

Saludos!


La franja horaria es GMT +2. Ahora son las 08:35:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi