본문 바로가기

쓰기

http://lab.aralgood.com/board_documents/3202
에 나온대로 플러그인이 초기화되는 시점이 '안전하지' 않기 때문에
Init 단에 스레드를 추가하기가 어려운데, 이를 위한 회피 방법입니다

[OnInitThread에 AfxBeginThread를 사용하면 '무조건' 얼어버리는 현상이 있었습니다
 예전에 (폐기한) DumpText2를 시험할 때나 현재 CustomDic을 개선할 때 모두 나타났습니다]

원리는 간단한데,
1. SetTimer로 수 초 뒤 특정 함수가 동작하도록 한다.
2. 그 함수에서 AfxBeginThread나 _beginthreadex를 시도한다.


UINT threadProc(LPVOID data){
    CDumpDlg dlg;
    dlg.DoModal();
    return 0L;
}

VOID CALLBACK TimerProc(HWND hwnd,UINT uMsg,UINT_PTR idEvent,DWORD dwTime){
    m_pThread = AfxBeginThread(threadProc,NULL);
    KillTimer(NULL,idEvent);
}

BOOL CDumpTextApp::OnPluginInit(HWND hSettingWnd, LPSTR szOptionStringBuffer){
    m_hSettingWnd = hSettingWnd;
    m_szOptionStringBuffer = szOptionStringBuffer;

    m_pTmpTimer = SetTimer(NULL,1,5000,TimerProc);

    return TRUE;
}

이 경우엔 초기화는 안정적으로 동작하지만 역시 '종료'시
추가 스레드가 작동중인지 아닌지 주의해주어야 할 것 같습니다.
분류 :
Talk
조회 수 :
27118
등록일 :
2010.06.23
02:06:41
엮인글 :
https://arallab.hided.net/36249/c9f/trackback
게시글 주소 :
https://arallab.hided.net/board_devtalk/36249
List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 Talk [필독] 테스트필터 사용시 주의사항 라파에 2008-08-03 155445
329 Talk 작전명. '누덕누덕' 작전 시작 Hide_D 2011-02-18 10674
328 Talk AppLoc.exe를 거치지 않고 AppLocale 가동시키는 법! Hide_D 2011-01-28 18687
327 Talk 폰트함수인덧 아무개 2011-01-11 18005
326 Archive [플러그인] CustomDic 4.0.4.131 RC [5] file Hide_D 2011-01-05 24298
325 Archive [소스] CustomDic v4 20110104 테스트버전 [3] file Hide_D 2011-01-04 16410
324 Archive [소스] CustomDic v4 20110102 테스트버전 [1] file Hide_D 2011-01-02 17513
323 Talk 웹 계정 아이디/비밀번호 secret Hide_D 2011-01-02 1
322 Talk DenyWord + 정규표현식? Hide_D 2010-12-18 17306
321 Talk ATCode에 @가 붙은 글꼴을 빼버려야겠군요 Hide_D 2010-12-11 16793
320 Archive [소스, 플러그인] Cache 테스트버전 101127 file Hide_D 2010-11-27 19949
319 Talk KiriKiri 텍스트 파싱 개선 프로젝트! Hide_D 2010-10-28 22403
318 Talk [뻘글] 요새 프로텍터가 하도 무서워서 Hide_D 2010-10-26 22878
317 Talk JSCustom의 초기 골격 코드를 SVN에 커밋했습니다. [1] Hide_D 2010-09-18 33949
316 Talk ATCustom - 프로젝트 소개 [8] Hide_D 2010-07-22 32701
315 Talk ATCustom - 함수 Reference [47] Hide_D 2010-07-20 103937
314 Talk AT 0.2에서 내부 버퍼가 4096을 넘을 수 있어야 합니다. [1] Hide_D 2010-07-13 34245
» Talk [0.2] OnPluginInit단에서 스레드를 만들 때 [회피법] Hide_D 2010-06-23 27118
312 Archive [플러그인] GoogleTrans 테스트 버전 (20100620) file Hide_D 2010-06-20 26602
311 OtherFiles [소스] Test Network + Google Translate Source - 2 file Hide_D 2010-06-19 26517
310 OtherFiles AralTrans.exe 파일 살짝 수정했습니다. + 아랄씨 계시면 보세요 file Hide_D 2010-06-07 28478