Windows_ 49

C# : DLL 제작방법과 사용방법

/* * http://sosal.kr/ * made by so_Sal */ 윈도우즈 프로그램들은 대부분 주 실행파일이 존재한 상태에서 주요 루틴들은 DLL로 작성하여 이들을 조립하여 만들어진다. 이렇게 만들어진 프로그램이 유지보수가 쉬우며 역할분담이 용이하고, 또 DLL들은 다른 프로젝트에서 재사용이 가능하다. DLL과 DLL을 호출하여 사용하는 실행파일 2개를 생성하여 프로그램을 만들어 볼 것이다. 1. DLL 제작하기 2. DLL을 사용하는 프로그램 제작하기(Console) 1. DLL 제작하기 파일 / 새로만들기 / 프로젝트 -> 클래스 라이브러리 선택 제목은 간단하게 myDLL 이라 입력하였다. DLL은 다른 모듈에게 클래스나 메서드를 제공하는 서비스 역할을 하기에 '서버' 라고 많이 부른다. 프..

C# : Namespace와 Using

/* * http://sosal.kr/ * made by so_Sal */ 이 포스팅에서 다룰 내용 1. namespace? 2. using 1. namespace? Name-space는 명칭 그대로 Name들을 저장하는 장소이다. 명칭들이 저장되는 범위를 격리시키는 역할을 한다. 같은 이름의 변수를 쓰더라도, 소속된 공간이 다르다면 문제가 없다. 쉽게 예를 들면 같은 풀더에 같은이름의 파일은 불가능하지만, 각기 다른 풀더에 같은이름의 파일이 존재할 수 있다. namespace가 이러한 범위를 격리시키는 역할을 한다. ----------------------- namespace mySpace1{ int value; } namespace mySpace2{ double value; } ------------..

Windows_/Windows_C# & App 2014.07.24 (3)

C# : 콘솔과 윈폼을 위한 프로젝트 만들기

/* * http://sosal.kr/ * made by so_Sal */ 이 포스팅의 내용 1. 콘솔에서 Hello world 2. 윈폼에서 간단한 버튼 이벤트 만들기 1. 콘솔에서 1. 비주얼 스튜디오 실행 -> 새 프로젝트 만들기. Visual C# / Windows 탭에서 "콘솔 응용 프로그램"을 선택한다. 2. 만들어진 프로젝트를 간단하게 보자. Program.cs 파일이 우리가 주로 코드를 작성할 파일이다. C#소스파일의 확장자는 cs를 사용한다. 이 소스파일에 Hello world를 작성하여 실행시켜보자. compile : F7 Execute : Ctrl + F5 /* * Filename : Program.cs */ class Program{ static void Main(string[] a..

Windows :: IPC MailSlot을 이용한 프로세스간 통신

/* * http://sosal.kr/ * made by so_Sal */ 프로세스간 통신? :: 독립된 두 A, B 프로세스가 서로 데이타를 주고 받는것, or 메모리 공유 보통 하나의 프로그램이 하나의 프로세스라고 생각하시는 분이 많으신데, 하나의 프로그램이 여러개의 프로세스를 생성하는 경우도 많습니다. (특히 서버측 프로그램이 다중 프로세스로 구현되는 경우가 많습니다.) 다중 프로세스 프로그램의 경우, 각각의 프로세스가 서로 데이타를 주고받는 경우가 십중팔구입니다. 흔히 A라는 프로세스가 B에게 하나씩 데이타를 send 해주고, B 프로세스는 A가 보내는 정보를 recieve 한다고 생각합니다. 하지만 프로세스간 통신은 메모리 공유한다는것이라는 엉뚱한 결론이 도출됩니다. 곧 프로세스간 통신은 메모리..

WinAPI / IPC 메일슬롯 단방향 통신 예제

/* * http://sosal.kr/ * made by so_Sal */ Windows 08. IPC 프로세스간 통신 예제소스 입니다. 잘 이해가 안되는 부분이 있다면 아래 링크를 참조하세요. LINK_ ======================= Receiver ======================= #include #include #include#define SLOT_NAME _T("\\\\.\\mailslot\\Mail")int _tmain(int argc,TCHAR *argv[]){ HANDLE hMailSlot; TCHAR messageBox[BUFSIZ]; DWORD bytesRead; hMailSlot = CreateMailslot( //우체통 생성!! SLOT_NAME, 0, MAILS..

Windows :: 프로세스 정보 추출하기

/* * http://sosal.kr/ * made by so_Sal */ 이번장에서는 프로세스들의 정보를 순간적으로 가져오는 Snapshot과 정보를 추출, 그 정보를 얻어오는 법을 이 포스트에서 보려고 합니다. 그리고 프로세스 정보를 통해서 어떤일을 할 수 있을까?? 프로세스 정보(프로세스 이름 , PID, PPID , ThreadID 등등..)을 통해 프로세스 핸들값을 도출해낼 수 있습니다. 차근차근 위의 일을 수행하는 함수를 보려고 합니다. 다음 헤더파일은 아래 함수들을 포함. #include 프로세스들의 정보를 가져오기 위해서 스냅(사진찍기)를 해야한다. 단, 사진 찍는 순간의 프로세스 정보를 가져오기 때문에 100% 신뢰할 수 없는 정보이다. (스냅샷 찍는 함수) HANDLE CreateToo..

프로세스 리스트 출력, 강제 종료 소스

/* * http://sosal.kr/ * made by so_Sal */ /* * 아래 프로그램 예제 소스에서 쓰이는 함수들은 * LINK_ 에 모두 정리되어 있습니다. * Process Name을 사용자로부터 입력받아 * 프로세스를 강제-종료하는 프로그램입니다. * / #include #include #include #include #include #include #includevoid ListProcessInfo(void); void KillProcess(TCHAR* TargetProcess);int _tmain(int argc, TCHAR* argv[]){ TCHAR TargetProcess[BUFSIZ]; //종료를 원하는 프로세스의 이름을 입력받을 버퍼 while(1){ ListProcessI..

Windows_/Windows_Source 2014.07.24 (1)

Windows :: CreateProcess, STARTUPINFO

/* * http://sosal.kr/ * made by so_Sal */ 윈도우는 다중 태스킹 운영체제입니다. 한 시점에서 여러 개의 프로그램들이 실행되는데, 각 실행중인 프로그램은 하나의 프로세스가 되고, 하나의 프로그램이 여러개의 프로세스를 생성할 수 있습니다. 따라서 여러 사용자들이 하나의 프로그램을 실행시켜 프로세스를 생성할 수 있고, 하나의 프로세스가 또다른 프로세스를 생성할 수 있습니다. 시스템 자체도 시스템 자원을 관리하고 사용자 접근을 제어하기 위해 여러 개의 프로그램들을 실행 합니다. 프로세스 :: 시스템 자원들을 포함하는 하나의 주소공간 프로세스는 프로그램 코드, 자료, 변수들, 열린 파일들, 그리고 환경으로 구성됩니다. 하드 메모리에 저장되어 있는 프로그램을 시스템 메모리에 끌어와 ..

CreateProcess 함수 예제 소스코드

/* * http://sosal.kr/ * made by so_Sal */ CreateProcess 라는 함수를 이용하여 Notepad를 실행시키는 간단한 소스입니다. 이해가 가지 않는 부분이 있다면 아래 링크를 참조하세요.LINK_ ====================== CreateProcess ====================== #include #include #include #define DIR_LEN BUFSIZ //BUFSIZ는 운영체제마다 다른 크기를 가지고 있습니다. //한번 크기를 출력해보시는것도 좋겠네요.int _tmain(int argc, TCHAR* argv[]){ STARTUPINFO si = {0,}; //구조체 선언, 초기화 PROCESS_INFORMATION pi; si..

Windows_/Windows_Source 2014.07.24 (1)