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