![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
|||
|
|||
|
Gracias
tengo una dudita como pudiera poner un nombre fijo para mi aplicacion en los procceso (Es para utilizarlo en el code anterior)... me explico: Quisiera que aunque cambien el nombre del ejecutabler, en los proccesos siga teniendo el mismo que yo le puse... si se puede hacer diganme como... |
|
#2
|
|||
|
|||
|
Pues mi lógica me dice que no se va a poder, en la lista de procesos se presenta el nombre del ejecutable y según se, no se puede cambiar el nombre del ejecutable cuando este se está ejecutando.
Pero si tienes este mismo fin, te pasó esto que en lugar de buscar por el título de la aplicación, busca por la clase del form principal la cual no cambia nunca. Código:
/*Obtienes el handle de la aplicación según su clase en este caso “Tmiclase”,
este es el nombre del form principal de tu aplicación.*/
HWND miventana= FindWindow("Tmiclase", 0);
/*Si lo encontró, manda el mensaje de cerrar, lo cual ara que se cierre la
aplicación.*/
if (miventana) {
PostMessage(miventana, WM_CLOSE, 0, 0);
}
|
|
#3
|
|||
|
|||
|
Hola
El code que puso (_cero_) no me funciona pero el de (escafandra) si me funciona a la perfeccion... ******** Otra duda es posible saber el titulo de otra aplicacion , es decir el titulo de un juego por ejemplo... Muchas Gracias por el aporte.... |
|
#4
|
||||
|
||||
|
Cita:
Código:
GetWindowText(hWnd, AppTitle, sizeof(AppTitle)-1); Código:
// Encuentra el título de la aplicación que primero encuentre del notepad.exe
// Podrás adaptarlo para otros exename e incluso para todos los procesos abiertos de ese exemane.
HANDLE GetWindowFromProcessId(DWORD ProcessId, char* WindowName);
DWORD GetProcessId(char* ExeName);
DWORD Pid = GetProcessId("notepad.exe");
HANDLE hWnd = GetWindowFromProcessId(Pid, 0);
char AppTitle[256]; // El titulo buscado
GetWindowText(hWnd, AppTitle, sizeof(AppTitle)-1);
Código:
DWORD GetProcessId(char* FileName)
{
DWORD Result = 0;
PROCESSENTRY32 proc = { sizeof(proc) };
HANDLE hSysSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hSysSnapshot != reinterpret_cast<HANDLE>(-1) && Process32First(hSysSnapshot, &proc)){
do{
if(!stricmp(proc.szExeFile, FileName)){
Result = proc.th32ProcessID;
}
}while(Process32Next(hSysSnapshot, &proc));
}
CloseHandle(hSysSnapshot);
return Result;
}
Código:
//--------------------------------------------------------------------------- // Traducción y adaptación a C++ del código de seoane //--------------------------------------------------------------------------- struct TWindowRec{ HANDLE Handle; DWORD ProcessId; char* WindowName; }; BOOL CALLBACK EnumWindowsProc(HANDLE Handle, LPARAM lParam) { DWORD ProcessId; char* Buffer; int Size; bool Result = true; ProcessId = 0; GetWindowThreadProcessId(Handle, &ProcessId); if(ProcessId == ((TWindowRec*)(lParam))->ProcessId){ if(((TWindowRec*)(lParam))->WindowName != 0){ Size = GetWindowTextLength(Handle) + 1; Buffer = new char[Size]; try{ GetWindowText(Handle, Buffer, Size); if(stricmp(((TWindowRec*)(lParam))->WindowName, Buffer) == 0){ ((TWindowRec*)(lParam))->Handle = Handle; Result = false; } } __finally{ delete Buffer; } }else{ ((TWindowRec*)(lParam))->Handle = Handle; Result = false; } } return Result; } typedef BOOL (__stdcall *TP)(); HANDLE GetWindowFromProcessId(DWORD ProcessId, char* WindowName) { TWindowRec WindowRec; // setmem(&WindowRec, sizeof(WindowRec), 0); WindowRec.ProcessId = ProcessId; WindowRec.WindowName = WindowName; EnumWindows((TP)EnumWindowsProc, LPARAM(&WindowRec)); return WindowRec.Handle; } ![]() Última edición por escafandra fecha: 18-12-2008 a las 08:19:07. |
|
#5
|
|||
|
|||
|
escafandra Muchas Gracias por el aporte
me que de loco con todos esos codicos, hay algunos que ni conosco (acuerdate que soy un novato en esto de la programacion) Si pudieras explicarme algo resperto al code de C++, que como saben es el programa que utilizo... ******* escafandra ya que veo que tu eres unos de los que mas ayudan en el foro quisiera saber si me pudiera comunicar contigo por los mensajes privado o por correo electronico, para que me pudieras ayudar mejor sobre Aplicaciones que me gustarian Hacer |
|
#6
|
||||
|
||||
|
#7
|
||||
|
||||
|
Cita:
Código:
Application->Title = "Mi Programa"; Piensa que este método que se te propone, es simplista y que existen formas mas complejas que detectan de forma inequívoca tu aplicación. En el foro encontrarás ejemplos. Creo que para empezar esto te sirve como anillo al dedo y sin complicarte mas. Saludos. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Procesos Interbase | berfer | Firebird e Interbase | 6 | 07-09-2006 20:28:57 |
| Procesos en un servidor... | Berto2003 | API de Windows | 0 | 31-07-2006 10:26:30 |
| Procesos lentos...., | Luis Castillo | Conexión con bases de datos | 4 | 22-12-2005 00:20:47 |
| Monitorear procesos | victork_py | Firebird e Interbase | 7 | 27-08-2003 12:06:29 |
|