반응형

* VBNET 윈도우 폼(Window Form) - Control, Shift, Alt 키 조합 키 입력 받기 (단축키) 예제...

 

전체 소스 코드

Form1.vb

 

 

= 첫번째 방법

- Form KeyDown 이벤트를 받아서 구현 해 주는 방법

- Form  속성 -> keyPreview 를 true를 해 줍니다.

 

 

Public Class Form1

    Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        If e.Modifiers = Keys.Control Then
            Select Case e.KeyCode
                Case Keys.S
                    'Control + S 조합 임
                    MessageBox.Show("Control + S 키를 입력 하였습니다.", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)

            End Select
        ElseIf e.Modifiers = Keys.Alt Then
            Select Case e.KeyCode
                Case Keys.Enter
                    'Alt + Enter 조합 임
                    MessageBox.Show("Alt + Enter 키를 입력 하였습니다.", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)

            End Select
        Else
            Select Case e.KeyCode
                Case Keys.F5
                    MessageBox.Show("F5 키를 입력 하였습니다.", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)

            End Select
        End If
    End Sub


End Class

 

= 두번째 방법

 

Public Class Form1

    Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean

        Dim key As Keys = keyData And Not (Keys.Shift Or Keys.Control Or Keys.Alt)

        Select Case key
            Case Keys.S

                If (keyData And Keys.Control) <> 0 Then
                    MessageBox.Show("Control + S 키를 입력 하였습니다.", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
                End If

                Exit Select
            Case Keys.F5
                MessageBox.Show("F5 키를 입력 하였습니다.", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
                Exit Select
            Case Keys.Tab

                If (keyData And Keys.Shift) <> 0 Then
                    MessageBox.Show("Shift + Tab 키를 입력 하였습니다.", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
                End If

                Exit Select
            Case Keys.Enter

                If (keyData And Keys.Alt) <> 0 Then
                    MessageBox.Show("Alt + Enter 키를 입력 하였습니다.", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
                End If

                Exit Select
        End Select



        Return MyBase.ProcessCmdKey(msg, keyData)
    End Function

End Class

*예제 결과

 

 

 

https://kdsoft-zeros.tistory.com/147

 

[C#] 윈도우 폼(Window Form) - Control, Shift , Alt 키 조합 키 입력 받기 (단축키)

* C# 윈도우 폼(Window Form) - Control, Shift, Alt 키 조합 키 입력 받기 (단축키) 예제... 전체 소스 코드 Form1.cs = 첫번째 방법 using System; using System.Collections.Generic; using System.ComponentM..

kdsoft-zeros.tistory.com

 

반응형
반응형

* VBNET 윈도우 폼(Window Form) 투명도(Opacity) 조절 하기

 

Me.Opacity  = 1 ; // 100%

                    0.5 // 50% 

 

Opacity = double 형값

 



반응형
반응형

* VBNET API를 이용한 NetworkNetwork MacAddress (네트워크 맥 주소 구하기) 예제...

 

 

전체 소스 코드

Form1.vb

 

Public Class Form1


    Declare Function SendARP Lib "iphlpapi.dll" (ByVal DestIP As UInt32, ByVal SrcIP As UInt32, _
      ByVal pMacAddr As Byte(), ByRef PhyAddrLen As Integer) As Integer

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click

        MessageBox.Show(Get_MACAddress("192.168.0.6"))

    End Sub


    Private Function Get_MACAddress(ByVal strIPAddress As String) As String
        Dim ip As Net.IPAddress = Net.IPAddress.Parse(strIPAddress)

        Dim btIPArray() As Byte = New Byte(6) {}

        Dim uiIP As System.UInt32 = CType(btIPArray.Length, System.UInt32)

        Dim iIPValue As Integer = BitConverter.ToInt32(ip.GetAddressBytes(), 0)

        Dim iReturnCode As Integer = SendARP(iIPValue, 0, btIPArray, uiIP)

        If iReturnCode <> 0 Then
            Return ""
        End If

        Dim strIP(Convert.ToInt32(uiIP)) As String

        Dim i As Integer
        For i = 0 To uiIP - 1 Step i + 1
            strIP(i) = btIPArray(i).ToString("X2")
        Next
        Dim strMacAddress As String = String.Join(":", strIP)
        Return strMacAddress
    End Function

End Class

*예제 결과 확인

 

 

어댑터 설정 변경 - > 해당 어댑터 더블 클릭 - > 자세히 버튼을 클릭 하여 맥주소를 확인 



https://kdsoft-zeros.tistory.com/143

 

[C#] IP MacAddress (IP 맥 주소 구하기)

* C# IP MacAddress 구하기 예제... 전체 소스 코드 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; us..

kdsoft-zeros.tistory.com

 

반응형
반응형

* C# API 를 이용해 해당 윈도우 폼(Window Form) 을 찾아서 최상위 윈도우로 포커스(Focus) 맞추기 예제...

 

메인 화면

 

전체 소스 코드

Form1.vb

 

Imports System.Runtime.InteropServices

Public Class Form1

    'API 선언...
    <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
    Private Shared Function FindWindow( _
     ByVal lpClassName As String, _
     ByVal lpWindowName As String) As IntPtr
    End Function

    <DllImport("user32.dll")> _
    Private Shared Function SetForegroundWindow(ByVal hWnd As IntPtr) As <MarshalAs(UnmanagedType.Bool)> Boolean
    End Function

    <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
     Private Shared Function ShowWindowAsync(ByVal hwnd As IntPtr, ByVal nCmdShow As Integer) As Boolean
    End Function

    '윈도우 상태...
    Const SHOWHIDE As Integer = 0
    Const SHOWNORMAL As Integer = 1
    Const SHOWMINIMIZED As Integer = 2
    Const SHOWMAXIMIZED As Integer = 3

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click

        Dim ipHandle As IntPtr = FindWindow(Nothing, textBox1.Text)

        '해당 윈도우를 찾았으면...
        If Not ipHandle.Equals(IntPtr.Zero) Then

            '해당 윈도우가 최소화 되어 있으면 노멀로 변경...
            ShowWindowAsync(ipHandle, SHOWNORMAL)

            '해당 윈도우에 포커스를 줘서 최상위로 올리기...
            SetForegroundWindow(ipHandle)

        End If

    End Sub

End Class

*예제 결과

 

결과 화면

 

https://kdsoft-zeros.tistory.com/108

 

[VBNET] [API] 윈도우 창 찾기 (Window Form Search)

* VBNET API 윈도우 (Window) 창 찾기 예제... 전체 소스 코드 Form1.vb Imports System.Runtime.InteropServices Public Class Form1 <dllimport("user32.dll", setlasterror:="True," charset:="CharSet.Auto)"> _..</dllimport("user32.dll",>

kdsoft-zeros.tistory.com

 

반응형
반응형

* VBNET 윈도우 폼(Window Form) 포커스(Focus) 가 가지 않게 하기 예제...

 

메인화면

 

전체 소스 코드

Form1.vb

 

Imports System.Runtime.InteropServices

Public Class Form1

    <DllImport("user32.dll")> _
Private Shared Sub keybd_event(ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As UInteger, ByVal dwExtraInfo As Integer)
    End Sub

    Dim WS_NOACTIVE As Long = 134217728

    Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
        Get
            Dim cp As CreateParams = MyBase.CreateParams
            cp.ExStyle = cp.ExStyle Or WS_NOACTIVE
            Return cp
        End Get
    End Property

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        keybd_event(Convert.ToByte(Keys.W), 0, 0, 0)        'KeyDown 
        keybd_event(Convert.ToByte(Keys.W), 0, &H2, 0)      'KeyUp

    End Sub
End Class

 

위 소스와 같이 keybd_event API 함수를 이용해 키보드를 입력한 효과를 나타 낼 수 있습니다.

 

3번째 전달인자     0 : 키를 눌렀을 때 효과

                    &H2 : 키가 올라왔을 때 효과

 

이므로 두개를 합치면 키를 눌렀다 땠다 하는 효과를 볼 수 있습니다.

 

 

*예제 결과

 

보통 윈도우 폼에서 버튼을 클릭을 하게 되면 마우스 커서 즉 포커스가 윈도우 폼으로 이동 하게 되는데 아래의 그림과 같이 버튼을 클릭 하여도 마우스 커서 즉 포커스가 윈도우 폼으로 이동 되지 않는 다는 것을 볼 수 있습니다. 

 

 

 

반응형
반응형

* VBNET Excel File Print (엑셀 파일 프린트) 예제...

 

 

- 인쇄할 엑셀 파일 추가 하기...

(Excel File 추가하는 것은 C# 과 VBNET 이 다를게 없으므로 기존 C# 에 작성된 그림을 가져옴)

프로젝트 클릭 -> 마우스 오른쪽 클릭 -> 추가 -> 기존 항목 선택

위 그림과 같이 모든 파일 선택 합니다. 기본 Visual VB 파일만 열리게 되어 있는데 모든 파일을 선택 하여 프로젝트에 인쇄할 엑셀 파일을 추가 해 줍니다.

 

예제를 위해 만들어 둔 엑셀 파일을 프로젝트에 추가 해서 위 그림과 같이 출력 디렉터리로 복사 => 항상 복사

로 두면 빌드 시 Print.xls 파일도 같이 따라 오게 됩니다. 혹 참조에 추가된 DLL 파일 또한 출력 디렉터리로 복사를

항상 복사로 해 두시면 빌드 시 해당 DLL 파일도 같이 EXE 파일이 만들어 지는 곳으로 따라 오게 됩니다.

엑셀 파일 내용

 

전체 소스 코드

Form1.vb

 

Imports System.IO
Imports Excel = Microsoft.Office.Interop.Excel

Public Class Form1

    '빌드 후 EXE 파일이 생성 되는 곳
    Dim strLocalPath As String = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf("\"))

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click

        '엑셀 사용을 위한 변수...
        Dim ExcelApp As Excel.Application = Nothing
        Dim wb As Excel.Workbook = Nothing
        Dim ws As Excel.Worksheet = Nothing

        Dim strExcelFile = strLocalPath + "\Print.xls"

        Try
            '해당 엑셀 파일이 존재 하지 않는 다면...
            If Not File.Exists(strExcelFile) Then
                Return
            End If

            ExcelApp = New Excel.Application()

            '엑셀 파일 오픈...
            wb = ExcelApp.Workbooks.Open(strExcelFile)

            '첫번째 시트 사용
            ws = CType(wb.Worksheets("Sheet1"), Excel.Worksheet)

            'col 1 : A 열 부터 시작
            ws.Cells(3, 3) = "12345"                            '번호
            ws.Cells(3, 7) = "테스트"                           '이름

            ws.Cells(6, 2) = Date.Now.ToString("yyyy-MM-dd")    '날짜
            ws.Cells(6, 6) = Date.Now.ToString("HH:mm:ss")      '시간

            ws.Cells(10, 2) = "항목1"
            ws.Cells(11, 2) = "항목2"
            ws.Cells(12, 2) = "항목3"
            ws.Cells(13, 2) = "항목4"
            ws.Cells(14, 2) = "항목5"

            '엑셀 내용 프린트 미리보기...
            ExcelApp.Visible = True
            ExcelApp.Sheets.PrintPreview(True)

            '엑셀 파일 닫기...
            wb.Close(False, Excel.XlFileFormat.xlWorkbookNormal)
            ExcelApp.Quit()


        Catch ex As Exception
            '객체 메모리 해제...
            ReleaseObject(ws)
            ReleaseObject(wb)
            ReleaseObject(ExcelApp)
            GC.Collect()

        Finally
            ReleaseObject(ws)
            ReleaseObject(wb)
            ReleaseObject(ExcelApp)
            GC.Collect()
        End Try


    End Sub

    Private Shared Sub ReleaseObject(ByVal obj As Object)

        Try
            If Not obj Is Nothing Then
                Runtime.InteropServices.Marshal.ReleaseComObject(obj)
                obj = Nothing
            End If
        Catch
            obj = Nothing
        Finally
            GC.Collect()
        End Try

    End Sub


End Class

 

 

*예제 결과

 

위 그림 처럼 작업 관리자에 EXCEL.EXE  프로세스가 올라가게 되면서 엑셀 파일 프린트가 시작 됩니다.

 

기본 프린터로 연결됨.

 

기본 프린터에 해당 엑셀 파일 내용이 프린트 되며, 프린트 후 작업 관리자를 열어서 확인 해 보시면 EXCEL.EXE 프로세

스가 해제 되어 종료 되어 있는 것을 볼 수 있습니다.

 

https://kdsoft-zeros.tistory.com/36

 

[VBNET] Excel File Read & Write 예제

* VBNET 엑셀 파일 예제... - 참조 추가 소스 구현을 하기에 앞서 미리 엑셀 파일을 열어 D:\통합 문서.xls 로 샘플로 하나 저장 해 놓았습니다. 샘플로 파일 하나 만들고 위치는 어디에 있던 상관 없습니다. Fo..

kdsoft-zeros.tistory.com

 

반응형
반응형

* VBNET WMI 를 이용한 현재 실행 중인 프로세스 조회 (Process Search)

- WMI 를 사용하기 위해 참조 -> System.Management dll 을 추가 -> 소스 코드 imports System.Management

 

메인화면

 

전체 소스 코드

Form1.vb

 

Imports System.Management

Public Class Form1

    Dim strQry As String = "Select Name, ProcessID, ExecutablePath, WorkingSetSize From Win32_Process"

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click

        '리스트뷰 아이템 초기화
        lv.Items.Clear()

        Dim oWMI As ManagementObjectSearcher = New ManagementObjectSearcher(New SelectQuery(strQry))

        For Each oItem As ManagementObject In oWMI.Get()

            Try

                Dim lvi As ListViewItem = New ListViewItem()

                lvi.Text = oItem.GetPropertyValue("Name").ToString()
                lvi.SubItems.Add(oItem.GetPropertyValue("ProcessID").ToString())
                lvi.SubItems.Add(String.Format("{0:00}", CType(Integer.Parse(oItem.GetPropertyValue("WorkingSetSize").ToString()) / 1024, Double)) + " KB")
                lvi.SubItems.Add(oItem.GetPropertyValue("ExecutablePath").ToString())

                lv.Items.Add(lvi)

            Catch ex As Exception

            End Try

        Next


    End Sub

End Class

* 예제 결과

 

결과화면

 

반응형
반응형

* VBNET WMI 를 이용한 윈도우 시작 시 시작되는 프로그램 조회 예제...

- WMI 를 사용하기 위해 참조 -> System.Management dll 을 추가 -> 소스 코드 imports System.Management

 

메인화면

전체 소스 코드

Form1.vb

 

프로젝트 -> 참조 추가 -> System.Management dll 을 참조 추가 해 줍니다.

Imports System.Management

Public Class Form1

    Dim strWMIQry As String = "Select * From Win32_StartupCommand"

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click

        Dim strV(3) As String

        Dim oWMI As ManagementObjectSearcher = New ManagementObjectSearcher(New SelectQuery(strWMIQry))

        listView1.Items.Clear()

        For Each oItem As ManagementObject In oWMI.Get()

            strV(0) = oItem.GetPropertyValue("Name").ToString()
            strV(1) = oItem.GetPropertyValue("Command").ToString()
            strV(2) = oItem.GetPropertyValue("Location").ToString()

            Dim lvi As ListViewItem = New ListViewItem

            lvi.Text = strV(0)
            lvi.SubItems.Add(strV(1))
            lvi.SubItems.Add(strV(2))

            listView1.Items.Add(lvi)

        Next

    End Sub

End Class

 

 

* 예제 결과

 

결과화면

 

https://kdsoft-zeros.tistory.com/130

 

[C#] [WMI] 윈도우 시작 프로그램 조회 (Startup Program)

* C# WMI 를 이용한 윈도우 시작 시 시작되는 프로그램 조회 예제... 전체 소스 코드 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System..

kdsoft-zeros.tistory.com

 

반응형

+ Recent posts