COM 실습 - 바로가기, 태스크바

2007/12/06 16:58

1. 바로가기
[ more.. | less.. ]
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <tchar.h>
#include <shlobj.h>

// 바로가기 만들기

int main()
{
    CoInitialize( 0 );

    // 원하는 COM객체를 생성한다.
    // 클래스 팩토리가 없을때 사용한다.
    IShellLink* pLink;
    HRESULT ret = CoCreateInstance(
        CLSID_ShellLink,        // CLS ID
        0,                        // 포함(사용안함)
        CLSCTX_INPROC_SERVER,    // DLL에 있는 COM
        IID_IShellLink,            // 인터페이스 ID
        reinterpret_cast<void**>(&pLink) );

    if( FAILED( ret ) )
    {
        printf( "실패\n" );
        CoUninitialize();

        return 0;
    }
    //--------------------------------------------------------
    pLink->SetPath(_T("C:\\windows\\system32\\calc.exe"));    // 단축아이콘을 만들 화일
    pLink->SetDescription( _T("Calc Application") );        // 설명

    // IPersistFile 인터페이스가 필요하다.
    IPersistFile* pFile;
    ret = pLink->QueryInterface( IID_IPersistFile, reinterpret_cast<void**>(&pFile) );

    if( FAILED( ret ) )
    {
        printf( "실패\n" );
        pLink->Release();
        CoUninitialize();

        return 0;
    }

    pFile->Save( _T("C:\\aaa.lnk"), FALSE );
   
    //--------------------------------------------------
    pLink->Release();
    pFile->Release();


    CoUninitialize();
}


2. Taskbar
[ more.. | less.. ]
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <tchar.h>
#include <shlobj.h>

// Taskbar제어
// 1. SHAppBarMessage()    태스크바의 위치,크기
// 2. ITaskbarList        인터페이스

int main()
{
    CoInitialize( 0 );

    // TaskbarList 객체를 생성한다.
    ITaskbarList* pList;

    HRESULT ret = CoCreateInstance( CLSID_TaskbarList, 0, CLSCTX_INPROC_SERVER,
        IID_ITaskbarList, (void**)&pList );

    if( SUCCEEDED( ret ) )
    {
        printf( "성공\n" );

        HWND hwnd = FindWindow( 0, _T("계산기") );

        pList->DeleteTab( hwnd );

        getch();

        pList->Release();
    }
       
    CoUninitialize();
}

Tags

COM