Гость mkOne Опубликовано 9 октября, 2016 Поделиться Опубликовано 9 октября, 2016 Есть проблемка: захват окна cs:go для рисования в нем и определение его размеров. Скрытый текст [StructLayout(LayoutKind.Sequential)] public struct RECT { public int Left; // x коорд левого верхнего угла public int Top; // y коорд левого верхнего угла public int Right; // x коорд правого нижнего угла public int Bottom; // y коорд правого нижнего угла } [DllImport("user32.dll", SetLastError = true)] private static extern bool GetWindowRect(IntPtr hWnd, out RECT rect); На выходе функция GetWindowRect() практически всегда возвращает RECT с параметрами 0 0 1 1 или 0 0 0 0 и т.д. А если и не нули, то всегда разные значения (окно с cs:go всё время в одном и том же положении и разрешении). Пробовал и в оконном режиме, и в полноэкранном - одно и то же. Сама функция получения handle выглядит примерно так: Скрытый текст csgo = Process.GetProcessesByName("csgo").FirstOrDefault(); if (csgo != null) { p_id = csgo.Id; Data.p_handle = (uint)OpenProcess(0x1F0FFF, false, p_id); Data.w_handle = (uint)GetWindowRect(p_handle, Drawing.rect); ProcessModuleCollection csgoModules = csgo.Modules; for (int i = 0; i < csgoModules.Count; i++) { if (csgoModules[i].ModuleName == "client.dll") { client_dll = (uint)csgoModules[i].BaseAddress; return true; } return false; } } else { MAINFORM.Mb("Error: cant find 'csgo'"); return false; } Не знаю, что делать. Да и с функцией GetDC() (для выбора приложения, в котором будем "рисовать") куча проблем. Большая удача, если раза с пятого вернет значение отличное от нуля. [DllImport("user32.dll", SetLastError=true)] static extern IntPtr GetDC(IntPtr hWnd); Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 9 октября, 2016 Поделиться Опубликовано 9 октября, 2016 Привет! GetWindowRect принимает handle окна, а не процесса. Отныне твои лучшие друзья - это EnumWindows и GetWindowThreadProcessId. Первая возвращает тебе список идентификаторов всех окон процесса, вторая - pID, к которому окно подцеплено. pID ты уже знаешь через свой код. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость mkOne Опубликовано 9 октября, 2016 Поделиться Опубликовано 9 октября, 2016 Вышел налить чай - уже ответили. Вот это скорость! Спасибо тебе за уроки, keng, благодаря ним разобрался с принципом взлома игр. Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 9 октября, 2016 Поделиться Опубликовано 9 октября, 2016 Да пустяки, рад стараться. Ты лучше благодари, когда у тебя проблема с кодом решится. Ссылка на комментарий Поделиться на другие сайты Поделиться
ШАРИК Опубликовано 9 октября, 2016 Поделиться Опубликовано 9 октября, 2016 А какой смысл рисовать средствами GDI ? Мерцать же будет Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость mkOne Опубликовано 9 октября, 2016 Поделиться Опубликовано 9 октября, 2016 1 минуту назад, ШАРИК сказал: А какой смысл рисовать средствами GDI ? Мерцать же будет Лучше сначала смастерить колесо, а потом уже делать велосипед Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения