Windowsの強力なスクリーンショットとアナログ入力ツールのソースコード
1953 ワード
WinRobot@github
Windowsのデスクトップスクリーンショット機能を実現するには、ネット上で多くのソースコードを見つけることができ、実現するのも難しくありません.しかし、スクリーンショット機能の可用性が強く、様々な状況に対応することが望ましいが、容易ではなく、多くの穴が埋められている.
ここで紹介するオープンソースコードWinRobot@githubは、主に以下の利点があります.これらのコードは、表示のために実装された単純なdemoではなく、良好な設計とテストを有する生産環境に使用可能なコード である. Winlogon、UAC、スクリーンセーバー、DirectShowOverlayの画像 を切り取ることができる.高性能で、プロセス間でメモリを共有する方式で、スクリーンショット時のデータのcopyをできるだけ避けることができ、従来の構成PCでは25 fps に達することができる.はjavaをサポートする、javaと互換性がある.awt.Robotインタフェース はWindows 2000以上のプラットフォームをサポートし、32、64ビットシステム をサポートする.
例
C++
JAVA
Windowsのデスクトップスクリーンショット機能を実現するには、ネット上で多くのソースコードを見つけることができ、実現するのも難しくありません.しかし、スクリーンショット機能の可用性が強く、様々な状況に対応することが望ましいが、容易ではなく、多くの穴が埋められている.
ここで紹介するオープンソースコードWinRobot@githubは、主に以下の利点があります.
例
C++
#ifdef _WIN64
#import "WinRobotCorex64.dll" raw_interfaces_only, raw_native_types,auto_search,no_namespace
#import "WinRobotHostx64.exe" auto_search,no_namespace
#else
#import "WinRobotCorex86.dll" raw_interfaces_only, raw_native_types,auto_search,no_namespace
#import "WinRobotHostx86.exe" auto_search,no_namespace
#endif
CComPtr pService;
hr = pService.CoCreateInstance(__uuidof(ServiceHost) );
//get active console session
CComPtr pUnk;
hr = pService->GetActiveConsoleSession(&pUnk);
CComQIPtr pSession = pUnk;
// capture screen
pUnk = 0;
hr = pSession->CreateScreenCapture(0,0,1024,768,&pUnk);
// get screen image data(with file mapping)
CComQIPtr pBuffer = pUnk;
CComBSTR name;
ULONG size = 0;
pBuffer->get_FileMappingName(&name);
pBuffer->get_Size(&size);
CFileMapping fm;
fm.Open(name,size,false);
// do something with fm...
JAVA
import com.caoym.WinRobot;
//...
WinRobot robot;
BufferedImage screen = robot.createScreenCapture(new Rectangle(0, 0, 1024, 768));