HAllo...
jo ich hab hier die anfragen zur winAPI gfestellt.
und jetzt weiss ich nicht weiter...
(vielleicht ist es auch eher ne c++ problematic... mal sehen):
Ich möchte die WINAPI MessageBox nutzen.
die ist in der winuser.h definiert.
mein java programm ist denkbar einfach:#
da lasse ich javah drüberlaufen.
das ergebnis ist (ohne kommentare): WindowsFunctions.h
jetzt mein alles entscheidendes winapis.cpp file (ohne kommentare):
ich weiss... in der onlineresourcen, habe ich für die SetStringCHars-Methode andere schreibweisen gesehen,.#
ich habe eion bischen in den headder files gestöbert und hab festgestellt, dass hier wohl ein unterschied zwischen c und c++ zum tragen kommt.
diese dll hier kann ich bei java einbinden, und ich kann die messagebox sogar sehen!!
nur ist der text falsch.
er gibt mir nur das erste zeichen wieder aus.
wie mann an diesem code-schnipsel sieht, gebe ihc das ganze array aus...
nur buffer[0] enthällt sinnvolle daten.
bei der messagbox kommt noch hinzu, dass sie leider
const char *
braucht.
das programm ist so lauffähig.
nur ist die ausgabe ungenügend.
wie kann ich meine JNIENV dazu veranlassen, den string vernünftig in diesem array (Buffer) abzulegen??
hilfe gesucht.
thx a lot H3r0.
[R0c|< ']['h3m Br4Ve]
jo ich hab hier die anfragen zur winAPI gfestellt.
und jetzt weiss ich nicht weiter...
(vielleicht ist es auch eher ne c++ problematic... mal sehen):
Ich möchte die WINAPI MessageBox nutzen.
die ist in der winuser.h definiert.
mein java programm ist denkbar einfach:#
Code:
class WindowsFunctions{
static{
System.loadLibrary("winapis");
}
public native static void MsgBox(String text, String titel, int style);
public static void main(String args[]){
MsgBox("Text","Titel",4);
}
}
da lasse ich javah drüberlaufen.
das ergebnis ist (ohne kommentare): WindowsFunctions.h
Code:
#include <jni.h>
#ifndef _Included_WindowsFunctions
#define _Included_WindowsFunctions
#ifdef __cplusplus
extern "C" {
#endif
JNIEXPORT void JNICALL Java_WindowsFunctions_MsgBox(JNIEnv *, jclass, jstring, jstring, jint);
#ifdef __cplusplus
}
#endif
#endif
jetzt mein alles entscheidendes winapis.cpp file (ohne kommentare):
Code:
#include <vcl.h>
#include <stdio.h>
#include "WinFunctions.h"
#include <jni.h>
#pragma hdrstop
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
{
return 1;
}
JNIEXPORT void JNICALL Java_WinFunctions_MsgBox(JNIEnv *env, jclass clazz, jstring text, jstring titel, jint style){
char buffer[128];
buffer[0] = *(env->GetStringChars(titel,0));
for(int i=0;i<=127;i++)
printf("%c",buffer[i]);
//MessageBox(NULL,"Text","Titel",4);
}
//erstellt mit bb3.0
ich weiss... in der onlineresourcen, habe ich für die SetStringCHars-Methode andere schreibweisen gesehen,.#
ich habe eion bischen in den headder files gestöbert und hab festgestellt, dass hier wohl ein unterschied zwischen c und c++ zum tragen kommt.
diese dll hier kann ich bei java einbinden, und ich kann die messagebox sogar sehen!!
nur ist der text falsch.
er gibt mir nur das erste zeichen wieder aus.
wie mann an diesem code-schnipsel sieht, gebe ihc das ganze array aus...
nur buffer[0] enthällt sinnvolle daten.
bei der messagbox kommt noch hinzu, dass sie leider
const char *
braucht.
das programm ist so lauffähig.
nur ist die ausgabe ungenügend.
wie kann ich meine JNIENV dazu veranlassen, den string vernünftig in diesem array (Buffer) abzulegen??
hilfe gesucht.
thx a lot H3r0.
[R0c|< ']['h3m Br4Ve]