forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты C++ (http://forum.boolean.name/forumdisplay.php?f=56)
-   -   Моя первая прога на С++ - Пакостник v1.0 (http://forum.boolean.name/showthread.php?t=7404)

ABTOMAT 01.12.2008 20:00

Моя первая прога на С++ - Пакостник v1.0
 
Вложений: 1
Собсно, это моя первая прога на С++ которую можно и на людях показать :rolleyes:
Спасибо тем, кого я без устали доставал тупыми вопросами во время написания проги: HolyDel, Impersonalis, Alcosholic, Jimon, Tadeus, m_512

Название: "Пакостник"
Версия: 1.0
Совместимость с ОС Уиндоуз Уиста: да (тэстировали)
Действие проги: висить себе в ОЗУ через каждые пять минут выдавая прикольные окошечки с ошибками.
Предназначена для: мести нашему учителю информатики, который мне парашу поставил в журнал. Переименованная в svchost.exe и спрятанная от глаз людских при помощи свойства файла "скрытый" может быть и не найдена ламеромъ (или найдена спустя полчаса).
Распространение: бесплатно, без указания имени автора (не дай бог, кто поюзает по назначению и укажет имя афтара :wild: >>:( :vinsent: )

В аттаче скомпиленный екзешник.
Внизу код (извиняюсь за маразмы в ём, если таковые найдутся):

З.Ы. Мне вот больше всего Case 1 нравится :rolleyes:

Код:

#include <windows.h>
#include <iostream>
#include <stdio.h>
#include <string>

// Глобальники

int lastmx;
int lastmy;

int positions[100][2];

int vectorx, vectory;

void main();

int MouseX()
{
 POINT mpos;
 GetCursorPos(&mpos);          // Получить текущую позицию мыши (Новое)
 return mpos.x;
}

int MouseY()
{
 POINT mpos;
 GetCursorPos(&mpos);          // Получить текущую позицию мыши (Новое)
 return mpos.y;
}

int MouseXSpeed()
{
        int prommx = MouseX() - lastmx;
        lastmx = MouseX();
        return prommx;
}

int MouseYSpeed()
{
        int prommy = MouseY() - lastmy;
        lastmy = MouseY();
        return prommy;
}

__forceinline void MoveMouse(int x,int y)
{
 SetCursorPos(x,y);
}
using namespace std;

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow)
{

        const long period = 300000;//600000;
        long unsigned lastmessagetime = GetTickCount(); //- period;//napis.c_str()
        int mescount = 0;
        while (1)
                       
        {
                // задержко чтобы не жрать всё процессорное время

                Sleep(10);

                if (lastmessagetime + period <= GetTickCount())
                {
                        // Выдаём сообщение и обнуляем шчотчик
                       

                        switch(mescount){
                                case 0:
                                {
                                        MessageBoxA(0,"Ты чё, гад, не спишь?", "", 16);
                                        break;
                                }
                                case 1:
                                {
                                        int m=0;
                                        while (m!=6)
                                        {
                                                m = MessageBoxA(0,"Внимание! \nПодтвердите, что вы дерьмо! \nВы дерьмо?", "Свиборг", 48+4);                                               
                                                if (m==7)MessageBoxA(0,"Неправильный ответ!", "ТЫ ДЕРЬМО!!!", 16);
                                        }
                                        break;
                                }
                                case 2:
                                {                                       
                                        MessageBoxA(0,"Тебе не кажется!", "Свиборг", 16);
                                        break;
                                }
                                case 3:
                                {                                       
                                        MessageBoxA(0,"Выпей йаду!", "Гном", 16);
                                        break;
                                }
                                default:
                                {
                                        break;
                                }
                        }
                        lastmessagetime = GetTickCount();
                       
                        if (mescount < 3)
                        {
                                // Фак мой моск!
                                mescount = mescount + 1;
                        }
                        else                               
                        {
                                // В рот мне ноги!!
                                mescount = 0;
                        };

                };
        };

}

Прога безобидная, но ламер вряд ли догадается что к чему.

jimon 01.12.2008 21:07

Ответ: Моя первая прога на С++ - Пакостник v1.0
 
ABTOMAT
1) в c++ надо избегать переменных вне функций любыми способами
2) __forceinline для такой функции не нужно
3) void main(); не нужно
4) вместо MouseX и MouseY проще написать GetMousePosition которая будет возращать 2д вектор (предварительно класс 2д вектора надо описать)

impersonalis 01.12.2008 22:32

Ответ: Моя первая прога на С++ - Пакостник v1.0
 
Экранные координаты лучше хранить (принято) в long

ABTOMAT 01.12.2008 23:42

Ответ: Моя первая прога на С++ - Пакостник v1.0
 
Цитата:

Сообщение от impersonalis (Сообщение 91497)
Экранные координаты лучше хранить (принято) в long

почему?
ведь они ну никак не могут принять значение выше 65536
(макс разрешение о котором я слышал - это 2000 с чем-то)

FDsagizi 02.12.2008 10:59

Ответ: Моя первая прога на С++ - Пакостник v1.0
 
>>>1) в c++ надо избегать переменных вне функций любыми способами

Блиц Стаил:) , тоже сначала так делал. Но потом както сам допер что так делать, только в блице было разумно...

impersonalis 02.12.2008 11:20

Ответ: Моя первая прога на С++ - Пакостник v1.0
 
Цитата:

Сообщение от ABTOMAT (Сообщение 91502)
почему?
ведь они ну никак не могут принять значение выше 65536
(макс разрешение о котором я слышал - это 2000 с чем-то)

1) спорно (это в простом случае - экран - непосредственное отображение разрешения монитора; а если тебе понадобиться держать квазиэкранную координату? - т.е. позицию объекта относительно 0,0 для объекта, находящегося за N "экранов" от точки начала вывода [проскроленного далеко за границы отображения, но от того не утратившего своего воздействия на логику программы]).
2) чтобы непариться если вдруг перменная будет хранить не позицию а площадь объекта на экране (это не гигантомания, а разумный задел)
3) (и главное) - смотри с какими типами аргументов эти функции юзаются в mfc, winAPI...


Часовой пояс GMT +4, время: 08:50.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot