From 2733693273a9ffe3ea3e3ec02d510f1678709b53 Mon Sep 17 00:00:00 2001 From: Rik Veenboer Date: Sun, 17 Jul 2011 19:30:58 +0000 Subject: [PATCH] Mimis Native functionaliteit overgebracht op JNI. --- cpp/mimis/.cproject | 1634 +++++++++++++++++ cpp/mimis/.project | 71 + .../org.eclipse.cdt.managedbuilder.core.prefs | 26 + cpp/mimis/Debug/copy.bat | 1 + cpp/mimis/Release/copy.bat | 1 + cpp/mimis/src/mimis.cpp | 65 + cpp/mimis/src/mimis.h | 61 + 7 files changed, 1859 insertions(+) create mode 100644 cpp/mimis/.cproject create mode 100644 cpp/mimis/.project create mode 100644 cpp/mimis/.settings/org.eclipse.cdt.managedbuilder.core.prefs create mode 100644 cpp/mimis/Debug/copy.bat create mode 100644 cpp/mimis/Release/copy.bat create mode 100644 cpp/mimis/src/mimis.cpp create mode 100644 cpp/mimis/src/mimis.h diff --git a/cpp/mimis/.cproject b/cpp/mimis/.cproject new file mode 100644 index 0000000..05f7342 --- /dev/null +++ b/cpp/mimis/.cproject @@ -0,0 +1,1634 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cpp/mimis/.project b/cpp/mimis/.project new file mode 100644 index 0000000..5d358ee --- /dev/null +++ b/cpp/mimis/.project @@ -0,0 +1,71 @@ + + + Mimis JNI + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + ?name? + + + + org.eclipse.cdt.make.core.append_environment + true + + + org.eclipse.cdt.make.core.buildArguments + + + + org.eclipse.cdt.make.core.buildCommand + make + + + org.eclipse.cdt.make.core.buildLocation + ${workspace_loc:/Mimis JNI/Debug} + + + org.eclipse.cdt.make.core.contents + org.eclipse.cdt.make.core.activeConfigSettings + + + org.eclipse.cdt.make.core.enableAutoBuild + false + + + org.eclipse.cdt.make.core.enableCleanBuild + true + + + org.eclipse.cdt.make.core.enableFullBuild + true + + + org.eclipse.cdt.make.core.stopOnError + true + + + org.eclipse.cdt.make.core.useDefaultBuildCmd + true + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/cpp/mimis/.settings/org.eclipse.cdt.managedbuilder.core.prefs b/cpp/mimis/.settings/org.eclipse.cdt.managedbuilder.core.prefs new file mode 100644 index 0000000..e5d73c0 --- /dev/null +++ b/cpp/mimis/.settings/org.eclipse.cdt.managedbuilder.core.prefs @@ -0,0 +1,26 @@ +#Sun Jul 17 20:05:29 CEST 2011 +eclipse.preferences.version=1 +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.cygwin.so.debug.36925639/CPATH/delimiter=; +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.cygwin.so.debug.36925639/CPATH/operation=remove +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.cygwin.so.debug.36925639/CPLUS_INCLUDE_PATH/delimiter=; +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.cygwin.so.debug.36925639/CPLUS_INCLUDE_PATH/operation=remove +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.cygwin.so.debug.36925639/C_INCLUDE_PATH/delimiter=; +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.cygwin.so.debug.36925639/C_INCLUDE_PATH/operation=remove +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.cygwin.so.debug.36925639/append=true +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.cygwin.so.debug.36925639/appendContributed=true +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.cygwin.so.release.2109617530/CPATH/delimiter=; +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.cygwin.so.release.2109617530/CPATH/operation=remove +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.cygwin.so.release.2109617530/CPLUS_INCLUDE_PATH/delimiter=; +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.cygwin.so.release.2109617530/CPLUS_INCLUDE_PATH/operation=remove +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.cygwin.so.release.2109617530/C_INCLUDE_PATH/delimiter=; +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.cygwin.so.release.2109617530/C_INCLUDE_PATH/operation=remove +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.cygwin.so.release.2109617530/append=true +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.cygwin.so.release.2109617530/appendContributed=true +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.cygwin.so.debug.36925639/LIBRARY_PATH/delimiter=; +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.cygwin.so.debug.36925639/LIBRARY_PATH/operation=remove +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.cygwin.so.debug.36925639/append=true +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.cygwin.so.debug.36925639/appendContributed=true +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.cygwin.so.release.2109617530/LIBRARY_PATH/delimiter=; +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.cygwin.so.release.2109617530/LIBRARY_PATH/operation=remove +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.cygwin.so.release.2109617530/append=true +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.cygwin.so.release.2109617530/appendContributed=true diff --git a/cpp/mimis/Debug/copy.bat b/cpp/mimis/Debug/copy.bat new file mode 100644 index 0000000..6a2bf07 --- /dev/null +++ b/cpp/mimis/Debug/copy.bat @@ -0,0 +1 @@ +copy mimis.dll ..\..\Mimis\mimis.dll \ No newline at end of file diff --git a/cpp/mimis/Release/copy.bat b/cpp/mimis/Release/copy.bat new file mode 100644 index 0000000..6a2bf07 --- /dev/null +++ b/cpp/mimis/Release/copy.bat @@ -0,0 +1 @@ +copy mimis.dll ..\..\Mimis\mimis.dll \ No newline at end of file diff --git a/cpp/mimis/src/mimis.cpp b/cpp/mimis/src/mimis.cpp new file mode 100644 index 0000000..18b9d34 --- /dev/null +++ b/cpp/mimis/src/mimis.cpp @@ -0,0 +1,65 @@ +#include "mimis.h" +#include + +bool getProcessEntry32(const char *program, PROCESSENTRY32 *pe32) { + HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); + if (hSnapshot == INVALID_HANDLE_VALUE) { + return false; + } + bool bFound = false; + while (Process32Next(hSnapshot, pe32) != false) { + if (strcmp(program, pe32->szExeFile) == 0) { + bFound = true; + break; + } + } + CloseHandle(hSnapshot); + return bFound; +} + +bool getProcess(const char *program, HANDLE *hProcess) { + PROCESSENTRY32 *pe32 = new PROCESSENTRY32; + bool bResult = false; + if (getProcessEntry32(program, pe32)) { + *hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, pe32->th32ProcessID); + bResult = true; + } + delete pe32; + return bResult; +} + +JNIEXPORT jint JNICALL Java_mimis_util_Native_getHandle(JNIEnv *env, jclass cls, jstring jwindow) { + const char *window = env->GetStringUTFChars(jwindow, 0); + return (int) FindWindow(window, NULL); +} + +JNIEXPORT jint JNICALL Java_mimis_util_Native_sendMessage(JNIEnv *env, jclass cls, jint handle, jint message, jint wParam, jint lParam) { + return SendMessage((HWND) handle, message, wParam, lParam); +} + +JNIEXPORT jint JNICALL Java_mimis_util_Native_postMessage(JNIEnv *env, jclass cls, jint handle, jint message, jint wParam, jint lParam) { + return PostMessage((HWND) handle, message, wParam, lParam); +} + +JNIEXPORT jint JNICALL Java_mimis_util_Native_mapVirtualKey(JNIEnv *env, jclass cls, jint map, jint type) { + return MapVirtualKey(map, type); +} + +JNIEXPORT jboolean JNICALL Java_mimis_util_Native_isRunning(JNIEnv *env, jclass cls, jstring jprogram) { + const char *program = env->GetStringUTFChars(jprogram, 0); + PROCESSENTRY32 *pe32 = new PROCESSENTRY32; + bool bRunning = getProcessEntry32(program, pe32); + delete pe32; + return bRunning; +} + +JNIEXPORT jboolean JNICALL Java_mimis_util_Native_terminate(JNIEnv *env, jclass cls, jstring jprogram) { + const char *program = env->GetStringUTFChars(jprogram, 0); + HANDLE *hProcess = new HANDLE; + bool bResult = false; + if (getProcess(program, hProcess)) { + bResult = TerminateProcess(*hProcess, 0); + } + delete hProcess; + return bResult; +} diff --git a/cpp/mimis/src/mimis.h b/cpp/mimis/src/mimis.h new file mode 100644 index 0000000..b5417fa --- /dev/null +++ b/cpp/mimis/src/mimis.h @@ -0,0 +1,61 @@ +#ifndef MIMIS_H_ +#define MIMIS_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: mimis_util_Native + * Method: getHandle + * Signature: (Ljava/lang/String;)I + */ +JNIEXPORT jint JNICALL Java_mimis_util_Native_getHandle + (JNIEnv *, jclass, jstring); + +/* + * Class: mimis_util_Native + * Method: sendMessage + * Signature: (IIII)I + */ +JNIEXPORT jint JNICALL Java_mimis_util_Native_sendMessage + (JNIEnv *, jclass, jint, jint, jint, jint); + +/* + * Class: mimis_util_Native + * Method: postMessage + * Signature: (IIII)I + */ +JNIEXPORT jint JNICALL Java_mimis_util_Native_postMessage + (JNIEnv *, jclass, jint, jint, jint, jint); + +/* + * Class: mimis_util_Native + * Method: mapVirtualKey + * Signature: (II)I + */ +JNIEXPORT jint JNICALL Java_mimis_util_Native_mapVirtualKey + (JNIEnv *, jclass, jint, jint); + +/* + * Class: mimis_util_Native + * Method: isRunning + * Signature: (Ljava/lang/String;)Z + */ +JNIEXPORT jboolean JNICALL Java_mimis_util_Native_isRunning + (JNIEnv *, jclass, jstring); + +/* + * Class: mimis_util_Native + * Method: terminate + * Signature: (Ljava/lang/String;)Z + */ +JNIEXPORT jboolean JNICALL Java_mimis_util_Native_terminate + (JNIEnv *, jclass, jstring); + +#ifdef __cplusplus +} +#endif +#endif