Sadow
Известный
- 1,428
- 592
1 способ: #include <Windows.h>как сделать задержку в функции?
чтобы внутри while (1) {} было что то типа wait(500);
Sleep(500)
2 способ:
1 способ: #include <Windows.h>как сделать задержку в функции?
чтобы внутри while (1) {} было что то типа wait(500);
Ты когда мульти байт используешь, у тебя некоторые буквы на кириллице представляются несколькими байтами,Использую в проекте "Use Multi-Byte Character Set". Заметил, что при работе с sqlite3_open (www.sqlite.org) и наличии русских символов в пути к базе возвращает unable to open database file. Как решить проблему?
(обновлено), получилось с помощью следующей функции, спасибо.Ты когда мульти байт используешь, у тебя некоторые буквы на кириллице представляются несколькими байтами,
sqlite3_open ожидает UTF-8, который использует однобайтовую кодировку для ASCII и многобайтовую для не ASCII, включая кириллицу , преобразуй путь к файлу в UTF-8 перед передачей в sqlite3_open, в винапи для этого есть MultiByteToWideChar и обратная WideCharToMultiByte
std::string CP1251_to_UTF8(const char* str)
{
std::string res;
int result_u, result_c;
result_u = MultiByteToWideChar(1251, 0, str, -1, 0, 0);
if (!result_u) { return 0; }
wchar_t* ures = new wchar_t[result_u];
if (!MultiByteToWideChar(1251, 0, str, -1, ures, result_u)) {
delete[] ures;
return 0;
}
result_c = WideCharToMultiByte(65001, 0, ures, -1, 0, 0, 0, 0);
if (!result_c) {
delete[] ures;
return 0;
}
char* cres = new char[result_c];
if (!WideCharToMultiByte(65001, 0, ures, -1, cres, result_c, 0, 0)) {
delete[] cres;
return 0;
}
delete[] ures;
res.append(cres);
delete[] cres;
return res;
}
std::string res = CP1251_to_UTF8(path.c_str());
sqlite3* users;
if (sqlite3_open(res.c_str(), &users))
{
std::cout << "Error! Code: #2. Text: " << sqlite3_errmsg(users) << "." << std::endl;
}
мемори лик в 19 строке, и вроде функцию можно укоротить в два вызова (но это не точно)(обновлено), получилось с помощью следующей функции, спасибо.
C++:std::string CP1251_to_UTF8(const char* str) { std::string res; int result_u, result_c; result_u = MultiByteToWideChar(1251, 0, str, -1, 0, 0); if (!result_u) { return 0; } wchar_t* ures = new wchar_t[result_u]; if (!MultiByteToWideChar(1251, 0, str, -1, ures, result_u)) { delete[] ures; return 0; } result_c = WideCharToMultiByte(65001, 0, ures, -1, 0, 0, 0, 0); if (!result_c) { delete[] ures; return 0; } char* cres = new char[result_c]; if (!WideCharToMultiByte(65001, 0, ures, -1, cres, result_c, 0, 0)) { delete[] cres; return 0; } delete[] ures; res.append(cres); delete[] cres; return res; }
Код:std::string res = CP1251_to_UTF8(path.c_str()); sqlite3* users; if (sqlite3_open(res.c_str(), &users)) { std::cout << "Error! Code: #2. Text: " << sqlite3_errmsg(users) << "." << std::endl; }
можно, если wstring и wstring_convert юзатьи вроде функцию можно укоротить в два вызова (но это не точно)
keybd_event(key, 0, KEYEVENTF_KEYDOWN,0);
sleep(10)
keybd_event(key, 0, KEYEVENTF_KEYUP,0);
SendInput() в вин апи естьqq, как имитировать нажатие Y?
от этого стоит защита:
дайте варики что юзатьc++:keybd_event(key, 0, KEYEVENTF_KEYDOWN,0); sleep(10) keybd_event(key, 0, KEYEVENTF_KEYUP,0);
Как можно получить название кнопок диалога без хука на CDIalog::Show? Облазил всю структуру CDialog и подструктур в ней, но нихуя.
Тебе надо ещё инжектить samp.dll в гта, samp.exe перехватывает поток игры при запуске и вызывает из него LLAкак реализовать запуск входа на сервер(открытие гташки) на плюсах? пробовал отправять с цмдху samp.exe с ником/айпи/портом = подключение к :7777, gta_sa.exe = дало одиночку. буду благодарен <3
Если SAMP то CObject + 0x14как получить координаты определенного объекта?
я про сф апи. Для 3д текстов что то типо такого, для объектов похожее найти не могу:Если SAMP то CObject + 0x14
for (int i = 0; i < SAMP_MAX_3DTEXTS; i++)
{
if (SF->getSAMP()->getNetGame()->pools->textLabelPool->iIsListed[i] != 1)
continue;
std::string strdialogText(SF->getSAMP()->getNetGame()->pools->textLabelPool->textLabel[i].text);
if (strdialogText.find("НАШ ТЕКСТ") != std::string::npos) {
float labelposX = SF->getSAMP()->getNetGame()->pools->textLabelPool->textLabel[i].position[0];
float labelposY = SF->getSAMP()->getNetGame()->pools->textLabelPool->textLabel[i].position[1];
}
}
for (int i = 0; i < SAMP_MAX_OBJECTS; i++)
{
if(SF->getSAMP()->getNetGame()->pools->objectPool->isListed[i] != 1)
continue;
}