A
Ava-chan
Ich schreibe gerade eine kleine DLL welche einem JavaProgramm den Ausführungspfad eines Prozesses benannt mit namen zurückgeben soll.
Die Rückgabe von Daten und das holen des Prozesses funktioniert schon. Der Processhandle wird dann auch an die Funktion GetModuleFileNameEx weitergegeben. Diese kann jedoch wenn nicht auskomentiert nich kompiliert werden.
#include "windows.h"
#include "tlhelp32.h"
#include <jni.h>
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include "Main.h"
#include "Psapi.h"
#include <iostream>
#include <string>
#include <algorithm>
#include <functional>
#include <cctype>
#pragma comment(lib, "psapi.lib")
...
JNIEXPORT void JNICALL Java_Main_printHelloWorld(JNIEnv *env, jclass cls) {
printf("start\n");
HANDLE proc = GetProcessHandle("xtop.exe", PROCESS_QUERY_INFORMATION);
if (proc != NULL) {
cout << "gefunden" << endl;
} else {
cout << "nicht gefunden" << endl;
}
TCHAR filename[MAX_PATH];
if (proc != NULL) {
if (GetModuleFileNameEx(proc, 0, filename, sizeof(filename)) == 0) {
cout << "Failed to get module filename." << endl;
} else {
cout << "Module filename is: " << filename << endl;
}
}
//TerminateProcess( GetProcessHandle( "xtop.exe", PROCESS_TERMINATE ), 0 );
return;
}
Ich weiß das es ein paar viele imports sind ^^ aber die sortiere ich aus wenn es denn läuft.
Hat jemand eine Idee wie ich es schaffe das der Linker es ordentlich macht ?
Ich arbeite unter windows 7 x64 und die dll wird eine 32 bit dll (mir ist klar das die nicht unter einem 64 bit system eingebunden werden kann). Als Compilier benutze ich den g++ von MinGW geupdatet auf Version 4.4 mit entsprechenden dll anpassungen.
Grüße,
Ava-chan
Die Rückgabe von Daten und das holen des Prozesses funktioniert schon. Der Processhandle wird dann auch an die Funktion GetModuleFileNameEx weitergegeben. Diese kann jedoch wenn nicht auskomentiert nich kompiliert werden.
#include "windows.h"
#include "tlhelp32.h"
#include <jni.h>
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include "Main.h"
#include "Psapi.h"
#include <iostream>
#include <string>
#include <algorithm>
#include <functional>
#include <cctype>
#pragma comment(lib, "psapi.lib")
...
JNIEXPORT void JNICALL Java_Main_printHelloWorld(JNIEnv *env, jclass cls) {
printf("start\n");
HANDLE proc = GetProcessHandle("xtop.exe", PROCESS_QUERY_INFORMATION);
if (proc != NULL) {
cout << "gefunden" << endl;
} else {
cout << "nicht gefunden" << endl;
}
TCHAR filename[MAX_PATH];
if (proc != NULL) {
if (GetModuleFileNameEx(proc, 0, filename, sizeof(filename)) == 0) {
cout << "Failed to get module filename." << endl;
} else {
cout << "Module filename is: " << filename << endl;
}
}
//TerminateProcess( GetProcessHandle( "xtop.exe", PROCESS_TERMINATE ), 0 );
return;
}
Ich weiß das es ein paar viele imports sind ^^ aber die sortiere ich aus wenn es denn läuft.
Hat jemand eine Idee wie ich es schaffe das der Linker es ordentlich macht ?
Ich arbeite unter windows 7 x64 und die dll wird eine 32 bit dll (mir ist klar das die nicht unter einem 64 bit system eingebunden werden kann). Als Compilier benutze ich den g++ von MinGW geupdatet auf Version 4.4 mit entsprechenden dll anpassungen.
Grüße,
Ava-chan