CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Blokada funkcji i klawiszy

Blokada funkcji i klawiszy

dział ogólny

Blokada funkcji i klawiszy

Nowy postprzez admszczep » środa, 15 czerwca 2011, 14:25

Witam Wszystkich
Mam taki problem potrzebuje napisać program który blokuje użycie klawiszy np F8 i F5 oraz program drugi który przechwyci mi obiekt z innej aplikacji typu Button i go wyłączy (ustawi go na enable lub visable false
Pozdrawiam
admszczep
Avatar użytkownika
admszczep
Homos antropiczny
Homos antropiczny
 
Posty: 66
Dołączył(a): wtorek, 3 listopada 2009, 23:25
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows XP PRO SP3
Kompilator: Embarcadero RAD Studio XE
C++Builder XE
Gadu Gadu: 0
    Windows XPFirefox

Re: Blokada funkcji i klawiszy

Nowy postprzez Cyfrowy Baron » środa, 15 czerwca 2011, 23:38

Możesz o najwyżej całkowicie zablokować klawiaturę i myszkę, ale to nie jest trwałe: ► patrz serwis: Cyfrowy Baron dział: porady -> API -> Blokada klawiatury i myszki.

Nie można wyłączyć obiektu w innym programie, ale można pobrać do niego uchwyt i zabrać go np. stamtąd, zmieniając mu rodzica: ► patrz serwis: Cyfrowy Baron dział: teoria, porady: Sterowanie obcym programem z poziomu własnego poprzez wysyłanie komunikatów & Umieszczanie okna obcego programu w programie własnym.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Blokada funkcji i klawiszy

Nowy postprzez admszczep » czwartek, 16 czerwca 2011, 09:33

A czy jest możliwość blokady zdarzeń w działającym programie dla klawiszy F8 i ESC????
Avatar użytkownika
admszczep
Homos antropiczny
Homos antropiczny
 
Posty: 66
Dołączył(a): wtorek, 3 listopada 2009, 23:25
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows XP PRO SP3
Kompilator: Embarcadero RAD Studio XE
C++Builder XE
Gadu Gadu: 0
    Windows XPFirefox

Re: Blokada funkcji i klawiszy

Nowy postprzez Cyfrowy Baron » czwartek, 16 czerwca 2011, 09:45

Gdy wciskasz na klawiaturze jakiś klawisz to do systemu wysyłany jest komunikat. Możesz przechwycić ten komunikat o czym pisałem w poście http://programowanie.cal.pl/forum/viewtopic.php?f=2&t=1436&p=10552&hilit#p10546, ale przechwycenie komunikatu to jedno, a zmiana jego treści jest chyba niemożliwa.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Blokada funkcji i klawiszy

Nowy postprzez admszczep » czwartek, 16 czerwca 2011, 12:03

wystarczy tylko, że będę mógł go przerwać
Avatar użytkownika
admszczep
Homos antropiczny
Homos antropiczny
 
Posty: 66
Dołączył(a): wtorek, 3 listopada 2009, 23:25
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows XP PRO SP3
Kompilator: Embarcadero RAD Studio XE
C++Builder XE
Gadu Gadu: 0
    Windows XPFirefox

Re: Blokada funkcji i klawiszy

Nowy postprzez Cyfrowy Baron » czwartek, 16 czerwca 2011, 12:22

Przerwać komunikat? Nie ma takiej opcji.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Blokada funkcji i klawiszy

Nowy postprzez wargo » sobota, 14 lipca 2012, 12:52

Podobno można:
http://cpp0x.pl/kursy/Kurs-WinAPI-C++/Z ... e/Haki/199
ale kiedy mam taki kod:
KOD cpp:     UKRYJ  
HOOKPROC AltF4Proc( int code, WPARAM wParam, LPARAM lParam )
{
    if(code < 0) return (HOOKPROC)CallNextHookEx(g_hLogHook, code, wParam, lParam);
   
    if( wParam == VK_F4 &&( lParam & 536870912 ) )
    {
ShowMessage("Blokowanie zamknięcia aplikacji");
        return 1;
    }
   
    return CallNextHookEx( 0, code, wParam, lParam );
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(g_hLogHook == NULL)
  g_hLogHook = SetWindowsHookEx( WH_KEYBOARD, (HOOKPROC)AltF4Proc, NULL, HInstance,0);
}

To czepia się "return 1;" (mogę tylko wpisać 0 !!)

[C++ Error] Unit1.cpp(158): E2034 Cannot convert 'int' to 'int (__stdcall *)()'


Także gdy korzystam z porady dotyczącej keyloggera przerabiając ją
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
Podziękował : 12
Otrzymał podziękowań: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    Windows 7Firefox

Re: Blokada funkcji i klawiszy

Nowy postprzez polymorphism » sobota, 14 lipca 2012, 13:23

Czepia się, bo HOOKPROC to wskaźnik na funkcję a nie jakiś typ całkowitoliczbowy żebyś mógł ot tak sobie zwrócić wartość 1. Według dokumentacji SetWindowsHookEx, dla flagi WH_KEYBOARD funkcja zwrotna tak powinna wyglądać:
KOD cpp:     UKRYJ  
LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam);

Jak widać funkcja zwraca LRESULT, czyli typ liczbowy.
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
wargo
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Blokada funkcji i klawiszy

Nowy postprzez wargo » sobota, 14 lipca 2012, 14:17

A jak to potem uruchomić?
KOD cpp:     UKRYJ  
g_hLogHook = SetWindowsHookEx( WH_KEYBOARD, (HOOKPROC)AltF4Proc, NULL, HInstance,0);
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
Podziękował : 12
Otrzymał podziękowań: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    Windows 7Firefox

Re: Blokada funkcji i klawiszy

Nowy postprzez polymorphism » sobota, 14 lipca 2012, 15:06

Rozwiń, bo nie wiem, o co Ci chodzi.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Blokada funkcji i klawiszy

Nowy postprzez wargo » sobota, 14 lipca 2012, 15:18

Jak przerobić kod
KOD cpp:     UKRYJ  
g_hLogHook = SetWindowsHookEx( WH_KEYBOARD, (HOOKPROC)AltF4Proc, NULL, HInstance,0);

aby uruchomił funkcję KeyboardProc lub jakkolwiek ją nazwę bo powyższa działa tylko dla typu HOOKPROC a nie LRESULT CALLBACK
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
Podziękował : 12
Otrzymał podziękowań: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    Windows 7Firefox

Re: Blokada funkcji i klawiszy

Nowy postprzez polymorphism » sobota, 14 lipca 2012, 15:30

Czyli problem z kompilacją jest? Tak daj:
KOD cpp:     UKRYJ  
reinterpret_cast<HOOKPROC>(&AltF4Proc)
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
wargo
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Blokada funkcji i klawiszy

Nowy postprzez wargo » sobota, 14 lipca 2012, 17:47

Zrobiłem ale jednak zablokowanie wysłania komunikatu o wciśnięciu klawiza nie robi się zwracając 1 tylko
KOD cpp:     UKRYJ  
pEvt->paramL = NULL;

np. program zabraniający we wszystkich programach wciskania "q":
KOD cpp:     UKRYJ  
LRESULT CALLBACK ZabronQ( int code, WPARAM wParam, LPARAM lParam )
{
if(code < 0) return CallNextHookEx(g_hLogHook, code, wParam, lParam);
EVENTMSG *pEvt = (EVENTMSG *)lParam;

int vKey = LOBYTE(pEvt->paramL);
if( vKey == 81 )//numer klawisza
{
pEvt->paramL = NULL;//zerwanie
}

return CallNextHookEx( 0, code, wParam, lParam );
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{                                          
if(g_hLogHook == NULL)
  reinterpret_cast<HOOKPROC>(&ZabronQ) ;
  g_hLogHook = SetWindowsHookEx(WH_JOURNALRECORD, (HOOKPROC)ZabronQ, HInstance,0);
}
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
Podziękował : 12
Otrzymał podziękowań: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    Windows 7Firefox

Re: Blokada funkcji i klawiszy

Nowy postprzez polymorphism » sobota, 14 lipca 2012, 18:01

KOD cpp:     UKRYJ  
if(g_hLogHook == NULL)
  reinterpret_cast<HOOKPROC>(&ZabronQ) ;

A co to u diabła?! Myślałem, że masz problem z rzutowaniem AltF4Proc na HOOKPROC, dlatego podałem Ci inny sposób rzutowania, czyli w przypadku ZabronQ:
KOD cpp:     UKRYJ  
SetWindowsHookEx(WH_JOURNALRECORD, reinterpret_cast<HOOKPROC>(&ZabronQ), HInstance,0);
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Blokada funkcji i klawiszy

Nowy postprzez wargo » sobota, 14 lipca 2012, 18:24

Jednak nie potrzeba i działa bez tego :? . Myślałem że zmiana typu będzie potrzebna ale robi to już (HOOKPROC)
KOD cpp:     UKRYJ  
g_hLogHook = SetWindowsHookEx(WH_JOURNALRECORD, (HOOKPROC)Znaki, HInstance,0);
Lub to co napisałeś.
Program działa prawidłowo.
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
Podziękował : 12
Otrzymał podziękowań: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    Windows 7Firefox

Następna strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 4 gości