Executar programa sem janela (invisível)

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

Moderador: Moderadores

Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Executar programa sem janela (invisível)

Mensagem por Toledo »

cjp, onde você encontrou esta tal xclipper.lib?
Observe que na imagem da compilação, que você postou em sua mensagem, está ocorrendo um erro com esta lib:
c:/hb30/bin/xclipper.lib: file not recognized: file format not recognized
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Executar programa sem janela (invisível)

Mensagem por cjp »

Fiz isso, caro Jairo, obrigado.

Caro Toledo,

Essa lib eu uso no xbuild do xharbour há muito tempo, acho que desde que converti meus prgs do clipper para o xharbour. Acho que foi recomendação de alguém daqui do grupo, se não me engano.

Quando compilo com ela, realmente dá o erro que vc citou.

Mas, quando compilo sem ela, dá vários erros. Veja:

Imagem

Outro problema: a função abaixo, que eu peguei aqui no fórum, está dando também vários erros quando compilo no harbour. No xharbour ela funciona bem:

Código: Selecionar todos


//-> Rotina em C -> By Manuel Mercado

#pragma BEGINDUMP

#include <windows.h>
#include <stdlib.h>
#include <hbapi.h>
#define ID_STARTBUTTON 0x130 // Start button ID
#define ID_TRAY 0x12F // System tray ID
#define ID_CLOCK 0x12F // System clock ID
#define PROGRAM_MANAGER "Program Manager" // Program manager window name
#define TASKBAR "Shell_TrayWnd" // Taskbar class name

int WINAPI TaskManager_Enable_Disable( BOOL ) ;
int WINAPI StartButton_Show_Hide( BOOL ) ;
int WINAPI Desktop_Show_Hide( BOOL ) ;
int WINAPI Process_Desktop(char *, char * ) ;
int WINAPI Taskbar_Show_Hide( BOOL ) ;
int WINAPI Clock_Show_Hide( BOOL ) ;
int WINAPI AltTab_Enable_Disable( HWND, BOOL ) ;
BOOL StartProcess( char *, char * ) ;
LRESULT CALLBACK LowLevelMouseHookProc( int nCode, WORD wParam, DWORD lParam ) ;
LRESULT CALLBACK MouseHookProc( int nCode, WORD wParam, DWORD lParam ) ;

HHOOK hHook ; // Mouse hook
HINSTANCE hInst ; // Instance handle

HB_FUNC( ALTTABENABLE )
{
HWND hWnd = (HWND ) hb_parnl( 1 ) ;
BOOL bEnable = hb_parl( 2 ) ;
int iRet ;

iRet = AltTab_Enable_Disable( hWnd, bEnable ) ;
hb_retni( iRet ) ;
}

HB_FUNC( SHOWCLOCK )
{
BOOL bShow = hb_parl( 1 ) ;
int iRet ;

iRet = Clock_Show_Hide( bShow ) ;
hb_retni( iRet ) ;
}

HB_FUNC( SHOWTASKBAR )
{
BOOL bShow = hb_parl( 1 ) ;
int iRet ;

iRet = Taskbar_Show_Hide( bShow ) ;
hb_retni( iRet ) ;
}

HB_FUNC( DESKTOPPROC )
{
char* c1 = hb_parc( 1 ) ;
char* c2 = hb_parc( 2 ) ;
int iRet ;

iRet = Process_Desktop( c1, c2 ) ;
hb_retni( iRet ) ;
}


HB_FUNC( SHOWDESKTOP )
{
BOOL bShow = hb_parl( 1 ) ;
int iRet ;

iRet = Desktop_Show_Hide( bShow ) ;
hb_retni( iRet ) ;
}

HB_FUNC( STARTBUTTON )
{
BOOL bShow = hb_parl( 1 ) ;
int iRet ;

iRet = StartButton_Show_Hide( bShow ) ;
hb_retni( iRet ) ;
}


HB_FUNC( CTRLALTDEL )
{
BOOL bEnable = hb_parl( 1 ) ;
int iRet ;

iRet = TaskManager_Enable_Disable( bEnable ) ;
hb_retni( iRet ) ;
}

int WINAPI TaskManager_Enable_Disable(BOOL bEnableDisable)
{
#define KEY_DISABLETASKMGR "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"
#define VAL_DISABLETASKMGR "DisableTaskMgr"

HKEY hKey;
DWORD val;
LONG r;

if (RegOpenKey(HKEY_CURRENT_USER, KEY_DISABLETASKMGR, &hKey) != ERROR_SUCCESS)
if (RegCreateKey(HKEY_CURRENT_USER, KEY_DISABLETASKMGR, &hKey) != ERROR_SUCCESS)
return 0;

if (bEnableDisable) // Enable
{
r = RegDeleteValue(hKey, VAL_DISABLETASKMGR);
}
else // Disable
{
val = 1;
r = RegSetValueEx(hKey, VAL_DISABLETASKMGR, 0, REG_DWORD, (BYTE *)&val, sizeof(val));
}

RegCloseKey(hKey);

return (r == ERROR_SUCCESS ? 1 : 0) ;
}

int WINAPI StartButton_Show_Hide( BOOL bShowHide )
{
HWND hWnd;

hWnd = GetDlgItem( FindWindow( TASKBAR, NULL ), ID_STARTBUTTON ) ;
if ( hWnd == NULL )
return 0 ;

ShowWindow( hWnd, bShowHide ? SW_SHOW : SW_HIDE) ;
UpdateWindow( hWnd );

return 1 ;
}

int WINAPI Taskbar_Show_Hide( BOOL bShowHide )
{
HWND hWnd;

hWnd = FindWindow( TASKBAR, NULL ) ;
if ( hWnd == NULL )
return 0 ;

ShowWindow( hWnd, bShowHide ? SW_SHOW : SW_HIDE ) ;
UpdateWindow(hWnd) ;

return 1 ;
}

int WINAPI Desktop_Show_Hide( BOOL bShowHide )
{
OSVERSIONINFO osvi ;
BOOL bIsWindowsNT4SP3orLater ;
int iServicePack ;
char *p ;


// Determine the current windows version
osvi.dwOSVersionInfoSize = sizeof( OSVERSIONINFO ) ;
GetVersionEx( &osvi );
for (p = osvi.szCSDVersion; *p && ! isdigit( *p ) ; *p++ ) ;
iServicePack = atoi( p ) ;
bIsWindowsNT4SP3orLater = ( osvi.dwPlatformId == VER_PLATFORM_WIN32_NT ) &&
( ( ( osvi.dwMajorVersion == 4 ) && ( iServicePack >= 3 ) ) ||
( osvi.dwMajorVersion > 4 ) ) ;

if ( ! bShowHide )
{
if ( ! hHook )
{
hHook = SetWindowsHookEx( bIsWindowsNT4SP3orLater ? WH_MOUSE_LL : WH_MOUSE,
bIsWindowsNT4SP3orLater ? ( HOOKPROC )LowLevelMouseHookProc : ( HOOKPROC )MouseHookProc,
hInst, 0 ) ;
if ( ! hHook )
return 0 ;
}
}
else
{
UnhookWindowsHookEx(hHook);
hHook = NULL;
}

return SetWindowPos( FindWindow( NULL, PROGRAM_MANAGER ), NULL, 0, 0, 0, 0,
bShowHide ? SWP_SHOWWINDOW : SWP_HIDEWINDOW | SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER);
}

LRESULT CALLBACK LowLevelMouseHookProc( int nCode, WORD wParam, DWORD lParam )
{
PMSLLHOOKSTRUCT p = (PMSLLHOOKSTRUCT)lParam ;
HWND hWnd = WindowFromPoint( p->pt ) ;

if( nCode >= 0 )
{
if ( ( wParam == WM_LBUTTONDOWN || wParam == WM_RBUTTONDOWN ) && hWnd == GetDesktopWindow() )
{
return 1 ;
}
}

return CallNextHookEx( hHook, nCode, wParam, lParam ) ;
}

LRESULT CALLBACK MouseHookProc( int nCode, WORD wParam, DWORD lParam )
{
if( nCode >= 0 )
{
if ( wParam == WM_LBUTTONDBLCLK )
{
if ( ( ( MOUSEHOOKSTRUCT * )lParam )->hwnd == GetDesktopWindow() )
{
return 1 ;
}
}
}

return CallNextHookEx( hHook, nCode, wParam, lParam ) ;
}

int WINAPI Process_Desktop(char *szDesktopName, char *szPath )
{
HDESK hOriginalThread ;
HDESK hOriginalInput ;
HDESK hNewDesktop ;

// Save original ...
hOriginalThread = GetThreadDesktop( GetCurrentThreadId() ) ;
hOriginalInput = OpenInputDesktop( 0, FALSE, DESKTOP_SWITCHDESKTOP ) ;

// Create a new Desktop and switch to it
hNewDesktop = CreateDesktop( szDesktopName, NULL, NULL, 0, GENERIC_ALL, NULL ) ;
SetThreadDesktop( hNewDesktop ) ;
SwitchDesktop( hNewDesktop ) ;

// Execute process in new desktop
StartProcess( szDesktopName, szPath ) ;

// Restore original ...
SwitchDesktop( hOriginalInput ) ;
SetThreadDesktop( hOriginalThread ) ;

// Close the Desktop
CloseDesktop( hNewDesktop ) ;

return 0 ;
}

BOOL StartProcess( char *szDesktopName, char *szPath )
{
STARTUPINFO si ;
PROCESS_INFORMATION pi ;

// Zero these structs
ZeroMemory( &si, sizeof( si ) ) ;
si.cb = sizeof( si ) ;
si.lpTitle = szDesktopName ;
si.lpDesktop = szDesktopName ;
ZeroMemory( &pi, sizeof( pi ) ) ;

if (!CreateProcess( NULL, szPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ) ) // Pointer to PROCESS_INFORMATION structure.
{
return FALSE ;
}

// Wait until process exits
WaitForSingleObject( pi.hProcess, INFINITE ) ;

// Close process and thread handles
CloseHandle( pi.hProcess ) ;
CloseHandle( pi.hThread ) ;

return TRUE ;
}



int WINAPI Clock_Show_Hide( BOOL bShowHide )
{
HWND hWnd ;

hWnd = GetDlgItem( FindWindow( TASKBAR, NULL ), ID_TRAY ) ;
hWnd = GetDlgItem( hWnd, ID_CLOCK ) ;
if ( hWnd == NULL )
return 0 ;

ShowWindow( hWnd, bShowHide ? SW_SHOW : SW_HIDE ) ;
UpdateWindow( hWnd ) ;

return 1 ;
}

int WINAPI AltTab_Enable_Disable( HWND hWnd, BOOL bEnableDisable )
{
#define m_nHotKeyID 100

if ( ! bEnableDisable )
{
if ( ! RegisterHotKey( hWnd, m_nHotKeyID+0, MOD_ALT, VK_TAB ) ) // Alt+Tab
return 0 ;
if ( ! RegisterHotKey( hWnd, m_nHotKeyID+1, MOD_ALT, VK_ESCAPE ) ) // Alt+Esc
return 0 ;
}
else
{
if ( ! UnregisterHotKey( hWnd, m_nHotKeyID + 0 ) )
return 0 ;
if ( ! UnregisterHotKey( hWnd, m_nHotKeyID + 1 ) )
return 0 ;
}
return 1 ;
}
#pragma ENDDUMP



#pragma BEGINDUMP

#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 ( HIDETASKBAR )     //Desabilita o botao Iniciar
{
  HWND hWnd = FindWindow("Shell_TrayWnd", "");

  ShowWindow( hWnd, 0 );
}

HB_FUNC ( PISCA_EXE )      // 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

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

    DeleteMenu(MenuH,SC_CLOSE,MF_BYCOMMAND);
}


#pragma ENDDUMP


Veja a tela do erro:


Imagem
Inacio de Carvalho Neto
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Executar programa sem janela (invisível)

Mensagem por cjp »

Galera, por favor, alguém me ajude a aprender a usar o Harbour, por favor.
Inacio de Carvalho Neto
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Executar programa sem janela (invisível)

Mensagem por Jairo Maia »

Olá cjp,

É estranho esta lib xClipper funcionar no xHarbour e não ser reconhecida pelo Harbour. Estou achando que não é uma lib. Vamos tentar dar mais um passo. Sugiro o seguinte:

Verifique se esse arquivo realmente é uma lib, ou se é um arquivo .PRG. Se for um arquivo .PRG, então coloque-o como PRG e não como lib, e remova a linha -lxClipper do seu script HBP.

Se o arquivo xClipper for realmente uma lib, não o use, e em seu script HBP acrescente as libs:

Código: Selecionar todos

-lhbct
-lhbtip
-hbwin
Quando você acrescenta o exemplo que citou, as mensagens são de warning, que apenas significa aviso, alerta, advertência, mas não são erros. Apenas avisos. O problema continua com a lib xClipper, que dá a mensagem: File not recognized: File format not recognized (Arquivo não reconhecido: Formato de arquivo não reconhecido).

NOTA: Posso adiantar que a função DISKFREE não será encontrada, porém, como creio que ela seja para verificar o espaço em disco, substitua pela função DisKSpace(), que retorna o espaço livre em bytes.

NOTA1: Se ainda (creio que haverá) houver alguma função não encontrada, diga quais, e o que ela faz. Talvez tenha no Harbour outra pra substituí-las.

Veja o que acontece e poste aqui.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Executar programa sem janela (invisível)

Mensagem por Toledo »

cjp escreveu:Essa lib eu uso no xbuild do xharbour há muito tempo, acho que desde que converti meus prgs do clipper para o xharbour. Acho que foi recomendação de alguém daqui do grupo, se não me engano.
Amigo, libs do xHarbour deve ser usadas apenas com o xHarbour... isto é uma regra básica!
Agora, se você tiver os fontes (PRG) desta tal xclipper, pode-se então tentar recompilá-la com o Harbour ou ver se não existe funções semelhantes em alguma lib do Harbour.
cjp escreveu:Mas, quando compilo sem ela, dá vários erros.
Muitas destas funções estão nas lib hbtip.lib e hbct.lib do Harbour.
cjp escreveu:Outro problema: a função abaixo, que eu peguei aqui no fórum, está dando também vários erros quando compilo no harbour. No xharbour ela funciona bem
Diga qual função que você está usando e o que ela faz, assim ficaria mais fácil ver se não existe algo semelhante no Harbour.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Executar programa sem janela (invisível)

Mensagem por cjp »

Compreendido, meu caro.

Excluí a xclipper e inclui as duas que vc mencionou. Resolveu a maioria dos problemas. Parece que agora falta apenas as seguintes funções: hb_fun__keysec e hb_fun_diskfree. Vc sabe me dizer onde obtê-las?

Quanto ao outro problema: estas funções me foram passadas por alguém daqui do grupo. Eu uso algumas delas, como a Tira_X e pisca_exe.

A desktopproc, que estava dando problema, eu desabilitei (comentei), sem problema, pois não estava usando. Agora só está dando erro na seguinte linha:


for (p = osvi.szCSDVersion; *p && ! isdigit( *p ) ; *p++ ) ;

Não sei se preciso desta parte do programa para as funções que estou usando. O problema é que não entendo esta função, não sei bem qual parte posso retirar. Já fiz alguns testes, retirando certas partes, mas acaba piorando.

Mais uma vez obrigado por sua ajuda.
Inacio de Carvalho Neto
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Executar programa sem janela (invisível)

Mensagem por Toledo »

cjp escreveu:Parece que agora falta apenas as seguintes funções: hb_fun__keysec e hb_fun_diskfree. Vc sabe me dizer onde obtê-las?
Troque _keysec() por apenas Keysec() e troque também diskfree() por DiskSpace( nDrive, 3 ), onde nDrive é o número do drive (A=1, B=2, C=3, etc)
cjp escreveu:Eu uso algumas delas, como a Tira_X e pisca_exe.
Na sua mensagem anterior você passou um código com várias funções, se você usa apenas o Tira_X() e Pisca_EXE(), então delete todas as outras funções e deixe apenas o que você precisa:

Código: Selecionar todos

#pragma BEGINDUMP

#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 ( HIDETASKBAR )     //Desabilita o botao Iniciar
{
  HWND hWnd = FindWindow("Shell_TrayWnd", "");

  ShowWindow( hWnd, 0 );
}

HB_FUNC ( PISCA_EXE )      // 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

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

    DeleteMenu(MenuH,SC_CLOSE,MF_BYCOMMAND);
}

#pragma ENDDUMP
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Executar programa sem janela (invisível)

Mensagem por cjp »

Deu certo!!! Ufa, finalmente consegui usar o Harbour.

Deu certo também a compilação com -gtnul, está rodando sem tela.

Muito obrigado a todos que ajudaram, em especial ao Toledo e ao Jairo Maia, que tanta paciência tiveram comigo.

Não vejo a hora de explorar os recursos do Harbour que eu ainda não conheço.

Inacio

P.S: Eu achei que tinha conseguido fazer o programa rodar sem tela, mas não funcionou. Estranhamente, ele voltou a exibir uma tela, embora sem conteúdo nesta tela. Alguém saberia me dizer o que está havendo?
Inacio de Carvalho Neto
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Executar programa sem janela (invisível)

Mensagem por cjp »

Meus caros,

Vi agora que também preciso da função CTRLALTDEL.

Tentei incluir apenas esta parte:

Código: Selecionar todos

HB_FUNC( CTRLALTDEL )
{
BOOL bEnable = hb_parl( 1 ) ;
int iRet ;

iRet = TaskManager_Enable_Disable( bEnable ) ;
hb_retni( iRet ) ;
}

Mas daí ele dá falta da função _TaskManager_Enable_Disable.

Quando incluo também esta parte:

Código: Selecionar todos

int WINAPI TaskManager_Enable_Disable(BOOL bEnableDisable)
{
#define KEY_DISABLETASKMGR "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"
#define VAL_DISABLETASKMGR "DisableTaskMgr"

HKEY hKey;
DWORD val;
LONG r;

Dá os seguintes erros:

expected declaration or statement at end of input
unused parameter 'bEnableDisable'
control reaches end of non-void function

Por favor, me ajudem mais uma vez.

Inacio
Inacio de Carvalho Neto
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Executar programa sem janela (invisível)

Mensagem por Pablo César »

Esses erros são porque você não pegou o código completo para habilitar/desabilitar as teclas Ctrl-Alt-Del do Manuel Mercado.

Segue o código completo em C que você deve colocar no seu prg:

Código: Selecionar todos

//-> Rotina em C -> By Manuel Mercado

#pragma BEGINDUMP

#include <windows.h>
#include <stdlib.h>
#include <hbapi.h>

int WINAPI TaskManager_Enable_Disable( BOOL ) ;

HB_FUNC( CTRLALTDEL )
{
	BOOL bEnable = hb_parl( 1 ) ;
	int iRet ;

	iRet = TaskManager_Enable_Disable( bEnable ) ;
	hb_retni( iRet ) ;
}

int WINAPI TaskManager_Enable_Disable(BOOL bEnableDisable)
{
	#define KEY_DISABLETASKMGR "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"
	#define VAL_DISABLETASKMGR "DisableTaskMgr"

	HKEY hKey;
	DWORD val;
	LONG r;

	if (RegOpenKey(HKEY_CURRENT_USER, KEY_DISABLETASKMGR, &hKey) != ERROR_SUCCESS)
	if (RegCreateKey(HKEY_CURRENT_USER, KEY_DISABLETASKMGR, &hKey) != ERROR_SUCCESS)
	return 0;

	if (bEnableDisable) // Enable
	{
		r = RegDeleteValue(hKey, VAL_DISABLETASKMGR);
	}
	else // Disable
	{
		val = 1;
		r = RegSetValueEx(hKey, VAL_DISABLETASKMGR, 0, REG_DWORD, (BYTE *)&val, sizeof(val));
	}

	RegCloseKey(hKey);

	return (r == ERROR_SUCCESS ? 1 : 0) ;
}

#pragma ENDDUMP
Estou disponibilizando em anexo, um exemplo com fontes e executável feito em HMG para demostração.
Anexos
Teste48.rar
(748.59 KiB) Baixado 473 vezes
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Executar programa sem janela (invisível)

Mensagem por Pablo César »

Disponibilizei na seção de Downloads, um aplicativo em modo console para que habilite e dasabilite as teclas Ctrl-Alt-Del e com isso não permitir acionar o Gerenciador de Tarefas do Windows.

Download do CtrlAltDel.exe
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Executar programa sem janela (invisível)

Mensagem por cjp »

Resolveu, meu caro, muito obrigado.

Mas ainda não estou conseguindo rodar o programa sem tela. A tela fica completamente preta com o -gtnul, não exibe o @...say, mas ainda está aparecendo a tela.

Outro problema que estou enfrentando com o Harbour: a acentuação não está funcionando direito. No xharbour funcionava normalmente, mas agora, com o harbour, aparecem alguns caracteres estranhos no lugar dos caracteres acentuados.

Alguém me ajuda?
Inacio de Carvalho Neto
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Executar programa sem janela (invisível)

Mensagem por Pablo César »

cjp escreveu:Outro problema que estou enfrentando com o Harbour: a acentuação não está funcionando direito. No xharbour funcionava normalmente, mas agora, com o harbour, aparecem alguns caracteres estranhos no lugar dos caracteres acentuados.
Utilize Hb_AnsiToOem("String com acentuaçäo")
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Executar programa sem janela (invisível)

Mensagem por cjp »

Não funcionou, meu caro. Veja como ficou:

Imagem

Estou com mais um problema. No xharbour, eu imprimia diretamente do programa usando set printer to "nome da impressora" e set devi to print. Agora, no Harbour, não está imprimindo, não sei porque. A impressora é uma Lexmark332n. Alguém me ajuda?
Inacio de Carvalho Neto
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Executar programa sem janela (invisível)

Mensagem por Jairo Maia »

Olá Inácio,

Você configurou a página de código no sistema?:

No início do seu PRG principal coloque:

Código: Selecionar todos

REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
Abaixo da linha Function Main() coloque:

Código: Selecionar todos

HB_SETCODEPAGE('PT850')
HB_LANGSELECT('PT')
cjp escreveu:Mas ainda não estou conseguindo rodar o programa sem tela.
Para esconder a janela do executável que você quer rodar invisível, tente usar assim quando você o chama:

Código: Selecionar todos

Hb_Run( "Start /b Nome_do_Executal.exe" )
Veja se funciona.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Trancado