CTRL+C を送るアプリケーションをデスクトップのショートカットのショートカットキーで呼び出す

殆どのアプリケーションのクリップボードコピーの実行
実際は、クリップボードにコピーされた文字列を処理する
アプリケーションを連続して起動する必要がありますが、
この実装によって、たいていのアプリケーションで、作業中に
他のアプリケーションへの文字列の受け渡しが可能です

※ 多少、キーボード操作に注意をはらう必要があります。
※ デスクトップに作成したショートカットは、別の方法で隠す予定です。
// *********************************************************
// CTRL+C を送る
// *********************************************************

#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <tchar.h>

#define KEY_ACTION 4

// *********************************************************
// Windows アプリケーションとしてのエントリポイント
// Link.exe で /SUBSYSTEM:WINDOWS がデフォルトで
// 指定される事になります
// *********************************************************
int APIENTRY _tWinMain(
	HINSTANCE hInstance,
	HINSTANCE hPrevInstance,
	LPTSTR lpCmdLine,
	int nCmdShow
)
{
	INPUT inkey[KEY_ACTION];
	KEYBDINPUT ki[KEY_ACTION];

	// 呼び出しにキーアクションを使う場合は、
	// キーが押されていない状態になるのを待つ
	Sleep(1000);

	memset( ki, 0x00, sizeof( KEYBDINPUT ) * KEY_ACTION );

	// キーの処理順序を作成
	// CTRL↓ + C↓ + C↑ + CTRL↑
	ki[0].wVk = VK_LCONTROL;
	ki[0].wScan = MapVirtualKey( ki[0].wVk, 0 );
	ki[0].dwFlags = KEYEVENTF_EXTENDEDKEY;
	ki[1].wVk = 'C';
	ki[1].wScan = MapVirtualKey( ki[1].wVk, 0 );
	ki[1].dwFlags = KEYEVENTF_EXTENDEDKEY;
	ki[2].wVk = 'C';
	ki[2].wScan = MapVirtualKey( ki[2].wVk, 0 );
	ki[2].dwFlags = KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP;
	ki[3].wVk = VK_LCONTROL;
	ki[3].wScan = MapVirtualKey( ki[3].wVk, 0 );
	ki[3].dwFlags = KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP;

	int i;

	for( i = 0; i < KEY_ACTION; i++ ) {
		inkey[i].type = INPUT_KEYBOARD;
		inkey[i].ki = ki[i];
	}

	int ret;
	ret = SendInput( KEY_ACTION, inkey, sizeof( INPUT ) );

	return 0;
}