Просмотр "Уроки Visual Basic.NET"

SetParent — дочернее окно в свое окно

В данном примере, мы откроем дочернее окно в своем окне и в этом нам поможет SetParent

Функция SetParent заменяет родительское окно заданного дочернего окна.

Public Class Form1
    Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Integer, ByVal hWndNewParent As Integer) As Integer
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim OPF As New OpenFileDialog
        Dim prc As New Process
        OPF.Filter = ".EXE|*.exe"
        If OPF.ShowDialog = DialogResult.OK Then
            WindowState = FormWindowState.Maximized
            prc = Process.Start(OPF.FileName) ' запускаем процесс
        End If
        prc.WaitForExit(1000) ' маленькая задержка для появления окна, хоть WaitForExit совсем не для этой цели
        SetParent(prc.MainWindowHandle.ToInt32, Me.Handle.ToInt32) ' приминяем
    End Sub
End Class

setparent 438x350 SetParent   дочернее окно в свое окно

Подробнее »

  Метки: , , , ,
  Евгений
  Просмотров: 7 048
  Запись опубликована в 21:02

Изменение фона

А точнее, изменение фона у экрана входа в Windows 7, экрана блокировки, экрана смены пользователя, но вообщем Вы меня поняли, а если кто не понял, то вот:

winstart1 300x204 Изменение фона

Процесс смены фона вручную описан в этом источнике, но нас интересует, как реализовать это программным способом.

Подробнее »

  Метки: , , , ,
  Евгений
  Просмотров: 5 026
  Запись опубликована в 11:18

Уровень заряда батареи на ноутбуке

Как узнать уровень заряда батареи на ноутбуке? Да, довольно просто!

На помощь приходит API функция - GetSystemPowerStatus

С помощью данной функции, можно определить:

  • уровень заряда аккумулятора (батареи в ноутбуке или ИБП)
  • подключен ли к сети:
    • 0 - не подключен к сети
    • 1 - подключен к сети
    • 255 - неизвестно
  • заряд батареи (высокий, нормальный, низкий и т.д)
  • время работы от батареи
  • максимальное время работы от батареи

battery Уровень заряда батареи на ноутбуке

Подробнее »

  Метки: , , , , , ,
  Евгений
  Просмотров: 13 530
  Запись опубликована в 07:55

XML-комментарии

Каждый XML-комментарий в C#, начинается с трех слэшей «///», а в Visual Basic.NET с трех одиночных кавычек (апострофов) «' ' '». В C#, обычные комментарии начинаются с двух слэшей, а третий слэш говорит синтаксическому анализатору, что это XML-комментарий. В барсике, аналогично, только обычный комментарий начинается с одной, одиночной кавычки.

Для чего же нужны XML-комментарии? 

Парсить XML-файл настоящий кайф, то бишь, ничего сложного в этом нет, так вот, одним из главных особенностей XML-комментариев является создание документации прямо из исходных файлов проекта, а так же документация самого кода - классы, процедуры, модули, структуры, функций, их аргументы (параметры). С помощью синтаксического анализатора (parser'a) можно раскрывать теги XML-комментария, внутри которого, находится дополнительная информация.

Подробнее »

  Метки: , , ,
  Евгений
  Просмотров: 20 360
  Запись опубликована в 08:52

Запрет отпускания элемента

Нашел опять давний проект, который писал для форума. Смысл заключается в том, чтобы перетащить объект через другой, но отпускать его - нельзя. Решил поделиться. Ничего сложного нет.

peretask Запрет отпускания элемента

Загрузить проект

  Метки: ,
  Евгений
  Просмотров: 3 326
  Запись опубликована в 07:31

Вычисление дискриминанта и его корней

Консольный вариант вычисления дискриминанта и его корней на Visual Basic.NET и C#

Формовый вариант

Module Module1
    Sub Main()
        Disc() 'при запуске, вызываем процедуру ↓
    End Sub
    Sub Disc()
        Dim a, b, c, x1, x2, D As Double
        'ввод значений
        Console.WriteLine("Введите значение переменной A")
        a = Console.ReadLine()
        Console.WriteLine("Введите значение переменной B")
        b = Console.ReadLine
        Console.WriteLine("Введите значение переменной C")
        c = Console.ReadLine()
        D = b ^ 2 - (4 * a * c) 'вычисление дискриминанта
        Console.WriteLine("Дискриминант = " & D)
        'два корня
        If D > 0 Then
            Console.WriteLine("Два корня:")
            x1 = (-b + Math.Sqrt(D)) / (2 * a)
            x2 = (-b - Math.Sqrt(D)) / (2 * a)
            Console.WriteLine("X1 = " & x1 & vbNewLine & "X2 = " & x2)
            'один корень
        ElseIf D = 0 Then
            Console.WriteLine("Один корень:")
            x1 = -b / (2 * a)
            Console.WriteLine("X = " & x1)
            'нет корней
        Else
            Console.WriteLine("Нет корней")
        End If
        'сообщение, если захотим решить новое уравнение - нужно нажать клавишу Enter
        Console.WriteLine("Решить новое? Нажмите клавишу Enter...")
        Dim k As ConsoleKeyInfo = Console.ReadKey
        If k.Key = ConsoleKey.Enter Then
            Console.Clear()
            Disc()
        End If
    End Sub
End Module

discr 300x178 Вычисление дискриминанта и его корней

Дискриминант.zip

  Метки: , ,
  Евгений
  Просмотров: 7 757
  Запись опубликована в 12:40

Завершение работы, перезагрузка, блокировка компьютера

В продолжение к

Хотелось бы рассказать еще про один способ завершения работы компьютера.

Изначально хотел написать про API функцию ExitWindowsEx, но нашел более адекватный вариант с помощью WMI.

Windows Management Instrumentation (WMI) в дословном переводе — это инструментарий управления Windows. Если говорить более развернутo, то WMI — это одна из базовых технологий для централизованного управления и слежения за работой различных частей компьютерной инфраструктуры под управлением платформы Windows.                                                   https://ru.wikipedia.org/wiki/WMI 

Первое, что мы сделаем, это добавим ссылку на System.Management, для этого нажимаем Проект->Добавить ссылку

sysman 300x238 Завершение работы, перезагрузка, блокировка компьютера

Подробнее »

  Метки: , , , , ,
  Евгений
  Просмотров: 7 515
  Запись опубликована в 15:33

Скриншот активного окна

Сегодня попробуем написать простой скриншотер активных окон. Работать будем, практически с одним Windows API. Ииспользуем такие функции:

  • RegisterHotKey - определяем (регистрируем) глобальную клавишу
  • UnregisterHotKey - освобождаем клавишу
  • GetForegroundWindow - функция возвращает Handle активного окна
  • GetWindowRect - узнаем размеры окна
  • RECT - структура, которую требует GetWindowRect для извлечения размера окна

Приступаем

Создаем новый проект, на форму кидаем кнопку.

img form Скриншот активного окна

Подробнее »

  Метки: ,
  Евгений
  Просмотров: 66 315
  Запись опубликована в 16:42

Скрыть курсор — функция ShowCursor (user32)

Функция ShowCursor показывает или скрывает курсор мыши.

  • True - показать курсор
  • False - скрыть курсор

Курсор невидно только в пределах формы.

Imports System.Runtime.InteropServices
Imports System.Threading
Public Class Form1
    <DllImport("user32.dll", CharSet:=CharSet.Auto, ExactSpelling:=True)> _
Public Shared Function ShowCursor(ByVal bShow As Boolean) As Integer
    End Function
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ShowCursor(False) ' Скрываем курсор
        Thread.Sleep(3000) ' Ждем 3с..
        ShowCursor(True) ' Показываем курсор
    End Sub
End Class

Подробнее »

  Метки: , ,
  Евгений
  Просмотров: 16 454
  Запись опубликована в 10:12

Растягиваем форму без стиля

Пример, как растягивать форму за какой-либо объект. Добавляем Label, пришвартовываем его к нижнему правовому углу.

Public Class Form1
    Dim pt As Point
    Private Sub Label1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label1.MouseDown
        pt = New Point(e.X, e.Y)
    End Sub
    Private Sub Label1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label1.MouseMove
        If e.Button = MouseButtons.Left Then
            Size = New Size(Width + (e.X - pt.X), Height + (e.Y - pt.Y))
        End If
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        FormBorderStyle = FormBorderStyle.None
        Label1.Anchor = AnchorStyles.Bottom Or AnchorStyles.Right
    End Sub
End Class

form gif Растягиваем форму без стиля

Растягиваем форму C#

  Метки: , ,
  Евгений
  Просмотров: 4 427
  Запись опубликована в 12:25

Страницы:1234567...12»