-
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 댓글