Fenster Focus erhalten.

BillaBong

Erfahrenes Mitglied
Hi,

habe folgendes Problem. Ich installiere mit JAVA einen Treiber.

Code:
ProcessBuilder builder = new ProcessBuilder( "cmd", "/c", "Treiber.xy");
Process p = builder.start();

Dann kommt die Meldung mit dem "Windows Logo Test" -> Installation Fortsetzen. Dieses Fenster würde ich gerne automatisiert schließen.

Habe nun schon folgendes versucht:
- mit VBS script: das funtzt zwar wunderbar, liegt das VBS script jedoch auf einem externen Datenträger was hier der fall ist bringt er ebenfalls eine Meldung " der Herausgeber konnte nicht verifiziert werden" . Dies muss dann auch bestätigt werden damit es weiter geht.

- ich habe mit dem JAVA ROBOT das VBS script nachgebaut, das funtzt auch wunderbar, jedoch nur so lange das Fenster im Focus ist. Dies ist aber nicht immer der fall.

gibt es noch eine Möglichkeit das ich vielleicht mit Java den Focus des Win API Fensters bekomme ?
 
Hallo,

leider hatte noch keiner eine Antwort. Ich habe das jetzt mal so gelöst das ich eine C++ Datei erstellt habe die mir das Fenster in den Focus stellt und dann die Tastencombinationene abgibt. Diese .Exe kopiere ich beim start des Javaprogrammes in das User Temp Verzeichnis und lösche sie dort nach beenden der Insatllationsabfrage wieder raus.


C++ Code :

Code:
#include <cstdlib>
#include <stdlib.h>
#include <iostream>
#include <windows.h>
using namespace std;

int main(int argc, char *argv[])
{

//ShellExecute(0,"open","NOTEPAD.exe",NULL,NULL,1);
//Sucht das Fenster XY
  HWND Fenster=FindWindow(NULL , "Hardwareinstallation");

//Prüft ob das Fenster gefunden wurde
  if(Fenster){
          Sleep(2000); 
          //Setzt das Fenster in den Focus
          SetForegroundWindow(Fenster);
          //Setzt Minimierte Fenster in den Focus
          //BringWindowToTop(Fenster);
          //Wartet 1 Sekunde
          Sleep(500); 
          //Die Tasten werden gedrückt
          keybd_event(VK_TAB,0x09,KEYEVENTF_EXTENDEDKEY | 0,0); // c down
          Sleep(500); 
          keybd_event(VK_TAB,0x09,KEYEVENTF_EXTENDEDKEY | 0,0); // c down
          Sleep(500); 
          keybd_event(VK_RETURN,0x0D,KEYEVENTF_EXTENDEDKEY | 0,0); // c down

  }else{

  }
 
  return EXIT_SUCCESS;
}

Die Lösung mit dem kopieren der Datei gefällt mir aber nicht so gut. Ich hätte dieses Problem lieber mit JNI gelöst, jedoch fehlt mir hier das nötige wissen, bzw die richtigen Tutorials.

http://www.haertfelder.com/jni.html

Dieses Tutorial habe ich mal druchgearbeitet, ich arbeite jedoch unter Windows ( Leider ) und da bekommt ich das Kompilieren der C++ dateien ( erstellen der dll ) nicht richtig hin.

Hat zu diesem Thema vielleicht noch jemand ein besseres Tutorials, das vielleicht auch die nutzung von Eclipse mit einbezieht ?
 
Zurück