Mimis Native functionaliteit overgebracht op JNI.

This commit is contained in:
2011-07-17 19:30:58 +00:00
parent cc71893f34
commit 2733693273
7 changed files with 1859 additions and 0 deletions

1634
cpp/mimis/.cproject Normal file

File diff suppressed because it is too large Load Diff

71
cpp/mimis/.project Normal file
View File

@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Mimis JNI</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
<dictionary>
<key>?name?</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.append_environment</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildArguments</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildCommand</key>
<value>make</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildLocation</key>
<value>${workspace_loc:/Mimis JNI/Debug}</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.contents</key>
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
<value>false</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.stopOnError</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
<value>true</value>
</dictionary>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
</projectDescription>

View File

@@ -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

1
cpp/mimis/Debug/copy.bat Normal file
View File

@@ -0,0 +1 @@
copy mimis.dll ..\..\Mimis\mimis.dll

View File

@@ -0,0 +1 @@
copy mimis.dll ..\..\Mimis\mimis.dll

65
cpp/mimis/src/mimis.cpp Normal file
View File

@@ -0,0 +1,65 @@
#include "mimis.h"
#include <tlhelp32.h>
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;
}

61
cpp/mimis/src/mimis.h Normal file
View File

@@ -0,0 +1,61 @@
#ifndef MIMIS_H_
#define MIMIS_H_
#include <windows.h>
#include <jni.h>
#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