Observe que na imagem da compilação, que você postou em sua mensagem, está ocorrendo um erro com esta lib:
Abraços,c:/hb30/bin/xclipper.lib: file not recognized: file format not recognized
Moderador: Moderadores

Abraços,c:/hb30/bin/xclipper.lib: file not recognized: file format not recognized

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

Código: Selecionar todos
-lhbct
-lhbtip
-hbwin
Amigo, libs do xHarbour deve ser usadas apenas com o xHarbour... isto é uma regra básica!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.
Muitas destas funções estão nas lib hbtip.lib e hbct.lib do Harbour.cjp escreveu:Mas, quando compilo sem ela, dá vários erros.
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.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

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:Parece que agora falta apenas as seguintes funções: hb_fun__keysec e hb_fun_diskfree. Vc sabe me dizer onde obtê-las?
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:cjp escreveu:Eu uso algumas delas, como a Tira_X e pisca_exe.
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 ENDDUMPCódigo: Selecionar todos
HB_FUNC( CTRLALTDEL )
{
BOOL bEnable = hb_parl( 1 ) ;
int iRet ;
iRet = TaskManager_Enable_Disable( bEnable ) ;
hb_retni( iRet ) ;
}
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;

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

Utilize Hb_AnsiToOem("String com acentuaçäo")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.

Código: Selecionar todos
REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850Código: Selecionar todos
HB_SETCODEPAGE('PT850')
HB_LANGSELECT('PT')Para esconder a janela do executável que você quer rodar invisível, tente usar assim quando você o chama:cjp escreveu:Mas ainda não estou conseguindo rodar o programa sem tela.
Código: Selecionar todos
Hb_Run( "Start /b Nome_do_Executal.exe" )