ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 08_C#연동
    프로그래밍/PEViewer 2019. 12. 23. 03:11

    dll을 선언하여 c#에서 사용할 수 있는 법을 오늘 알게 되었다. 그리 어렵지 않았는데 일주일이나 삽질을 했다...

    Import한 dll에서 RawData함수에 파일이름을 넘기는 법을 생각하다가 힘들어서 오늘은 이만 자러간다. ㅂㅂ

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.IO; // stream 구조체 선언
    using System.Runtime.InteropServices;
    
    namespace PEview_01
    {
        
        public partial class Form1 : Form
        {
    
            private string fileName = "";
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
    
            }
    
            private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
            {
                
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
               
            }
    
            private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
            {
                
            }
    
            private void openToolStripMenuItem_Click(object sender, EventArgs e)
            {
                /*
                OpenFileDialog openFile = new OpenFileDialog();
                openFile.DefaultExt = "exe";
                //openFile.Filter = "Images Files(*.jpg; *.jpeg; *.gif; *.bmp; *.png)|*.jpg;*.jpeg;*.gif;*.bmp;*.png";
                openFile.Filter = "Executable Files(*.exe; *.dll)|*.exe;*.dll";
                openFile.ShowDialog();
                */
                Stream myStream = null;
                byte[] byte_load = new byte[256];
                DialogResult dr;
                OpenFileDialog openFile = new OpenFileDialog();
    
                openFile.InitialDirectory = "C:\\Users\\s\\Desktop"; //기본 파일 위치 지정
                openFile.DefaultExt = "exe";
                openFile.Filter = "exe files (*.exe; *.dll)| *.exe;, *.dll;"; //파일 필터링
                openFile.FilterIndex = 2;
                openFile.RestoreDirectory = true;
    
                if (openFile.ShowDialog() == DialogResult.OK)
                {
                    //컨트롤에 이름 정하기
                    //tbAzeName.Text = openFile.FileName; //???
                    //tbAzeName.Text = openFile.FileName; //???
                    String file_path = openFile.FileName;
    
                    try
                    {
                        using (BinaryReader bynr = new BinaryReader(File.Open(file_path, FileMode.Open)))
                        {
                            byte[] bytes = bynr.ReadBytes(16);
                            listView1.Columns.Add("ProductName", 100);
                            listView1.Columns.Add("Price", 100);
                            listView1.Columns.Add("Quantity", 100);
    
                            string tmpSTR = Encoding.Default.GetString(bytes).TrimEnd('\0');
                            //string str = Convert.ToString(bytes);
                            String[] arr = new String[3];
                            arr[0] = "0x0000";
                            arr[1] = tmpSTR;
                            arr[2] = "10";
    
                            ListViewItem lvt = new ListViewItem(arr);
                            listView1.Items.Add(lvt);   
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
                    }
                }
                
            }
    
            private void resetToolStripMenuItem_Click(object sender, EventArgs e)
            {
                listView1.Columns.Add("ProductName", 100);
                listView1.Columns.Add("Price", 100); 
                listView1.Columns.Add("Quantity", 100);
    
                String[] arr = new String[3];
                arr[0] = "갤럭시 노트 3"; 
                arr[1] = "500000"; 
                arr[2] = "10";
    
                ListViewItem lvt = new ListViewItem(arr);
                listView1.Items.Add(lvt);
    
    
    
            }
    
            private void listView1_SelectedIndexChanged(object sender, EventArgs e)
            {
    
            }
    
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
    
            }
        }
        class dll
        {
            [DllImport("D:\\04_PE_Viewer\\MKDLL\\Debug\\MKDLL.dll", CallingConvention = CallingConvention.Cdecl)]
            private static extern char RawData();
            [DllImport("D:\\04_PE_Viewer\\MKDLL\\Debug\\MKDLL.dll", CallingConvention = CallingConvention.Cdecl)]
            private static extern char PrintRaw();
    
        }
    }
    

    '프로그래밍 > PEViewer' 카테고리의 다른 글

    05_03_PE구조 그냥 출력_함수사용  (0) 2019.12.23
    05_02_PE구조정리_32bit_Console  (0) 2019.12.23
    07_C#_DLL 사용법  (0) 2019.12.23
    06_DLL 제작 및 사용  (0) 2019.12.22
    05_PE구조 출력  (0) 2019.12.18

    댓글

lonun@네이버.com으로 연락해주세요!