5 messages in net.java.dev.jna.usersproblem calling user32.SendMessageTim...
FromSent OnAttachments
Maarten CoeneOct 23, 2007 2:29 am 
Maarten CoeneOct 23, 2007 7:52 am 
Timothy WallOct 23, 2007 8:04 am 
Timothy WallOct 23, 2007 8:15 am 
Maarten CoeneOct 23, 2007 8:40 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:problem calling user32.SendMessageTimeoutActions...
From:Maarten Coene (maar@yahoo.com)
Date:Oct 23, 2007 2:29:28 am
List:net.java.dev.jna.users

Hi,

I want to use the SendMessageTimeout function located in user32.dll. The syntax of this function is: LRESULT SendMessageTimeout( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, UINT fuFlags, UINT uTimeout, PDWORD_PTR lpdwResult );I've translated this into the following Java interface:

public interface User32 extends com.sun.jna.examples.win32.W32API {

User32 INSTANCE = (User32) Native.loadLibrary("user32", User32.class,
DEFAULT_OPTIONS);

int HWND_BROADCAST = 0xffff; int WM_SETTINGCHANGE = 0x001A; int SMTO_ABORTIFHUNG = 0x0002;

int SendMessageTimeout(HWND hWnd, int msg, int wParam, String lParam, int
fuFlags, int uTimeout, int out); }

I want to use this function to reload the environment variables from the
registry. I have CPP code that does the following:

DWORD dwReturnValue = 0; SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM) "Environment",
SMTO_ABORTIFHUNG, 5000, &dwReturnValue);

I want to do the same in my Java code:

User32 user32 = User32.INSTANCE; HWND hwnd = new HWND(); hwnd.setPointer(new IntByReference(User32.HWND_BROADCAST)); user32.SendMessageTimeout(hwnd, User32.WM_SETTINGCHANGE, 0, "Environment",
User32.SMTO_ABORTIFHUNG, 5000, 0);

(I took the values for the constants from this site:
http://ghouston.blogspot.com/2005/08/how-to-create-and-change-environment.html)

However, this doesn't work. I receive error code 1400 (Invalid window handle). Can anyone tell me what I'm doing wrong here?

regards, Maarten