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

Любые курсоры для формы — Функция LoadCursorFromFile

Функция LoadCursorFromFile создает курсор, основанный на данных, содержащихся в файле. Файл определен его именем или идентификатором курсора системы. Функция возвращает значение дескриптора недавно созданного курсора. Файлы, содержащие данные курсора могут быть или в формате курсора (.CUR) или "живого указателя" (.ANI).

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

Подробней об функции LoadCursorFromFile

Imports System.Runtime.InteropServices
Public Class Form1
    <DllImport("user32.dll", EntryPoint:="LoadCursorFromFileW", CharSet:=CharSet.Unicode)> _
    Public Shared Function LoadCursorFromFile(ByVal str As [String]) As IntPtr
    End Function
    Private cursorHandle As IntPtr = IntPtr.Zero
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim OFD As New OpenFileDialog
        With OFD
            .FileName = Nothing
            .Filter = "Cursors|*cur;*ani"
            If .ShowDialog = DialogResult.OK Then
                cursorHandle = LoadCursorFromFile(.FileName)
                Cursor = New Cursor(cursorHandle)
            End If
        End With
    End Sub
End Class

Загрузить проект (внутри курсоры)

Курсор 300x252 Любые курсоры для формы   Функция LoadCursorFromFile

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

Сетевые подключения

Исправил прошлую версию.

Загрузить проект (исправлено)

Если будут пожелания, то могу реализовать график приема.

Такой Сетевые подключения

Podcl 300x158 Сетевые подключения

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

Простая овальная форма

Бывают различные ситуации, когда обычный вид формы не подходит для поставленных целей, так что смотрим на простом примере, как сделать овальную форму не используя WIN API.

Imports System.Drawing.Drawing2D
Public Class Form1
    Public Sub New()
        InitializeComponent()
        Me.FormBorderStyle = FormBorderStyle.None
        Me.BackColor = Color.Black
    End Sub
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim g As New GraphicsPath
        Dim gr As Graphics = Me.CreateGraphics()
        Dim Frm As Rectangle = Me.ClientRectangle
        Frm.Inflate(-1, -1)
        g.AddEllipse(Frm)
        Me.Region = New Region(g)
        gr.Dispose()
    End Sub
End Class

Снимок 23 11 12 54 12 300x242 Простая овальная форма

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

UAC: с чем едят?

Привет всем!

Здесь я хочу немного рассказать об UAC и о том как же взаимодействовать с ним в NET'е.

Для начала давайте вспомним что же такое этот UAC:

Контроль учётных записей пользователей (англ. User Account Control, UAC) — компонент операционных систем Microsoft Windows, впервые появившийся в Windows Vista. Этот компонент запрашивает подтверждение действий, требующих прав администратора, в целях защиты от несанкционированного использования компьютера.

Как видно из цитаты в Окнах без UAC никуда. И дабы не отставать от моды давайте рассмотрим пару примеров написанных на VB.NET.

Функция проверки на наличие прав Администратора у программы:

Private Function CheckAdmin() As Boolean
    Dim wp As New System.Security.Principal.WindowsPrincipal(System.Security.Principal.WindowsIdentity.GetCurrent())
    Return wp.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator)
End Function

Запуск программы с правами Администратора (с UAC, то бишь вылетит вопрошающие окно):

Dim startInfo As New ProcessStartInfo(Application.ExecutablePath)
startInfo.UseShellExecute = True
startInfo.WorkingDirectory = Environment.CurrentDirectory
startInfo.Verb = "runas"

Try
    Process.Start(startInfo)
Catch ex As System.ComponentModel.Win32Exception
    MsgBox(ex.Message)
End Try

Добавить на Button красивый щит, как бы говоря конечному пользователю "У нас всё серьёзно!":

'Импорт:
Private Declare Auto Function SendMessage Lib "user32.dll" _
         (ByVal hwnd As IntPtr, _
          ByVal msg As UInteger, _
          ByVal wParam As UInteger, _
          ByVal lParam As UInteger) As UInteger

'В процедуру/функцию/куда угодно:
ИМЯ_КНОПКИ.FlatStyle = FlatStyle.System
SendMessage(ИМЯ_КНОПКИ.Handle, 5644, 0, &HFFFFFFFFUI)

Вот так это выглядит: 1920131433 UAC: с чем едят?

Статью и примеры для вас подготовил Gemorg. Прошу любить и жаловать)

P.S. Должно работать на Окнах старше XP (не включая).

P.P.S. Тестировалось только на Win 8.

  Метки: ,
  Gemorg
  Просмотров: 2 505
  Запись опубликована в 20:28

Решение мат. выражений средствами .NET

Решение.NET  Решение мат. выражений средствами .NET

До этого мы разбирали пример, решения выражения с помощью метода Eval из VBS, а сегодня разберем, как средствами .NET вычислить результат строки (выражения)

Решение.NET.zip

Imports System.CodeDom.Compiler
Imports System.Reflection
Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Label1.Text = "Ответ: " & Решить(TextBox1.Text)
    End Sub
    Public Function Решить(ByVal выражение As String) As String
        Dim myCode As CodeDomProvider = CodeDomProvider.CreateProvider("VB")
        Dim myPar As New CompilerParameters()
        'формируем виртуальный класс, в котором будет производиться расчет
        Dim myCodeBody As New System.Text.StringBuilder()
        myCodeBody.AppendLine("Public Class MyCalculator")
        myCodeBody.AppendLine("Public Function Calc() As Double")
        'TextBox1.Text.ToLower().Replace(«x», TextBox2.Text) — меняем икс в формуле (TextBox1) на число указанное в TextBox2
        '.Replace(«,», «.») — меняем запятые на точки, т.к. в VB в качестве десятичного разделителя используются точки
        myCodeBody.AppendLine(String.Format("Return {0}", выражение))
        myCodeBody.AppendLine("End Function")
        myCodeBody.AppendLine("End Class")
        'компилируем
        Dim myResult As CompilerResults = myCode.CompileAssemblyFromSource(myPar, myCodeBody.ToString())
        If myResult.Errors.HasErrors Then
            'какие-то ошибки
            For i As Integer = 0 To myResult.Errors.Count - 1
                If myResult.Errors(i).ErrorText = "Ожидалось выражение." Then
                    MsgBox(myResult.Errors(i).ErrorText, MsgBoxStyle.Critical, "Ошибка")
                End If
            Next
            Return "Ошибка!"
        End If
        'ошибок нет, выдергиваем наш класс
        Dim myAsm As Assembly = myResult.CompiledAssembly()
        Dim myCls As Object = myAsm.CreateInstance("MyCalculator", True)
        'выводим результат
        Return myCls.Calc().ToString
    End Function
End Class
  Метки: , , ,
  Евгений
  Просмотров: 2 737
  Запись опубликована в 09:13

Страниц:«1...6789101112...24»