PDA

View Full Version : hook applicazione


locodice
11-02-2014, 11:30
Salve,
volevo un aiuto su un'attività che devo svolgere.
l'obiettivo di questa mia attività è l'inserimento di 2 parametri (username e password) in un'applicazione.
questo inserimento deve avvenire tramite un programma java che deve aprire questa applicazione tramite un batch ed una volta aperta deve inserire i 2 parametri nei campi del form dell'app.
il procedimento deve essere: programma java --> jni --> hook del form dell'applicazione --> inserimento parametri..
solo che non so quali e come usare gli hook..
qualcuno che sa darmi qualche dritta?
grazie

Daniels118
12-02-2014, 10:59
Dovresti indicare il sistema operativo perché la parte jni è - come dice il nome - nativa. Prendo in esame il caso su Windows.

Se il programma java avvia l'applicazione non dovrebbe essere difficile ottenere il PID, e da questo l'handle della finestra.

Per ottenere il PID dal nome del processo: CreateToolhelp32Snapshot + Process32First + Process32Next, test sul campo szExeFile di PROCESSENTRY32.

Per ottenere la finestra dal PID: EnumWindows + GetWindowThreadProcessID

Per ottenere direttamente la finestra dal titolo: EnumWindows + SendMessage(WM_GETTEXT), tieni presente però che se ci sono due finestre con lo stesso titolo il risultato è imprevedibile.

Una volta ottenuto l'handle alla finestra, puoi ottenere gli oggetti in essa contenuti (su Windows vengono chiamati anch'essi "windows") con EnumChildWindows. Questi oggetti hanno dei nomi, una volta individuati i nomi dei campi che servono a te tramite GetWindowText puoi filtrarli, oppure li puoi ottenere direttamente con FindWindowEx (ma in questo caso bisogna scendere all'interno di ogni contenitore).

Infine, con SendMessage(WM_SETTEXT) imposti il valore del campo.

E' più difficile da spiegare che da fare, se qualcosa non è chiaro chiedi.

locodice
14-02-2014, 18:18
grazie per l'aiuto, appena ho un pò di tempo ci provo e ti do un feedback.. grazie ancora