Bloquear Botão Direito fechar App e Gerenciador Tarefas

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

aedurocha
Usuário Nível 1
Usuário Nível 1
Mensagens: 22
Registrado em: 31 Ago 2011 20:28
Localização: Iguatu-Ceara

Bloquear Botão Direito fechar App e Gerenciador Tarefas

Mensagem por aedurocha »

Olá Turma, não sei se Fladimir já resolveu o problema dele, mas tive um problema semelhante e pesquisando aqui no forum ví a rotina disponibilizada por Kabiaba.
Funcionou direitinho só que quando clicava na barra de tarefa com o botao direito do mouse , o botão X voltava a ficar ativo, pesquisei um pouco mas e consegui melhorar a fução postada por Kabiaba, seque abaixo o original com as devidas alterações, esta rotina esta funcionando bem com windows xp , windows 7 e windows 10 32 e 64 bits.
desabilita o X e a opção fechar no menu da barra de tarefa e menu da janela.

//--------------------------------------------------------------------------//
/*
SHOWTASKBAR() // Habilita
HIDETASKBAR() // Desabilita
TIRA_X() // Desabilita o X da Janela
PISCA_EXE() // Vai Piscar o Seu EXE na Barra do Windows
*/

#pragma BEGINDUMP

#define _WIN32_WINNT 0x0501 // esta linha depende da versao do windows xp= 0x0501 seven = 0x0601 é só ver a versao do windows
#include "stdio.h"
#include "windows.h"
#include "shlobj.h"
#include "hbapi.h"
#include "math.h"
#include "hbvm.h"
#include "hbstack.h"
#include "hbapiitm.h"
#include "hbapigt.h"



HB_FUNC ( SHOWTASKBAR ) //Habilita o botao INICIAR
{
HWND hWnd = FindWindow("Shell_TrayWnd", "");

ShowWindow( hWnd, 1 );
}

HB_FUNC ( HIDETASKBAR ) //Desabilita o botao Iniciar
{
HWND hWnd = FindWindow("Shell_TrayWnd", "");

ShowWindow( hWnd, 0 );
}

HB_FUNC ( FLASHWINDOW ) // VAI PISCAR O SEU EXE NA BARRA
{
HWND Handle = GetForegroundWindow();

FlashWindow(Handle,TRUE); // VAI PISCAR O SEU EXE NA BARRA

Sleep(300); // TEMPO DE ESPERA
}

HB_FUNC ( TIRA_X ) // DESABILITA O X da janela DISABLECLOSEWINDOWS

{
HMENU MenuH = GetSystemMenu(GetForegroundWindow(),FALSE);

EnableMenuItem(MenuH,SC_CLOSE,MF_GRAYED);
}

HB_FUNC ( ENABLECLOSEWINDOWS ) // HABILITA O X da janela

{
HMENU MenuH = GetSystemMenu(GetForegroundWindow(),TRUE);

EnableMenuItem(MenuH,SC_CLOSE,MF_GRAYED);
}

//HB_FUNC ( NOVOTIRARX ) // TIRAR X DA JANELA

//{
//HMENU MenuH = GetSystemMenu(GetForegroundWindow(),TRUE);

//EnableMenuItem(MenuH,SC_CLOSE,MF_GRAYED);
//}


HB_FUNC ( NOVOTIRARX )
{
HWND hnd;
HMENU menu;
int i, j, cont;
LPTSTR buffer;

// Recebe o handle do console
hnd = GetConsoleWindow();

// Recebe o handle para o menu do sistema
menu = GetSystemMenu(hnd, 0);

// Recebe quantos itens tem no menu
cont = GetMenuItemCount(menu);

j = -1;

// Alocando espaço para receber a string que "não sabemos" o tamanho
buffer = (TCHAR*) malloc (256 *sizeof(TCHAR));

for (i=0; i<cont; i++) {
// Recebe a string do menu, na posição "i" e a coloca no buffer
GetMenuString(menu, i, buffer, 255, MF_BYPOSITION);
//Compara se a string do menu é igual a string "Fechar"
if (!strcmp(buffer, "&Fechar")) {
j = i;
break;
}
}
// Se a string "Fechar" for encontrada, remove do menu
if (j >= 0)
RemoveMenu(menu, j, MF_BYPOSITION);

return 0;
}



#pragma ENDDUMP
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Bloquear Botão Direito fechar App e Gerenciador Tarefas

Mensagem por fladimir »

Obrigado colega...
Então não tinha resolvido
Ontem estava vendo sobre o assunto
coloquei sua função pra testar mas após executar o NovoTiraX() parece não afetar.
Recompilei mudando o #define do tipo do windows mas tb não resolveu (uso Windows 7 64)
O Fechar qdo pressiono o botão direito permanece
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Bloquear Botão Direito fechar App e Gerenciador Tarefas

Mensagem por rochinha »

Amiguinhos,

Uma discussão sobre o assunto começou lá no forum Fivewin.com.br, chegou até aqui e com dois tapas, acabamos com ela:

Botão Iniciar do Windows 7 não invisibiliza
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Bloquear Botão Direito fechar App e Gerenciador Tarefas

Mensagem por fladimir »

Não consegui usar essa referencia Dll32 do Five em console puro
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Bloquear Botão Direito fechar App e Gerenciador Tarefas

Mensagem por rochinha »

Amiguinhos,

fladimir

Código: Selecionar todos

STATIC FUNCTION FindWindowEx( hWndParent, hWndChildAfter, lpszClass, lpszWindow ) 
      #define DC_CALL_STD 0x0020
      nResult := DllCall( "user32.dll", DC_CALL_STD , "FindWindowExA" , hWndParent, hWndChildAfter, lpszClass, lpszWindow )
      RETURN nResult
Veja se funciona e adeque.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Bloquear Botão Direito fechar App e Gerenciador Tarefas

Mensagem por fladimir »

Obrigado Rochinha, vou verificar.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Bloquear Botão Direito fechar App e Gerenciador Tarefas

Mensagem por rubens »

Fladimir...

Aqui compilando em modo console...
Eu uso a WVT
REQUEST HB_GT_WVT_DEFAULT
com a opção
HB_GtInfo(HB_GTI_CLOSABLE, .F.)
Daí não fecha com o X e nem clicando com o botão direito do mouse. O Usuário só consegue fechar com CTRL+ALT+DEL...
Tanto faz em XP, 7 ou 10.
Eu uso o 10 no desenvolvimento...

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Responder