SendMessage( HWND_BROADCAST , WM_SETTINGCHANGE , 0 , (LPARAM) "環境" );
JNA と Windows XP: 環境が変更されたことを通知するための呼び出し
リンクを参照してください: twall.github.com/jna/3.5.1/javadoc/
リンクを参照してください: twall.github.com/jna/3.5.1/javadoc/com/sun/jna/platform/win32/User32.html
PostMessage(WinDef.HWND hWnd, int msg, WinDef.WPARAM wParam, WinDef.LPARAM lParam)
この関数は、指定されたウィンドウを作成したスレッドに関連付けられたメッセージ キューにメッセージを配置し、スレッドがメッセージを処理するのを待たずに戻ります。
import com.sun.jna.*;
import com.sun.jna.win32.*;
import com.sun.jna.platform.win32.*;
import com.sun.jna.ptr.*;
public class MainJNA {
public static void main (String [] args){
String myString = "Environment";
Pointer myPointer = new Memory(myString.length()+1);
myPointer.setString(0,myString);
Pointer HWND_BROADCAST = new Pointer(0xFFFF);
int msg = 0x001A; // WM_SETTINGCHANGE = WM_WININICHANGE = 0x001A
WinDef.HWND hWnd = new WinDef.HWND( HWND_BROADCAST );
WinDef.WPARAM wParam = new WinDef.WPARAM(0);
WinDef.LPARAM lParam = new WinDef.LPARAM( myPointer.getLong(0) );
// Exception in thread "main" java.lang.IllegalArgumentException:
// Argument value 0x6d6e6f7269766e45 exceeds native capacity (4 bytes)
// mask=0xffffffff00000000
User32 user32 = (User32) Native.loadLibrary(
"user32" , User32.class , W32APIOptions.DEFAULT_OPTIONS );
user32.PostMessage( hWnd , msg , wParam , lParam );
}
} // end of class MainJNA
文字列パラメータ「環境」をuser32.PostMessageに渡す方法???
スレッド「メイン」で例外を取得しないようにjava.lang.IllegalArgumentException: Argument value 0x6d6e6f7269766e45 がネイティブ容量 (4 バイト) を超えています mask=0xffffffff00000000
どうも