von C++ in Java

Status
Nicht offen für weitere Antworten.

Bit2_Gosu

Bekanntes Mitglied
Hallo !

Ich habe einen c++ Code, würde das Programm aber gerne in Java umprogrammieren:

Code:
#include <windows.h>

HWND HWC3=FindWindow(NULL,"Warcraft III"); //Warcraft Handle bekommen

void keydown() {
HWND SetActiveWindow(HWC3);
SendMessage(HWC3,WM_KEYDOWN,VK_OEM_4,0);  //in Warcraft gilt eine Taste als permanent gedrückt
SendMessage(HWC3,WM_KEYDOWN,VK_OEM_6,0);
Sleep(100);
}

void keyup() {
HWND SetActiveWindow(HWC3);
SendMessage(HWC3,WM_KEYUP,VK_OEM_4,0); 
SendMessage(HWC3,WM_KEYUP,VK_OEM_6,0); 
Sleep(100);
}



int main(){
if (!HWC3)
{
MessageBox(0, "Du musst erst Warcraft III starten", 0, 0);
return(0);
}
else { while (1==1) {
if(GetAsyncKeyState(VK_END)) {
keydown();
}
if(GetAsyncKeyState(VK_HOME)) {
keyup();
}
if(GetAsyncKeyState(VK_ESCAPE)) {
HWND SetActiveWindow(HWC3);  //aktives Fenster mittels handel setzen
SendMessage(HWC3,WM_KEYUP,VK_OEM_4,0); 
SendMessage(HWC3,WM_KEYUP,VK_OEM_6,0); 
Sleep(100);
return(1);
}}
}
}

Mein Problem sind dabei die Zeile "HWND HWC3=FindWindow(NULL,"Warcraft III");". Ich weiß leider nicht, wie man bei Java ein Handle auf ein Spiel bekommt. Vielleicht gibts da ja auch ein import ?

Außerdem die Zeilen "HWND SetActiveWindow(HWC3);" und "SendMessage(HWC3,WM_KEYDOWN,VK_OEM_4,0);"

Der Rest dürfte wohl kein Problem sein...

Ich frage mich aber prinzipiell wie ich in den zur verfügung gestellten 1000 JRE Klasse die finden kann, die ich brauche. Googlen hilft (wie hier) halt auch nicht immer...

(Ich frage mich ob sleep() try {Thread.sleep()} ... entspricht. Wenn ja, wozu brauch man das hier überhaupt ? Gar net oder ?? Naja das ist ja erst mal net so wichtig... )

Wäre toll, wenn mir jemand mit der "Übersetzung" weiter helfen könnte !
 

The_S

Top Contributor
Bit2_Gosu hat gesagt.:
Mein Problem sind dabei die Zeile "HWND HWC3=FindWindow(NULL,"Warcraft III");". Ich weiß leider nicht, wie man bei Java ein Handle auf ein Spiel bekommt. Vielleicht gibts da ja auch ein import ?

Außerdem die Zeilen "HWND SetActiveWindow(HWC3);" und "SendMessage(HWC3,WM_KEYDOWN,VK_OEM_4,0);"

Gar nicht, du könntest dir höchstens (welch Ironie) eine C++ Bibliothek schreiben und diese dann über JNI einbinden, die das für dich erledigt.

Bit2_Gosu hat gesagt.:
Ich frage mich aber prinzipiell wie ich in den zur verfügung gestellten 1000 JRE Klasse die finden kann, die ich brauche. Googlen hilft (wie hier) halt auch nicht immer...

Genauso wie bei C++. Die Klassen sind ähnlich ihrer Funktionen benannt und von daher meist leicht zu finden. Eine Übersicht aller Klassen findest du hier http://java.sun.com/j2se/1.5.0/docs/api/ . Und bei speziellen Fragen hiflt wirklich meistens Google oder ein Forum samt Suche!

Bit2_Gosu hat gesagt.:
(Ich frage mich ob sleep() try {Thread.sleep()} ... entspricht

Ich kann zwar kein C++, denke aber mal ja. Thread.sleep(millis) lässt den aktuellen Thread für die übergebene Anzahl an Millisekunden "einschlafen".
 

Bit2_Gosu

Bekanntes Mitglied
Hm das ist ja sehr schade... Warum geht denn das mit dem Handle nicht ? Eine so mächtige Programmiersprache wie Java muss doch in der Lage sein, sowas zu tun ??
 

The_S

Top Contributor
Der Vorteil von Java ist, dass Java Plattformunabhängig ist. Aber eben durch diese Plattformunabhängigkeit sind Hardware-/System-/Betriebssystemnahe nicht/nur äußerst umständlich/nur durch verlust der Plattformunabhängigkeit möglich.

Du könntest eine native Lib verwenden, die dir dein W3 in den Vordergrund bringen kann und anschließend versuchen mit der Klasse Robot eine Eingabe zu simulieren - du siehst also, eine aufwendige Sache!

Aber warum brauchst du das überhaupt in Java? W3 gibts doch ohnehin nur auf Windows (oder!?).
 

thE_29

Top Contributor
Tja, wenn du dich ein bißchen gedulden kannst, wird es bald ein neues sourceforge Projekt von mir geben, wo man jede WINAPI Methode aufrufen kann!

Die Aufrufe klappen schon mal, bin gerade dabei eigene Datentypen für Pointeraufrufe sowie ein paar eigene Datentypen zu machen und die Callback Funktion zu ausimplementieren!

Aber ansonsten kann man einfach sagen

at.jta.JWin32.callIntFunc("user32.dll","FindWindowA",new Object[]{null,"WARCRAFT III"});

Da hwnd ja vom Typ int ist! ;)
 

The_S

Top Contributor
thE_29 hat gesagt.:
Tja, wenn du dich ein bißchen gedulden kannst, wird es bald ein neues sourceforge Projekt von mir geben, wo man jede WINAPI Methode aufrufen kann!

Mach doch net immer son Zeug! Jedesmal wenn ich mich fast dazu aufraffen konnte eine Plattformabhängige Sprache zu lernen, um z. B. "richtige" Windows-Programme zu schreiben, kommst du mit sowas an und bringst mich dazu stattdessen einfach deine neue Lib zu verwenden :cry: .


;)
 

Bit2_Gosu

Bekanntes Mitglied
Ohne hier rumschleimen zu wollen, die Sache, warum ichs in Java will, ist, dass ich java irgendwie cooler finde ;)

Also du meinst ich kann sagen
Code:
HWND HWC3 = at.jta.JWin32.callIntFunc("user32.dll","FindWindowA",new Object[]{null,"WARCRAFT III"});

Aber ich brauche doch irgend import, damit er weiß, was HWND überhaupt ist !?
 

thE_29

Top Contributor
Pointer funktionieren auch schon!
Dafür gibts eigene Pointertypen/klassen!

Einziges Problem sind noch die eigenen Typen (zb ULARGE_INTEGER beim Festplattenplatzabfragen, etc).

Und die Callback methoden! Naja und die Doc ist noch nicht da :bae:

Und man muss die Online MSDN, bzw die MS egienen Datentypen verstehen ;)

So ist zB HWND ein einfaches int, oder DWORD ein unsigned long, etc..
 

The_S

Top Contributor
Jetzt lasst doch mal den Armen thE_29 in Frieden, der muss schließlich vorher noch seine Swing-Lib fertig bekommen ;) .
 

thE_29

Top Contributor
Die Swing Lib wird länger dauern ;)
Da ich zu faul bin für Kommentare :bae:

Außerdem hätte ich noch ein paar Einfälle die da reingehören.. Naja, aber ich hoffe die dll morgen mal als Urversion ohne callback Methoden rauszubringen!
 
S

stev.glasow

Gast
so lange ihr auf die lib wartet könntet ihr euch ja mal JNI anschauen ... nur so ne Idee ;)
 

thE_29

Top Contributor
So, heute gabs nen tiefen Rückschlag wegen diesen elendigen Templates!!

Die Version von gestern klappt zwar mit Pointern, char, int, long und byte aber nicht mit double und float!

Weil ich immer nen Pointer zurückgebe und der halt ein long Wert ist und alles drunter geht auch (also rede ich eigentlich mit Adressen ;))

Desweten habe ich das ganze auf templates (generics in Java) umgebaut nur wenn ich da alles in ne Liste stopfe muss ich es beim Rausholen wieder auf den Typen (den ich nicht mehr weiß) zurückcasten!

Naja, hab jetzt mal in nem C++ Forum geschrieben ob man da tricksen könnte, den templates ist von unseren C++ Könnern auch nicht gerade beliebt :bae:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Probleme mit drucken aus Java Java Basics - Anfänger-Themen 3
Gokul Java chart library suggestion for web application? Java Basics - Anfänger-Themen 2
D wie kann ich gcc aus einer .java datei heraus aufrufen? Java Basics - Anfänger-Themen 2
S Text Formatierung in Java Java Basics - Anfänger-Themen 2
B Erste Schritte yaml parsen in Java Java Basics - Anfänger-Themen 19
C Methoden Umlaute in Java Java Basics - Anfänger-Themen 18
W Java-PRogramm liest als EXE-File Nicht USB, jedoch aus NetBeans Java Basics - Anfänger-Themen 45
W Methoden java map ersatz für c++map Java Basics - Anfänger-Themen 3
M Erste Schritte Java Primzahltester Java Basics - Anfänger-Themen 4
A csv Reader für Java? Java Basics - Anfänger-Themen 27
K Java - Enums Java Basics - Anfänger-Themen 30
tomzen Java Unterstützung für exel dateien installieren. Java Basics - Anfänger-Themen 2
Rookar java.lang.NoClassDefFoundError: org/json/JSONException Java Basics - Anfänger-Themen 2
Rookar Mit Button andere java öffnen Java Basics - Anfänger-Themen 4
F Java Object to Hashmap ? Java Basics - Anfänger-Themen 6
I Backend in Java und Ansicht von Dateien in statische HTML Seiten? Java Basics - Anfänger-Themen 15
R Input/Output Verwendung des Euro-Zeichens in Java Java Basics - Anfänger-Themen 7
I Push Nachrichten von JAVA EE App an Mobile App Java Basics - Anfänger-Themen 3
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
G Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
G Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
G In ein java Dokument Ton einbinden Java Basics - Anfänger-Themen 1
C was heisst es wenn java ']' erwartet ? Java Basics - Anfänger-Themen 2
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
J Java Testklasse Java Basics - Anfänger-Themen 5
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
W Java-Code mit Array Java Basics - Anfänger-Themen 14
W Java-Code Java Basics - Anfänger-Themen 2
P BeforeEach AfterEach werden nicht ausgeführt. Java / Selenium Java Basics - Anfänger-Themen 4
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
W Java code- TicTac toe Java Basics - Anfänger-Themen 51
Ostkreuz Java Docs Java Basics - Anfänger-Themen 9
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32

Ähnliche Java Themen

Neue Themen


Oben