Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Ayuda para bloquear Alt - Tab WinXP (https://www.clubdelphi.com/foros/showthread.php?t=54484)

luiggixD 20-03-2008 08:32:21

Ayuda para bloquear Alt - Tab WinXP
 
Buenas compañeros tengo algunos problemas en casa y he decidido realizar una aplicacion que bloquea la pantalla he logrado bloquear no solo la pantalla sino muchas combinaciones de teclas excepto la que menciono como titulo trabajo sobre Windows XP y he encontrado una solucion que funciona solo para Win95/98 que es algo como

Código Delphi [-]
procedure Lock(boo: LongBool)
var
  algo: integer;
begin
  //he visto muchos codigos q lo tienen y otros q no pero xsiakaso lo pongo
  algo:= 0;
  // esta linea va siempre asi q no hay problemas aqui
  SystemParametersInfo(SPI_SCREENSAVERRUNNING, Word(boo), @algo, 0) ;
end;

Necesito una solucion lo mas pronto posible por favor urgencia inmediata

cHackAll 20-03-2008 16:23:41

Revisa éste tip de roman.

PD: Lamento no haber sido más veloz en realizartelo la búsqueda pero no me di cuenta que era una "urgencia inmediata" :rolleyes:

luiggixD 20-03-2008 20:51:58

Gracias
 
Gracias esto es lo que necesito creo que vi esta solucion antes pero no la quise probar porque alli dice "El siguiente código lo he probado únicamente en Windows 2000 y no pretende ser a prueba de errores." x eso no me anime mucho a probarlo pero ahora lo hare gracias x la respuesta cHackAll :D

luiggixD 21-03-2008 21:25:11

No funciono...
 
Bueno me remito de nuevo xq probe la unidad que vi en el enlace q puso cHackAll y probe la funcion q hay alli pero no funciona para nada al menos no funciona en el Windows XP no se si tendran alguna otra solucion x alli. El programa funciona al 90% solo necesito añadirle esta restriccion y quedara terminado si alguien pudiese ayudarme le agradeceria bastante.

Disculpen las molestias :p

cHackAll 24-03-2008 16:03:11

Cita:

Empezado por luiggixD (Mensaje 274508)
...probe la funcion q hay alli pero no funciona para nada al menos no funciona en el Windows XP no se si tendran alguna otra solucion x alli...

No lo he probado pero si lo he analizado y dicho codigo funciona a la perfección, lo que posiblemente sucede es que no leíste los comentarios;

Cita:

Empezado por roman
Según la documentación, los 'ganchos' de sistema deben implementarse en una DLL pero parece funcionar simplemente incluyendo la unidad hooks.pas en cualquier proyecto.

Al parecer el enlace de descarga de dicha librería esta rota, por lo tanto he hecho otra versión de la misma libreria con solo lo que necesitas;
Código Delphi [-]
library noalttab;
 
uses Windows;
 
var Handle: Cardinal;
 
function HookProc(Code, wParam, lParam: Cardinal): Cardinal; stdcall;
begin
 if (Code = HC_ACTION) and LongBool(PCardinal(lParam + 8)^ and $20{LLKHF_ALTDOWN}) and (PCardinal(lParam)^ = VK_TAB) then
  Result := 1
 else
  Result := CallNextHookEx(Handle, Code, WParam, LParam);
end;
 
begin
 Handle := SetWindowsHookEx(13{WH_KEYBOARD_LL}, @HookProc, HInstance, 0);
end.

Lo pegas en un archivo vacío .DPR y lo compilas... luego con tu aplicación cargas dicha librería con;
Código Delphi [-]
LoadLibrary('noalttab.dll');

PD: para ver como revertir el hook; revisa de nuevo el enlace al código de roman.

Saludos

seoane 24-03-2008 22:25:20

Usando el hook WH_KEYBOARD_LL no hace falta que este implementado dentro de una dll, esa es una de las principales diferencias con WH_KEYBOARD. Por otro lado la unit de roman no suele dar problemas, pero ten en cuenta que es posible que no te funcione en windows 98 ¿donde lo estas probando?

keyboy 25-03-2008 00:32:27

Cita:

Empezado por seoane
es posible que no te funcione en windows 98 ¿donde lo estas probando?

Cita:

Empezado por luiggixD (Mensaje 274508)
no funciona para nada al menos no funciona en el Windows XP

Imagino que lo está probando en XP :) Yo acabo de probarlo, también en XP, y me ha funcionado tal cual. Eso sí, hay que instalar el gancho con SetHook e indicar la tecla que se quiera inhibir con LockKey.

Bye

benom 06-05-2008 21:36:07

Como instalar el SetHook
 
Hola un saludos,, muy buen foro....

Ps he seguido al pie de la letra sus comentarios y sugerencias,, pero aun no resulvo el problema...del ALT-TAB.

No entendi esa ultima parte de que hay q instalar el SetHook q menciona(keyboy),,me podrian decir como hacerlo?

de antemano gracias por su atencion.

++++++++++++++++++Listo entendi lo q queria decir keyboy,, soy de lento a prendisaje XD muchas gracias********************************

cHackAll 07-05-2008 16:10:22

Código Delphi [-]
var hHook: Cardinal;

function HookProc(Code, wParam, lParam: Cardinal): Cardinal; stdcall;
begin
 if (Code = HC_ACTION) and LongBool(PCardinal(lParam + 8)^ and $20{LLKHF_ALTDOWN}) and (PCardinal(lParam)^ = VK_TAB) then
  Result := 1
 else
  Result := CallNextHookEx(hHook, Code, WParam, LParam);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 hHook := SetWindowsHookEx(13{WH_KEYBOARD_LL}, @HookProc, HInstance, 0);
end;

director0407031 30-05-2008 21:34:12

Gracias por su colaboración
 
deseo expresar mi agradecimiento por su colaboración


La franja horaria es GMT +2. Ahora son las 00:23:55.

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