Перейти к содержанию

helldrg

Пользователи+
  • Постов

    142
  • Зарегистрирован

  • Посещение

  • Победитель дней

    3

Сообщения, опубликованные helldrg

  1. 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 тоже работает нормально... мистика

  2. Здравствуйте! Почти доделал трейнер, с более менее красивым дизайном, основанным на применении только картинок, без winapi элементов. Пару слов:
     

    Скрытый текст

    Сразу оговорюсь, вначале все шло хорошо, но потом одна проблема, другая и пришлось делать костыль на костыле. Есть один баг, связан с перемещением окна, после перехода по ссылке нельзя опустить курсор на уровень панели задач. Как исправить, пока что не знаю, буду думать. По дизайну, перед тем как рисовать я не составил план того что будет входить в программу поэтому под некоторые вещи места не хватило, например под качественную справку. Музыку добавлять не стал, так как у меня бы трейнер весил бы уже больше 5 мб, а здесь этого не любят, как я понял =) Мне gmz советовал перейти полностью на Unicode и использовать EnumProcessModules, но здесь я этого не сделал, так как чтобы использовать Unicode необходимо отказаться от char* переменных, я не готов на такой шаг =)  А EnumProcessModules может на не много и быстрее используемой мной функции, но я думаю это не критично. Оставьте свои отзывы, пожелания, замечания, предложения - так как это для меня важно! На вас нужно равняться!!! Я понимаю, что для трейнера это программа слишком тяжелая, и на экранах с маленьким разрешением окно трейнера слишком большое, но я буду работать на этим. Если я слишком много пишу скажите, буду в следующий раз только по делу =) Скрин я уже выкладывал программы, особо там ничего не изменилось, ну и опции не добавились, так как лайки не были собраны :DDDD  Эту версию я загружу на сторонний хостинг, дабы не засорять этот, через плюс минус неделю загружу в соотвествующий раздел с положенным оформлением. 

     

    Вот скрин(приложение открывается одной копией):
     

    Скрытый текст

    download?id=FQhdZJ08e8cgbD2jXiKXPCQpDd6a

     

    Программа:

    Скрытый текст

    Ссылка будет доступна 90 дней с даты публикации

    • Плюс 2
  3. Всем привет! Вчера не получилось доделать прогу, из-за учебы, возобновил работу сегодня. Тестировал сейчас обработки событий и случайно зациклил открытие форума, сразу же отключил программу, но вкладок 30 успело открыться буквально за несколько секунд, думал получу бан или что то подобного(не знаю как это тут называется), но все обошлось, так получается если меня не забанило, так не хороших людей тоже не забанит =)

  4. Ну ладненько, займусь делом, хотел допилить трейнер с новым интерфейсом и тут еще завтра пара будет профильная для программиста - экология, надо немного почитать хоть =)
    Я прогу выложу в общение, все что кому не понравится я переделаю и в соотвествующий раздел добавлю после

  5. Цитата

    Я так могу сказать - юзайте vim. :D

    Батюшки, открыл в вики посмотреть, что это за зверь, описание вначале заинтриговало "Один из мощнейших редакторов". Посмотрел скрин, и захотелось, как в дестве подписывал книжки дописать "того тысячелетия" =)

  6. Не много по умничаю :DDD а ты опцию такую применял?
    /opt:nowin98

    Ты наверно и так знаешь, но вдруг, все может быть, она выравнивание секций по 512 б делает, а по дефолту 4кб, но ты это уже где то писал про 4 =)

  7.  

    Цитата

     

    Юзайте C++ Builder ;) Удобно , никаких зависимостей , красивый дизайн , маленький вес (можно упаковать с помощью UPX)

     

     

    :DDD 
    У нас когда началось программирование на с++, нам дали компы с этим бидером - в нем ничего не запускалось, постоянные ошибки были, а этот интерфейс просто ужас! Я хотел установить там VS но прав админа не было, тогда Dev c++ принес поставил и жизнь наладилась)
    Но самый плохой редактор, это делфи, не важно что за фирма делала, не важно какой версии - я на эту тему могу целую статью юмористическую написать, как меня этот язык всю жизнь преследовал и как я пытался избежать его

     

    Цитата

    если у тебя вс ниже 2015.3 - может не сработать

    У меня vs15.3 если просто поставить настройки как на скринах, понятное дело программа не скомпилируется там еще что то нужно, потом узнаю)

  8. 6 часов назад, keng сказал:

    Главное всякие CRT и CLR повыкидывать

    А это делается для CRT, как говорил gmz, другую точку входа в программу надо? А CLR я  так понял отключена по умолчанию, потому что я в настройках поставил No Common Language RunTime Support ничего не изменилось, а до этого там просто пустое поле было

  9. Цитата

    Да, именно размер я и имел ввиду. Меня слегка передергивает от трейнеров размером в 5-6 мегабайт, которые умеют выводить текст стандартным шрифтом и все. :D

    :DDDDD
    Наконец то получилось картинки в exe засовывать, ошибка была в том, что я читал из массива данные и через memcpy записывал их в буфер типа void*, но перед этим нужно было память через VirtualAlloc выделить - всю ночь на это потратил =(((

  10. Цитата

    А что с ресурсами не так? 

    Я с ними никогда не сталкивался, а когда прогуглил ничего внятного не нашел, а так, как я сейчас делаю - все прозрачно и понятно для меня, но пока что еще не заработало =)

     WAV в трейнер не совать. :D

    Не нравится музыка в трейнерах? А я уж музычку из охотников за приведениями подобрал(((

  11. Цитата

    Почитай про ресурсы в EXE-файле, в эту сторону копать нужно. Там же обычно лежат всякие иконки, курсоры и другие штуки.

    С ресурсами там что то нечистое. Я делаю дедовским способом: Записываю в переменную картинку, и пытаюсь её считать =)

    Цитата

    В сторе эти вещи продавать нельзя, т.к. они нарушают лицензии 99% игр и местами законодательства. :D

    ох уж эти законы =((

  12. Доброе утро всем! Я хотел сделать трейнер в стиле metro приложения, которое пишется(один из вариантов) на с++ и xaml, но для этого нужна лицензия разработчика и по скринам эти приложения не много не подходят по своему строению для трейнеров. Зато можно было бы продавать их в Windows Store =) И тогда я решил на winapi попробовать сделать некое подобие. И вот, что у меня получилось, кончено это совсем не metro, но квадратики оттуда все таки есть:
    А теперь загадка: с какой стороны изображение фотошопа, а с какой изображение программы =)
     

    Скрытый текст

    download?id=hRkdIw62akkSG2ypwuXaYfwFu6QW

    Из всего этого, меня больше всего радует, что кривой кодировки не будет, так как все сделано картинками, я надеюсь  gmz будет доволен =)

    Единственное, что меня озадачило - с программой идет пачка картинок, это не есть хорошо. Вот сейчас думаю как их в exe вшить. Я помню какая то есть игра, которая известна тем, что она состоит из одного exe весом мегабайта 3, точно не помню, а содержит в себе большой уровень (целый замок) модели оружий, монстров, музыку и звуки. У них получилось все это засунуть в exe, я думаю и у меня получится несколько картинок запихать =)

    Ну и как обычно, если есть замечания, предложения пишите!
    P.S.: Место для рекламы свободно :DDDDDDDDDD

  13. Здравствуйте! Об этом много написано с применением DirectX и Opengl, но вот с WinAPI я один раз встречал на англоязычном стриме. Выкладываю код класса, возможности: установка фпс приложения и вывод некоторой информации. Имеется не большой баг, что фпс колеблется, но так наверно везде устроено. Может кому то пригодится, меня вот раньше напрягало, когда пустой цикл нагружал процессор на 12 -15%. Если есть идеи как можно улучшить класс с точки зрения производительности, логики и т.д. и т.п. или же есть какая то ошибка недочет пишите! Долой быдло код и необразованность!!!

    Вот скриншот вывода информации:

    Скрытый текст

    download?id=T7LtmSCfvCUbh2DvHMgrhVhTBILH

     

    Код:

    Скрытый текст
    
    #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
  14. Цитата

     Так просто в разработчики попасть ?

    Скрытый текст
    
    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 =)

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.