// 1. 각종 FindWindow 활용
int main()
{
HWND h = FindWindow( 0, "계산기" ); // 열려 있는 메뉴의 핸들을 얻는다.
PostMessage( h, WM_QUIT, 0, 0 );
//DestroyWindow( h ); // 안된다.이유는 이론편에..
}
int main()
{
while( 1 )
{
Sleep(3000);
HWND h = FindWindow( "#32768", 0 ); // 열려 있는 메뉴의 핸들을 얻는다.
ShowWindow( h, SW_HIDE );
}
}
int main()
{
//HWND hwnd = FindWindow(
// 0, // 윈도우 클래스 이름
// "계산기" ); // 캡션바 내용
// progman 은 바탕화면 이다.
HWND hwnd = FindWindow( "Shell_TrayWnd", 0 ); // taskbar의 핸들을 얻음.
if ( hwnd == 0 )
{
cout << "계산기를 먼저 실행하세요." << endl;
return 0;
}
// -----------------------------
HRGN h = CreateEllipticRgn( 0, 0, 300, 300 );
SetWindowRgn( hwnd, h, TRUE );
//SetMenu( hwnd, 0 );
//if( IsWindowVisible( hwnd ) )
// ShowWindow( hwnd, SW_HIDE );
//else
// ShowWindow( hwnd, SW_SHOW );
}
// 2. DLL 만들어보기
// Dll 소스
//a.c
#include <stdio.h> // 이 안에 wchar_t 가 typedef되어 있다.
#define DLLSOURCE
#include "a.h" // DLL 헤더
void PutStringA( const char* s )
{
printf(s);
}
void PutStringW( const wchar_t* s )
{
wprintf(s);
}
//a.h
// DLL을 사용하는 방법
#include "a.h" // 1. 헤더 include
#pragma comment(lib, "MyDll.lib") // 2. lib를 링커에게 알려준다.
int main()
{
PutStringA("hello");
PutStringW(L"World\n");
}
int main()
{
HWND h = FindWindow( 0, "계산기" ); // 열려 있는 메뉴의 핸들을 얻는다.
PostMessage( h, WM_QUIT, 0, 0 );
//DestroyWindow( h ); // 안된다.이유는 이론편에..
}
int main()
{
while( 1 )
{
Sleep(3000);
HWND h = FindWindow( "#32768", 0 ); // 열려 있는 메뉴의 핸들을 얻는다.
ShowWindow( h, SW_HIDE );
}
}
int main()
{
//HWND hwnd = FindWindow(
// 0, // 윈도우 클래스 이름
// "계산기" ); // 캡션바 내용
// progman 은 바탕화면 이다.
HWND hwnd = FindWindow( "Shell_TrayWnd", 0 ); // taskbar의 핸들을 얻음.
if ( hwnd == 0 )
{
cout << "계산기를 먼저 실행하세요." << endl;
return 0;
}
// -----------------------------
HRGN h = CreateEllipticRgn( 0, 0, 300, 300 );
SetWindowRgn( hwnd, h, TRUE );
//SetMenu( hwnd, 0 );
//if( IsWindowVisible( hwnd ) )
// ShowWindow( hwnd, SW_HIDE );
//else
// ShowWindow( hwnd, SW_SHOW );
}
// 2. DLL 만들어보기
// Dll 소스
//a.c
#include <stdio.h> // 이 안에 wchar_t 가 typedef되어 있다.
#define DLLSOURCE
#include "a.h" // DLL 헤더
void PutStringA( const char* s )
{
printf(s);
}
void PutStringW( const wchar_t* s )
{
wprintf(s);
}
//a.h
// DLL 내의 모든 함수의 선언을 제공한다.
// 이헤더는 DLL의 제작자가 사용할 때는 각 함수가 export 되도록 한다.
// DLL 사용자가 사용할 때는 import 되도록 한다.
// 결국 MFC에서 등장하는 AFX_EXT_CLASS의 개념도 아래 DLLAPI의 개념과 완전 동일하다.
#ifdef DLLSOURCE
#define DLLAPI __declspec(dllexport)
#else
#define DLLAPI __declspec(dllimport)
#endif
#ifdef __cplusplus
extern "C"{
#endif
DLLAPI void PutStringA( const char* s );
DLLAPI void PutStringW( const wchar_t* s );
#ifdef __cplusplus
}
#endif
// UNICODE 매크로에따라서함수를결정할수있는매크로를제공한다.
#ifdef UNICODE
#define PutString PutStringW
#else
#define PutString PutStringA
#endif
// 1. C/C++ 을모두지원하기위해__cplusplus 사용
// 2. export/import 를위한C++ 지시어를알아야한다.
////////////////////////////////////////////////////////////////////////////////// DLL을 사용하는 방법
#include "a.h" // 1. 헤더 include
#pragma comment(lib, "MyDll.lib") // 2. lib를 링커에게 알려준다.
int main()
{
PutStringA("hello");
PutStringW(L"World\n");
}