출처 : http://www.yunsobi.com/blog/411

java.lang 패키지의 Runtime 클래스는 자바에서 외부 프로세스를 생성하는 방법을 제공한다.
예를 들어 자바를 이용하여 MS 윈도우에서 MS 엑셀을 실행하는것등에 이 Runtime클래스를 이용할 수 있다.

예를 들어 C:\Program Files\Microsoft Office\Office\excel.exe 위치에 있는 excel.exe를 실행
하는 코드는 아래와 같다.

try {
   Runtime run = Runtime.getRuntime ();
   run.exec ( "C:\\Program Files\\Microsoft Office\\Office\\excel.exe" );
} catch ( IOException ie ){
   System.err.println ( ie );
}
Read More

1)  GetWindowsDirectory
가장 많이 사용하는 API 입니다.
그런데 아래에도 나오지만 윈도우 서버 운영체제에서는 우리가 원하는 c:\windows를 리턴하지 않고 다른 경로를 리턴합니다.^^;;

2) GetSystemWindowsDirectory
이 API는 API는 하위 호환을 위해서 남은 것입니다.
(This function is provided primarily for compatibility)

3) SHGetFolderPath
MSDN에서는 ShGetFolderPath를 사용할것을 권장합니다.
(Applications should store code in the Program Files folder and persistent data in the Application Data folder in the user’s profile. For more information, see ShGetFolderPath.)

Remark

터미널 서비스를 사용하는 운영체제에서는 GetWindowsDirectory는 각각의 사용자마다 윈도우 디렉토리를 다르게 리턴합니다. GetSystemWindowsDirectory 를 사용해야지만 시스템 윈도우 디렉토리를 리턴합니다.

On a system that is running Terminal Services, each user has …

Read More

1. 레지스토리 편집기(regedit)에서 HKEY_LOCAL_MACHINE\SYSTEM 경로에 레지스토리를 등록한다.
  1) 직접 수정해서 등록한다.
  2) 서비스 API 함수를 사용하는 프로그램을 제작하여 등록한다.(Software 드라이버)
  3) inf 파일을 제작하여 등록한다.(Hardware 드라이버)
  4) Setup API를 사용한다.
2. 서비스의 설치 시작 정지 삭제는 나중에 알아보고 일단 EnumService.exe를 사용한다.

Read More

Visual Studio 2005에서 Driver Code를 빌드하려면 ddkbuild Tool을 이용하면 쉽게 Build가 가능하다.
http://www.osronline.com/article.cfm?article=43

위의 사이트에서 다운로드가 가능(가입필요)
ddkbuild_v72.zip

 

다운로드한 파일의 압축을 풀면 cmd 파일을 확인 할 수 있는데 이 파일을 DDK가 설치된 폴더에 복사해 넣도록 하자.(D:\WINDDK)

이것으로 기본적인 준비는 끝났다. 이제 실제 Project를 만들어서 Build해보도록 하자.

참고로 WDK는 VisualStudio 6.0에서는 컴파일 되지 않습니다.

1. 아래 그림과 같이 vs2005에서 메이크 파일 프로젝트를 생성합니다. 프로젝트가 생성되는 경로에서 공백을 허용하지 않으니 확인해야된다.

Build에 대한 설정은 아래의 그림을 참조 실행파일 *.exe는 무시해도 된다.

Release 의 경우에는 checked 설정을 free로 변경해주고 Build해주면 되므로, 확인하도록…

위의 과정까지 마치게 되면 Makefile Project가 생성이 되지만, 아직 source파일이 …

Read More
1. 아래의 URL을 통하여 Driver Develop Kit를 다운로드 받는다.
http://www.microsoft.com/whdc/devtools/ddk/default.mspx
다운로드한 DDK ISO 이미지를 이용해서 설치한 후 [내컴퓨터]- [속성] – [고급] – [환경변수]에서
사용자 변수를 추가하도록 한다. 설정 후 재부팅을 해주어야지 적용이 된다.
변수 이름에 대한 것은 아래의 내용을 참고.
For the W2K DDK the environment variable is W2KBASE, and the flag is -W2K.
For the XP DDK the environment variable is XPBASE, and the flag is -XP.
For the Windows 2003 Server  and W2K3SP1 DDK the environment variable is WNETBASE, and the flag is -WNET.
For the LDK (Longhorn Beta build 4051) the environment variable is WLHBASE and the
Read More

출처 : http://blog.naver.com/parnx/140054010993

다음은 흔히 싱글턴singleton 패턴에서 애용되는 형태의 코드이다.


public class MySingleton {
   private static final MySingleton INSTANCE = new MySingleton();

   public static MySingleton getInstance() {
       return INSTANCE;
   }

   private MySingleton() {
      // 초기화 작업…
   }

   // … 나머지 코드
}

이 글에서 말하고 싶은 것은 흔히 싱글턴 패턴에서의 스레드 관련 문제가 아니라, 이 클래스가 가져올 수도 있는 재앙 내지 밤샘디버깅이다. 경험상 이런 코드가 말썽을 일으키는 경우를 종종 볼 수 있었으며(현재 프로젝트에서도 발생), 그 때의 디버깅은 같은경험이 없다면 정말 많은 시간이 걸릴 수 있다.

이 클래스가 사람 밤 …

Read More

출처 : http://grampus.tistory.com/

윈도우 어플리케이션을 개발할때 필요에 의해서 콘솔 윈도우를 생성해야 할 때 경우가 있다.
콘솔 윈도우 생성하는 방법 및 표준 입/출력 설정을 통해 윈도우 어플리케이션에서도 C언어에서 제공하는
표준 입/출력 함수를 사용해서 입출력을 해보도록 한다.

 

콘솔 윈도우 생성 및 해제

콘솔 윈도우의 생성 및 해제는 각 함수 호출 한번씩으로 생성 및 해제를 할 수 있다.

// 콘솔 생성  
if( !AllocConsole() )  
  return ERROR;  
...생략...    
// 종료 전 콘솔 할당 해제  
FreeConsole();

표준 입/출력 핸들 설정

입/ …

Read More

JNI(Java Native Interface)


컴파일 및 실행 방법


간단한 JNI예제를 만들어 보면서 설명을 하도록 한다.


HelloWorld.java 작성


우선 아래의 코드를 jnitest.java 파일로 만든 후 컴파일을 하도록 하자.



  1. import java.util.*;
  2. public class HelloWorld
  3. {
     native void print_test();    // C,Cpp함수를 호출하기 위해 선언
  4.  static{
      System.loadLibrary(“jnitest”);
     }
  5.  public static void main(String[] args)
     {
      HelloWorld jni = new HelloWorld();
  6.   jni.print_test();               // jni를 통해서 C, Cpp의 함수 호출
     }
    }

 아래의 명령으로 컴파일을 수행하면 jnitest.class 파일이 생성이 되는 것을 확인 할 수 있다.



  1. # javac
Read More

유니코드 파일 인코딩 방식을 확인하려면 파일의 처음 2 byte ~ 4 byte 를 가져와서 아래의 코드와 비교하시면 됩니다.

Bytes            Encoding Form

00 00 FE FF    UTF-32, big-endian

FF FE 00 00    UTF-32, little-endian

FE FF             UTF-16, big-endian

FF FE             UTF-16, little-endian

EF BB BF        UTF-8

 

메모장에서 “유니코드”로 저장하면 해당 파일의 처음 2byte 가 “FF FE” 로 저장되는 것을 확인하실 수 있습니다. 위의 표와 보시면 “FF FE” 가 UTF-16, little-endian 이란 것을 확인하실 수 있죠.

 

파일을 바이너리 데이터로 분석하시려면 아래의 포스트에서 소개해 드린 BZ (바이너리 에디터) 를 사용하세요.

 

http://blog.naver.com/websearch/70029495287

 

Read More