Como Desabilitar a Tecla do Windows (WinKey) ?

Delphi

11/10/2003

Bem pessoal, creio que aqui alguem ja tentou desabilitar a tecla do [color=blue:dd3b4ba780][b:dd3b4ba780]windows[/b:dd3b4ba780][/color:dd3b4ba780]([u:dd3b4ba780][color=orange:dd3b4ba780]winkey[/color:dd3b4ba780][/u:dd3b4ba780]), mas, alguem ja conseguiu :?: bom, espero que sim.

Gostaria, se possivel, alguem cola-se aqui o fonte da rotina que desabilita essa tecla.

Agradeço desde já. :idea:

:arrow:
[color=red:dd3b4ba780][b:dd3b4ba780]oTTo Husckows[/b:dd3b4ba780][/color:dd3b4ba780] :shock:


Seek

Seek

Curtidas 0

Respostas

Marlon Spiess

Marlon Spiess

11/10/2003

Olá,
posso adiantar esse código aqui

Desabilitar Teclas Ctrl+Alt+Del
Ai vai um codigo que peguei no site da Borland que trava as teclas

(Ctrl+Alt+Del),(Alt+Tab), (Ctrl+Esc)

var
OldValue : LongBool;
begin
{liga a trava}
SystemParametersInfo(97, Word(True), @OldValue, 0);
{desliga a trava}
SystemParametersInfo(97, Word(False), @OldValue, 0);
end;


Espero ter ajudado
Boa Sorte


GOSTEI 0
Seek

Seek

11/10/2003

po cara, valeu mesmo pela atenção, mas, eu ja tenho essa rotina.

a que eu quero é a que desabilita a tecla da janelinha do windows(que fica entre as teclas Ctrl & Alt).


:(


GOSTEI 0
Josecarlosjr_atc

Josecarlosjr_atc

11/10/2003

Boa tarde,

Cara posso te dar uma ajuda, tem alguns eventos como onkeydown
que usa uma variável de entrada chamada Key e vc deve fazer uma comparação se é a tecla pressionada, exemplo:

Key = #13 Or Key = 27

Você pode tentar algo desse tipo que além de ser números significativos para a teclas do teclado são constantes do Delphi, exemplo:

Key = vk_Menu <- essa constantes da tecla Windows.

Não sei se ajudei muito, más acho que abri sua cabeça para o assunto.


GOSTEI 0
Seek

Seek

11/10/2003

---
alterei a propriedade keypress do form para true e adicionei a seguinte rotina no evento OnKeyPress do form1.

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = chr(vk_menu) then
key := #0;
end;


e a teclinha continua funcionando.

Alguem mais tem dicas?? todas sao bem vindas...


GOSTEI 0
Beppe

Beppe

11/10/2003

Bem, a princípio você não pode: é uma defesa natural do Windows. Talvez, se você instalar um hook global de teclado(código alojado numa dll), poderá cancelar o envio da tecla as janels pertinentes.

Ataliba


GOSTEI 0
Seek

Seek

11/10/2003

cara, sobre dll, sou muito fraco.... :/


GOSTEI 0
Beppe

Beppe

11/10/2003

É imprescindivel opressão da winkey?

Ataliba


GOSTEI 0
Seek

Seek

11/10/2003

sim


GOSTEI 0
Gymmer

Gymmer

11/10/2003

cara, pra mim isso aqui funciona perfeito:


paratravar:

SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1,0, 0);

para destravar:

SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0,0, 0);


pra mim funciona blz!


GOSTEI 0
Beppe

Beppe

11/10/2003

Tah, eu vou fazer isso, daqui a alguns dias te dou retorno.

Ataliba


GOSTEI 0
Seek

Seek

11/10/2003

ai GYMMER :idea: , muito obrigado cara, aqui funcionou na moral, sem nenhum problema.

Ataliba, obrigado pela sua ajuda tb.

beijos pra todos(as)

ass. oTTo Husckows :D


GOSTEI 0
Beppe

Beppe

11/10/2003

Para que OS?

No WinXP, esse truque não funciona. Acho que no Me e 200 tb não.

Ataliba


GOSTEI 0
Seek

Seek

11/10/2003

Ataliba, é o seguinte, no ME funcionou, mas ja que vc testou no xp e nao funciou, da mesma forma teste aqui no 2000 e nao funcionou tb nao.


Se alguem souber, por favor insira o codigo aqui, é feito uma frase que eu vi aki o forum:

Se voce pergunta é bobo por 5 minutos, se nao pergunto é bobo a vida toda. :idea:


GOSTEI 0
Otto

Otto

11/10/2003

Alguém sabe a rotina para desabilitar a WinKey do Windows XP?

usando o programa que informa o codigo ascii das telcas pressionadas, sei que é 91. a const é vk_menu

coloquei no onkeypress do form

if key = #91 then
key :=0;

e alterei a prorpiedade KeyPreview do form para true, mesmo assim nao funcionou. a rotina la de cima

SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1,0, 0);

funfou no win98 e ME, mas no xp e 2000 nao.

Alguem saberia a que desabilite a do xp e 2000 :?: :idea:


GOSTEI 0
Otto

Otto

11/10/2003

Alguém sabe a rotina para desabilitar a WinKey do Windows XP? usando o programa que informa o codigo ascii das telcas pressionadas, sei que é 91. a const é vk_menu coloquei no onkeypress do form if key = #91 then key :=0; e alterei a prorpiedade KeyPreview do form para true, mesmo assim nao funcionou. a rotina la de cima SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1,0, 0); funfou no win98 e ME, mas no xp e 2000 nao. Alguem saberia a que desabilite a do xp e 2000 :?: :idea:


91 nao, vi no delphi que é 18


GOSTEI 0
Rafael Roni

Rafael Roni

11/10/2003

Vc pode travar atraves do registro as combinaçoes do winkey por exemplo winkey+E ou winkey+R com seguinte codigo

Var
Reg: Tregistry;
Bit: Boolean;

begin
Reg:=Tregistry.create;
with Reg do
begin
rootkey:=HKEY_CURRENT_USER;
Openkey(´S-1-5-21-1275210071-1606980848-1060284298-1003 \Software\Microsoft\Windows\CurrentVersion\Policies\Explorer´,true);
writestring(´NoWinKeys´, bit );
closekey;

end;


GOSTEI 0
Otto

Otto

11/10/2003

e ai cara, blz?

bom, deu o seguinte erro

[Error] Unit1.pas(663): Incompatible types: ´String´ and ´LongBool´

na seguinte linha:

WriteString(´NoWinKeys´, bit);

voce saberia o pq??

eu coloquei essa rotina no evento OnShow do form.


GOSTEI 0
Jeffersonontop

Jeffersonontop

11/10/2003

Bom gente....

Eu resolvi esse problema no WinXP de forma bem diferente. Coloquei uma rotina do tipo prossesKill que ao abrir meu programa ele fecha o Explorer.exe.


GOSTEI 0
Santiago

Santiago

11/10/2003

Otto você conseguiu a rotina pra travar o menu iniciar?
cara tava precisando dessa rotina e como você já pediu faz tempo talvez se você tiver por favor dá essa ajuda aí...

valeu..

Santiago


GOSTEI 0
Lucasnishimura

Lucasnishimura

11/10/2003

Esse componente eh muito massa pra trabalhar com alguns ´Locks´ no windows...
Dependendo a Funcão eh necessario a instalação de uma DLL....


Nun custa ver olha o site [url]http://www.kassl.de/dwinlock/dwinlock_home_e.html[/url]


GOSTEI 0
Santiago

Santiago

11/10/2003

Lucasnishimura...

Valeu meu vô dar uma olhada aqui e ver o que eu consigo fazer, em todo caso brigadão mesmo aí pela atenção.....


GOSTEI 0
Eniorm

Eniorm

11/10/2003

Pessoal, vejam so:

VK_Menu = ALT
VK_LWin = WinKey esquerdo
VK_RWin = WinKey direito


T+ :wink:



GOSTEI 0
Tatuweb

Tatuweb

11/10/2003

Já que ressucitaram o tópico fica um link com um exemplo feito especialmente para travar a tecla WinKey:
http://www.swissdelphicenter.ch/torry/showcode.php?id=1212


GOSTEI 0
Eniorm

Eniorm

11/10/2003

Já que ressucitaram o tópico ...


:D eheheheheheh :D


GOSTEI 0
Ipc$

Ipc$

11/10/2003

Acho esse código mais simples:
library BlockWinKey;
uses
  Windows;
var
  HC_KEYBOARD_Handle :HHOOK; // Handle da Hook
function KeyboardProc(nCode:Integer; wParam:WPARAM; lParam:LPARAM):LRESULT; stdcall;
begin
// Aqui são interceptadas as duas teclas
  Result := 1;
  if wParam in [vk_lwin,vk_rwin] then
    keybd_event(VK_ESCAPE, 0,0,0)
  else
  begin
    if wParam <> VK_ESCAPE then
      keybd_event(VK_ESCAPE, 0,KEYEVENTF_KEYUP,0);
    if nCode = HC_ACTION then
      Result := CallNextHookEx(HC_KEYBOARD_Handle, nCode, wParam, lParam);
  end;
end;
procedure Bloqueie_WinKey; stdcall;
begin
// Aqui instala a hook função tipo teclado
  HC_KEYBOARD_Handle := SetWindowsHookEx(WH_KEYBOARD, @KeyboardProc, HInstance, 0);
end;
procedure Desinstale_Hook; stdcall;
begin
// Aqui desinstala
  UnhookWindowsHookEx(HC_KEYBOARD_Handle);
  keybd_event(VK_ESCAPE, 0,KEYEVENTF_KEYUP,0);
end;
exports
  Bloqueie_WinKey,
  Desinstale_Hook;
end.


Na sua aplicação vc declara:
procedure Bloqueie_WinKey; external ´BlockWinKey.dll´;
procedure Desinstale_Hook; external ´BlockWinKey.dll´;

No onCreate do Form, vc chama:
Bloqueie_WinKey;

No onDestroy vc chama:
Desinstale_Hook;


GOSTEI 0
Rodrigof

Rodrigof

11/10/2003

:D Galera desculpe estar ressucitando tbem este tópico, mas minha intensão é ajudar... :P
Estou criando um programa para cybercafe café, precisei dessa função para travar o winkey e outras teclas, e não contrava...
aí o Membro lucasnishimura citou o componente DWinLock...
só q ele é shaware, mas achei o crack para ele... e funcionou muito bem... e resolveu os meus problemas. Para quem quiser o crack pode me mandar um email ou me encontre no msn rodrrigo@hotmail.com .

O link do componente DWinlock para baixar;
http://www.kassl.de/dwinlock/dwinlock_home_e.html

O crack tem apenas 5k.
É só executar e localizar a dll (dwlGina2.dll), que ele criará outra dll, destravada.
Obs.: qdo vc instalar o packages do componente essa dll ficará na pasta:
c:\windows\system32\

Falou galera!!
:wink:


GOSTEI 0
Otto

Otto

11/10/2003

Já que ressucitaram o tópico


nussa.. como é antigo.... antigo mesmo...;. :lol: :oops:


GOSTEI 0
POSTAR