본문 바로가기

쓰기

안녕하세요, whoami입니다.

질리지도 않고 프레임워크가 하나 더 올라갔습니다 -_-; 이번에는 유니코드 관련 문제 때문입니다.

관리자님이 올려주신 플러그인 소스는 유용하긴 한데 처음부터 만들려면 막막해지죠. 그래서
플러그인 개발하기 위해 플러그인 사양에 맞게 처음부터 만들 필요가 없게 기본바탕이 되는 프레임을
구성해보았습니다. 이 상태에서 ATPlugin.h 의 define 부분만 바꿔서 그대로 컴파일해도 작동되는
플러그인을 만들 수 있습니다 (단, 아무일도 하지 않습니다.. 당연하겠지만서도;)

이 소스는 Public Domain, 곧 저작권 없는 소스입니다. 프레임워크이니까 당연하겠죠? ^^

다운로드는.. ATPluginFrame_20080712.zip


*ps. Hide_D군님 - 게임 폴더.. 라기보다는 현재 실행되는 프로그램의 폴더를 알려주는 함수는 GetATDirectory 함수를 조금 변형하면 됩니다. 다음의 한 줄을 변경하세요. 비슷한 함수 중복인 것 같아서 따로 넣지는 않았습니다.

// _T("ATCTNR.DLL") 을 NULL 로 변경하면 현재 실행중인 exe 파일의 폴더를 알아올 수 있다.
GetModuleFileName(GetModuleHandle(NULL), szDirectory, MAX_PATH);



아래는 ReadMe.txt 의 내용입니다.
-----------------------------------------------------------------------------------------------------------------
아랄 트랜스 플러그인 개발 프레임워크 20080712 for AralTrans 0.2.20080704

* 파일 설명
 ATPlugin.h - 아랄트랜스 플러그인 규격에 맞는 익스포트 정보.
 ATPlugin.cpp - 아랄트랜스 플러그인이 제공해야 하는 실제 함수 모음
 DefATContainer.h - 아랄트랜스 컨테이너가 제공하는 함수의 원형 (ATCode 플러그인에서 슬쩍 ^^)
 ATCApi.h / ATCApi.cpp - 아랄트랜스 컨테이너 제공 함수를 사용하기 쉽게 Wrapping한 클래스
 tstring.h / tstring.cpp - 유니코드용 변환 함수 및 string 지원 모듈
 Util.h / Util.cpp - 플러그인 제작시 유용한 유틸리티 함수 모음
 ATPlugin.dsw / ATPlugin.dsp - Visual C++ 6.0 용 프로젝트 파일

* 후킹 플러그인을 만들 때
 ATPlugin.h 의 #define ATPLUGIN_HOOKER 를 주석 해제하시고 개발하세요.

* 번역 플러그인을 만들 때
 ATPlugin.h 의 #define ATPLUGIN_TRANSLATOR 를 주석 해제하시고 개발하세요.

* ATPLUGIN_VERSION 과 OnPluginVersion()
 0.2.20080518 공식 플러그인 규격은 아니지만 이후 플러그인 사양이 변했을 때 아랄트랜스
 제작자께서 참조 가능하도록 추가했습니다;

* ATCApi 사용하기 위한 준비
 1. ATCApi.h 를 include 하면 전역 객체로 g_cATCApi가 잡힙니다.
 2. g_cATCApi의 IsValid() 가 TRUE 이면 사용 가능.

* 유니코드 기반 프로젝트를 만들 때
 Visual C++ 6.0 설정의 컴파일러 옵션 define 중 _MBCS 를 지우고 UNICODE, _UNICODE 를 대신 넣으면 됩니다.
 동봉된 프로젝트 파일에는 유니코드용/MBCS용의 설정이 둘 다 있습니다.
 다른 버전의 컴파일러 사용시에는 각 버전의 유니코드 설정 방법을 참고하세요.

* tstring 모듈의 함수 간단 설명
 tstring - 유니코드 설정에 따라 string 혹은 wstring 으로 동작합니다.
 tstring MakeTString(const char *pszString) - char 형식의 문자열을 tstring 으로 바꿔줍니다.
 TCHAR MakeTChar(const char ch) - char 형식의 문자를 TCHAR 로 바꿔줍니다.. 실제로는 필요없을지도;
 MyWideCharToMultiByte() - WideCharToMultiByte 대용 함수입니다. 어플로케일때문에 이렇게 사용해야 한다고..
 MyMultiByteToWideChar() - MyMultiByteToWideChar 대용 함수입니다. 어플로케일때문에 이렇게 사용해야 한다고..
 Kor2Wide(LPCSTR lpKor, LPWSTR lpWide, int nWideSize) - 한글일 경우 MyMultiByteToWideChar를 쉽게 쓰기 위한 간략함수입니다.
 Wide2Kor(LPCWSTR lpWide, LPSTR lpKor, int nKorSize) - 한글일 경우 MyWideCharToMultiByte를 쉽게 쓰기 위한 간략함수입니다.

* Util 함수 간단 설명
 const char *GetATDirectory()
 - 아랄트랜스 설치 디렉토리를 알아온다.
 void GetATOptionsFromOptionString(const char *pszOption, ATOPTION_ARRAY &aOptions)
 - 간단한 옵션 파서. 옵션은 key1(value1),key2(value2) 형식 혹은 key1,key2 도 가능.
 void GetOptionStringFromATOptions(const ATOPTION_ARRAY &aOptions, char *pszOption, int nMaxOptionLength)
 - 위의 옵션 파서와 반대로 옵션 모음을 옵션 문자열로 바꿔주는 함수.

조회 수 :
11600
등록일 :
2008.07.12
18:03:14
엮인글 :
https://arallab.hided.net/3308/9ab/trackback
게시글 주소 :
https://arallab.hided.net/board_devtalk/3308

Hide_D

2008.07.12
19:28:07
... 못찾은 저는 까막눈인듯 ㄱ-

whoami

2008.07.12
21:12:44

Hide_D군님/
const TCHAR *GetExeDirectory()
{
 static TCHAR szDirectory[MAX_PATH]={_T(''),};
 int i;
 
 if (szDirectory[0] != _T(''))
  return szDirectory;

 // _T("ATCTNR.DLL") 을 NULL 로 변경하면 현재 실행중인 exe 파일의 폴더를 알아올 수 있다.
  GetModuleFileName(GetModuleHandle(NULL), szDirectory, MAX_PATH);

 for(i=lstrlen(szDirectory); i>=0; i--)
 {
  if (szDirectory[i] == _T('\'))
  {
   szDirectory[i]=_T('');
   break;
  }
 }
 return szDirectory;
}

List of Articles
번호 제목 글쓴이 조회 수sort 추천 수 날짜 최근 수정일
공지 Talk [필독] 테스트필터 사용시 주의사항 라파에 155439   2008-08-03 2008-12-16 00:03
428 Talk ATCustom - 함수 Reference [47] Hide_D 103937   2010-07-20 2010-08-28 04:59
AralTrans의 Algorithm Plugin ATCustom의 함수 목록입니다. - 문서 상태 - 기본 함수 : 변경 중 변경 확률 보통 고급 함수 : 변경 중 변경 확률 높음 - 기본 함수 목록 - 핵심적인 기능을 가지거나 내부의 C++ 코드를 사용해야만 하는 함수의 목록입니다. 메...  
427 OtherFiles EncodeKor(한국어 <-> 일본어 문자 코드 대치) 재 작성 프로젝트! [16] file Hide_D 75319   2010-05-29 2010-10-25 09:55
 
426 Talk 아랄3 디버깅이 말이죠... [2] file JKLeetro 35689   2010-04-20 2010-10-20 07:18
 
425 Talk AT 0.2에서 내부 버퍼가 4096을 넘을 수 있어야 합니다. [1] Hide_D 34245   2010-07-13 2011-03-04 05:56
ATCode인지 뭔지 내부 버퍼 길이가 4096바이트로 제한되어있어서 그보다 큰 길이가 들어올 경우 문제가 생깁니다. 길이를 제한하는 플러그인들은 모두 대용량의 텍스트도 받아올 수 있도록 처리해야할 것 같습니다.  
424 Talk JSCustom의 초기 골격 코드를 SVN에 커밋했습니다. [1] Hide_D 33949   2010-09-18 2010-10-25 09:57
지금 안된 부분이.... 1. 고수준 함수, 고수준 보조 함수 구현 ( http://wiki.aralgood.com/index.php/JSCustom/FunctionReference ) 2. 아랄트랜스 0.3버전용 함수 구현 3. 아랄트랜스 플러그인 규격과 v8Wrapper 모듈의 연결 4. UI 정도네요. 올리긴 했지만 ...  
423 Talk ATCustom - 프로젝트 소개 [8] Hide_D 32701   2010-07-22 2011-07-14 11:21
- 소개 - ATCustom은 사용자가 직접 메모리 훅 및 메모리 작업을 할 수 있는 Script 기반 Algorithm 플러그인입니다. Google Chrome에 탑재된 v8 JavaScript Engine을 사용하여 JavaScript 파일을 파싱하여 동작하며, ATCustom에서 제공하는 API를 사용하여 작...  
422 Talk 0.3님 제발 자비좀[.....] file 아무개 31299   2010-05-23 2010-05-23 06:20
 
421 Talk 번역 모듈로 인터넷을 이용하는 방법. Hide_D 30169   2010-06-04 2010-06-04 23:54
굳이 번역기를 이지트랜스를 쓰지 않아도 아랄트랜스를 사용하는 방법이 필요합니다. 네이버 번역 등을 인터넷으로 접근해서 쓰는 방법으로 번역 모듈을 만들어 보겠습니다.  
420 OtherFiles [프로그램, 소스] AT 환경 수집기 20100526 [1] file Hide_D 30118   2010-05-26 2016-05-28 15:42
 
419 Talk 0.3님 제발 자비좀[.....] [2] G2m 29951   2010-05-05 2010-05-23 06:21
디에스 이레 뚫으면서 알게된건데 일단 히데찌 말로는 관리자씨가 말하길 0.3 유니코드 완벽이염 ㅇㅇ 라고는 하는데 그 뭐랄까 문장 스크립트 형식이 00 30으로 시작하는 놈은 아랄이가 고대로 씹어 드셔서[............] 이걸 픽스로 잡아도 조트망이고 흠. ...  
418 OtherFiles AralTrans.exe 파일 살짝 수정했습니다. + 아랄씨 계시면 보세요 file Hide_D 28477   2010-06-07 2010-06-07 05:11
 
417 Archive [플러그인] OutRuby 임시 버전 20081012_2 [7] file Hide_D 28333   2008-10-12 2015-07-14 15:18
 
416 OtherFiles [프로그램] 필터 테스트 프로그램 [13] file Hide_D 27998   2008-12-16 2013-06-22 22:20
 
415 Archive [플러그인, 소스] NonCached 테스트 버전 20090709 [3] file whoami 27839   2009-07-09 2009-07-11 01:51
 
414 Talk [0.2] OnPluginInit단에서 스레드를 만들 때 [회피법] Hide_D 27118   2010-06-23 2010-06-23 02:10
http://lab.aralgood.com/board_documents/3202 에 나온대로 플러그인이 초기화되는 시점이 '안전하지' 않기 때문에 Init 단에 스레드를 추가하기가 어려운데, 이를 위한 회피 방법입니다 [OnInitThread에 AfxBeginThread를 사용하면 '무조건' 얼어버리는 현상...  
413 Archive [플러그인] GoogleTrans 테스트 버전 (20100620) file Hide_D 26601   2010-06-20 2010-06-20 16:00
 
412 OtherFiles [소스] Test Network + Google Translate Source - 2 file Hide_D 26517   2010-06-19 2010-06-19 09:59
 
411 Talk [질문] Http POST전송에 대한 이것저것 [3] 호기 24751   2009-09-22 2009-09-23 08:00
에고 Hide_D님과 HaruKaze님덕에 어찌어찌 POST전송을 할수 있게 되었네요 . 다시한번 두분께 너무 감사드리고요.. 전송해서 결과는 받는것은 되지만... 내용에 궁금한것이 두가지 있어서요 이렇게 다시 질문 올립니다. 우선 POST로 Header를 전송할때 말이에...  
410 Archive [플러그인, 소스] KiriKiri 테스트 버전 20090726 [10] file whoami 24511   2009-07-26 2009-07-28 23:52