Javaからuintパラメータを使用してSendMessageを呼び出そうとしていますが、intをuintに変換できません。 SendMessageのuintパラメータは、ウィンドウ関数なので変更できません。これを行うにはいくつかの方法がありますか?Javaでuintを渡す方法は?
背景:私は実際に処理を使用している、と私はuser32.dllのアクセスするには、次のチュートリアルを、以下のよ :http://processing.org/hacks/hacks:jnative
とhttp://jnative.free.fr/SPIP-v1-8-3/article.php3?id_article=8
そして、私は以下のよ、これがコールするのSendMessage http://www.codeproject.com/KB/cs/Monitor_management_guide.aspx
ここで私のコードは、GetActiveWindowはうまく動作します、それは上の2番目のリンクからです。
int SC_MONITORPOWER = 0xF170;
int WM_SYSCOMMAND = 0x0112;
int MONITOR_ON = -1;
int MONITOR_OFF = 2;
int MONITOR_STANDBY = 1;
HWND ValidHWND = org.xvolks.jnative.util.User32.GetActiveWindow();
org.xvolks.jnative.util.User32.SendMessage(ValidHWND, (UINT)WM_SYSCOMMAND,
(WPARAM)SC_MONITORPOWER, (LPARAM)MONITOR_STANDBY);
最後の行はエラーが発生した場所で、予想されるU32のタイプのUser32は、私が提供したLONGには適用されません。 SendMessageを変更することはできません
これは、上記の呼び出しで呼び出される対応するJavaファイルです。GetActiveWindowの部分は、チュートリアルのものですから、うまく動作します。私はそれに従うSendmessageを調整しようとしているが、私はまだそれをすべて考え出していない。しかし、ここでSendMessageへのパラメータを変更しても、コンパイラが期待しているものは変更されないため、私が得ているエラーは重要ではないと思います。私はint Msgをlong Msgに変更しようとしましたが、コンパイラはまだ上のコードからuintを期待しています。
public class Paul_s_User32 extends User32 {
public HANDLE GetActiveWindow() {
JNative GetActiveWindow = new JNative(DLL_NAME, "GetActiveWindow");
GetActiveWindow.setRetVal(Type.INT);
GetActiveWindow.invoke();
HWND handle = new HWND(GetActiveWindow.getRetValAsInt());
GetActiveWindow.dispose();
return handle;
}
public IntPtr SendMessage(IntPtr hWnd, int Msg,
IntPtr wParam, IntPtr lParam) {
JNative SendMessage = new JNative(DLL_NAME, "SendMessage");
//SendMessage.setRetVal(Type.long);
SendMessage.invoke();
SendMessage(ValidHWND, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_STANDBY);
}
すごくありがとう! CompEでの私の学部教育は、Cプログラミングだけで成り立っていたので、このOOPのすべてが本当に私を混乱させます。しかし、それでも問題は私が 'UINT(WM_SYSCOMMAND);ではなく'(UINT)WM_SYSCOMMAND 'すべての違いをもたらした。私はまだ2つの違いを学んでいるが、もう一度ありがとう!もしできれば、私はあなたを2回投票します。しかし、私は11ポイントしか持っていないので、一度あなたに投票することさえできません。 – omikun
この情報が役に立ちましたことをうれしく思います。これを回答としてマークすることもできますし、それは価値があります。 私はこれをOOPの問題と呼んでいます。 JavaとCの間に不一致があり、JNativeの作者はこの違いを処理する巧妙な方法を考え出しました。 – jdigital