반응형

* 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

 

반응형
반응형

* C# Excel File Print (엑셀 파일 프린트 하기) 예제...

 

메인화면

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

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

 

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

 

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

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

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

 

 

엑셀 파일 내용

전체 소스 코드

Form1.cs

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using Excel = Microsoft.Office.Interop.Excel;
using System.IO;

namespace CSharp_ExcelFilePrint
{
    public partial class Form1 : Form
    {
        //빌드 후 EXE 파일이 생성 되는 곳
        string strLocalPath =  Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf('\\'));

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            Excel.Application ExcelApp = null;
            Excel.Workbook wb = null;
            Excel.Worksheet ws = null;

            //빌드 후 EXE 파일이 만들어 지는 곳에 있는 Print.xls 엑셀 파일
            string strExcelFile = strLocalPath + "\\Print.xls";

            //파일이 없다면...
            if (!File.Exists(strExcelFile))
            {
                return;
            }

            try
            {

                ExcelApp = new Excel.Application();
                //해당 엑셀 파일 열기...
                wb = ExcelApp.Workbooks.Open(strExcelFile,
                                              0,
                                              true,
                                              5,
                                              "",
                                              "",
                                              true,
                                              Excel.XlPlatform.xlWindows,
                                              "\t",
                                              false,
                                              false,
                                              0,
                                              true,
                                              1,
                                              0);
                ws = wb.Worksheets["Sheet1"] as Excel.Worksheet;


                //엑셀 시트 인덱스 번호는 0,0 부터 시작 하는 것이 아니라 1,1 A1 부터 시작 함. 0,0 으로 시작하면 오류...
                //시트에 값 쓰기...
                ws.Cells[3, 3] = "12345";    //번호
                ws.Cells[3, 7] = "테스트";   //이름

                ws.Cells[6, 2] = DateTime.Now.ToString("yyyy-MM-dd");  //날짜
                ws.Cells[6, 6] = DateTime.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, Type.Missing, Type.Missing);
                wb = null;
                ExcelApp.Quit();
            }
            catch (Exception ex)
            {
                //객체들 메모리 해제
                ReleaseExcelObject(ws);
                ReleaseExcelObject(wb);
                ReleaseExcelObject(ExcelApp);
                GC.Collect();
            }
            finally
            {
                //객체들 메모리 해제
                ReleaseExcelObject(ws);
                ReleaseExcelObject(wb);
                ReleaseExcelObject(ExcelApp);
               
                GC.Collect();
            }
        }

        private void ReleaseExcelObject(object obj)
        {
            try
            {
                if (obj != null)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                    obj = null;
                }
            }
            catch (Exception ex)
            {
                obj = null;
                throw ex;
            }
            finally
            {
                GC.Collect();
            }
        }


    }
}

 

* 예제 실행 결과

위 그림 처럼 기본 프린터로 연결됨.

 

Print 내용

 

 

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

 

[C#] Excel File Write & Read 예제...

* 엑셀 파일 쓰고 읽기 예제... 위 그림과 같이 프로젝트에 참조를 추가 해 줍니다. 참조가 추가 되었으면 이제 메인화면을 만들어 봅니다. 소스 구현을 하기에 앞서 미리 엑셀 파일을 열어 D:\통합 문서.xls..

kdsoft-zeros.tistory.com

 

반응형
반응형

* 아스키 코드 표 (Ascii Code)

 

반응형
반응형

* 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

* 예제 결과

 

결과화면

 

반응형
반응형

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

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

 

메인화면

전체 소스 코드

Form1.cs

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.Management;

namespace CSharp_NowProcess
{
    public partial class Form1 : Form
    {

        string strWMIQry = "Select Name, ProcessID, ExecutablePath, WorkingSetSize From Win32_Process";

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //리스트뷰 아이템 초기화
            lv.Items.Clear();

            ManagementObjectSearcher oWMI = new ManagementObjectSearcher(new SelectQuery(strWMIQry));

            foreach (ManagementObject oItem in oWMI.Get())
            {
                try
                {
                    //리스트뷰에 디스플레이...
                    ListViewItem lvi = new ListViewItem();
					
                    //프로세스 이름
                    lvi.Text = oItem.GetPropertyValue("Name").ToString();
                    //프로세스 ID
                    lvi.SubItems.Add(oItem.GetPropertyValue("ProcessID").ToString());
                    //크기
                    lvi.SubItems.Add(string.Format("{0:00}", (double)int.Parse(oItem.GetPropertyValue("WorkingSetSize").ToString()) / 1024) + " KB");
                    //위치
                    lvi.SubItems.Add(oItem.GetPropertyValue("ExecutablePath").ToString());

                    lv.Items.Add(lvi);
                }
                catch (Exception)
                {
                }

            }


        }
    }
}

*예제 결과

 

결과화면

 

반응형
반응형

* 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

 

반응형
반응형

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

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

 

메인화면

전체 소스 코드

Form1.cs

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Management;

namespace CSharp_WMIStartupProgram
{
    public partial class Form1 : Form
    {

        string strWMIQry2 = "SELECT * FROM Win32_StartupCommand";
        

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string[] strV = new string[3];

            ManagementObjectSearcher oWMI = new ManagementObjectSearcher(new SelectQuery(strWMIQry2));

			listView1.Items.Clear();
            foreach (ManagementObject oItem in oWMI.Get())
            {
                strV[0] = oItem.GetPropertyValue("Name").ToString();        //  프로그램명
                strV[1] = oItem.GetPropertyValue("Command").ToString();     // 프로그램의 FullName
                strV[2] = oItem.GetPropertyValue("Location").ToString();    // 레지스트리 경로

                ListViewItem lvi = new ListViewItem();
                lvi.Text = strV[0];
                lvi.SubItems.Add(strV[1]);
                lvi.SubItems.Add(strV[2]);

                listView1 .Items.Add(lvi);
            
            }
        }

    }
}

 

* 예제 결과

 

결과 화면

 

 

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

 

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

* VBNET WMI 를 이용한 윈도우 시작 시 시작되는 프로그램 조회 예제... 전체 소스 코드 Form1.vb 프로젝트 -> 참조 추가 -> System.Management dll 을 참조 추가 해 줍니다. Imports System.Management Public C..

kdsoft-zeros.tistory.com

 

반응형
반응형

* VBNET API 이용 인터넷 연결 상태 체크 (internet Connect State Check) 예제...

 

메인 화면

 

전체 소스 코드

Form1.vb

 

Public Class Form1

    Private Declare Function InternetGetConnectedState Lib "wininet.dll" _
   (ByRef lpdwFlags As Int32, ByVal dwReserved As Int32) As Boolean

    Private Enum ConnectionStates
        Modem = &H1
        LAN = &H2
        Proxy = &H4
        RasInstalled = &H10
        Offline = &H20
        Configured = &H40
    End Enum


    Dim thMain As System.Threading.Thread
    Dim bCheck As Boolean = False

    '폼이 로드 되면...
    '아래와 같이 Form_Load 이벤트로 해도 상관 없음.
    'Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    'End Sub
    Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
        CheckForIllegalCrossThreadCalls = False

        thMain = New System.Threading.Thread(New System.Threading.ThreadStart(AddressOf Thread_Tick))

        '백그라운드 스레드로 지정
        thMain.IsBackground = True
        bCheck = True
        button1.Text = "Internet Connect Check Start"
        thMain.Start()

        MyBase.OnLoad(e)
    End Sub


    Protected Overrides Sub OnClosed(ByVal e As System.EventArgs)

        If Not thMain Is Nothing Then

            If bCheck Then '스레드가 돌고 있으면...
                '스레드 강제 종료...
                thMain.Abort()
            Else '스레드가 일시정지 상태로 대기 하고 있으면...
                '대기 중인 스레드 종료...
                thMain.Interrupt()
            End If

            thMain = Nothing
        End If

        '가비지 콜렉트 실행
        GC.Collect()

        MyBase.OnClosed(e)
    End Sub


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

        If Not bCheck Then

            bCheck = True
            '일시정지된 스레드 다시 시작
            thMain.Resume()
            button1.Text = "Internet Connect Check Start"

        Else

            bCheck = False
            '스레드 일시정지
            thMain.Suspend()
            button1.Text = "Internet Connect Check Stop"

        End If

    End Sub

    Public Shared Function Get_InternetConnectedState() As Boolean
        Dim lngFlags As Long

        lngFlags = 0
        Get_InternetConnectedState = False

        If InternetGetConnectedState(lngFlags, 0) Then
            'connected.
            Get_InternetConnectedState = True

        Else
            'not connected.
            Get_InternetConnectedState = False
        End If

    End Function



    Sub Thread_Tick()

        While (True)

            If Get_InternetConnectedState() Then
                label1.Text = "인터넷 연결이 되어 있습니다."
            Else
                label1.Text = "인터넷 연결이 끊어 졌습니다."
            End If

            System.Threading.Thread.Sleep(1000)
        End While

    End Sub
    
End Class

API 선언

* 예제 결과

 

 

반응형

+ Recent posts