http://www.codeguru.com/cpp/w-p/win32/tutorials/article.php/c10849/Setting-a-System-Environment-Variable.htmJNA呼叫PostMessage的〜傳遞字符串 「環境」
的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味精,WinDef.WPARAM wParam中,WinDef.LPARAM LPARAM)
該函數將消息放入與創建指定wi的線程關聯的消息隊列中ndow然後返回而不等待線程處理消息。
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異常:參數值0x6d6e6f7269766e45超過本機容量(4個字節)=面膜0xffffffff00000000
THX