Cita de: mDrinky en 24 Marzo 2013, 15:38 PM
@x64Core ya se que Beep no le da el foco . Lo que busco es saber cuando se ha clicado en el ListView y que item se a seleccionado.
un saludo.
Lee el codigo de arriba
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: mDrinky en 24 Marzo 2013, 15:38 PM
@x64Core ya se que Beep no le da el foco . Lo que busco es saber cuando se ha clicado en el ListView y que item se a seleccionado.
un saludo.
Cita de: ignorantev1.1 en 26 Marzo 2013, 07:05 AM
Misma burra, nomás que revolcada:
Voy a finalizar la aplicación (la que pone los hooks), antes de que finalice doy por terminado el hook del mouse:UnhookWindowsHookEx(msHook)
Después que "finaliza" la aplicación, la función que procesa el hook sigue funcionando lo cual provoca que se "frezee" Windows (hasta no cerrar el IDE de visual basic) o se cierra el IDE por si sólo. (porque no es todavía una aplicación, lo estoy corriendo del IDE). Para probar "mi teoría" puse "debug.print "Hola, sigo funcionando aún despues de hacer unhook ", y sí, el mensaje sigue apareciendo aún después de detener el programa:
¿Saben de alguna forma de terminar con el hook o manejarlo de tal manera que no suceda ésto?
Perdonen, saludos y gracias.
Cita de: Black Master en 23 Marzo 2013, 18:52 PMEso realmente no previene que una aplicación sea terminada por Taskmgr
Bueno, lo que puedes hacer es que el programa lea los procesos y si entre ellos se encuentra el administrador de tareas que lo cierre
Cita de: arley12 en 12 Enero 2013, 23:37 PM
Hola me gustaria saber si alguien me puede dar el code o apis para que la aplicacion de visual basic 6 que tengo no se pueda cerrar por medio del administrador de tareas y que al intentarlo le salga
"operaion no se pudo completar"
acesso denegado
muchas gracias aquien me colabore
Cita de: ignorantev1.1 en 21 Marzo 2013, 23:12 PM
A ver:
Yo uso:
Private function MSProc(byval nCode as long, byval wParam as long, byval lParam as long) as long
if wParam = WM_LBUTTONDOWN then
'ETC, ETC
end if
¿Cómo va el tuyo?
¡Saludos y gracias por tu respuesta!
Cita de: ignorantev1.1 en 21 Marzo 2013, 21:53 PM
Buenas, pues estoy haciendo una aplicación de la que ocupo capturar clicks del mouse en otra aplicación, casi todo bien, ya que pretendo realizar la captura cuando ambos botones del mouse sean presionados al mismo tiempo, algo así como "WM_LBUTTONDOWN & WM_RBUTTONDOWN", pero no me funciona. ¿Alguna idea?
Saludos y gracias.
Cita de: Arkhin en 21 Marzo 2013, 15:30 PM
Te agradezco muchisimo por el codigo, aunque lamentablemente tengo errores al momento de compilar, estoy usando Dev C++. En cada string que has insertado en el codigo, responde a un error: Cannot Convert const char[8] to const WCHAR* in assignment.
Deberia primero declararlas como string, asignarlas, y luego llamarlas?
Cita de: Arkhin en 21 Marzo 2013, 04:29 AM
Realmente admiro tus conocimientos pero lamentablemente los mios no llegan a tanto. Hasta lo que entendi lo que estas haciendo ahi es leer en la memoria el adress 005D88D0. Lo que quiero no es leer el adress, sino hacer un call a ese adress. La app es una app en vb6, y ese adress es donde comienza el clickeo de un IMAGE. Lo que quiero hacer yo ese que ese image se "clickee", llamando al adress donde empieza el clickeo del image. Ya probe metiendo un "call adress" dentro de timers en la aplicacion, y funciona perfectamente, es lo mismo que hacer click en el image, lo que quiero hacer es llamarlo yo mismo desde una app asi controlo cuando lo llamo y cuando no. Gracias por sus ayudas
typedef INT (WINAPI* MyPointer)(INT,INT);
#define FUNCTION_ADDRESS 0x005D88D0
HINSTANCE hInstance;
HWND hWMain;
HWND hWButton;
MyPointer FunctionTarget = (MyPointer)FUNCTION_ADDRESS;
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
INT mRet;
switch (message)
{
case WM_COMMAND:
/* call Function */
mRet = FunctionTarget(10,10);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEXW wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = 0;
wcex.hCursor = 0;
wcex.hbrBackground = (HBRUSH)COLOR_BTNSHADOW;
wcex.lpszMenuName = 0;
wcex.lpszClassName = TEXT("PROJECT");
wcex.hIconSm = 0;
return RegisterClassExW(&wcex);
}
INT MessageLoop()
{
MSG msg;
while(GetMessageW(&msg, NULL, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessageW(&msg);
}
return 0;
}
INT InitDialog(HINSTANCE hInst)
{
if(hInst)
hInstance = hInst;
else
hInstance = GetModuleHandleW(NULL);
if(!MyRegisterClass(hInstance))
return FALSE;
hWMain = CreateWindowW(TEXT("PROJECT"),L"PROJECT",DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU,
CW_USEDEFAULT, CW_USEDEFAULT,200,200,NULL,NULL,hInstance,NULL);
if(!hWMain)
return FALSE;
hWButton = CreateWindowW(TEXT("BUTTON"),TEXT("CALL ADDRESS"),WS_CHILDWINDOW | WS_VISIBLE,
10,10,150,150,hWMain,NULL,hInstance,NULL);
if(!hWButton)
return FALSE;
ShowWindow(hWMain, SW_SHOW);
UpdateWindow(hWMain);
MessageLoop();
return FALSE;
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpReserved )
{
switch( fdwReason )
{
case DLL_PROCESS_ATTACH:
CloseHandle(CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)InitDialog,hinstDLL,0,NULL));
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
Cita de: Arkhin en 21 Marzo 2013, 03:20 AM
Lo que quiero es escribir un call 005D88D0 en c, o en vb.
Mi idea es estar inyectado en la aplicacion mediante una dll, y hacer llamadas a adress dentro de esa aplicación. Al estar inyectado, puedo hacer las llamadas directamente ya que estoy dentro de los adress de la app.
Lo que no se hacer, es como escribir ese "call 005D88D0" dentro de C o VB, preferentemente vb ya que es el lenguaje con el cual me manejo mejor, pero me han dicho que no se puede, solo en C pueden hacerse llamadas a codigos en ASM.
Cita de: Arkhin en 21 Marzo 2013, 01:56 AM
Hola, gracias por las respuestas. Lo que no se hacer es las llamadas a un call en asm, desde C. No se como codearlas, como hacerlas.
En este foro ya dan una base de una inyección de DLL:
http://www.daniweb.com/software-development/cpp/threads/181713/dll-injection-cc
Pienso basarme en eso para hacer las llamadas cuando la dll se inyecta.
Otra cosa, habria alguna minima posibilidad de hacerlo en visual basic con ThunderVB? (Es un plugin el cual permite ejecutar codigo en C y en ASM dentro de VB6)