helldrg
-
Постов
142 -
Зарегистрирован
-
Посещение
-
Победитель дней
3
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные helldrg
-
-
21 минуты назад, partoftheworlD сказал:
Опускается, после перехода по 2-м ссылкам(вк, форум) windows 10.0.14393 x64
Хммм, дело в том, что когда нажимается левая кнопка мыши по ссылке еще успевает сработать такая конструкция, которая все и багает:
if (input.mouseButtons[0].endedDown) { ReleaseCapture(); SendMessage(window, WM_SYSCOMMAND, 0xF012, 0); }
Я у себя пока что решил проблему так:
if (input.mouseButtons[0].endedDown && flagLink1 != true && flagLink2 != true) { ReleaseCapture(); SendMessage(window, WM_SYSCOMMAND, 0xF012, 0); }
Но это наглядный пример добавление еще одного костыля, так как создавать 2 флага для каких то ссылок это не есть хорошо
Может на десятках не багается, а может повезло просто =)
Кстати, у моего знакомого на 10 тоже работает нормально... мистика
-
Здравствуйте! Почти доделал трейнер, с более менее красивым дизайном, основанным на применении только картинок, без winapi элементов. Пару слов:
Скрытый текстСразу оговорюсь, вначале все шло хорошо, но потом одна проблема, другая и пришлось делать костыль на костыле. Есть один баг, связан с перемещением окна, после перехода по ссылке нельзя опустить курсор на уровень панели задач. Как исправить, пока что не знаю, буду думать. По дизайну, перед тем как рисовать я не составил план того что будет входить в программу поэтому под некоторые вещи места не хватило, например под качественную справку. Музыку добавлять не стал, так как у меня бы трейнер весил бы уже больше 5 мб, а здесь этого не любят, как я понял =) Мне gmz советовал перейти полностью на Unicode и использовать EnumProcessModules, но здесь я этого не сделал, так как чтобы использовать Unicode необходимо отказаться от char* переменных, я не готов на такой шаг =) А EnumProcessModules может на не много и быстрее используемой мной функции, но я думаю это не критично. Оставьте свои отзывы, пожелания, замечания, предложения - так как это для меня важно! На вас нужно равняться!!! Я понимаю, что для трейнера это программа слишком тяжелая, и на экранах с маленьким разрешением окно трейнера слишком большое, но я буду работать на этим. Если я слишком много пишу скажите, буду в следующий раз только по делу =) Скрин я уже выкладывал программы, особо там ничего не изменилось, ну и опции не добавились, так как лайки не были собраны :DDDD Эту версию я загружу на сторонний хостинг, дабы не засорять этот, через плюс минус неделю загружу в соотвествующий раздел с положенным оформлением.
Вот скрин(приложение открывается одной копией):
Скрытый текстПрограмма:
Скрытый текстСсылка будет доступна 90 дней с даты публикации
- 2
-
-
partoftheworlD
Ну тогда все хорошо, можно не боясь продолжать тестить =)
-
Всем привет! Вчера не получилось доделать прогу, из-за учебы, возобновил работу сегодня. Тестировал сейчас обработки событий и случайно зациклил открытие форума, сразу же отключил программу, но вкладок 30 успело открыться буквально за несколько секунд, думал получу бан или что то подобного(не знаю как это тут называется), но все обошлось, так получается если меня не забанило, так не хороших людей тоже не забанит =)
-
Ну ладненько, займусь делом, хотел допилить трейнер с новым интерфейсом и тут еще завтра пара будет профильная для программиста - экология, надо немного почитать хоть =)
Я прогу выложу в общение, все что кому не понравится я переделаю и в соотвествующий раздел добавлю после -
Я в свое время хотел начать пользоваться emacsом, но казуал во мне проснулся и не дал этого сделать =)
-
Цитата
Много редакторов перепробовал
А codeblock и emacs щупал? Мне кажется emacs тебе бы понравился =)
-
Цитата
Вот, а я без него жить не могу. Все, что можно сделать с текстом - делаю в нем. @Xipho, например, сидит на предшественнике - vi.
Чет вы больно жестки =)
-
Цитата
Я так могу сказать - юзайте vim.
Батюшки, открыл в вики посмотреть, что это за зверь, описание вначале заинтриговало "Один из мощнейших редакторов". Посмотрел скрин, и захотелось, как в дестве подписывал книжки дописать "того тысячелетия" =)
-
ШАРИК
Вот я щас нагнал на Borland и вспомнил, что в VS с++ уже как лет 10 не могут добавить рефакторинг
Если я не прав поправьте меня, но нажимая Ctrl+R из года в год я вижу надпись, что рафакторинга нет в текущем выпуске
-
gmz
Не много по умничаю :DDD а ты опцию такую применял?
/opt:nowin98Ты наверно и так знаешь, но вдруг, все может быть, она выравнивание секций по 512 б делает, а по дефолту 4кб, но ты это уже где то писал про 4 =)
-
Цитата
:DDD
У нас когда началось программирование на с++, нам дали компы с этим бидером - в нем ничего не запускалось, постоянные ошибки были, а этот интерфейс просто ужас! Я хотел установить там VS но прав админа не было, тогда Dev c++ принес поставил и жизнь наладилась)
Но самый плохой редактор, это делфи, не важно что за фирма делала, не важно какой версии - я на эту тему могу целую статью юмористическую написать, как меня этот язык всю жизнь преследовал и как я пытался избежать егоЦитатаесли у тебя вс ниже 2015.3 - может не сработать
У меня vs15.3 если просто поставить настройки как на скринах, понятное дело программа не скомпилируется там еще что то нужно, потом узнаю)
-
partoftheworlD
Я это и нашел =) Походу по дефолту если создаешь пустой проект, то clr не используется.
gmz
Про crt читать надо, что там подключать надо, что бы программа работала, попозже займусь этим =)
-
6 часов назад, keng сказал:
Главное всякие CRT и CLR повыкидывать
А это делается для CRT, как говорил gmz, другую точку входа в программу надо? А CLR я так понял отключена по умолчанию, потому что я в настройках поставил No Common Language RunTime Support ничего не изменилось, а до этого там просто пустое поле было
-
Цитата
Да, именно размер я и имел ввиду. Меня слегка передергивает от трейнеров размером в 5-6 мегабайт, которые умеют выводить текст стандартным шрифтом и все.
:DDDDD
Наконец то получилось картинки в exe засовывать, ошибка была в том, что я читал из массива данные и через memcpy записывал их в буфер типа void*, но перед этим нужно было память через VirtualAlloc выделить - всю ночь на это потратил =((( -
Цитата
Wav весит много, А вот xm, it будет идеально в трейнере. 40 секунд музыки около 8-9 кб.
Спасибо большое, буду иметь ввиду)
-
Цитата
А что с ресурсами не так?
Я с ними никогда не сталкивался, а когда прогуглил ничего внятного не нашел, а так, как я сейчас делаю - все прозрачно и понятно для меня, но пока что еще не заработало =)
WAV в трейнер не совать. :D
Не нравится музыка в трейнерах? А я уж музычку из охотников за приведениями подобрал(((
-
Цитата
Почитай про ресурсы в EXE-файле, в эту сторону копать нужно. Там же обычно лежат всякие иконки, курсоры и другие штуки.
С ресурсами там что то нечистое. Я делаю дедовским способом: Записываю в переменную картинку, и пытаюсь её считать =)
ЦитатаВ сторе эти вещи продавать нельзя, т.к. они нарушают лицензии 99% игр и местами законодательства.
ох уж эти законы =((
-
Доброе утро всем! Я хотел сделать трейнер в стиле metro приложения, которое пишется(один из вариантов) на с++ и xaml, но для этого нужна лицензия разработчика и по скринам эти приложения не много не подходят по своему строению для трейнеров. Зато можно было бы продавать их в Windows Store =) И тогда я решил на winapi попробовать сделать некое подобие. И вот, что у меня получилось, кончено это совсем не metro, но квадратики оттуда все таки есть:
А теперь загадка: с какой стороны изображение фотошопа, а с какой изображение программы =)
Скрытый текстИз всего этого, меня больше всего радует, что кривой кодировки не будет, так как все сделано картинками, я надеюсь gmz будет доволен =)
Единственное, что меня озадачило - с программой идет пачка картинок, это не есть хорошо. Вот сейчас думаю как их в exe вшить. Я помню какая то есть игра, которая известна тем, что она состоит из одного exe весом мегабайта 3, точно не помню, а содержит в себе большой уровень (целый замок) модели оружий, монстров, музыку и звуки. У них получилось все это засунуть в exe, я думаю и у меня получится несколько картинок запихать =)
Ну и как обычно, если есть замечания, предложения пишите!
P.S.: Место для рекламы свободно :DDDDDDDDDD -
Здравствуйте! Об этом много написано с применением DirectX и Opengl, но вот с WinAPI я один раз встречал на англоязычном стриме. Выкладываю код класса, возможности: установка фпс приложения и вывод некоторой информации. Имеется не большой баг, что фпс колеблется, но так наверно везде устроено. Может кому то пригодится, меня вот раньше напрягало, когда пустой цикл нагружал процессор на 12 -15%. Если есть идеи как можно улучшить класс с точки зрения производительности, логики и т.д. и т.п. или же есть какая то ошибка недочет пишите! Долой быдло код и необразованность!!!
Вот скриншот вывода информации:
Скрытый текстКод:
Скрытый текст#if !defined(VSYNCCLASS_H) #include <Windows.h> #include <stdio.h> #pragma comment(lib, "winmm.lib") class VSyncClass { public: VSyncClass(); void Begin(int fps); // In front of while void End(bool printInfo); // End while // Additional function float GetSecondsElapsed(LARGE_INTEGER start, LARGE_INTEGER end); LARGE_INTEGER GetCounter(); LARGE_INTEGER GetFrequency(); private: LARGE_INTEGER m_perfCountFrequency; float m_targetSecondsPerFrame = 0.0f; LARGE_INTEGER m_lastCounter = {}; INT64 m_lastCycleCount = 0; bool m_sleepIsGranular = false; }; #define VSYNCCLASS_H #endif
Скрытый текст#include "vsyncclass.h" VSyncClass::VSyncClass() { m_perfCountFrequency = {}; m_targetSecondsPerFrame = 0.0f; m_lastCounter = {}; m_lastCycleCount = 0; m_sleepIsGranular = false; } void VSyncClass::Begin(int fps) { QueryPerformanceFrequency(&m_perfCountFrequency); m_targetSecondsPerFrame = (1.0f / (float)fps); UINT DesiredSchedulerMS = 1; m_sleepIsGranular = (timeBeginPeriod(DesiredSchedulerMS) == TIMERR_NOERROR); m_lastCounter = GetCounter(); m_lastCycleCount = __rdtsc(); } void VSyncClass::End(bool printInfo) { float secondsElapsedForFrame = GetSecondsElapsed(m_lastCounter, GetCounter()); if (secondsElapsedForFrame < m_targetSecondsPerFrame) { if (m_sleepIsGranular) { DWORD sleepMS = (DWORD)(1000.0f * (m_targetSecondsPerFrame - secondsElapsedForFrame)); if (sleepMS > 0) { Sleep(sleepMS); } } while (secondsElapsedForFrame < m_targetSecondsPerFrame) { secondsElapsedForFrame = GetSecondsElapsed(m_lastCounter, GetCounter()); } } LARGE_INTEGER endCounter = GetCounter(); INT64 counterElapsed = endCounter.QuadPart - m_lastCounter.QuadPart; INT64 endCycleCount = __rdtsc(); INT64 cyclesElapsed = endCycleCount - m_lastCycleCount; if (printInfo == true) { double FPS = (double)m_perfCountFrequency.QuadPart / (double)counterElapsed; double MSPerFrame = 1000.0f * GetSecondsElapsed(m_lastCounter, endCounter); double MCPF = ((double)cyclesElapsed / (1000.0f * 1000.0f)); char Buffer[256]; _snprintf_s(Buffer, sizeof(Buffer), "%.02fms/f, %.02ff/s, %.02fmc/f\n", MSPerFrame, FPS, MCPF); OutputDebugStringA(Buffer); } m_lastCounter = endCounter; m_lastCycleCount = endCycleCount; } float VSyncClass::GetSecondsElapsed(LARGE_INTEGER start, LARGE_INTEGER end) { float result = ((float)(end.QuadPart - start.QuadPart) / (float)m_perfCountFrequency.QuadPart); return result; } LARGE_INTEGER VSyncClass::GetCounter() { LARGE_INTEGER result; QueryPerformanceCounter(&result); return result; } LARGE_INTEGER VSyncClass::GetFrequency() { LARGE_INTEGER result; QueryPerformanceFrequency(&result); return result; }
В проект добавляется так:
Скрытый текстVSyncClass VSync; VSync.Begin(30);// Обязательно перед циклом while (globalRunning) { if (PeekMessage(&message, 0, 0, 0, PM_REMOVE)) { TranslateMessage(&message); DispatchMessage(&message); } ............................................................ VSync.End(true);//обязательно в конце цикла }
- 2
-
-
3 минуты назад, partoftheworlD сказал:
Жаль что трейнер не на тибериум варс :с
Следующий трейнер на него сделаю, если не трудно =)
-
Цитата
Так просто в разработчики попасть ?
Скрытый текстbytes[0] = '\xe9'; (DWORD&)(*(bytes + 1)) = GetInAllocMemPos(1) - (baseAddress + offsetAddress[1]) - 5; bytes[5] = '\x90'; if (Process.WriteMemory(baseAddress + offsetAddress[1], (LPVOID)bytes, jmpSrcAddressSize[1]) == FALSE) wsprintf(buffer, "Ошибка!"); bytes[0] = '\x50'; bytes[1] = '\x8b'; bytes[2] = '\x81'; bytes[3] = '\x44'; bytes[4] = '\x01'; bytes[5] = '\x00'; bytes[6] = '\x00'; bytes[7] = '\x81'; bytes[8] = '\x78'; bytes[9] = '\x08'; bytes[10] = '\x70'; bytes[11] = '\x6c'; bytes[12] = '\x61'; bytes[13] = '\x79'; bytes[14] = '\x0f'; bytes[15] = '\x85'; (DWORD&)(*(bytes + 16)) = (GetInAllocMemPos(1) + 53) - (GetInAllocMemPos(1) + 15) - 5; bytes[20] = '\x8b'; bytes[21] = '\x81'; bytes[22] = '\x10'; bytes[23] = '\x01'; bytes[24] = '\x00'; bytes[25] = '\x00'; bytes[26] = '\x3d'; bytes[27] = '\x00'; bytes[28] = '\x01'; bytes[29] = '\x00'; bytes[30] = '\x00'; bytes[31] = '\x0f'; bytes[32] = '\x8e'; (DWORD&)(*(bytes + 33)) = (GetInAllocMemPos(1) + 53) - (GetInAllocMemPos(1) + 32) - 5; bytes[37] = '\xd9'; bytes[38] = '\x40'; bytes[39] = '\x14'; bytes[40] = '\xd9'; bytes[41] = '\x58'; bytes[42] = '\x08'; bytes[43] = '\xc7'; bytes[44] = '\x81'; bytes[45] = '\x34'; bytes[46] = '\x01'; bytes[47] = '\x00'; bytes[48] = '\x00'; bytes[49] = '\x00'; bytes[50] = '\x00'; bytes[51] = '\xc8'; bytes[52] = '\x42'; bytes[53] = '\x58'; bytes[54] = '\xd9'; bytes[55] = '\x81'; bytes[56] = '\x34'; bytes[57] = '\x01'; bytes[58] = '\x00'; bytes[59] = '\x00'; bytes[60] = '\xe9'; (DWORD&)(*(bytes + 61)) = (baseAddress + offsetAddress[1]) - GetInAllocMemPos(1) - jmpDestAddressSize[1] + jmpSrcAddressSize[1]; if (Process.WriteMemory(GetInAllocMemPos(1), (LPVOID)bytes, jmpDestAddressSize[1]) == FALSE) wsprintf(buffer, "Ошибка!"); else wsprintf(buffer, "Активно!");
heh =)
Пре релиз трейнера
in Общение
Опубликовано
Было бы не плохо если еще пару советов дал, замечаний и предложений, ведь я ради этого и создаю такие темки =) Все что угодно: цвет не нравится, иконки нету, для трейнера слишком сильно цп напрягает и т.д. ))