C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[68495] Re:빌더님께 염치없지만 소스코드좀 부탁 드립니다
빌더(TWx) [builder] 1427 읽음    2012-11-09 08:43
현이 님이 쓰신 글 :
: 빌더님이 답변해주신 인디 FTP한글문제 답변 보고서 한방에 문제를 해결한 일인입니다 ^^
: 답변해주시는 글들 보면 내공이 높은 고수분이란걸 느끼게됩니다
: 다른게 아니구요 아래 글중에 엠바 IDE에서 실행중인지 알아내는 방법을 샘플코드로
: 올려주셨는데요 소스코드를 올려 주시면 안될까요
: 제가 콤포넌트를 하나 만들고 있는데 빌더님의 코드가 중요한 역할을 할거 같아서 그러거든요
: 수저를 쥐어줘도 알아서 떠먹지도 못하는 염치없는 부탁인줄은 알고있지만
: 빌더님 부탁 좀 드리겠습니다




답변) 소스코드 입니다...

<PstChk.cpp>

//---------------------------------------------------------------------------
#include <windows.h>
#include <psapi.h>
#include <string>
#include <assert.h>
#pragma hdrstop

//---------------------------------------------------------------------------
#pragma package(smart_init)

#pragma comment(lib, "psapi.lib")

bool IsDebugger()
{
asm {
    mov eax, fs:[0x18]
    mov eax, dword ptr [eax + 0x30]
    mov al, byte ptr [eax + 0x02]
    and eax, 0xFF
    }
    return _EAX;
}

static std::string getFileName(const std::string &s)
{
    char sep = '\\';

    size_t i = s.rfind(sep, s.length( ));
    if (i != std::string::npos) {
        return(s.substr(i+1, s.length( ) - i));
    }

    return("");
}

typedef NTSTATUS (NTAPI *PFUNC)(HANDLE, INT, PVOID, ULONG, PULONG);

bool IsIDE()
{
    DWORD dwLength = 0x18;
    LPVOID pbuf        = NULL;
    bool retValue = false;
    PFUNC pFunc;

    pFunc = (PFUNC)GetProcAddress(GetModuleHandleA("ntdll.dll"), "NtQueryInformationProcess");

    assert(pFunc);

    pbuf = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwLength);

    assert(pbuf);

    NTSTATUS status = pFunc(GetCurrentProcess(), 0, pbuf, dwLength, &dwLength);

    assert(!status);

    HANDLE hProcess;
    DWORD Access = PROCESS_QUERY_INFORMATION | PROCESS_VM_READ;

    hProcess = OpenProcess(Access, FALSE, *PDWORD((PBYTE)pbuf + 0x14)) ;

    char str[MAX_PATH];
    GetProcessImageFileNameA(hProcess, str, sizeof(str));

    if( strcmpi("bds.exe", getFileName(std::string(str)).c_str()) == 0)
        retValue = true;

    CloseHandle(hProcess);
    HeapFree(GetProcessHeap(), 0, pbuf);

    return retValue;
}



...

+ -

관련 글 리스트
68492 빌더님께 염치없지만 소스코드좀 부탁 드립니다 현이 1230 2012/11/08
68495     Re:빌더님께 염치없지만 소스코드좀 부탁 드립니다 빌더(TWx) 1427 2012/11/09
68507         Re:Re: 콤포넌트 불법복제 방지에 유용하하겠네요 현이 1433 2012/11/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.