Witam. Jaka funkcja służy do wychwytywania zmiany animacji myszki ??. Dokładnie to chcę zrobić program, który po zmianie strzałki w "rękę" automatycznie wykonuje kliknięcie LPM. Będę wdzięczny za każdą pomoc.
Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Najlepsza odpowiedź MarWit, 27.11.2013 15:32
#include <Windows.h>
#include <stdio.h>
HHOOK hMouseHook;
LRESULT CALLBACK mouseProc ( int nCode, WPARAM wParam, LPARAM lParam )
{
if( ( ( CWPRETSTRUCT * ) lParam ) -> message == WM_SETCURSOR ) {
printf( "WAT" );
}
return CallNextHookEx( hMouseHook, nCode, wParam, lParam );
}
int main(int argc, char** argv)
{
hMouseHook = SetWindowsHookEx( WH_CALLWNDPROCRET, mouseProc, NULL, GetCurrentThreadId( ) );
if( hMouseHook == NULL ) return 0;
MSG msg;
while ( GetMessage( & msg, NULL, 0, 0 ) ) {
TranslateMessage( & msg );
DispatchMessage( & msg );
}
UnhookWindowsHookEx( hMouseHook );
return 0;
}W teorii powinno smigac, w praktyce nie musi ( tzw. wydaje mi sie ze globalnego hooka mozna zrobic tylko uzywajac DLL )
Przejdź do postu
#1
Napisano 24.11.2013 12:02
#2
Napisano 24.11.2013 15:48

#3
Napisano 24.11.2013 23:21
Wzorowałem się innym kodem, bo nie znam za bardzo C/C++, ale udało mi się stworzyć takie coś tylko nie wiem czy dobrze zrobiłem
#include <Windows.h>
#include <stdio.h>
HHOOK hMouseHook;
int main(int argc, char** argv)
{
HANDLE hThread;
DWORD dwThread;
hThread = CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)MyMouseLogger, (LPVOID) argv[0], NULL, &dwThread);
if (hThread)
return WaitForSingleObject(hThread,INFINITE);
else
return 1;
}
LRESULT CALLBACK mouseProc (int nCode, WPARAM wParam, LPARAM lParam)
{
if(pMouseStruct != NULL)
{
if(wParam == WM_SETCURSOR)
{
printf("clicked");
}
}
return CallNextHookEx(hMouseHook, nCode, wParam, lParam);
}
DWORD WINAPI MyMouseLogger(LPVOID lpParm)
{
HINSTANCE hInstance = GetModuleHandle(NULL);
hMouseHook = SetWindowsHookEx(WH_CALLWNDPROCRET, mouseProc, hInstance, NULL);
UnhookWindowsHookEx(hMouseHook);
return 0;
}
#4
Napisano 25.11.2013 15:47
HINSTANCE hInst = GetWindowLong( FindWindow( "", "Nazwa Okna" ), GWL_HINSTANCE )No i de facto tworzenie nowego wątku też jest tutaj zbędne wiec mozesz wszystko przenieść normalnie do main'a

#5
Napisano 27.11.2013 14:21
Nie zależy mi, aby klikało w wybranym oknie. Mam natomiast innym problem. Ten kod, który wysłałem nie da sie skompilować, błąd jest w 11 linijce. Pomożesz go naprawić będę bardzo wdzięczny.
#6
Napisano 27.11.2013 15:32 Najlepsza odpowiedź
#include <Windows.h>
#include <stdio.h>
HHOOK hMouseHook;
LRESULT CALLBACK mouseProc ( int nCode, WPARAM wParam, LPARAM lParam )
{
if( ( ( CWPRETSTRUCT * ) lParam ) -> message == WM_SETCURSOR ) {
printf( "WAT" );
}
return CallNextHookEx( hMouseHook, nCode, wParam, lParam );
}
int main(int argc, char** argv)
{
hMouseHook = SetWindowsHookEx( WH_CALLWNDPROCRET, mouseProc, NULL, GetCurrentThreadId( ) );
if( hMouseHook == NULL ) return 0;
MSG msg;
while ( GetMessage( & msg, NULL, 0, 0 ) ) {
TranslateMessage( & msg );
DispatchMessage( & msg );
}
UnhookWindowsHookEx( hMouseHook );
return 0;
}W teorii powinno smigac, w praktyce nie musi ( tzw. wydaje mi sie ze globalnego hooka mozna zrobic tylko uzywajac DLL )

#7
Napisano 28.11.2013 18:23
Skompilowałem kod. Po uruchomieniu otwiera sie czarna konsola. Gdy strzałka zmienia się w "rękę" niestety nie wykonuje kliknięcia ![]()
MarWit Bardzo dziękuję ci za zainteresowanie się moim problemem. Jeśli uważasz, że w C++ nie ma możliwości tego wykonać, to poproszę o zamknięcie tematu. Poczekam jeszcze na twoją odpowiedź.
Również z jednym lub większą ilością słów kluczowych: c++
![]() |
[ROZWIĄZANE] Błąd microsoft visual c++ runtime library na SteamBłąd CS 1.6 przy zmianie mapy, próby rozłączenia się z serwerem, wyjściem z gry. Napisany przez to tylko ja, 29.06.2025 |
|
|
||
C++
amxx client_putinserver w dllNapisany przez csMaster, 26.07.2020 |
|
|
|||
![]() |
C++
[ROZWIĄZANE] Wyciągnięcie danych z tablicy 2dNapisany przez Alelluja, 06.04.2020 |
|
|
||
C++
Wyświetlanie zdjęcia na pulpicieNapisany przez Booom, 01.10.2019 |
|
|
|||
C++
FilterKeySetter[Arrow Keys]Napisany przez qrNt, 29.01.2019 |
|
|
Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych


Dodatki SourceMod



Temat jest zamknięty










