Уроки C# - WinAPI + свой контрол (2 в 1)

Sdílet
Vložit
  • čas přidán 6. 09. 2024
  • Донаты ➜ t.me/win10twea...
    Эксклюзив для спонсоров ➜ / xpuct
    Если недоступна спонсорка ➜ boosty.to/xpuct
    #Уроки #WinAPI #WindowsAPI

Komentáře • 82

  • @XpucT
    @XpucT  Před 3 lety +20

    Как открыть Блокнот и вставить в него текст:
    // Импорт
    [DllImport("user32.dll", EntryPoint = "FindWindowEx")]
    public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
    // Импорт
    [DllImport("User32.dll")]
    public static extern int SendMessage(IntPtr hWnd, int uMsg, int wParam, string lParam);
    // Метод
    public void Notepad(string line)
    {
    var notepad = Process.Start("notepad.exe");
    notepad.WaitForInputIdle();
    SendMessage(FindWindowEx(notepad.MainWindowHandle, new IntPtr(0), "Edit", null), 0x000C, 0, line);
    }
    // Вызываем
    Notepad("Важный текст");

  • @user-pi3em2ke2l
    @user-pi3em2ke2l Před 24 dny +1

    в вёрстке просто дабавить элементу border-radius: 10px; а в по видео можно 2 ракеты построить)))

  • @MathPTU
    @MathPTU Před 4 dny

    насколько я знаю, что сначала, чтобы понять ВинАпи нужно изучить Операционные Системы, а потом будет как то понятно как там все взаимодействует

  • @user-dk4ml3ig9z
    @user-dk4ml3ig9z Před 3 lety +1

    Очень интересные темы видео! Не на многих каналах такое есть. Спасибо

  • @aleksesmotsar1519
    @aleksesmotsar1519 Před 3 lety +4

    Пошла жесть, пьём мексидол и за работу!

    • @aleksesmotsar1519
      @aleksesmotsar1519 Před 3 lety

      @@MetaJamm Видимо, мы с вами живём на разных западах. В моей стране атропины применяются массово, а польза янтарной кислоты ни у кого не вызывает сомнений или вопросов. Но всё равно спасибо за развёрнутый комментарий. Не поленились ведь.

  • @Andymit
    @Andymit Před 3 lety +6

    Либо я не так понял пояснение про вызов base.OnPaint(e), либо Вы не правильно объяснили. Ключевое слово base используется для доступа к членам базового класса. То есть в нашем случае этой строчкой мы вызываем метод базового класса Button, а не саму себя вызываем..

  • @oleg_kishinskii
    @oleg_kishinskii Před 2 lety +1

    О! Нашел наконец-то Весь CZcams перерыл :)

  • @HeyWhoTheFuckAreYou
    @HeyWhoTheFuckAreYou Před 3 lety +4

    Оооо, я через функции WinAPI делал кликер который не использовал мышку, а делал фейковые нажатия в программах.

    • @BlendLogDev
      @BlendLogDev Před 3 lety +1

      Программа "симулятор работы сотрудника на c#"

    • @HeyWhoTheFuckAreYou
      @HeyWhoTheFuckAreYou Před 3 lety

      @@BlendLogDev та не ботоводство типо :D

    • @blick3
      @blick3 Před 2 lety

      Как-то можно с тобой связаться?

  • @konstantanter
    @konstantanter Před 3 lety +2

    Тоже планирую делать свои уроки. Есть библиотека платная с уже нарисованными контролами.
    Мы (я и какой то ютубер) делали свою бесплатную которая рисовала такие же но только бесплатные
    1. У контрола должны быть свои методы которые можно менять в свойствах
    И тд и др.
    Спасибо за урок. Но я делал это

  • @mr.alexhackchannel7368

    7:12 IntPtr hWnd это не void. Он принимает Handle окна, а точнее указатель на него. Чтобы передать функции родителя. То есть, если говорить коротко, функция MessageBox будет знать кто родитель у неё и если передать Handle текущей формы Form1, то будет отображаться как ShowDialog и не даст клацнуть по родительской форме.

    • @XpucT
      @XpucT  Před rokem

      Ниже уже обсуждалось, но за лайк самому себе - это зачёт 👍

  • @skarabeydm
    @skarabeydm Před 3 lety +1

    Почему-то когда я попробовал перетащить эту кнопку в прогу, вылезло сообщение:
    *"Не удалось загрузить элемент [название элемента]. Он будет удален из набора инструментов."*
    И, собсна, кнопка удалилась из Панели элементов.
    Проблему решила кнопка *Сборка > Собрать решение, или Ctrl + Shift + B*

  • @acer6788
    @acer6788 Před rokem

    Столкнулся с такой проблемой, что контрл-кнопку проект не видел, для того чтобы увидел нужно клас сделать public

  • @BlendLogDev
    @BlendLogDev Před 3 lety +3

    Так получается можно откуда угодно достучаться до любого окна, виртуально двигать мышкой, нажимать кнопки сделав такой примитивный "симулятор нахождения за ПК"?)))

    • @XpucT
      @XpucT  Před 3 lety +1

      Совершенно верно =)

  • @Razor_Zet
    @Razor_Zet Před 7 měsíci

    Столкнулся с такой проблемой: код из видео строит кнопку с обрубленными углами, то есть она не чётко закруглённая, а пропадают некоторые пиксели у закругления. Можно добавить каике-то методы, чтобы отрисовка была более качественной без искажений?

    • @redfox7193
      @redfox7193 Před 2 měsíci

      По идее можно использовать элемент PictureBox. Топорно, но можно сделать как нужно.

  • @maxekonomist1392
    @maxekonomist1392 Před 10 měsíci

    может можно небольшой курс по api? )

  • @user-ki4mi6tc8v
    @user-ki4mi6tc8v Před 2 lety +1

    Спасибо)

  • @ori-d
    @ori-d Před rokem +1

    czcams.com/video/KYq2WF3otxc/video.html Если ты работаешь с неуправляемой памятью, я тебя поздравляю, ты сделал утечку памяти! Продолжай учить людей делать утечки памяти!

    • @XpucT
      @XpucT  Před rokem

      Старался оставить только то, что нужно. Сейчас вот посмотрел и да, стоило оставить удаление объекта.
      Однако, в данном кейсе не стоило делать замечание настолько драматизированно.
      Замечания можно делать, не корча из себя гуру кода 👍

  • @thomasaminer
    @thomasaminer Před 3 měsíci +1

    Ракетостроение)

  • @invokevirtual.
    @invokevirtual. Před 2 lety +1

    А можно ли сделать много таких утилок, ну типо методов с рисованием в 1 классе? чтобы там были например методы - { "RoundedButton", "RoundeTextBox", RoundedProgressBar" }; ?

    • @XpucT
      @XpucT  Před 2 lety

      Да, сколько угодно.

    • @invokevirtual.
      @invokevirtual. Před 2 lety +1

      @@XpucT спасибо.

  • @UFO26
    @UFO26 Před rokem

    19:38 А как сделать чтобы в свойствах макета пользовательской кнопки появились две переменные: "nWidthEllipse/nHeightEllipse" ? Чтобы величину скругления выбирать не программно, а кликом мыши.

    • @XpucT
      @XpucT  Před rokem

      Привязать переменную к UI. Обо всём об этом на канале всё есть, если смотреть последовательно:
      czcams.com/play/PL05SB3rBbUsraqiEUeS70RKhVAu97nGeb.html

  • @user-wu-tang
    @user-wu-tang Před rokem

    Привет ув. Хачатур
    закругление к какому контролу можно еще применить?
    Например для кнопки, да круто смотрится. У кнопки можно выставить FlatStyle и BorderStyle, и только в этом случае смотрится красиво, если эти свойства не выставить, то даже на кнопке смотрится топорно
    Поглядел я на свойство формы, textBox а там таких свойств нет (FlatStyle и BorderStyle), а если например хочется закруглить textBox , что делать? Другой метод, или всё же можно этим методом.

    • @XpucT
      @XpucT  Před rokem

      Привет 🖐
      Не пробовал. Как найду время попробую. Отметил себе ✍🏼

  • @ZiyadIbrahimov
    @ZiyadIbrahimov Před 3 lety +1

    Спасибо!!!!

  • @drakula_6175
    @drakula_6175 Před 3 lety

    Здравствуй, есть вопрос по поводу MessageBox. При заполнении элемента Combobox данными через ItemSourse не срабатывает без добавления сточки MessageBox.Show("Текст") перед Combobox.SelectItem= Объект.Поле . Если MessageBox добавить , то элементы появляются в приложении, если нету MessageBox - не появляется(Пустой Combobox). Это баг такой или магия MessageBox???

  • @loger_1328
    @loger_1328 Před 3 lety +1

    Красавчик! Очень полезно и понятно

  • @user-gy2jp9fd5e
    @user-gy2jp9fd5e Před 2 lety +1

    Добрый день, уважаемый автор канала. Подскажите пожалуйста, как добавить на панель элементов вкладку с элементами проекта??

    • @XpucT
      @XpucT  Před 2 lety

      Доброе утро ☀
      Попробуйте _Собрать решение_ и просто перезапустить проект.

    • @user-gy2jp9fd5e
      @user-gy2jp9fd5e Před 2 lety

      @@XpucT, к сожалению - не помогло... Панель элементов наотрез отказывает отображать мои компоненты. Может, дело в настройках среды?

    • @XpucT
      @XpucT  Před 2 lety

      @@user-gy2jp9fd5e нет, это глюк. Постарайся в точности повторить действия из видео. Не торопясь.

    • @user-gy2jp9fd5e
      @user-gy2jp9fd5e Před 2 lety

      @@XpucT Перезапуск студии, создание нового проекта и повторение действий не дали должного результата... Очистка и сборка решения также не помогла. Панель элементов не хочет отображать вкладку с созданным кастомным компонентом.

  • @rKvinty
    @rKvinty Před 3 lety +1

    10:41 А что это за выделение крутое?

    • @ltlo9284
      @ltlo9284 Před 3 lety +1

      Выделяешь через alt + лкм

  • @alexdrake913
    @alexdrake913 Před 3 lety +3

    Спасибо за урок! Можете сделать видео "Работа с БД?" А именно mysql?

    • @XpucT
      @XpucT  Před 3 lety

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

    • @alexdrake913
      @alexdrake913 Před 3 lety +2

      @@XpucT даже если для спонсоров, было бы очень интересно посмотреть урок именно от Вас

  • @padla6304
    @padla6304 Před rokem

    лучше нет квадратной кнопки
    ведь это кнопка
    а не жопка
    )))

  • @eir7775
    @eir7775 Před 3 lety +1

    А можно сделать также, но на wpf?

    • @XpucT
      @XpucT  Před 3 lety

      Можно. Там то же самое.

    • @eir7775
      @eir7775 Před 3 lety

      @@XpucT OnPaint говорит не существует, а про регион говорит мол он является типом но используется как переменная

  • @RaptorTMP
    @RaptorTMP Před 3 lety +1

    Привет Хачатур.
    Открыл в интернете ещё одно направление для ракетостроения, это написание служб для Windows.
    Там такое творят я аж в осадок выпал. Плюнул на всё, сделал с костылями, но по-своему. Как мне показалось, что это всё же лучше того, что предлагают интернет гуру.
    Пара вопросов: есть ли реально короткие пути в написании служб и можно ли их отлаживать прямо в дабагере IDE без сатанизма с предварительной проверкой в консольном проекте?
    Надеюсь, тема интересная ты и снимешь об этом видео. Спасибо)

    • @XpucT
      @XpucT  Před 3 lety +1

      Привет 🖐
      Я создаю службу в 1 строку =)))
      Думаешь шучу? Нет =))
      Создаю, запускаю и удаляю в 1 строку.
      Но если говорить о сложных комбинациях, то всё равно строк немного.
      Ты не первый, кто про службы спрашивает. Взял на заметку ;)

    • @RaptorTMP
      @RaptorTMP Před 3 lety +1

      @@XpucT Круто, буду ждать)

  • @caiiiook6858
    @caiiiook6858 Před 2 měsíci

    А ГДЕ ВИДЕО ПО СОЗДАНИЮ ДЛЛ ?

  • @padla6304
    @padla6304 Před rokem

    используйте WPF и не ломайте себе голову товарисчи

  • @3x__
    @3x__ Před 2 lety +1

    👍

  • @redtayron6390
    @redtayron6390 Před 3 lety +1

    Здравствуй Хачатур, Спасибо за очередной увлекательный урок, у меня один вопросик, я сделал все так, как у тебя в видео, но у меня вылетает "Ошибка CS0426 Имя типа "MyControll" не существует в типе "Form1"" как это исправить, буду благодарен за подсказку.)

    • @XpucT
      @XpucT  Před 3 lety +1

      Привет 🖐
      Ответ очевиден. Проблема в имени MyControll.
      Внимательно смотри кто откуда наследуется и как называешь всё ;)
      Половину Ты видимо по уроку сделал, а половину по-своему =)

    • @redtayron6390
      @redtayron6390 Před 3 lety +1

      @@XpucT Спасибо за совет ))

  • @donatello752
    @donatello752 Před 3 lety +2

    Вот оно средство от депрессии.

  • @builderNITRO
    @builderNITRO Před 3 lety +2

    Первый

  • @lisiger69
    @lisiger69 Před 2 lety +1

    А можно ли с других приложений считывать данные? Например « Какой-то приложение достает данные из базы и мне надо это заполнить онлайн и в форму». Мне постоянно приходиться Ctrl+C и Ctrl+V. Доступ к базе не дают.

    • @XpucT
      @XpucT  Před 2 lety +1

      Вообще можно. Но это нужно изучать injecting.