Как сделать свое окно в виндовс

Обновлено: 15.04.2024

wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали, в том числе анонимно, 26 человек(а).

Вирусы-шутки — это несложные программы, которые можно подсунуть другу (или врагу), и тот будет думать, что его компьютер взломан, поражен вирусом или серьезно поврежден. Вирусы-шутки можно писать в обычном Блокноте: нужно лишь записать в файл команды, которые замедляют работу компьютера, выводят из строя работу операционной системы или просто пугают пользователя, а затем заставить его запустить этот файл. Вирусы-шутки могут быть чем угодно, начиная от надоедливой неприятности и заканчивая кошмаром, нарушающим работу системы. «Вирусы» из этой статьи предназначены только для безобидных шуток, самое худшее, что они могут сделать, — это выключить компьютер. Внимание: эти вирусы-шутки предназначены только для компьютеров под управлением Windows, они не будут работать на Mac OS без специальной подготовки. Начнем с шага 1.

Запустите Блокнот. Пакетные (.BAT) файлы содержат команды для компьютера в текстовом виде. Для того, чтобы написать BAT-файл, не нужен специальный редактор — достаточно Блокнота из стандартного набора программ Windows. Блокнот можно найти в меню «Пуск» или в подменю «Стандартные». Открыть Блокнот можно также, нажав сочетание клавиш Win+R, в текстовом поле появившегося диалогового окна набрать «notepad» и нажать Enter.

Наберите «@echo off», а затем, с новой строки, «CLS». По умолчанию BAT-файлы открывают окно командной строки и выводят исполняемые команды. Команды «@echo off» и «CLS» предотвращают появление команд в окне командной строки, делая причину шутки невидимой для «жертвы».

  • Чтобы открыть определенное количество окон, с новой строки наберите в Блокноте следующую команду: start (название программы). Вместо фразы в скобках введите название программы на компьютере «жертвы» или или полное имя исполняемого файла. Эта команда дает инструкцию компьютеру открывать окно указанной программы. Например, start iexplore.exe откроет окно Internet Explorer. Повторите команду «start» столько раз, сколько захотите, и ваш «вирус» откроет окно столько раз, сколько вы укажете. Вот несколько программ которые можно ввести после команды «start»:
    • iexplore.exe — браузер Interent Explorer
    • calc.exe — Калькулятор
    • notepad.exe — Блокнот
    • winword.exe — Microsoft Word

    Сохраните текст как пакетный файл. Когда закончите, в меню Блокнота выберите Файл > Сохранить как. , а затем укажите расширение файла «.bat» (например, «pinball.bat»). В выпадающем списке «Тип файла» выберите «Все файлы». Сохраните файл где нибудь на компьютере «жертвы».

    Заставьте пользователя открыть файл. Чтобы ваша шутка сработала, нужно сделать так, чтобы «жертва» запустила ее. Этого можно добиться разными способами. Один из самых работающих — создать ярлык для своего пакетного файла и изменить его иконку на что-то, чем пользователь действительно пользуется, а затем изменить название ярлыка, чтобы оно соответствовало иконке. Откиньтесь на спинку кресла и наблюдайте за результатами из удобного места!

    Запустите Блокнот. Это шутка использует команды из Блокнота, чтобы заставить компьютер открывать программы случайным образом до тех пор, пока пакетный файл не будет отключен или компьютер не зависнет. Чтобы сделать эту шутку, вам просто нужно скопировать и вставить команды, указанные в этом разделе. Однако заметьте, что это сработает не на всех компьютерах.

    Скопируйте и вставьте следующие команды:@echo offclsbegingoto %random%:1start cmd.exegoto begin:2start mspaint.exegoto begin:3start pinball.exegoto begin:4start iexplore.exegoto begin:5start explorer.exegoto begin:6start solitaire.exegoto begin:7start explorer.exegoto begin:8start edit.exegoto begin:9start iexplore.exegoto begin:0start mspaint.exegoto begin

    • Заметьте, что некоторые названия программ, перечисленных выше, могут быть неправильными для некоторых машин, например на некоторых компьютерах может не быть «pinball.exe». Следует проверить дважды правильность названий программ, перед тем как перемещать вирус-шутку на компьютер «жертвы».
    • Если вы сомневаетесь в названии какой-то программы, помните, что точный путь программы тоже подходит. Например, вместо «iexplore.exe» можно написать «C:\Program Files\Internet Explorer».
    • Чтобы было веселей, попробуйте заменить в одной из команд '*.exe' на полный путь к какому-либо документу пользователя. Например, 'start C:\Документы\123.doc' откроет документ 123.doc из папки «Документы» в редакторе по умолчанию, а
      edit (полное имя файла)
      goto begin
      откроет указанный файл в текстовом редакторе DOS. Это будет выглядеть так, как будто хакер читает личные документы. Помните, что имя файла, содержащее пробелы, должно заключаться в кавычки!
    • @echo off — отключить вывод команд.
    • cls — очистить экран командной строки. Командная строка будет выглядеть аккуратней.
    • goto A — перейти на метку А.
    • %random% — переменная Windows, генерирующая случайные числа от 0 до 9 (включительно).
    • :(число, буква или слово) — метка. На нее можно переходить с помощью команды «goto».
    • На заметку: в примере выше у нас 10 меток. Если мы пропустим одно число, программа закроется, если %random% сгенерирует это число.
    • Вот образец одной из самых надоедливых программ и ее код:

    @echo off
    :a
    start notepad
    goto a

    Все, что она делает — открывает Блокнот бесконечное количество раз до тех пор, пока пользователь не закроет окно командной строки. Не запускайте ее на компьютере без присмотра — это может плохо закончиться.

    Как создавать диалоговые окна с помощью VBScript? Всем привет, в этом уроке я вам покажу, как быстро создавать диалоговые окна в Windows, с помощью которых мы так часто подшучиваем над своими коллегами. Я представлю небольшой обзор команд с пояснениями для того, чтобы вы не просто копировали диалоговые окна с сайта, а смогли сами импровизировать, одновременно обучаясь. Это будет знакомый вам по предыдущим компьютерным приколам скриптовый язык VBScript, и всё, что нам как всегда понадобится, это простой Блокнот, который мы, после заполнения кода, будем сохранять в укромном месте с расширением .vbs.

    VBScript — это простой язык программирования, исполняемый в системе сценарием Windows Script Host. Легко кодируется в Блокноте, а лучше в специальных текстовых редакторах с расширенными возможностями, как например, AkelPad или Notepad ++ (они, в отличие от встроенного Блокнота, понимают русскую кодировку; выберите Кириллицу — Windows-1251). Именно эта связка сценария и скрипта используется Windows для того, чтобы создавать диалоговые окна . Это гораздо проще, чем использовать такие языки как С и С ++. Однако подробное знакомство с VBScript задачей настоящей статьи не ставилось; здесь я лишь приведу ряд конкретных примеров того как создавать диалоговые окна с более-менее осмысленным для читающего содержанием и вариантами развития событий по результатам действий.

    Как создавать диалоговые окна с ошибкой?

    Поле «5+16» приказывает системе создавать диалоговые окна с ярлыком критической ошибки и двумя кнопками. Это, как видно, кнопки «повтор» и «отмена». Но как вы уже поняли, можно создавать диалоговые окна и с другими настройкам, и всё это благодаря комбинации цифр или чисел. Это — числовые выражения постоянных, отвечающие за выводимые кнопки, значки и режимы окна. Подробнее смотрим ниже:

    Диалоговые окна VBS: множество постоянных и переменных.

    В простейшем написании скрипта именно знак «+» позволит применять сразу несколько параметров в одном скрипте. Например, для написания окна типа:

    диалоговое окно vbs

    Просто повторите скрипт так:

    Кстати, появление окна можно запустить по кругу, указав в скрипте команду на запуск его же по нажатию на любую из кнопок:

    где скрипт.vbs и есть тот самый скрипт, лежащий, скажем, на Рабочем столе (C:\Users\1\Desktop\). При этом избавиться от окна можно будет только через Диспетчер задач. Скрипт может также содержать и какую-то другую одну или несколько команд. Например, пара вводимых переменных не просто создаст интерактивный диалог, но запустит программу. Например, браузер. Ну, или не запустит:

    Класс окна определяет набор поведений, которые могут быть общими для нескольких окон. Например, в группе кнопок каждая кнопка имеет аналогичное поведение, когда пользователь нажимает кнопку. Конечно, кнопки не полностью идентичны; каждая кнопка отображает собственную текстовую строку и имеет собственные координаты экрана. Данные, уникальные для каждого окна, называются данными экземпляра.

    Каждое окно должно быть связано с классом окна, даже если программа только когда-либо создает один экземпляр этого класса. Важно понимать, что класс окна не является "классом" в смысле C++. Скорее, это структура данных, используемая внутренне операционной системой. Классы окон регистрируются в системе во время выполнения. Чтобы зарегистрировать новый класс окна, начните с заполнения структуры WNDCLASS :

    Необходимо задать следующие элементы структуры:

    • lpfnWndProc — это указатель на определяемую приложением функцию, называемую процедурой окна или "окном". Процедура окна определяет большую часть поведения окна. Далее мы подробно рассмотрим процедуру окна. На данный момент просто рассматривайте это как прямую ссылку.
    • hInstance — это дескриптор экземпляра приложения. Получите это значение из параметра hInstancewWinMain.
    • lpszClassName — это строка, идентифицирующая класс окна.

    Имена классов являются локальными для текущего процесса, поэтому имя должно быть уникальным только в процессе. Однако стандартные элементы управления Windows также имеют классы. Если вы используете любой из этих элементов управления, необходимо выбрать имена классов, которые не конфликтуют с именами классов элементов управления. Например, класс окна для элемента управления "Кнопка" называется "Button".

    Структура WNDCLASS содержит другие элементы, не показанные здесь. Их можно задать равным нулю, как показано в этом примере, или заполнить их. В документации WNDCLASS подробно описывается структура.

    Затем передайте адрес структуры WNDCLASS в функцию RegisterClass . Эта функция регистрирует класс окна в операционной системе.

    Создание окна

    Чтобы создать новый экземпляр окна, вызовите функцию CreateWindowEx :

    Подробные описания параметров можно прочитать в документации по функции CreateWindowEx , но вот краткий обзор:

    • Первый параметр позволяет указать некоторые необязательные поведения для окна (например, прозрачные окна). Задайте для этого параметра нулевое значение для поведения по умолчанию.
    • CLASS_NAME — это имя класса окна. Это определяет тип создаваемого окна.
    • Текст окна используется различными способами различными типами окон. Если в окне есть строка заголовка, текст отображается в строке заголовка.
    • Стиль окна — это набор флагов, определяющих внешний вид окна. Константой WS_OVERLAPPEDWINDOW фактически является несколько флагов в сочетании с битовой или. Вместе эти флаги дают окну строку заголовка, границу, системное меню и кнопки "Свернуть " и "Развернуть ". Этот набор флагов является наиболее распространенным стилем окна приложения верхнего уровня.
    • Для положения и размера константная CW_USEDEFAULT означает использование значений по умолчанию.
    • Следующий параметр задает родительское окно или окно владельца для нового окна. Задайте родительский объект, если вы создаете дочернее окно. Для окна верхнего уровня задайте значение NULL.
    • Для окна приложения следующий параметр определяет меню для окна. В этом примере не используется меню, поэтому значение равно NULL.
    • hInstance — это дескриптор экземпляра, описанный ранее. (См . WinMain: точка входа приложения.)
    • Последний параметр — это указатель на произвольные данные типа void*. Это значение можно использовать для передачи структуры данных в процедуру окна. Мы покажем один из возможных способов использования этого параметра в разделе "Управление состоянием приложения".

    Функция CreateWindowEx возвращает дескриптор в новое окно или ноль, если функция завершается ошибкой. Чтобы отобразить окно( то есть сделать окно видимым, передайте дескриптор окна в функцию ShowWindow :

    Параметр hwnd — это дескриптор окна, возвращаемый CreateWindowEx. Параметр nCmdShow можно использовать для свернуть или развернуть окно. Операционная система передает это значение программе через функцию wWinMain .

    Ниже приведен полный код для создания окна. Помните, что WindowProc это по-прежнему просто прямое объявление функции.

    Диалоговые окна используются для отображения сведений и запроса ввода данных от пользователя. Приложение загружает и инициализирует диалоговое окно, обрабатывает введенные пользователем данные и уничтожает диалоговое окно, когда пользователь завершает задачу. Процесс обработки диалоговых окон зависит от того, является ли диалоговое окно модальным или немодальным. Модальное диалоговое окно требует, чтобы пользователь закрыл диалоговое окно перед активацией другого окна в приложении. Однако пользователь может активировать окна в разных приложениях. Диалоговое окно без режима не требует немедленного ответа от пользователя. Это похоже на главное окно, содержащее элементы управления.

    В следующих разделах описывается использование обоих типов диалоговых окон.

    На следующем рисунке показаны выходные данные из предыдущего примера кода:

    message box

    Создание модального диалогового окна

    Модальное диалоговое окно создается с помощью функции DialogBox . Необходимо указать идентификатор или имя ресурса шаблона диалогового окна и указатель на процедуру диалогового окна. Функция DialogBox загружает шаблон, отображает диалоговое окно и обрабатывает все введенные пользователем данные, пока пользователь не закроет диалоговое окно.

    В следующем примере приложение отображает модальное диалоговое окно, когда пользователь нажимает кнопку "Удалить элемент " из меню приложения. Диалоговое окно содержит элемент управления редактированием (в котором пользователь вводит имя элемента) и кнопки "ОК " и " Отмена ". Идентификаторы элементов управления для этих элементов управления — ID_ITEMNAME, IDOK и IDCANCEL соответственно.

    Следующие инструкции создают модальное диалоговое окно. Шаблон диалогового окна является ресурсом в исполняемом файле приложения и содержит идентификатор ресурса DLG_DELETEITEM.

    В этом примере приложение указывает его главное окно в качестве окна владельца диалогового окна. Когда система изначально отображает диалоговое окно, его положение относительно верхнего левого угла клиентской области окна владельца. Приложение использует возвращаемое значение из DialogBox , чтобы определить, следует ли продолжить операцию или отменить ее. Следующие инструкции определяют процедуру диалогового окна.

    Создание бессерверного диалогового окна

    В следующем примере приложение отображает бессерверное диалоговое окно ( если оно еще не отображается), когда пользователь нажимает кнопку "Перейти" из меню приложения. Диалоговое окно содержит элемент управления редактированием, флажок и кнопки "ОК " и " Отмена ". Шаблон диалогового окна — это ресурс в исполняемом файле приложения и имеет идентификатор ресурса DLG_GOTO. Пользователь вводит номер строки в элементе управления редактированием и проверяет флажок, чтобы указать, что номер строки относительно текущей строки. Идентификаторы элементов управления : ID_LINE, ID_ABSREL, IDOK и IDCANCEL.

    В предыдущих инструкциях CreateDialog вызывается, только если hwndGoto не содержит допустимый дескриптор окна. Это гарантирует, что приложение одновременно не отображает два диалоговых окна. Для поддержки этого метода проверки процедура диалога должна иметь значение NULL при уничтожении диалогового окна.

    Следующие инструкции определяют процедуру диалогового окна.

    При обработке WM_COMMAND процедура закрывает диалоговое окно только в том случае, если пользователь нажимает кнопку "Отмена ", то есть кнопку с идентификатором IDCANCEL. Процедура должна вызвать DestroyWindow , чтобы закрыть диалоговое окно без режима. Обратите внимание, что процедура также устанавливает для переменной значение NULL , чтобы другие инструкции, зависящие от этой переменной, работали правильно.

    Инициализация диалогового окна

    В приведенных выше инструкциях процедура использует функцию GetParent для получения дескриптора окна владельца в диалоговом окне. Функция возвращает дескриптор окна владельца в диалоговые окна, а родительский дескриптор окна — дочерним окнам. Так как приложение может создать диалоговое окно без владельца, процедура проверяет возвращенный дескриптор и при необходимости использует функцию GetDesktopWindow для получения дескриптора окна рабочего стола. После вычисления новой позиции процедура использует функцию SetWindowPos для перемещения диалогового окна, указав значение HWND_TOP, чтобы убедиться, что диалоговое окно остается в верхней части окна владельца.

    Перед установкой фокуса ввода процедура проверяет идентификатор элемента управления для фокуса ввода по умолчанию. Система передает дескриптор окна для фокуса ввода по умолчанию в параметре wParam . Функция GetDlgCtrlID возвращает идентификатор элемента управления, определяемого дескриптором окна. Если идентификатор не соответствует правильному идентификатору, процедура использует функцию SetFocus для задания фокуса ввода. Функция GetDlgItem требуется для получения дескриптора окна нужного элемента управления.

    Создание шаблона в памяти

    Приложения иногда адаптируют или изменяют содержимое диалоговых окон в зависимости от текущего состояния обрабатываемых данных. В таких случаях нецелесообразно предоставлять все возможные шаблоны диалоговых окон как ресурсы в исполняемом файле приложения. Но создание шаблонов в памяти дает приложению большую гибкость в адаптации к любым обстоятельствам.

    В шаблоне диалогового окна все символьные строки, такие как диалоговое окно и заголовки кнопок, должны быть строками Юникода. В этом примере функция MultiByteToWideChar используется для создания этих строк Юникода.

    Структуры DLGITEMTEMPLATE в шаблоне диалога должны быть выровнены по границам DWORD . Для выравнивания этих структур в этом примере используется вспомогающая подпрограмма, которая принимает указатель ввода и возвращает ближайший указатель, выровненный по границе DWORD .

    wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали, в том числе анонимно, 28 человек(а).

    Вы никогда не задумывались, как сделаны такие программы, как Paint или калькулятор? Ну, узнайте тогда, как создать простое приложение, используя это пошаговое руководство.

    Изображение с названием 46622 1

    Приобретите компилятор. Компилятор преобразует необработанный исходный код (который вы скоро напишете) в исполняемое приложение. Для целей этого урока приобретите DEV-CPP IDE. Вы можете скачать его здесь here.

    Изображение с названием 46622 2

    Установив DEV-CPP, откройте его. Вам будет представлено окно с текстовой областью, где вы будете писать свой исходный код.

    Изображение с названием 46622 3

    Подготовьтесь к написанию программы для отображения текста в текстовом поле. Перед тем как начать писать исходный текст, имейте в виду, что приложения Win32 не ведут себя таким же образом, как другие языки, такие как JAVA.

    Изображение с названием 46622 4

    В главном окне DEV- CPP перейдите в меню File -> New -> Project. Вам будет предложено другое окно. Выберите небольшую картинку с названием "Windows Application" и установите язык как "C", а не "C++." В текстовом поле, где написано "Name", введите "SimpleProgram". Далее DEV-CPP спросит вас, куда вы хотите сохранить его. Сохраните файл в любом каталоге, но только убедитесь, что сохранили его. Как только закончите с этим, вам будет представлен шаблон на экране источника. Нажмите Ctrl + A, а затем Backspace. Причина, почему мы делаем так, это то, что мы можем начинать заново.

    Изображение с названием 46622 5

    Изображение с названием 46622 6

    Изображение с названием 46622 7

    Изображение с названием 46622 8

    Часть "IDR_THEMENU" определяет ваше меню как THEMENU. Вы можете назвать его, как хотите. Часть BEGIN говорит сама за себя. POPUP "&File" создает категорию нового меню под названием File. Символ & позволяет пользователю вашего приложения нажимать Ctrl + F на клавиатуре и быстро получить доступ к меню. The MENUITEM "E&xit", ID_FILE_EXIT добавляет пункт меню в категорию File. Вы должны, однако, определить пункт меню с помощью ID_FILE_EXIT.

    Изображение с названием 46622 9

    Теперь что касается кнопки. Ваша кнопка будет внутри диалогового окна, поэтому мы должны создать его в первую очередь. Сделайте это, набрав:

    Часть IDD_SIMPLECONTROL определяет ваш диалог. Четыре цифры после слова "DIALOG" определяют х-позицию, у-позицию, ширину и высоту диалогового окна. Не волнуйтесь слишком о части Style на данный момент. Часть MENU IDR_THEMENU помещает наше старое меню в программу. Часть CAPTION говорит сама за себя, как и шрифт. Часть DEFPUSHBUTTON создает нашу кнопку с названием "Hello!" и определим ее, написав ID_HELLO и задав ей координаты х–позиции, у-позиции, ширину и высоту.

    Изображение с названием 46622 10

    Вот и все! Мы закончили с нашим скриптом ресурса. Только еще одно: мы должны присвоить значения всем величинам, которых мы определили в нашем скрипте ресурсов (например, IDR_THEMENU, и т.д.). Сохраните файл ресурса как SimpleProg.rc

    Изображение с названием 46622 11

    Выберите File -> New -> Source File. Add the source file to the current project? -> Yes. Вам будет предложен пустой экран. Для присвоения значений нашим определенным элементам управления мы даем им числа. Не имеет большого значения, каким числам вы присваиваете элементы управления, но они должны быть организованными. Например, не определяйте элемент управления, присвоив ему случайное число (как 062 491 или пр.). Поэтому введите:

    Изображение с названием 46622 12

    Изображение с названием 46622 13

    Изображение с названием 46622 14

    Изображение с названием 46622 15

    Изображение с названием 46622 16

    Изображение с названием 46622 17

    Убедитесь, что ваш SimpleProc предшествует части int WINAPI WINMAIN ! Это важно, если вы хотите, чтобы ваша программа работала.

    Читайте также: