분류 전체보기
- YASU 1.6 9040 2009.05.06
- IOCP 서버 구현 간단한 예제 2009.04.16
- IOCP 를 이용한 간단한 소켓통신 2009.03.30
- 스파이 - Finder 2009.03.16
- 윈도우 최상위로 끌어올리기 2009.02.24
- DirectShow 에서 I420 포맷 2009.02.21
- 작업관리자 Task Manager - Tmanager 2009.02.17
- 기본적인 DHTML 컨트롤 2009.02.16
- WSAEventSelect 2009.02.16
- 웹캠 영상 사이즈 640x480 으로 변경하기 2009.02.13
YASU 1.6 9040
2009. 5. 6. 11:47
IOCP 서버 구현 간단한 예제
2009. 4. 16. 09:40
IOCP 를 이용한 간단한 소켓통신
2009. 3. 30. 11:49
스파이 - Finder
2009. 3. 16. 13:36
윈도우 최상위로 끌어올리기
2009. 2. 24. 13:59
if(::GetForegroundWindow() != GetSafeHwnd()) {
HWND hActiveWnd = ::GetForegroundWindow();
if(hActiveWnd != NULL) {
DWORD ThreadID = GetWindowThreadProcessId(hActiveWnd, NULL);
DWORD CurrentThreadID = GetCurrentThreadId();
if(CurrentThreadID != ThreadID) {
if(AttachThreadInput(CurrentThreadID, ThreadID, TRUE)) {
::BringWindowToTop(GetSafeHwnd());
AttachThreadInput(CurrentThreadID, ThreadID, FALSE);
}
}
}
}
DirectShow 에서 I420 포맷
2009. 2. 21. 02:31
DirectShow 에서 I420 포맷은 정의되어 있지 않다.
아래와 같이 정의하면 사용할 수 있다.
// {30323449-0000-0010-8000-00aa00389b71}
DEFINE_GUID(MEDIASUBTYPE_I420,
0x30323449, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
작업관리자 Task Manager - Tmanager
2009. 2. 17. 11:42
기본적인 DHTML 컨트롤
2009. 2. 16. 14:29
HTML 컨트롤을 선택하여 기본적으로 제공되는 소스를 수정한 DHTML컨트롤.
기존의 IDHTCtrlUI을 삭제(이때, 컴파일 에러는 전부 주석처리)하고 외부로 노출될 UIObj Object를 추가했다.(ATL Object Wizard)
IDHTCtrl 인터페이스 생성부분에서 아래와 같이 수정 및 멤버변수를 추가했다.
// 웹 브라우저 생성, 인터페이스 교환
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
CAxWindow wnd(m_hWnd);
// 1. Web Browser 컨트롤 생성
HRESULT hr = wnd.CreateControl(IDH_DHTCTRL);
if(SUCCEEDED(hr)) {
hr = CComObject<CUIObj>::CreateInstance(&m_pUI);
if(SUCCEEDED(hr)) {
// 2. Web Browser에게 연동되는 UIDisp 전달
CComQIPtr<IDispatch> pDisp(m_pUI);
hr = wnd.SetExternalDispatch(pDisp);
}
if(SUCCEEDED(hr)) {
// 3. Web Browser가 노출하고 있는 Interface 포인터 획득
hr = wnd.QueryControl(IID_IWebBrowser2, (void**)&m_spBrowser);
// 4. Web Browser와 실제 연동할 m_pUI인터페이스에게 Web Interface 전달
m_pUI->put_Web(m_spBrowser);
}
}
return SUCCEEDED(hr)?0:-1;
}
CComObject<CUIObj> *m_pUI;
//////////////////////////////////////////////////////////////////////////////
IUIObj 인터페이스에 Web property를 추가.
STDMETHODIMP CUIObj::get_Web(IUnknown **pVal)
{
m_spBrowser->Navigate(m_urlPath,NULL,NULL,NULL,NULL);
return S_OK;
}
STDMETHODIMP CUIObj::put_Web(IUnknown *newVal)
{
m_spBrowser = (IWebBrowser2*)newVal;
return S_OK;
}
GoToURL()이란 메소드도 추가하여 메소드 안에서 m_spBrowser->Navigate(m_urlPath,NULL,NULL,NULL,NULL)을 호출.
멤버변수
CComPtr<IWebBrowser2> m_spBrowser; //IDHCtrl 에서 전달되는 인터페이스 저장
CComBSTR m_urlPath; //URL 저장공간
OnClick()메소드도 옮겨오기....소스복사, IDL수정....뭐 대충 이정도밖에 기억안나네ㅡ.,ㅡ
기존의 IDHTCtrlUI을 삭제(이때, 컴파일 에러는 전부 주석처리)하고 외부로 노출될 UIObj Object를 추가했다.(ATL Object Wizard)
IDHTCtrl 인터페이스 생성부분에서 아래와 같이 수정 및 멤버변수를 추가했다.
// 웹 브라우저 생성, 인터페이스 교환
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
CAxWindow wnd(m_hWnd);
// 1. Web Browser 컨트롤 생성
HRESULT hr = wnd.CreateControl(IDH_DHTCTRL);
if(SUCCEEDED(hr)) {
hr = CComObject<CUIObj>::CreateInstance(&m_pUI);
if(SUCCEEDED(hr)) {
// 2. Web Browser에게 연동되는 UIDisp 전달
CComQIPtr<IDispatch> pDisp(m_pUI);
hr = wnd.SetExternalDispatch(pDisp);
}
if(SUCCEEDED(hr)) {
// 3. Web Browser가 노출하고 있는 Interface 포인터 획득
hr = wnd.QueryControl(IID_IWebBrowser2, (void**)&m_spBrowser);
// 4. Web Browser와 실제 연동할 m_pUI인터페이스에게 Web Interface 전달
m_pUI->put_Web(m_spBrowser);
}
}
return SUCCEEDED(hr)?0:-1;
}
CComObject<CUIObj> *m_pUI;
//////////////////////////////////////////////////////////////////////////////
IUIObj 인터페이스에 Web property를 추가.
STDMETHODIMP CUIObj::get_Web(IUnknown **pVal)
{
m_spBrowser->Navigate(m_urlPath,NULL,NULL,NULL,NULL);
return S_OK;
}
STDMETHODIMP CUIObj::put_Web(IUnknown *newVal)
{
m_spBrowser = (IWebBrowser2*)newVal;
return S_OK;
}
GoToURL()이란 메소드도 추가하여 메소드 안에서 m_spBrowser->Navigate(m_urlPath,NULL,NULL,NULL,NULL)을 호출.
멤버변수
CComPtr<IWebBrowser2> m_spBrowser; //IDHCtrl 에서 전달되는 인터페이스 저장
CComBSTR m_urlPath; //URL 저장공간
OnClick()메소드도 옮겨오기....소스복사, IDL수정....뭐 대충 이정도밖에 기억안나네ㅡ.,ㅡ
WSAEventSelect
2009. 2. 16. 14:16
더미가 있는 단일 연결리스트로 소켓정보를 관리하는 WSAEventSelect 모델.
AcceptThread로 접속된 클라이언트의 정보를 단일 연결리스트에서 관리하고,
접속된 클라이언트는 FD_READ | FD_WRITE | FD_CLOSE 이벤트가 발생하게 되면 EventsThread에서 입출력 처리.
정상작동의 여부는 확인안함. 오백만년전 소스!!
AcceptThread로 접속된 클라이언트의 정보를 단일 연결리스트에서 관리하고,
접속된 클라이언트는 FD_READ | FD_WRITE | FD_CLOSE 이벤트가 발생하게 되면 EventsThread에서 입출력 처리.
정상작동의 여부는 확인안함. 오백만년전 소스!!
웹캠 영상 사이즈 640x480 으로 변경하기
2009. 2. 13. 13:07
IEnumPins *pEnumPins;
pCap->EnumPins(&pEnumPins);
IPin *pPin;
PIN_DIRECTION PinDir;
while(pEnumPins->Next(1, &pPin, 0)==S_OK) {
pPin->QueryDirection(&PinDir);
if(PinDir == PINDIR_OUTPUT) {
CComQIPtr pAMSC (pPin);
int iCount, iSize;
VIDEO_STREAM_CONFIG_CAPS scc;
AM_MEDIA_TYPE *pmt;
pAMSC->GetNumberOfCapabilities(&iCount, &iSize);
if(sizeof(scc) != iSize)
{
// This is not the structure we were expecting.
return E_FAIL;
}
// Get the first format.
hr = pAMSC->GetStreamCaps(0, &pmt, reinterpret_cast(&scc));
if(hr == S_OK)
{
pmt->subtype = MEDIASUBTYPE_RGB24;
VIDEOINFOHEADER *vih = reinterpret_cast(pmt->pbFormat);
vih->bmiHeader.biWidth = 640;
vih->bmiHeader.biHeight = 480;
vih->bmiHeader.biSizeImage = 640*480*3;
pmt->lSampleSize = 640*480*3;
pAMSC->SetFormat(pmt);
}
break;
}
}