Fórum Capturar o click no botao iniciar #319221
15/04/2006
0
Alissonrodrigo
Curtir tópico
+ 0Posts
16/04/2006
Marco Salles
function RetornarHandleBotaoInicar:Boolean;
var
H: HWND;
WindowName: Array[0..255] of Char;
ClassName: Array[0..255] of Char;
begin
H := GetForegroundWindow;
GetWindowText(H, WindowName, SizeOf(WindowName));
GetClassName(H, ClassName, SizeOf(ClassName));
if ClassName = ´Shell_TrayWnd´ Then
result:=True
else
result:=False;
end;
Coloque dois Timer Timer1 Enabled :=True Timer1.Interval:=100; Timer2.enabled:=False; Timer2.Interval:=100;
procedure TForm1.Timer1Timer(Sender: TObject); begin if RetornarHandleBotaoInicar Then begin keybd_event(Vk_Escape,0,0 , 0); // Tab Press Application.BringToFront; timer1.Enabled:=False; timer2.enabled:=True; //Aqui voce vai fazer tudo o que voce procisa Fazer.... showmessage(´se a dica funcionar esta é a EtapaI´); showmessage(´Apos tem a Etpa II´); timer2.enabled:=False; timer1.Enabled:=True; end end;
procedure TForm1.Timer2Timer(Sender: TObject); begin if RetornarHandleBotaoInicar Then begin keybd_event(Vk_Escape,0,0 , 0); // Tab Press Application.BringToFront; end; end;
Quem sabe passamos para a ParteII
Gostei + 0
17/04/2006
Paullsoftware
Gostei + 0
17/04/2006
Marco Salles
Para que isto não ocorra , voce pode me ajudar.. Ou qualquer outra pessoa
Ao inves de se ter dois timer no aplicativo , o ideal é ter apensa um...
[b:a528e03a1d]Quando a função RetornarHandleBotaoInicar for Verdadeira , devemos então desabilitar o Botao Inicar e todos os acessos (Teclas de atalho)[/b:a528e03a1d]
:idea: :idea: :idea:
Tem uma dica do massuda nesse tópico
http://forum.devmedia.com.br/viewtopic.php?t=58367&highlight=desabilita+iniciar&sid=3a38fd13c054a5e551df5550b2b110a8
Que vai para
http://www.jsifaq.com/subA/tip0400/rh0484.htm
:cry: :cry: :cry:
[b:a528e03a1d]So que eu não consegui achar o codigo aonde desabilita a o Botao Inciar e todos os seu atalhos[/b:a528e03a1d]
:idea: :idea:
[b:a528e03a1d]O ideal então é faze r assim[/b:a528e03a1d]
AGora quanto há
Isto é que eu chamei de parte II...
Olha o que ele pediu
Tem várias maneiras , mas para não confundir devemos finalizar primeiro a parte I..
Gostei + 0
18/04/2006
Paullsoftware
Quando vc colocava o cd ele iniciava o autorun e ficava com um botão no mesmo lugar do iniciar, ele não bloqueava o botão apenas posicionava um botão sobre o iniciar e quando vc clicava sobre ele abria justamente um menu com as opções do CD bem interessante, tudo como em quero faltando apenas bloquear o iniciar do windows. vlw
Gostei + 0
19/04/2006
Kroki
Lembrando,se não implementar mais alguma proteção qualquer um podera explorar a pasta C digitando C: numa janela.
Gostei + 0
19/04/2006
Paulocesar1301
Um sisteminha simples que substitua barra de tarefas... menu iniciar ... e tudo mais... enfim... se queres trocar o menu iniciar pelo seu é pq o usuário não terá tantos acessos assim, certo ?
Abraços e bons códigos :wink:
Gostei + 0
19/04/2006
Paulocesar1301
[img:e992efed08]http://n.domaindlx.com/paulocesar1302/MyWin.jpg[/img:e992efed08]
caso ainda não tenha algumas das dicas ...
»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
function SetHook(WinHandle: HWND; MsgToSend: Integer): Boolean; stdcall; external HookDemo;
function FreeHook: Boolean; stdcall; external HookDemo;
procedure EnableCTRLALTDEL(YesNo : boolean);
const
Hook = ´WINHOOK.dll´;
WM_HOOKCREATE = WM_USER + 300;
private
FHookSet: Boolean;
Desativar: CTRL+ALT+DEL
procedure EnableCTRLALTDEL(YesNo : boolean); const sRegPolicies = ´\Software\Microsoft\Windows\CurrentVersion\Policies´; begin with TRegistry.Create do try RootKey:=HKEY_CURRENT_USER; if OpenKey(sRegPolicies+´\System\´,True) then begin case YesNo of False: begin WriteInteger(´DisableTaskMgr´,1); end; True: begin WriteInteger(´DisableTaskMgr´,0); end; end; end; CloseKey; if OpenKey(sRegPolicies+´\Explorer\´,True) then begin case YesNo of False: begin WriteInteger(´NoChangeStartMenu´,1); WriteInteger(´NoClose´,1); WriteInteger(´NoLogOff´,1); end; True: begin WriteInteger(´NoChangeStartMenu´,0); WriteInteger(´NoClose´,0); WriteInteger(´NoLogOff´,0); end; end; end; CloseKey; finally Free; end; end;
Desabilitar Windows:
ShowWindow(FindWindow(´Shell_TrayWnd´, nil), SW_HIDE); ShowWindow(FindWindow(nil, ´Program Manager´), SW_HIDE); FHookSet := LongBool(SetHook(Handle, WM_HOOKCREATE)); EnableCTRLALTDEL(False); FRMAreaDeTrabalho.BTReiniciar.Repaint; FRMAreaDeTrabalho.BTLogOff.Repaint; FRMAreaDeTrabalho.BTDesligar.Repaint; Application.ProcessMessages; FRMAreaDeTrabalho.Top := Screen.DesktopTop; FRMAreaDeTrabalho.Left := Screen.DesktopLeft; FRMAreaDeTrabalho.Width := Screen.DesktopWidth; FRMAreaDeTrabalho.Height := Screen.DesktopHeight; Application.ProcessMessages;
Reabilitar Windows:
FHookSet := FreeHook; EnableCTRLALTDEL(True); ShowWindow(FindWindow(´Shell_TrayWnd´, nil), SW_SHOWNORMAL); ShowWindow(FindWindow(nil, ´Program Manager´), SW_SHOWNORMAL); FRMAreaDeTrabalho.Width := Screen.WorkAreaWidth; FRMAreaDeTrabalho.Height := Screen.WorkAreaHeight;
»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
Código fonte da dll WinHOOK: [color=red:e992efed08][b:e992efed08]Troque a extensão para .ZIP[/b:e992efed08][/color:e992efed08]
[url]http://n.domaindlx.com/paulocesar1302/WinHook.pczip[/url]
Abraços e Bons Códigos :wink:
Gostei + 0
19/04/2006
Paullsoftware
procedure EnableCTRLALTDEL(YesNo : boolean); const sRegPolicies = ´\Software\Microsoft\Windows\CurrentVersion\Policies´; begin with TRegistry.Create do try RootKey:=HKEY_CURRENT_USER; if OpenKey(sRegPolicies+´\System\´,True) then begin case YesNo of False: begin WriteInteger(´DisableTaskMgr´,1); end; True: begin WriteInteger(´DisableTaskMgr´,0); end; end; end; CloseKey; if OpenKey(sRegPolicies+´\Explorer\´,True) then begin case YesNo of False: begin WriteInteger(´NoChangeStartMenu´,1); WriteInteger(´NoClose´,1); WriteInteger(´NoLogOff´,1); end; True: begin WriteInteger(´NoChangeStartMenu´,0); WriteInteger(´NoClose´,0); WriteInteger(´NoLogOff´,0); end; end; end; CloseKey; finally Free; end; end;
ShowWindow(FindWindow(´Shell_TrayWnd´, nil), SW_HIDE); ShowWindow(FindWindow(nil, ´Program Manager´), SW_HIDE); FHookSet := LongBool(SetHook(Handle, WM_HOOKCREATE)); EnableCTRLALTDEL(False); FRMAreaDeTrabalho.BTReiniciar.Repaint; FRMAreaDeTrabalho.BTLogOff.Repaint; FRMAreaDeTrabalho.BTDesligar.Repaint; Application.ProcessMessages; FRMAreaDeTrabalho.Top := Screen.DesktopTop; FRMAreaDeTrabalho.Left := Screen.DesktopLeft; FRMAreaDeTrabalho.Width := Screen.DesktopWidth; FRMAreaDeTrabalho.Height := Screen.DesktopHeight; Application.ProcessMessages;
FHookSet := FreeHook; EnableCTRLALTDEL(True); ShowWindow(FindWindow(´Shell_TrayWnd´, nil), SW_SHOWNORMAL); ShowWindow(FindWindow(nil, ´Program Manager´), SW_SHOWNORMAL); FRMAreaDeTrabalho.Width := Screen.WorkAreaWidth; FRMAreaDeTrabalho.Height := Screen.WorkAreaHeight;
tipo, eu tenho as duas primeiras...
Desabilitar a tecla windows e Gerenciador de Tarefas, mais existe um problema que não consegui solucionar... quando vc bloqueia a tecla windows usando essa dll os numeros no meu caso não funcionam e ai?
Gostei + 0
19/04/2006
Paulocesar1301
If (GetStateK(VK_LMENU) And (Key = VK_F4)) Then
fecha := False;
estranho... meu teclado numérico continua funcionando após o travamento.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)