프로그래밍/PEViewer
08_C#연동
SamIT
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();
}
}