Página 2 de 2

Bloquear Botão Direito fechar App e Gerenciador Tarefas

Enviado: 15 Jun 2017 15:56
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

Bloquear Botão Direito fechar App e Gerenciador Tarefas

Enviado: 15 Jun 2017 18:53
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

Bloquear Botão Direito fechar App e Gerenciador Tarefas

Enviado: 17 Jun 2017 14:12
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

Bloquear Botão Direito fechar App e Gerenciador Tarefas

Enviado: 18 Jun 2017 14:19
por fladimir
Não consegui usar essa referencia Dll32 do Five em console puro

Bloquear Botão Direito fechar App e Gerenciador Tarefas

Enviado: 19 Jun 2017 01:36
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.

Bloquear Botão Direito fechar App e Gerenciador Tarefas

Enviado: 19 Jun 2017 02:47
por fladimir
Obrigado Rochinha, vou verificar.

Bloquear Botão Direito fechar App e Gerenciador Tarefas

Enviado: 19 Jun 2017 14:25
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