Другое С/С++ Вопрос - Ответ

SR_team

like pancake
BH Team
4,919
6,624
Я пробовал создавать второй поток и делать в нем цикл с проверкой на отжатие, тк пока зажата программа всеравно фризится
наоборот. Обработку клавишь оставь в основном потоке, а логику вынеси в отдельный поток
 

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
второй поток зацикли
 

SR_team

like pancake
BH Team
4,919
6,624
Ничего не пишется, в том числе и с клавиатуры.
C++:
#include <windows.h>
#include <iostream>
#pragma comment(lib,"User32.lib")
using namespace std;
static bool g_Active = false;

DWORD WINAPI proizv(PVOID Parametr)
{
    if (g_Active)
        cout << "1337";
    return 0;
}

void main()
{
    DWORD idThread, dwThrdParam = 1;
    HANDLE h1;
    h1 = CreateThread(NULL, 0, proizv, &dwThrdParam, 0, &idThread);

    while (true)
    {
        if (GetAsyncKeyState(81))
        {
            while (!GetAsyncKeyState(81))
            {
                g_Active = true;
            }
        }
    }
}
пиши в основном потоке. Используй синхронизацию
 

LUCHARE

Известный
Друг
545
716
Ничего не пишется, в том числе и с клавиатуры.
C++:
#include <windows.h>
#include <iostream>
#pragma comment(lib,"User32.lib")
using namespace std;
static bool g_Active = false;

DWORD WINAPI proizv(PVOID Parametr)
{
    if (g_Active)
        cout << "1337";
    return 0;
}

void main()
{
    DWORD idThread, dwThrdParam = 1;
    HANDLE h1;
    h1 = CreateThread(NULL, 0, proizv, &dwThrdParam, 0, &idThread);

    while (true)
    {
        if (GetAsyncKeyState(81))
        {
            while (!GetAsyncKeyState(81))
            {
                g_Active = true;
            }
        }
    }
}
MSDN написал(а):
If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState.
юзай & с GetAsyncKeyState
 

madrasso

Потрачен
883
326
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Приветы, в общем недавно начал учить С++, до этого изучал ахк.

На словах не знаю, как точно объяснить, но на примере ахк, покажу пример:
C++:
#NoEnv
#Persistent
#Include samp-udf.ahk
chat := A_MyDocuments "/GTA San Andreas User Files/SAMP/chatlog.txt"
Loop,
{
    FileRead, chatlog, % chat
    if (RegExMatch(chatlog, ".*Администратор (.*)\[.*\]: (.*)", chm)) {
        nick := getUserName()
        serv := getServerName()
        FileAppend, %nick% - %serv% - %chm1% - %chm2%
    }
}


Как сделать подобное на C++ .sf? Мне говорили о хуках, но каких точно я не понял.
 

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
в samp.dll есть функция добавления смс в чат, она вызывается в функции добавления дебаг смс в чат, которую легко найти в телах самп команд (headmove fpslimit и тд) внедряешься туда или хукаешь и там будет текст
 

SR_team

like pancake
BH Team
4,919
6,624
в samp.dll есть функция добавления смс в чат, она вызывается в функции добавления дебаг смс в чат, которую легко найти в телах самп команд (headmove fpslimit и тд) внедряешься туда или хукаешь и там будет текст
дополню только тем, что она есть в собе, и в сниппетах CLEO, так что адрес ее самому искать не обязательно
 

madrasso

Потрачен
883
326
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
в samp.dll есть функция добавления смс в чат, она вызывается в функции добавления дебаг смс в чат, которую легко найти в телах самп команд (headmove fpslimit и тд) внедряешься туда или хукаешь и там будет текст
Ну, я не настолько знаю С++, что бы понять что ты написал:blink:
 

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ну тогда в цикле читай последнюю строчку чатлога и жди в ней изменений
 

madrasso

Потрачен
883
326
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ну тогда в цикле читай последнюю строчку чатлога и жди в ней изменений
C++:
 if (RegExMatch(chatlog, ".*Администратор (.*)\[.*\]: (.*)", chm)) {
        nick := getUserName()
        serv := getServerName()
        FileAppend, %nick% - %serv% - %chm1% - %chm2%
}

Можешь сделать такое же на С++, либо где посмотреть примеры такого кода?
 

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
пример такого кода ты мне сам только что скинул
тебе остаётся только на плюсы перевести