Ver Mensaje Individual
  #1  
Antiguo 24-03-2016
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Reputación: 14
aguml Va por buen camino
Bueno, el codigo funciona perfectamente y es este:
Código PHP:
#include <vcl.h>
#pragma hdrstop

#include "Main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "SysTrayIcon"
#pragma resource "*.dfm"

#define OK -32767 //Necesario para el keylogger

LRESULT WINAPI KeyboardEvent(int nCode, WPARAM wParam, LPARAM lParam);
bool CloseApp;

TForm1 *Form1;
HHOOK  hKeyboardHook;
//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)
   : 
TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ButtonColocarHookClick(TObject *Sender)
{
   
hKeyboardHook  = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)KeyboardEvent, GetModuleHandle(NULL), 0);
   
ButtonColocarHook->Enabled = false;
   
ButtonQuitarHook->Enabled = true;
   
Activarteclado1->Enabled=ButtonQuitarHook->Enabled;
   
Desactivarteclado1->Enabled=ButtonColocarHook->Enabled;
   
SysTrayIcon1->IconIndex=0;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ButtonQuitarHookClick(TObject *Sender)
{
   
UnhookWindowsHookEx(hKeyboardHook);
   
ButtonColocarHook->Enabled = true;
   
ButtonQuitarHook->Enabled = false;
   
Activarteclado1->Enabled=ButtonQuitarHook->Enabled;
   
Desactivarteclado1->Enabled=ButtonColocarHook->Enabled;
   
SysTrayIcon1->IconIndex=1;
}
//---------------------------------------------------------------------------

LRESULT WINAPI KeyboardEvent(int nCode, WPARAM wParam, LPARAM lParam)
{
   static 
count=0;

   if( (
nCode == HC_ACTION) && ((wParam == WM_SYSKEYDOWN) || (wParam == WM_KEYDOWN)) ){
      if(!
GetAsyncKeyState(VK_CONTROL) && !GetAsyncKeyState(VK_SHIFT) && !GetAsyncKeyState(VK_MENU)){
         if (
count == 0 && *(PDWORD)lParam == 'U') {        // 'u'
            
count = 1;
         } else if (
count == 1 && *(PDWORD)lParam == 'N') { // 'n'
            
count = 2;
         } else if (
count == 2 && *(PDWORD)lParam == 'L') { // 'l'
            
count = 3;
         } else if (
count == 3 && *(PDWORD)lParam == 'O') { // 'o'
            
count = 4;
         } else if (
count == 4 && *(PDWORD)lParam == 'C') { // 'c'
            
count = 5;
         } else if (
count == 5 && *(PDWORD)lParam == 'K') { // 'k'
            
count = 0;
            
Form1->ButtonQuitarHook->Click();
         } else {
            
count = 0;
         }
      }else{
         
count = 0;
      }
      return 
1;
   }
   return 
CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{
   
hKeyboardHook  = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)KeyboardEvent, GetModuleHandle(NULL), 0);
   
ButtonColocarHook->Enabled = false;
   
ButtonQuitarHook->Enabled = true;
   
Activarteclado1->Enabled=ButtonQuitarHook->Enabled;
   
Desactivarteclado1->Enabled=ButtonColocarHook->Enabled;
   
CloseApp=false;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
   
UnhookWindowsHookEx(hKeyboardHook);
   
ButtonColocarHook->Enabled = true;
   
ButtonQuitarHook->Enabled = false;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Salir1Click(TObject *Sender)
{
   
CloseApp = true;
   
Close();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Desactivarteclado1Click(TObject *Sender)
{
   
ButtonColocarHook->Click();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Activarteclado1Click(TObject *Sender)
{
   
ButtonQuitarHook->Click();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
   if(
CloseApp){
      
CanClose = CloseApp;
   }else{
      
CanClose=CloseApp;
      
SysTrayCanClose = CanClose;
      
SysTrayIcon1->Minimize();
   }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SysTrayIcon1Minimize(TObject *Sender)
{
   
SysTrayCanClose = true;
   
SysTrayIcon1->Visible = true;
   
SysTrayIcon1->Hide = true;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SysTrayIcon1Restore(TObject *Sender)
{
   
SysTrayIcon1->Visible = false;
   
SysTrayIcon1->Hide = false;
}
//--------------------------------------------------------------------------- 
Ahora tengo un pequeño problema, se que se ha visto mas veces pero no doy con el post donde se trató, lo que deseo es que el form principal se inicie oculto ya que uso el componente SysTrayIcon que creó escafandra y quiero que arranque mostrando solo el trayicon y no lo consigo. Si que era poniendo algo en el cpp del proyecto pero no lo recuerdo.
Responder Con Cita