IALweb Homepage
Forum Home Forum Home > MS Office > Microsoft Office > Microsoft Access
  New Posts New Posts RSS Feed - Istanziare software Java
  FAQ FAQ  Forum Search   Events   Register Register  Login Login

 Topic   Topic Hot   Topic New   Topic Locked   Topic Sticky   Topic Hidden

Istanziare software Java

 Post Reply Post Reply
Author
Message
Goemon View Drop Down
Utente Base
Utente Base
Avatar

Joined: 30/Lug/2011
Status: Offline
Points: 63
Post Options Post Options   Thanks (0) Thanks(0)   Quote Goemon Quote  Post ReplyReply Direct Link To This Post Topic: Istanziare software Java
    Posted: 17/Mag/2012 at 22:28

Ciao a tutti!
Spesso devo usare un software scritto in Java che funziona quasi esclusivamente con la tastiera...
Volevo chiedere se, una volta avviato tale software manualmente, è possibile istanziarlo (tramite VBA)
e assegnarlo ad un oggetto in modo da poterlo poi gestire tramite SendKeys... avete qualche suggerimento?


Back to Top
willy55 View Drop Down
Veterano
Veterano
Avatar
Esperto di Access

Joined: 03/Ago/2011
Location: Italy
Status: Offline
Points: 1223
Post Options Post Options   Thanks (0) Thanks(0)   Quote willy55 Quote  Post ReplyReply Direct Link To This Post Posted: 18/Mag/2012 at 21:06

Per interfacciarsi da Access ad un programma Java è da considerare se si ha la disponibilità del codice sorgente in linguaggio Java, in modo da adattarlo per avviare l'applicativo e acquisire dei dati quali argomenti forniti dalla linea di comando.
Da Access si può, pertanto, avviare il programma con "shell" e fornire quali parametri i comandi appropriati, inoltre si può realizzare un file batch che contenga le istruzioni per attivare l'applicativo e inserire gli argomenti.
Se viceversa l'applicativo Java è senza sorgenti, si può cercare di inviare da Access i relativi tasti con SendKeys in modo da pilotare i comandi del programma Java attraverso la sequenza appropriata.
In tal caso sono da determinare le problematiche di codifica fra i sistemi (Access - Java) e le relative temporizzazioni.

Ad integrazione dell'argomento indico i seguenti link quali ampliamenti della problematica.

Richiamo di Java con il comando Shell
http://stackoverflow.com/questions/5297341/calling-java-library-jar-from-vba-vbscript-visual-basic-classic
http://www.tek-tips.com/viewthread.cfm?qid=1474961

VB accesso a Java Late Binding
http://j-integra.intrinsyc.com/support/com/doc/javafromcom/vb2javalb.html

Passaggio parametri
http://www.vbaexpress.com/forum/archive/index.php/t-19183.html

Compilazione ed esecuzione di codice Java in Visual Basic
http://www.developerfusion.com/code/3864/compiling-and-executing-java-code-in-visual-basic/

Comandi SendKey
http://bytes.com/topic/access/answers/204419-sendkey-commands

Classe Robot in Java per acquisizione tasti
http://www.javaprogrammingforums.com/java-se-api-tutorials/59-how-sendkeys-application-java-using-robot-class.html

Processo inverso (richiamo da Java macro di Access).
http://www.tek-tips.com/viewthread.cfm?qid=853993

Willy
Back to Top
Goemon View Drop Down
Utente Base
Utente Base
Avatar

Joined: 30/Lug/2011
Status: Offline
Points: 63
Post Options Post Options   Thanks (0) Thanks(0)   Quote Goemon Quote  Post ReplyReply Direct Link To This Post Posted: 19/Mag/2012 at 16:16

Ciao Willy, grazie dell’aiuto!!

Purtroppo non posso accedere e modificare il codice del software Java... La mia è una situazione particolare, in cui tutte le applicazioni sono all'interno

di un server virtuale e sono accessibili da un desktop virtuale (in pratica è tutto sul web tramite un sistema della Citrix Systems).
Per aprire le applicazioni tramite vba, basta utilizzare un oggetto Internet Explorer, ma in questo modo riesco avviare solo i programmi di Office e le pagine web,
infatti quando provo ad avviare un software Java (ce ne sono più di uno), viene generato un errore (Lanciare software da pagina web).
Quindi le applicazioni Java sono costretto aprirle manualmente... così mi stavo chiedendo se una volta aperte manualmente, è possibile istanziarle...
 
In generale, come emerge dai link di Willy, le applicazioni vengono istanziate utilizzando il percorso dei file che le contengono... tuttavia mi sono sempre chiesto 
se fosse possibile istanziare (la finestra di) un'applicazione senza conoscere il percorso del file che la contiene... Sarebbe bello poter:
- ciclare le finestre aperte su Windows e ricavarne il nome (Caption)
- utilizzare il nome per assegnarle ad un oggetto
- gestire l'oggetto tramite SendKey
ma forse tutto ciò non è possibile...    
  Confused
 


Edited by Goemon - 19/Mag/2012 at 16:20
Back to Top
willy55 View Drop Down
Veterano
Veterano
Avatar
Esperto di Access

Joined: 03/Ago/2011
Location: Italy
Status: Offline
Points: 1223
Post Options Post Options   Thanks (0) Thanks(0)   Quote willy55 Quote  Post ReplyReply Direct Link To This Post Posted: 21/Mag/2012 at 21:51

Ciao Goemon, 
riprendendo quanto da te presentato (sull'ambiente ove operi) possiamo riassumerlo in:
- impiego di un server virtuale della Citrix per la memorizzazione dati e applicativi;
- interfaccia di attivazione programmi tramite Internet Explorer.
Risulta quindi che, tramite IE, in automatico, i programmi Office vengono correttemente attivati mentre con codice Java si determina un errore. Viceversa se, quest'ultimo, viene manualmente attivato l'operazione avviene correttamente.
Ne consegue che l'inconveniente si inqudra nell'insieme dei tre elementi che entrano in gioco (Citrix, IE, Java).
Quindi dovendo trovare una soluzione alla problematica è da soffermarsi in particolare su Java e come questo si interfaccia negli ambienti di lancio (IE) o di gestione (Citrix).
Dal momendo che un applicativo Java opera con una Java Virtual Machine (JVM), viene creata un'istanza di una virtual machine in grado di interpretare il contenuto del codice ed eseguire, al suo interno, l'applicazione stessa. Ogni applicazione Java, in esecuzione, avvia una nuova istanza di una virtual machine, che viene rilasciata al termine dell'esecuzione stessa.
Visto che in modo manuale, il programma Java si attiva, sono da prendere in considerazione tutti quegli elementi in grado di fornire un ambiente (memoria, impostazioni, parametri, ecc.) in grado di differenziare l'attivazione fra modalità manuale e quella automatica.
Doposichè sono da esaminare tutti quegli aspetti che possono rendere la incompatibilità fra Java e IE con Citrix quali ad esempio:
https://forums.oracle.com/forums/thread.jspa?threadID=1239582
Si possono accedere ai forum e siti degli interessati cercando di presentare la problematica riscontrata e indicare se conosciuta e se vi sono soluzioni alternative.


Fatta questa premessa che potrebbe essere OT con l'argomento VBA, in risposta alla tua

Originally posted by Goemon Goemon wrote:


se fosse possibile istanziare (la finestra di) un'applicazione senza conoscere il percorso del file che la contiene...

 Sarebbe bello poter:
- ciclare le finestre aperte su Windows e ricavarne il nome (Caption)
- utilizzare il nome per assegnarle ad un oggetto
- gestire l'oggetto tramite SendKey
 

Si possono individuare i processi attivi per mezzo delle API di Windows (che comunque sono da valutare se disponibili/utilizzabili nell'ambiente Virtuale di Citrix) e cercare di gestirli attraverso un task-manager personalizzato.
L'operazione non è di semplice soluzione, e sicuramente affrontabile da un programmatore esperto in grado di interfacciarsi con le chiamate di sistema e non è detto che sia risolutiva.

Allego dei link che possono chiarire l'ambito in cui si dovrebbe operare. 

Elencare i processi attivi
http://support.microsoft.com/kb/187913
http://accesstips.wordpress.com/2009/06/04/microsoft-access-reads-the-processes-running-on-your-computer/
http://social.msdn.microsoft.com/Forums/sr-Latn-CS/accessdev/thread/ff983de6-3fa3-4735-b89f-f11ad980e1ba
http://www.codeproject.com/Articles/23143/Finding-and-Listing-Processes-in-Visual-Basic-2005
http://stackoverflow.com/questions/10226718/how-to-get-the-filename-of-the-process-that-is-currently-runing-in-vb6
http://www.freevbcode.com/ShowCode.asp?ID=163
http://www.xtremevbtalk.com/archive/index.php/t-150016.html
http://vbvbageeks.blogspot.it/2008/10/display-list-of-running-process-in-your.html
http://vbadud.blogspot.it/2007/06/show-all-processes-using-vba.html

Task Manager in Excel
http://blog.didierstevens.com/2011/02/03/taskmanager-xls/
http://en.allexperts.com/q/Excel-1059/2010/11/VBA-Shell-Function.htm
http://www.vbaexpress.com/forum/archive/index.php/t-36677.html

Individuazione se un EXE è in esecuzione
http://www.developerfusion.com/code/4073/detect-if-a-particular-exe-is-running/
http://www.access-programmers.co.uk/forums/showthread.php?t=142117

Impiego API da Access
http://access.mvps.org/access/api/index.html

Individuazione del Process IDentifier (PID)
http://en.allexperts.com/q/Visual-Basic-1048/Kill-Process-VB-its-1.htm

Eliminare un processo
http://bytes.com/topic/access/answers/200408-how-terminate-process-vba

Priorità nei processi
http://www.novicksoftware.com/TipsAndTricks/Tips-Lower-your-Process-Priority-with-the-Win32-API.htm

Esecuzione di un prcesso remoto
http://codingzen.wordpress.com/2009/09/13/using-vba-to-execute-a-remote-process/

Willy
Back to Top
Goemon View Drop Down
Utente Base
Utente Base
Avatar

Joined: 30/Lug/2011
Status: Offline
Points: 63
Post Options Post Options   Thanks (0) Thanks(0)   Quote Goemon Quote  Post ReplyReply Direct Link To This Post Posted: 25/Mag/2012 at 16:13

Come si può notare dai link di Willy con le WMI e le API, si possono visualizzare i processi attivi

e i ClassName (e Caption) delle finestre delle applicazioni aperte...

Con i ClassName e Caption è possibile manipolare la finestra di un’applicazione...

Avevo provato aprire i diversi applicativi dal desktop virtuale in cui opero e provato a ricavare

i loro ClassName e Caption, tramite i codici trovati all'interno del link di Willy sulle API,

però erano apparsi i ClassName e le Caption di tutti gli applicativi eccetto quelli in Java...

 
Come già detto da Willy, il problema che mi ero proposto non è semplice da risolvere...  probabilmente dovrò lasciarlo irrisolto...   Ermm

Comunque ringrazio Willy che mi ha fornito diversi spunti utili per approfondire il problema... Thumbs Up



Edited by Goemon - 28/Apr/2013 at 00:58
Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 10.11
Copyright ©2001-2012 Web Wiz Ltd.

This page was generated in 0,469 seconds.