В ближайшее время свет увидит моя последняя работа -второе издание Программирование на C++ глазами хакера. Нет, я не говорю, что это последняя вообще. Последняя книга, это в смысле того, что я после этого ничего не писал. Возможно, что-то еще будет, но издательство ничего не предлагает, так что следующей новинки ждать придется долго. Если издательство что-то предложит, а я увижу, что мне это интересно и будет результат, то на написание-издание уйдет не менее полугода.
Программирование на C++ глазами хакера второе издание отличается от первого достаточно серьезно. Мало того, что я исправил некоторые глюки и освежил информацию, я добавил много нового. Например, появилась целая глава о системе безопасности Windows. Подобная глава есть в Delphi глазами хакера, а теперь все примеры работы с ACL, DACL можно будет увидеть на C++.
Когда точно выйдет книга пока сказать не могу, но как только, так сразу сообщу.
Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым
Вовремя я этот пост увидел, а то собирался уже купить первое издание. Теперь подожду второе издание. Кстати, Линукс глазами хакера у нас в городе появился примерно через месяц или полтора после твоей заметки.
Значит ли это, что ты передумал, и карьера писателя будет иметь продолжение? :) Если так, то это радостная весть :)
Оно может иметь продолжение. Я не планировал ничего писать. Но без проблем вернусь к этому, если увижу интересную тему, от которой получу удовольствие. Так как заработать сложно, то просто писать не особо и хочется, но если будет хорошая дея, то напишу.
Отсутствие финансовой отдачи, это плохо. Практически все качают книги из сети. Я тоже качаю, но только для ознокомления перед покупкой. Или из-за отсутсвия книги в продаже, в нашем городе это сделать сложно.
Здравствуйте Михаил, наступающими Вас праздниками Рождеством и Новым годом. Здоровья, счастье, успехов и процветания Вам в карьере и в личной жизни. Купил Вашу книгу "Программирование на C++ глазами хакера" 2-е издание 2011г. Прочитал Введение, пролистал дальше и книга мне понравилась, т.к. она рассчитана на новичка в программирование и все разжевано и разложено по полочкам. И что очень меня порадовала много практических работоспособных примеров. Эх по больше бы таких книг на прилавках книжных магазинов. Воодушевленный я начал выполнять первый пример "Летающий Пуск" ("Start Button"). У меня ОС "Семерка" и кнопка "Пуск" выглядит виде разного цветного флага в кружке. Я делаю снимок с экрана и потом открываю его в Paint'е. размер кнопки "Пуск" у меня получается: ширина 50 на высота 39 пикселей. Потом его вставляю в Visual Studio 2008 C++ -> Add Resource -> Bitmap -> New - все как в Вашей книге. В свойствах рисунка Bitmap выставляю ширина 50 на высота 39 пикселей. Хочу поменять Color как у Вас написано на 256 Color или True Color, но в проекта Visual Studio 2008 доступны параметры Color: 1bit, 4bit 8bit, 24bit и 32bit. Раньше среда позваляла выставлять параметр только 8bit, сейчас уже 24bit. Сам не знаю почему???? Для наглядности я бы мог прикрепить скриншоты с моего экрана, но к сожалению здесь на сайте нет функции прикрепление файлов. При запуске программы появляется только верхняя часть кнопки "Пуск", а внизу белое пространство. Извините что получился очень длинный комментарий. Я пытался детально изложить суть моей проблемы. Подскажите пожалуйста как правильно задать размеры окна кнопки, если можно то на скриншотах.
С уважением к Вам Евгений(beginer)!!!!
Что-то не так с функцией рисования. Возможно ты копируешь картинку на экран неверно указывая размеры. Я уже не помню какую функцию я использовал для рисования битовой маски, но проверь ее
Делаю снимок экрана, открываю графический редактор, вставляю туда снимок с экрана, вырезаю кнопку "Пуск" затем в Visual Studio 2008 C++ с помощью команды Edit/Paste вставляю в проект, других функций Вставки в проект Visual Studio 2008 C++ типа Win32 Project, я больше не знаю как разве, что комбинация клавиш Shift + Insert.Далее захожу в свойства (Propperties), полученного рисунка Bitmap Editor, далее выставляю значения Height и Width. Я не понимаю где у меня ошибка, я бы мог прикрепить скриншоты с экрана моего компьютера, но к сожалению здесь на сайте нет функции прикрепление файлов. Икак можно проверить функции рисования для битовой маски в Visual Studio 2008??????????
Смотреть нужно в коде. Там должна быть функция типа BitBlt (по идее я использовал ее) и она копирует изображение. Ее параметры могут быть выставлены так, что копируется не все изображение. В книге описана эта функция и ее параметры. Проверь высоту.
У меня размеры кнопки "Пуск" полученные с помощью графического редактора Paint такие ширина: 52 и высота: 39. Я функции BitBlt выставляю следующие параметры фрагмент кода:
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
Rectangle(hdc, 1,1,10,10);
hdcBits=::CreateCompatibleDC(hdc);
SelectObject(hdcBits,startBitmap);
BitBlt(hdc, 0, 0, 52, 39, hdcBits, 0, 0,SRCCOPY);
DeleteDC(hdcBits);
EndPaint(hWnd, &ps);
break;
Возникает вопрос нужно ли выставлять значения ширины: 52 и высоты: 39 в функции "Установить верхнюю позицию окна в левый нижний угол экрана"?
Фрагмент кода:
//Установить верхнюю позицию окна в левый нижний угол экрана.
SetWindowPos(hWnd, HWND_TOPMOST, 4, toppos, 52, 39, SWP_SHOWWINDOW);
UpdateWindow(hWnd);
У меня пока результат остается прежний, где ошибка и какие параметры еще нужно изменить???????
Кидай мне на мыло свой исходник, буду смотреть
Я его к сожалению не знаю????!!!!
Привет !
Купил Вашу книгу "Программирование на C++ глазами хакера" 2-е издание 2011г
нравяться практические примеры
но сразу столкнулся с проблемами
в первом же примере
На Делфи пример работает кнопка летает
нс VC++ нет
кнопка прорисовывается в окне программы
всё правильно сверху
но окно не уменьшилось меню заголовок не исчезает
Style || WS_CAPTION
Style || WS_SYSMENU
SetWindowLng()- игнорируется
SetWindowPos()- начало урезать в блоке InitInstace, но меню и шапка на месте
DrawStartButton() Игнорируется
помоги пожалуйста
использую Microsoft Visual Studio 2008
Win32 приложение!
может не те настройки какие,?
если будет время глянь этот пример
Мне уже выслали исходник с такими же симптомами, все нет времени посмотреть. Кстати, на какой ОС запускаете?
Михаил а так навскидку где искать?
Windows XP
Протрейсить и посмотреть, почему DrawStartButton игнорируется. Я эти примеры писал года четыре назад и не помню, как я их делал.
Михаил небеспокойся
пример рабочий
но Microsoft Visual Studio 2008
другие ATOM MyRegisterClass(HINSTANCE hInstance)
и что то ещё
исправил всё летает ты прав
очень красиво
Спасибо!
Михаил привет!
ищё забыл добавить
в блоке
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
пришлось перед обработкой сообщений
while (GetMessage(&msg, NULL, 0, 0))
ставить не DrawStartButton();
а
SetWindowPos(hWnd, HWND_TOPMOST, 1,GetSystemMetrics(SM_CYSCREEN)-29 , 67, 26,
SWP_SHOWWINDOW);
иначе в начале действия программы не прорисовывается картинка
если можно что то попроще подскажи
буду признателен
Комментарий принят к рассмотрению и будет отображен после подтверждения.
а да и ещё в
DrawStartButton()
в каждый цикл надо вставить
UpdateWindow(hWnd);
иначе никак
Вчера на работе подтвердил комментарий, а дома забыл даже прочитать. Сегодня вечером постараюсь не забыть дома посмотреть, что там у меня в исходниках накалякано
Михаил привет!
подскажи как заставить этот цикл работать
SendMessage() не даёт результата
может через
CreateEvent()можно?
если окно открывается то что то проходит
если wm_hide
ждёт сообщения msg
а его нет
даже не набирая примеры уже понятно
будут ждать и очень долго
Используй PeakMessage. Поищи на диске, я где-то точно использовал эту функцию. Если сообщений нет, то она не ждет.
Та же проблема. Кнопка нифига не летает, а расположена строго в одном месте экрана, какие параметры не меняешь. ЧТо в ХП, что в вин7. Не могли бы вы выложить корректный пример? А то и так пришлось кучу часов убить на поиск то визуал студии (в борланде жутко криво), то на разбор бага заглушки, что используется юникод.
Аська 179339479.
В общем вместо получения удовольствия, приходится просто вымучивать этот пример(...
Сейчас реально работаю по 10 часов на работе, не считая того, что работаю дома. Плюс затраты на дорогу до работы и домой, и времени уже ни на что не остается. Как только будет свободное время, я обязательно посмотрю, как этот пример работает в Windows 7, хотя я не уверен, что он вообще там будет работать. Дело в том, что MS изменила принципе панель. А кнопка у вас хоть отрывается от своего места?
Спасибо за ответ! Я долго насиловала свой мозг и наконец убрала это злополучное меню:
SetMenu(hWnd, 0);
Теперь у меня другой глюк, если стоят флаги CW_USERDEFAULT, как в книге, то окно получает большим, а в нем маленькая картинка. Если я ставлю нули, то остается маленькая полоска справа в высоту картинки, примерно на 60 пикселей вправо. И как я не меняю параметры прорисовки ширины и высоты в разных функциях, например в setwindowpos, все равно эта полоска остается и никак не изменяется...
Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.