殆どのアプリケーションのクリップボードコピーの実行
実際は、クリップボードにコピーされた文字列を処理する
アプリケーションを連続して起動する必要がありますが、
この実装によって、たいていのアプリケーションで、作業中に
他のアプリケーションへの文字列の受け渡しが可能です
※ 多少、キーボード操作に注意をはらう必要があります。
※ デスクトップに作成したショートカットは、別の方法で隠す予定です。
// *********************************************************
// 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;
}
|
|