Mimis Native functionaliteit overgebracht op JNI.
This commit is contained in:
1634
cpp/mimis/.cproject
Normal file
1634
cpp/mimis/.cproject
Normal file
File diff suppressed because it is too large
Load Diff
71
cpp/mimis/.project
Normal file
71
cpp/mimis/.project
Normal 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>
|
||||||
@@ -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
1
cpp/mimis/Debug/copy.bat
Normal file
@@ -0,0 +1 @@
|
|||||||
|
copy mimis.dll ..\..\Mimis\mimis.dll
|
||||||
1
cpp/mimis/Release/copy.bat
Normal file
1
cpp/mimis/Release/copy.bat
Normal file
@@ -0,0 +1 @@
|
|||||||
|
copy mimis.dll ..\..\Mimis\mimis.dll
|
||||||
65
cpp/mimis/src/mimis.cpp
Normal file
65
cpp/mimis/src/mimis.cpp
Normal 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
61
cpp/mimis/src/mimis.h
Normal 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
|
||||||
Reference in New Issue
Block a user