Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2010, 12:56   #1
madboy4ik
 
Регистрация: 14.01.2010
Сообщений: 6
По умолчанию Как вызвать API функции SendMessage и PostMessage() на java?

подскажите пожалуйста как можно вызвать функции SendMessage() и PostMessage() в Java

Есть окно в котором есть кнопка, на которую нужно нажать
hwnd окна и кнопки я нахожу, а вот клацнуть на неё не получаеться (((
подскажите как это можно сделать. использую JNA

Код:
import java.lang.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import com.sun.jna.examples.win32.*;
import com.sun.jna.examples.win32.User32.*;
import com.sun.jna.examples.win32.W32API.*;
import com.sun.jna.Native;
import com.sun.jna.examples.win32.W32API.HWND;
import com.sun.jna.win32.StdCallLibrary;

public class Test {

	public static int Openbtn=0;

	public static int WM_SETFOCUS  = 0x0007;
	public static int WM_KILLFOCUS = 0x0008;
	public static int WM_SETTEXT   = 0x000C;
	public static int BM_SETSTATE  = 0x00F3;
	public interface User32 extends StdCallLibrary
	{
long SendMessage(int hwnd, int lpMsg, int wMsgFilterMax, int wMsgFilterMin);
boolean PostMessage(int hwnd, int lpMsg, int wParam, int lParam);
		}
public static void main(String[] args)
	{
	final User32 lib = (User32) Native.loadLibrary("user32",User32.class);
.... получаю hwnd родительского окна и hwnd дочерних окон присваивают hwnd кнопки переменной Openbtn и пытаюсь нажать на неё

 lib.SendMessage(Openbtn, WM_SETFOCUS, 1, 0);
 lib.SendMessage(Openbtn, BM_SETSTATE, 1, 0);
 lib.PostMessage(Openbtn, WM_KILLFOCUS, 0, 0);

}
	}
Exception in thread "main" java.lang.UnsatisfiedLinkError: Error looking up function 'SendMessage': The specified procedure could not be found.

Последний раз редактировалось madboy4ik; 14.01.2010 в 13:28.
madboy4ik вне форума Ответить с цитированием
Старый 14.01.2010, 19:00   #2
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Многие функции winAPI имеют 2 версии - ansi (SendMessageA) и wide он же unicode (SendMessageW), может жабе нужно явно указывать какую именно использовать
пыщь
JTG вне форума Ответить с цитированием
Старый 19.01.2010, 15:10   #3
madboy4ik
 
Регистрация: 14.01.2010
Сообщений: 6
По умолчанию

пасиба так и сделал всё работает
madboy4ik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чём отличие между SendMessage и PostMessage? TwiX Общие вопросы Delphi 2 29.07.2009 20:16
Клик в окне при помощи функции PostMessage Denton86 Помощь студентам 0 13.06.2009 23:29
Не могу вызвать API ZahAlex Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 15.04.2009 05:37
Как подключиться к серверу используя API функции? BR17UY Win Api 3 16.04.2007 02:12