Na forum 4programmers.net korzystamy z plików cookies. Część z nich jest niezbędna do funkcjonowania
naszego forum, natomiast wykorzystanie pozostałych zależy od Twojej dobrowolnej zgody, którą możesz
wyrazić poniżej. Klikając „Zaakceptuj Wszystkie” zgadzasz się na wykorzystywanie przez nas plików cookies
analitycznych oraz reklamowych, jeżeli nie chcesz udzielić nam swojej zgody kliknij „Tylko niezbędne”.
Możesz także wyrazić swoją zgodę odrębnie dla plików cookies analitycznych lub reklamowych. W tym celu
ustaw odpowiednio pola wyboru i kliknij „Zaakceptuj Zaznaczone”. Więcej informacji o technologii cookie
znajduje się w naszej polityce prywatności.
Chciałem napisać program, który wysyła wiadomość do innego uruchomionego programu. PostMessage. Moje pytanie brzmi, czy istnieje taka funkcja w Javie? Przewertowałem cały internet. Na jednej stronie jest napisane, że tak. Jednak w całym internecie nie spotykam się z jakimkolwiek użyciem tej funkcji. No i jeszcze funkcji FindWindow.
Może pisaliście już kiedyś takie programy i poczęstowalibyście mnie kawałkiem kodu?
Niestety Java nie jest przystosowana do IPC (z tego co wiem), więc musisz się ratować jakimiś natywnymi bibliotekami poprzez JNI, albo stosować obejścia typu komunikacja przez potoki/ gniazda TCP, UDP/ etc Lipkerson (tzn forumowy kolega) zajmuje się zabawą z WinAPI spod Javy.
Generalnie potrzebujesz wywoływać konkretne funkcje z konkretnych dll. Mapujesz funkcje z WINAPI javowymi typami. Normalnie musiałbyś tworzyć interfejs i każda funkcję z której chcesz skorzystać odpowiednio mapować.
Sprawa jest w Twoim wypadku prostsza ponieważ te głowne dllki (user32/kernel...itp) są pomapowane przez twórce JNA. Również wprost są zdefiniowane klasy symbolizujące typy z WINAPI: DWORD i LPTCSTR itp. znajdziesz to wszystko w platform.jar. Przejrzyj, zobacz przykłady na stronce...
Jak parametr funkcji jest in/out to stosuj byte[] javowe - zawsze daje rade.
Są też rzeczy które trzeba podejrzeć. Np. pobieranie HWND okna javowego (JFrame):