728x90

자세한 내용은 http://msdn2.microsoft.com/en-us/library/Aa242137(VS.60).aspx 여기에 있습니다.


골자는


프로젝트 컴파일 하기전에 프로젝트 속성.... 일반 탭에 있는 아래 그림 참조


img1.jpg


위 그림에서 처럼 빨간 테두리에 있는 것을 체크한 후, 컴파일을 하게 되면


OCX파일과 VBL파일이 생성됩니다.


VBL파일을 메모장으로 열어보시면 라이센스 키를 등록할 수 있는 레지스트리 내용이 나옵니다.


즉, 이것이 등록이 되야... OCX를 올려놓고 코딩할 수 있는 권한이 쥐어지는 것이죠..


단순 실행시에는 상관이 없습니다. 이 기능은 다른 회사나 다른 사용자가 자기 혹은 우리회사의 제품을


악의적으로 사용을 금하기 위한 조치입니다.

728x90

폼의 배경을 투명하게 만드는 코드입니다. 투명하게 만드는 코드라고는 하지만

실제적으론 투명하게 되는 것이 아니고 폼에 의해 가려진 윈도우의 배경을 폼의

배경화면으로 살짝 옮기는 것입니다. 테스트 하실때 일단 폼을 투명하게 하고

폼상단의 바를 클릭하여 드래그를 해보면 알수 있을 것입니다.


1. 모듈에 다음과 같은 API Function을 선언합니다


Public Const GWL_EXSTYLE = (-20)

Public Const WS_EX_NOTRANSPARENT = &H0&

Public Const WS_EX_TRANSPARENT = &H20&

Public Const SWP_FRAMECHANGED = &H20

Public Const SWP_NOMOVE = &H2

Public Const SWP_NOSIZE = &H1

Public Const SWP_SHOWME = SWP_FRAMECHANGED Or SWP_NOMOVE Or SWP_NOSIZE

Public Const HWND_NOTOPMOST = -2


Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _

       (ByVal hwnd As Long, _

        ByVal nIndex As Long, _

        ByVal dwNewLong As Long) As Long


Declare Function SetWindowPos Lib "user32" _

       (ByVal hwnd As Long, _

        ByVal hWndInsertAfter As Long, _

        ByVal x As Long, _

        ByVal y As Long, _

        ByVal cx As Long, _

        ByVal cy As Long, _

        ByVal wFlags As Long) As Long


2. 폼을 하나 추가시킨후 폼에 두개의 CommandButton 을 올려놓습니다.

   그리고 각각의 CommandButton 에 다음과 같이 코딩하십시요.


' 폼을 투명하게 만든다

Private Sub Command1_Click()

    SetWindowLong Me.hwnd, GWL_EXSTYLE, WS_EX_TRANSPARENT

    SetWindowPos Me.hwnd, HWND_NOTOPMOST, 0&, 0&, 0&, 0&, SWP_SHOWME

End Sub


' 폼을 원래대로 되돌린다

Private Sub Command1_Click()

    SetWindowLong Me.hwnd, GWL_EXSTYLE, WS_EX_NOTRANSPARENT

    SetWindowPos Me.hwnd, HWND_NOTOPMOST, 0&, 0&, 0&, 0&, SWP_SHOWME

    Me.Refresh

End Sub


3. 실행을 한후 CommandButton1 을 클릭하게 되면 폼이 투명하게 변하고

   CommandButton2 를 클릭하게 원래대로 되돌아 옵니다.

   폼을 투명하게 한후 폼상단의 바를 클릭하여 드래그 해보세요.

   그러면 위에서 이야기한 내용을 알게 될것입니다.

728x90


윈도우상에서 서로 다른 장치간의 명령을 전달하는 메시지에 관련된 API 함수

[메시지 관련함수]

BroadcastSystemMessage

-         현재 실행중인 모든 응용 프로그램이나 드라이버로 메시지를 보낸다.

CallMsgFilter

-         메시지를 전달하고 훅 프로시저에 훅 코드를 전달한다.

CallNextHookEx

-         현재 훅 Chain상의 다음 훅 프로시저에 정보를 전달한다.

DefWindowProc

-         메시지 인자값을 정상적인 처리를 위해 메시지 프로시저로 전달한다.

DispatchMessage

-         응용 프로그램의 메시지 루프에서 처리하기에 적절한 윈도우 프로시저로 메시지를 보

낸다.

GetMessage

-         어플리케이션의 메시지 큐에서 메시지를 취득한다.

GetMessageExtraInfo

-         마지막으로 받은 메시지의 추가 정보를 받는다.

GetMessagePos

-         마지막 메시지가 전달되었을 때 화면 좌표의 커서 위치를 알려준다.

GetMessageTime

-         윈도우가 시동된 이후로 경과된 시간을 미리 초 단위로 구한다.

InSendMessage

-         윈도우에서 보내온 메시지와 다른 쓰레드에서 보내온 메시지를 구분한다.

PeekMessage

-         결과값을 보내기 전에 큐에 있는 메시지를 기다리지 않고 메시지가 존재한다면 MSG 구조체에 보관한다.

PostMessage

-         메시지 큐 안에 메시지를 넣고 함수를 끝내고 복귀한다.

PostQuitMessage

-         윈도우를 종료하는 실제적인 함수이다

PostThreadMessage

-         메시지가 수행되기를 기다리지 않고 지정한 쓰레드의 메시지큐에 메시지를 놓는다.

RegisterWindowMessage

-         레지스트리에 특정한 메시지를 등록한다.

ReplyMessage

-         SendMessage() 함수에 전달된 메시지에 응답한다.

SendMessage

-         파라미터로 지정된 윈도우 핸들값을 갖고 있는 위도우나 컨트롤에 지정된 메시지를 보낸다.

SendMessageTimeOut

-         메시지를 처리하는데 TimeOut 시간이 있어서 메시지를 윈도우에 전달한 후 메시지가 처리되거나 TimeOut 시간이 끝날때까지 반환되지 않는다.

SendNotifyMessage

-         지정한 윈도우에 메시지를 보낸다.

SetWindowsHookEx

-         윈도우 메시지 필터 함수를 DLL 이나 응용 프로그램에 설치한다.

TranslateMessage

-         윈도우안에서 사용되는 Virualkey Message Char Message 롤 변환하는 함수이다.

UnhookWindowsHookEx

-         SetWindowsHooksHookEx() 함수에서 설정된 훅 프로시저를 체인에서 제거한다.

WaitMessage

 -  새로운 메시지가 메시지 큐에 들어올때까지 기다린다.


구조체

Type MSG

 hwnd as long

 message as long

 wParam as long

 lParam as long

 time as long

 pt as POINTAPI

End Type

 

hWnd : 이벤트를 발생한 윈도우의 핸들

message : 이벤트에 대응하는 메시지 값으로 정의된 매크로 이름을 사용 한다.

wParam / lParam : 이벤트에 대한 정보 (마우스나 키보드의 눌러진 키값, 마우스의 위치, 시스템 관련 정보) 를 갖고 있음.

 

 time : 메시지가 발생한 시간 (마이크로 초0

 pt   : 화면상의 마우스 위치 정보 (x,y)

 

주요 메시지

 WM_CHAR : 키보드 입력 처리

키보드가 눌러졌을 때 현재 WM_CHAR 가 활성화된 윈도우로 보내진다.

       이때 wParam에는 눌러진 키 값이 ASC코드로 들어가며 lParam 에는 키가 눌러진
       횟수와 눌러진 키가 확장키인지 ALT 키가 같이 눌러졌는지 등의 정보비트를 포함 한다.

WM_COMMAND

     메뉴항목을 선택할 때 발생하는 메시지

 WM_CREATE

       윈도우를 생성하는 메시지

 WM_DESTROY

       프로그램을 종료시키다.

 WM_KEYDOWN

       펑션키 입력 메시지

 WM_LBUTTONDOWN

       마우스의 왼쪽 버튼이 눌러졌을 때 발생되는 메시지

 WM_RBUTTONDOWN

       마우스의 오른쪽 버튼이 눌러졌을 때 발생되는 메시지

 WM_LBUTTONUP

       마우스의 왼쪽 버튼을 놓았을 때 발생되는 메시지

 WM_RBUTTONUP

       마우스의 오른쪽 버튼을 놓았을 때 발생되는 메시지

WM_LBUTTONDBLCLK

      마우스의 왼쪽 버튼 더블클릭시 발생되는 메시지

WM_RBUTTONDBLCLK

      마우스의 오른쪽 버튼 더블 클릭시 발생되는 메시지

WM_PAINT

      윈도우 그리기(화면 제출력)

WM_TIMER

      타이머가 꺼질 때마다 발생되는 메시지

+ Recent posts