반응형

안녕하세요. 오늘은 COM 래퍼 크래스 만드는 방법을 배워보겠습니다.

OCX를 만들게 되면 일반적으로 웹에서 사용하지만,

간혹 OCX를 프로그램에서 사용해야 하는 경우가 있습니다.

이럴때 자동으로 UI에서 래퍼 클래스가 생성되지만

안될 경우 혼란에 빠지게 됩니다. ㅠㅠ




OCX를 직접 사용하기 위해서는 래퍼 클래스를 이용해서 노출된 인터페이스에 접근하게됩니다.

래퍼 클래스는 OCX를 개발할 때 생성된 GUID를 이용해서 접근합니다.



1
2
3
#include "StdAfx.h"
#include "Activex_TESTCtrl.h"
IMPLEMENT_DYNCREATE(Activex_TESTCtrl, CWnd)
cs


Activex_TESTCtrl.cpp 파일 입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#pragma once
 
// 컴퓨터에서 Microsoft Visual C++를 사용하여 생성한 IDispatch 래퍼 클래스입니다.
 
// 참고: 이 파일의 내용을 수정하지 마십시오. Microsoft Visual C++에서
//  이 클래스를 다시 생성할 때 수정한 내용을 덮어씁니다.
 
/////////////////////////////////////////////////////////////////////////////
// CActivex_test01ctrl1 래퍼 클래스입니다.
 
class Activex_TESTCtrl : public CWnd
{
protected:
    DECLARE_DYNCREATE(Activex_TESTCtrl)
public:
    CLSID const& GetClsid()
    {
        static CLSID const clsid                        
            = { 0x2d12f2e40x1c6f0x475a, { 0x180x320x190xef0xef0x9a0x170x58} };
        return clsid;
    }
    virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle,
        const RECT& rect, CWnd* pParentWnd, UINT nID, 
        CCreateContext* pContext = NULL)
    { 
        return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); 
    }
 
    BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, 
        UINT nID, CFile* pPersist = NULL, BOOL bStorage = FALSE,
        BSTR bstrLicKey = NULL)
    { 
        return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
            pPersist, bStorage, bstrLicKey); 
    }
 
    // 특성입니다.
public:
 
 
    // 작업입니다.
public:
 
    // _DActiveX_Test01
 
    // Functions
    //
 
    void Fun()
    {
        InvokeHelper(0x01, DISPATCH_METHOD, VT_EMPTY, NULLNULL);
    }
 
    
    // Properties
    BSTR GetFunIP()
    {
        BSTR site;
        InvokeHelper(0x02, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&site, NULL);
        return site;
    }
 
    void SetFunIP(LPCTSTR newVal)
    {
        static BYTE parms[] = VTS_BSTR;
        InvokeHelper(0x02, DISPATCH_PROPERTYPUT, VT_BSTR, NULL, parms, newVal);
    }
 
    
 
};
 
cs


Activex_TESTCtrl.h 파일 입니다.


CSLID는 OCX에 등록된 GUID를 복사하면 됩니다.


생성된 래퍼 클래스는 DDX_Control 함수를 사용해서 직접 연결하면 사용 가능합니다.


OCX에 설정된 메서드 또는 속성에 접근하기 위해서는 InvokeHelper 함수를 사용해야 합니다.


InvokeHelper함수는 wFlags를 통해 지정된 컨텍스트에서 dwDispID를 통해 지정된 개체 메서드 또는 속성을 호출합니다.



InvokeHelper 함수 구문입니다.


5개 이상 매개 변수를 사용하고 있으며 가장 중요한 메서드는 dwDispID입니다.

dwDispID를 OCX개발 시 설정 된 ID이며 ID가 다를 경우 "형식 오류" 를 리턴 합니다.



vtRet인수의 가능한 VARENUM 열거형입니다.

설정 된 값을 설정 후 접근하면 됩니다.


이렇게 래퍼 클래스를 만들면 쉽게 COM을 접근해서 사용 가능합니다.


자동 생성이 안된다고 당황하지 마시고 안되면 그냥 위 내용을 복사해서 사용하시면 됩니다.


그럼 즐거운 주말 보내십시오.


감사합니다.


반응형
반응형

안녕하세요. 오늘은 C# COM모듈을 C++에서 사용하는 방법을 알아 보겠습니다.

C#은 많은 Class를 포함하고 있어 C++보다

빠르고 유용하게 사용할 수 있는 좋은 장점이 있습니다.


 

이번 프로젝트는 C# 메시지 박스를 C++에서 출력해보겠습니다.

 

  

클래스 라이브러리 프로젝트를 생성합니다.

 

 

 

C#모듈을 외부 모듈에서 사용하기 위해서는 기본 설정인 Any CPU를 반드시 x86, x64로 변경해야 합니다.

꼭 확인해주세요. ^^

 

 

 

COM tlb를 사용하기 위해서 설정에서 “COM Interop등록”을 체크해주세요.

 

 

 

어셈블리 설정에서 “어셈블리를 COM에 노출”을 체크해주세요.

 

 

 

COM모듈로 사용하기 위해서 기본 Interface를 노출해야 합니다.

그래서 기본이 되는 Interface를 생성해주세요.

생성된 Interface를 상속 받아 Class를 생성합니다.

 

 

 

COM을 사용하기 위해서는 고정 GUID가 필요합니다.

GUID Tool을 사용해서 두개의 새 GUID를 생성해서 복사 합니다.

 

생성된 CallModule.dll을 COM으로 사용하기 위해서는 Interface가 정의 된 .tlb파일이 필요합니다.

 

 

 

RegAsm.exe를 사용해서 .tlb를 생성해야 합니다.

가장 중요한 것은 RegAsm.exe를 컴파일 버전에 따라서 복사 후 사용하셔야 합니다.

저는 x64로 컴파일 했기 때문에 x64용 RegAsm.exe를 사용했습니다.

경로는 “C:\Windows\Microsoft.NET\Framework64\v4.0.30319”입니다.

설치 환경에 따라 다르지만, 꼭 컴파일 버전별로 확인해주세요.

위에 보이시는 것 처럼 “Regasm 모듈명 /tlb:이름.tlb” 명령어를 실행합니다.

그럼 실행 위치에 설정한 .tlb파일이 생성 됩니다.

생성된 .tlb파일은 c++프로젝트로 복사해주세요.

 

이제 C++ 프로젝트를 생성해주십시오.

C++에서는 C# COM Class를 확인 할 수 없기 때문에 별도 Wrepper Class를 만들어야 합니다.

 

 

CallClassWrapper.cpp 입니다.

 

 

 

CallClassWrapper.h 입니다.

.tlb를 포함하게 되면 컴파일 폴더에 .tlh가 생성 됩니다.

이 .tlh를 참고해서 CLSID, DIID를 설정하면 됩니다.

 

CallModule.zip

 

 처음 컴파일에 오류가 발생하게 되면 생성된 .tlh를 확인해서 CLSID, DIID를 동일하게 하면

문제 없이 동작합니다.

 

빌드는 Visual Studio 2015에서 진행 했습니다.

 

C# COM모듈을 C++에서 사용하는 방법을 알아 보았습니다.

감사합니다.

 

 

 

반응형
반응형

안녕하세요. 빌리브컴입니다.

어제 원도우 업데이트 후 익스플로러에서 마우스 휄이 안 움직이기 시작하네요.

오늘은 이런 경우 해결방법을 알아 보겠습니다.

마우스휄-1

먼저 익스플로러에서 인터넷 옵션을 선택해주세요.

마우스휄-2

인터넷 옵션 창이 출력되면, 고급 옵션에서 “부드러운 화면 이동 사용” 메뉴를 언 체크 해주시면

정상적으로 마우스 휄을 사용할 수 있습니다.

정말 쉽죠.. ㅋㅋ

반응형
반응형

ZTE에서 신규 제품이 나왔습니다.
가격은 430$ ~ 600$ 정도입니다.
그런데 사양이 장난 아니네요.
중국에서 화웨이 다음 회사라고 합니다.

zte-nubia-z11-1

zte-nubia-z11-2

 

zte-nubia-z11-3

NETWORK
Technology
GSM / CDMA / HSPA / LTE

2G bands
GSM 850 / 900 / 1800 / 1900 - SIM 1 & SIM 2

CDMA 800

3G bands
HSDPA 850 / 900 / 1900 / 2100

TD-SCDMA

4G bands
LTE band 1(2100), 3(1800), 7(2600), 38(2600), 39(1900), 40(2300), 41(2500)

Speed
HSPA, LTE

GPRS
Yes

EDGE
Yes

LAUNCH
Announced
2016, June

Status
Available. Released 2016, July

BODY
Dimensions
151.8 x 72.3 x 7.5 mm (5.98 x 2.85 x 0.30 in)

Weight
162 g (5.71 oz)

SIM
Dual SIM (Nano-SIM, dual stand-by)

DISPLAY
Type
IPS LCD capacitive touchscreen, 16M colors

Size
5.5 inches (~75.2% screen-to-body ratio)

Resolution
1080 x 1920 pixels (~403 ppi pixel density)

Multitouch
Yes

Protection
Corning Gorilla Glass 3

- nubia UI 4.0

PLATFORM
OS
Android OS, v6.0.1 (Marshmallow)

Chipset
Qualcomm MSM8996 Snapdragon 820

CPU
Dual-core 2.15 GHz Kryo & dual-core 1.6 GHz Kryo

GPU
Adreno 530

MEMORY
Card slot
microSD, up to 256 GB (uses SIM 2 slot)

Internal
64 GB, 4 GB RAM or 128 GB, 6 GB RAM

CAMERA
Primary
16 MP, f/2.0, phase detection autofocus, OIS, dual-LED (dual tone) flash

Features
1/2.8" sensor size, 1.12 µm pixel size, geo-tagging, touch focus, face/smile detection, panorama, HDR

Video
2160p@30fps

Secondary
8 MP, f/2.4, 1.4 µm pixel size, 1080p

SOUND
Alert types
Vibration; MP3, WAV ringtones

Loudspeaker
Yes

3.5mm jack
Yes

- Dolby Atmos
- 24-bit/192kHz audio
- Active noise cancellation with dedicated mic

COMMS
WLAN
Wi-Fi 802.11 a/b/g/n/ac, dual-band, Wi-Fi Direct, DLNA, hotspot

Bluetooth
v4.1, A2DP, LE

GPS
Yes, with A-GPS, GLONASS

NFC
Yes

Infrared port
Yes

Radio
To be confirmed

USB
Type-C 1.0 reversible connector, USB On-The-Go

FEATURES
Sensors
Fingerprint, accelerometer, gyro, proximity, compass

Messaging
SMS(threaded view), MMS, Email, Push Email, IM

Browser
HTML5

Java
No

- Fast battery charging: 83% in 30 min (Quick Charge 3.0)
- MP4/H.264 player
- MP3/WAV/FLAC/eAAC+ player
- Photo/video editor
- Document viewer

BATTERY
Non-removable Li-Ion 3000 mAh battery

MISC
Colors
Silver, Gray, Gold, Rose Gold

반응형
반응형

안녕하세요.
인터파크에서 개인 정보가 유출된 사실을 전해 드립니다.

인터파크-개인정보-1-768x442

인터파크 측은 회사에서 가장 소중히 담당해야 할 개인 정보를 2달전에 유츌 당했다고 합니다.

최근 해커에게 30억을 달라는 협박에 못 이겨 경찰에 신고 했다고 합니다.
아래 주소에서 인터파크 로그인 시 유출 여부를 확인 할 수 있습니다.

인터파크 개인 정보 유출 확인

인터파크-개인정보-3

현재 피해자로 집계된 사람 숫자는 1030만 명 정도 된다고 합니다.

확인 결과 저도 이름, 생년월일, 휴대폰번호, 이메일, 주소 비밀번호, ID가 털렸다고 나오네요. 이런.

인터파크-개인정보-2

현재 인터파크 측은 비상 대응 체제에 따라 움직이고, 더 이상의 피해를 막기 위해 노력한다고 합니다.
(정보는 다 털렸지만…)

인터파크-개인정보-4

가입하신 분들은 꼭 확인하시고, 암호 변경이나 탈퇴를 권장 합니다.

반응형
반응형

샤오미-미밴드2-1
무료쿠폰

안녕하세요. 빌리브컴입니다.
대륙 기술의 끝판왕 샤오미 미밴드2가 6월 7일부터 출시 예정이네요.
정말 가성비가 장난 아닙니다.
샤오미-미밴드2
샤오미 미밴드2 스펙입니다.
디스플레이: 0.42" OLED Display
네트워크 : 2세대 Bluetooth 4.0
배터리 : 리튬폴리머 70mAh, 20일 지속.
규격 : 15.7 X 40.3 X 10.5(mm), 7.0g
주요기능 : 시계, 심박수 측정 및 수면 모니터, 만보기, Fitness Alarm 기능, Smart Lock 지원
기타 :IP67 등급 방수 방진 지원, 캡슐이 잘 떨어지지 않는 새로운 디자인의 손목밴드, ADI 초저전력 가속 및 광전센서 탑재
 
이건 뭐 있을껀 다 있네요.
 
샤오미-미밴드2-1
 
아래 보이는 버튼을 사용해서 모든 메뉴를 컨트롤 할 수 있습니다.
가장 중요한 것은 현 한국 제품에 있는 기능 중 심박센서 기능이 탑재되어 있습니다.
그런데 가격이 2만7천이라고 하네요.
 
본체 무게 7g, 심박 센서, IP67 등급의 방진 방수, 저전력 블루투스 4.0 LE, 배터리 수명 20일,
피부 친화 소재로 개선한 스트랩 등 하드웨어 사양은 전작보다 크게 개선되었습니다.
 
혹시 탐나시면 한번 구매해보세요. ㅋㅋ
 
무료쿠폰-영화


반응형
반응형




무료쿠폰

 

이메일 및 해외 서비스 계정이 해킹 되었는지 확인 할 수 있는 방법

안녕하세요. 빌리브컴입니다.

어느날 갑자기 문자로 이메일 계정이 해킹되었습니다. 하면 가슴이 쿵하시죠.

그리고 **회사에서 DB가 해킹 당했습니다. 기사가 떠도 가슴이 쿵하겠죠.


이런 이메일 계정 해킹 정보를 확인할 수 있는 사이트를 소개하겠습니다.

이메일-해킹-도난

사이트 : 해킹확인 사이트 바로가기

상단에 이메일을 입력하면 해킹 여부가 확인 됩니다.

이메일-해킹-도난1

빌리브컴 이메일은 다행히 아무 문제가 없네요.

혹시나 하시는 분은 한번 확인해보세요.

국내 서비스는 안되는거 같습니다. 해외 이메일 서비스일 경우 확인해보십시오.

감사합니다.

 

무료쿠폰-영화


반응형
반응형

안녕하세요. 빌리브컴입니다.

 

Windows10을 업그레이드 많이 하시는데요.

초기 업그레이드 시 KN버전에서 USB관련 드라이브를 인식 못할 경우가 있습니다.

이럴 경우 정말 당황스럽죠.

드라이브인식

 

Windows10은 USB인식에 필요한 “미디어 기능 팩”이 미 설치되어 발생하는 문제입니다.

Windows10 드라이버 인식하지 못하는 문제를 “미디어 기능 팩”을 설치 하여 해결 가능합니다.

드라이브인식2

Windows10 TH2 10586 이전 버전용

Windows10 TH2 10586 업데이트 이후용

 

Windows10을 초기 설치 시 업그레이드 후 라면 두번째 링크에서 다운 받아 설치하면 됩니다

“미디어 기능 팩”을 설치하면 드라이버 인식 문제는 한번에 해결됩니다.

 

이상입니다.

반응형
반응형

안녕하세요. 빌리브컴입니다.

오늘은 컴퓨터에 가장 중요한 하드 디스크 원리에 대해서 알아보겠습니다.

하드디스키원리-1

 

플래터(platter)- 데이터를 저장하는 곳으로 둥글고 납작한 원판 디스크를 사용

헤드(head)- 플래터로 데이터를 기록하거나 읽는 장치

슬라이더(slider)- 암에 장착

암(arm)- 디스크를 플래터 위로 움직여 헤드의 위치를 설정

액추에이터(actuator)- 암을 움직이게하는 동력을 주는 기능

논리보드(logic board)- 하드디스크, 시스템과의 입출력 연결회로

[하드디스크 데이터 흐름]

하드디스크원리-2

 

데이터 흐름도는 하드디스크의 역할을 이해하는데에 도움이 됩니다.

1.  디스크의 접근하는 첫번째 단계는 필요한 정보를 찾는 것입니다.  응용프로그램, 운영체제, 특정 드라이브 등등
디스크의 어느 부분을 읽어야 하는지에 대해 결정합니다.

2.  드라이브 내 주소(address)에 요청이 이루어지기까지는  운영체제나 다른 프로그램이 바이오스에게 알려주는
정보로 번역 되어야 합니다.  플래터에는   자체의 실린더, 트랙, 헤드에 대한 정보를 담아두는 주소가 몇 바이트씩 할당되어 있는데,
제조사 뿐만 아니라 모델마다 다 다르므로  요청된 정보는 디스크 드라이브  인터페이스상으로 보내져서 의 MPU(Main Processing Unit)가
올바른 정보로 번역하여 실제의 정보가 있는 주소로 전달되어 집니다.

3. 의 컨트롤 프로그램은 먼저 요청받은 정보가 이미 자체의 내부에 있는지 확인하고 시스템에 제공해 줍니다.

4.  논리보드는 받은 주소를 해석하고, 드라이브의 특징을 고려하는 번역 단계를 수행하게 되고,  의 논리
프로그램은 요청된 실린더의 최종 숫자를 살핍니다.  그 실린더의 최종 숫자는 디스크 표면의 어느 트랙을 살펴 보아야
할지 말해줍니다.  보드는 액추에이터에게 지시하여 판독, 기록, 헤드로 트랙위치를 이동하도록 합니다.

5.  헤드는 트랙을 읽기 시작하고 요청 받은 섹터를 찾습니다.  정확한 섹터 숫자로 회전한 후 섹터의 내용을 읽습니다.

6. 논리보드는   내부를 통제하는 것으로써, 받은 정보를 일시적인 저장장소(buffer)로 전달하는 것을 조정합니다. 
그 다음에 그 정보를 하드디스크 인터페이스로, 대개는 시스템 메모리로 보냄으로써 데이터 요청을 만족 시키게 됩니다.

[출처] 하드디스크의 구조와 원리

반응형
반응형

오늘은 게시판 홈페이지를 만들기 위해서 사용하는

프레임워크 그루보드5 설치에 대해서 알아보겠습니다.

 

그누보드5 설치-1


그루보드5를 설치하기 위해서는 DB, 웹서버를 셋팅해야 합니다.

하지만 많은 사용자들이 초보이기 때문에  DB, 웹서버 셋팅이 쉽지 않습니다.

그래서 오늘은 DB,웹서버 셋팅을 스킵하고,  무료 도메인에 설치하는 방법을 알려드리겠습니다.

먼저 그누보드5를 다운로드 받습니다.

그누보드5 다운로드 사이트 : https://sir.kr/g5_pds/3220

 

그누보드5 설치-2


가장 최신 버전을 받아서 설치하는게 가장 좋습니다.

다운로드된 파일을 압축을 풀고 무로 도메인 메인 폴더에 FTP를 사용해서 복사합니다.

 

그누보드5 설치-3


그누보드5를 설치하기 위해서는 data폴더가 필요합니다.

 

그누보드5 설치-5


다운로드 후 폴더 안에 data폴도를 생성합니다.

이제 그누보드5 설치 화면에서 설치를 클릭 합니다.

 

그누보드5 설치-4


data 폴더가 있다면 정상적으로 그누보드5 설치 화면으로 이동합니다.

 

그누보드5 설치-6


그누보드5 라이센스를 "동의합니다."를 체크하고 "다음"을 클릭합니다.

 

그누보드5 설치-7


그누보드5를 설치하기 위해서는 MySQL정보가 있어야 합니다.

도메인에 등록된 User, Password, DB정보를 등록하십시오.

최고관리자 정보는 그누보드5 관리 정보이므로, 사용하고하는 비밀번호를 등록하면 됩니다.

*비밀번호를 잊어 버릴 경우 참고하십시오. [그루보드5 관리자 비밀번호 리셋]

 

그누보드5 설치-8

 

DB에 문제가 없다면 정상 적으로 설치 됩니다.

설치 후 도메인으로 이동하면 메인 페이지가 출력 됩니다.

 

그누보드5 설치-9


DB등록에서 등록한 관리자 정보를 입력하고 로그인 되면 그누보드5를 셋팅할 수 있습니다.

이상으로 그루보드5 설치 방법을 마치겠습니다.

감사합니다.

반응형

'IT 나라 > 프로그램 이야기' 카테고리의 다른 글

COM 래퍼 클래스 만들기  (0) 2017.01.20
C# COM 모듈 C++에서 사용하기  (1) 2017.01.13
그누보드5 관리자 비밀번호 변경 방법  (0) 2016.05.04
Sliding window  (0) 2013.07.02
Window Event Sequence  (0) 2013.06.12

+ Recent posts