자동화에 대한 기본 정리 DarkKaiser, 2007년 6월 30일2023년 9월 3일 자동화(Automation)란? COM은 언어에 독립적입니다. 따라서 COM 인터페이스로 만든 소프트웨어 컴포넌트은 어떤 언어에서든 사용이 가능합니다. 하지만, 스크립트 언어는 예외입니다. 스크립트 언어는 일반적인 COM 인터페이스에 접근하지 못합니다. 그래서, 스크립트 언어가 이해할 수 있는 IDispatch라는 특별한 COM 인터페이스를 정의하였습니다. IDispatch라는 COM 인터페이스는 스크립트 언어 뿐만 아니라 COM을 지원하는 모든 언어가 사용할 수 있는 Continue Reading
기본 명령어 DarkKaiser, 2007년 6월 30일2023년 9월 2일 Push sp 레지스터를 조작하는 명령어중의 하나이다. 스택에 데이터를 저장하는데 쓰인다. ex) Push eax 스택에 Eax의 값을 스택에 저장한다. ex) Push 20 즉석값인 20을 스택에 저장한다. ex) Push 401F47 메모리 오프셋 401F47의 값을 스택에 저장한다. Pop 이또한 sp 레지스터를 조작하는 명령어중 하나이다. 스택에서 데이터를 꺼내는데 쓰인다. ex) Pop eax 스택에 가장 Continue Reading
스트림 사용 예제 DarkKaiser, 2007년 6월 25일2023년 9월 5일 FileInputStream, FileOutputStream FileInputStream fi = new FileInputStream(new File("d:\\temp\\temp.xls")); FileOutputStream fo = new FileOutputStream("d:\\temp\\temp2.xls"); int b; while ((b = fi.read()) != -1) { fo.write(b); fo.flush(); } fi.close(); fo.close(); RandomAccessFile public static void main(String[] args) throws IOException { String s = "ILoveJava~"; String q = "Jabook!"; RandomAccessFile rf = new RandomAccessFile("RandomAccessFile.txt", "rw"); Continue Reading
스트림 DarkKaiser, 2007년 6월 25일2023년 9월 4일 스트림의 정의장치로부터 데이터를 얻거나 보낼 때 사용되는 중간 매개체 역활을 하는 놈 입력 스트림 비교 입력 스트림은 데이터를 먼저 스트림으로 읽어들입니다. 그리고 스트림에 존재하는 데이터를 하나씩 읽어들일 수 있습니다. 출력 스트림 비교 출력 스트림으로 데이터를 보냅니다. 그리고 출력 스트림에 보낸 데이터를 비워 버립니다. 그렇게 되면 출력 스트림에 존재하던 데이터가 Continue Reading
스레드 생성 및 동기화 DarkKaiser, 2007년 6월 22일2023년 9월 6일 스레드를 생성하는 방법 Thread 클래스를 상속받는 방법 /* Thread 클래스를 상속 받는 방법과 run() 메서드 재정의 */ import java.lang.Thread; class NewThread exends Thread { public void run() { /* Thread Body */ } } /* Thread 클래스를 상속받았을 경우 스레드를 start 하는 방법 */ NewThread n = new NewThread(); n.start(); Continue Reading
Vector, Hashtable, 열거자 DarkKaiser, 2007년 6월 22일2023년 9월 6일 Vector 클래스데이터의 입력한 순서에 따라서 데이터 추출, index로 추출 Vector vector = new Vector(); vector.addElement(new Character('A')); vector.addElement(new String("test")); vector.addElement(new Integer(100)); vector.addElement(new Integer(200)); vector.insertElementAt(new Float(3.14), 1); // 1번째에 중간 삽입 vector.setElementAt(new String("Set"), 3); // 3번째 존재하는 것 제거후 다시 삽입 System.out.println("vector의 0번째:" + (Character)vector.elementAt(0)); if (vector.contains(new String("Set"))) { // vector에 Continue Reading
배열 DarkKaiser, 2007년 6월 22일2023년 9월 6일 배열의 특징 배열은 객체다. 배열의 이름은 참조값이다. 배열을 할당할 때는 데이터 타입은 같아야 한다. 배열의 선언 & 초기화 int[] mydream = new int[]{5,4,6,3,2,6}; int[] mytarget = {100, 200, 300, 400, 500}; 배열의 복사 System.arraycopy() 메서드를 이용하는 방법int[] mydream = new int[]{5, 4, 6, 9, 7, 9};int[] mytarget = Continue Reading
Upcasting과 Downcasting DarkKaiser, 2007년 6월 22일2023년 9월 4일 Upcasting 상위 클래스로의 캐스팅, Downcasting Upcasting한 것을 다시 원래의 형으로 복구시켜주는 작업 Continue Reading
abstract와 interface DarkKaiser, 2007년 6월 22일2023년 9월 4일 abstract 추상메서드는 몸체 없는 프로토타입만을 가진 메서드이다. 추상메서드는 반드시 메서드 이름 앞에 abstract 키워드를 명시해야 한다. 추상메서드를 단 하나라도 포함하고 있으면 추상 클래스가 된다. 추상클래스는 클래스 이름 앞에 abstract를 명시해야 한다. 반드시 상속을 이용하여 객체를 생성할 수 있으며, 추상메서드를 가진다면 추상메서드를 모두 구현한 뒤, 객체를 생성할 수 있다. abstract 클래스는 Continue Reading
시스템에서 드라이브 추가 혹은 제거되었을 때를 자동으로 감시하는 코드 DarkKaiser, 2007년 6월 20일2023년 9월 4일 출처 : http://www.codeproject.com/useritems/Drive_Detect.asp 시스템에서 플로피/하드/CD-ROM/이동 드라이브가 추가 혹은 제거되었을 때를 자동으로 감시하는 코드입니다. 우선 헤더 파일을 프로젝트에 추가하여 줍니다. #include <dbt.h 아래의 메시지 핸들러를 추가합니다. 클래스 위저드를 통해서 추가할 수 없으니 수동으로 추가하여 주세요. bool inline IsBitSet (DWORD64 dwMask, UINT nTHBit) { DWORD64 dwBit = 1; dwBit <<= nTHBit; dwMask Continue Reading