問題タブ [jna]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1191 参照

winapi - Win32API:ショートカット(.lnkファイル)を作成する方法

私はJava開発者ですので、無知なことをお許しください。

たとえば、ユーザーのautostartまたはsend-toフォルダーに実行可能ファイルへのショートカットを作成したい(インストーラーは通常、管理者によって実行されるため、インストーラーにそれを行わせたくない)。そのタスクに使用できるAPI(Cを推奨)(おそらくJNAを使用)?前もって感謝します。

0 投票する
1 に答える
586 参照

java - JNAを使用した*shortのJavaタイプは何ですか

JNAを使用した*shortのJavaタイプは何ですか

dll に short と *short がありますが、short -> int *short -> int[] を呼び出すにはどうすればよいですか?

ありがとう、アレックス

0 投票する
1 に答える
655 参照

c# - JNAを使用してMicrosoftWindowsの子ウィンドウを作成する方法

JNA(Java Native Access)で次のコードを使用して、既存のウィンドウの子ウィンドウを作成しようとしばらく時間を費やしましたが、WindowsAPIを使用しようとしている他のすべてのプログラミング言語とほぼ同じだと思います。

これがCreateWindowsExAの私の宣言です :

そして、これが私がそれを呼ぶ方法です:

関数を呼び出した後、ボタンへの有効なハンドラーを取得します...しかし、それは表示されません。getLastErrorを呼び出し、続いてTranslateMessageを呼び出すと、「関数は正常に完了しました」というメッセージが表示されます。また、GetAncestor(childButton、3)を呼び出すと、ハンドルがparentWindowHandlerに戻ります。GetWindowTextA(childButton..bla)を呼び出すこともでき、ShowMessage文字列を取得します。したがって、明らかに私はparentWindowの子を作成し、そこにあります。ただし、表示されません。次に頭に浮かぶのは、私のウィンドウ/ラベルがその親のz-indexの下部にあるため、他のいくつかの呼び出しを行う必要があり、そうするつもりです。しかし、私が間違った方向にいる場合、私は少し時間を無駄にします。

この子を表示するにはどうすればよいですか、または何が間違っているのですか。コールバックでこれを呼び出したり、メッセージを送信したりしないことに注意してください。

ポインタはありますか?

0 投票する
1 に答える
2951 参照

windows - JNA でネイティブ Windows ウィンドウを作成し、GWL_WNDPROC を使用していくつかの GetWindowLong を作成します。

良い一日、

私はしばらく JNA を使用して Windows API とやり取りしていましたが、ウィンドウを作成するときに行き詰まりました。1. 既存のウィンドウの子ウィンドウを作成し、有効なハンドラーを取得しました。2. Windows のすべてのウィンドウには、ノンストップのメッセージ ディスパッチ ループがあることを理解しました。3. 自分のウィンドウをメッセージ ディスパッチ ループに含める最善の方法は、次のコードのようなものを使用することであることがわかりました (私のコードではありませんが、私もそうします)。

ただし、私の問題は、親ウィンドウ(コードの最初の行) に対して GetWindowLong() を呼び出すと、関数が正常に完了しなかったことを示すポインターに対して 0 を取得することです。その後、GetLastError() を呼び出し、エラー コードをすばやく確認すると、「アクセスが拒否されました」というエラーが表示されます。もちろん、これは論理的です。自分のスレッドから別のスレッドの WNDPROC のアドレスにアクセスしようとしているからです。

ポインタはありますか?(しゃれた意図)

0 投票する
1 に答える
8637 参照

java - JNAを使用してJavaクラスをvoid*パラメーターに渡す

JNAを使用してJavaから呼び出そうとしているCの関数があります。

JNAのドキュメントによると、void*はcom.sun.jna.Pointer関数に渡される必要があります。JNAを使用するJavaでは、上記の関数は次のようにラップされると思います。

ポインタにリンクし、パラメータsを渡す必要があるオブジェクトは、次のようなJNA構造を実装するクラスになります。

残念ながら、パラメータlsはクラスの長さをバイト単位で表す整数です。Javaには関数がないsizeofため、これにより複雑さが増します。私が抱えているもう1つの大きな問題は、オブジェクトの内容をネイティブメモリに正しく渡したり戻したりしていることを確認することです。

私のコードは次のようになります。

渡されたデータのサイズがC関数で予想されるよりも大きいというエラーが発生します。

上記のコードは、同様の問題を扱っている質問に対するこの回答で提供されているのとほぼ同じ種類の手順に従いますが、C#です。私はそれがC#で動作することを試し、テストしました。

私の質問はStackoverflowの別の質問と似ていますが、クラスへのポインターではなく、IntByReferenceへのポインターを扱います。

0 投票する
1 に答える
3205 参照

java - JWS によってデプロイされたアプレットを使用して JNA でネイティブ ライブラリを使用する適切な方法 (java web start)

JWS (Java Web Start) を介してデプロイされたアプレットを使用しています。このアプレットには、いくつかのネイティブ機能が含まれています: JNA。User32、Kernel32、および Gdi32。JWS からアプレットを起動すると、次のようになります。

これは奇妙ですよね?jarsigner で jar を確認すると、すべて署名されているように見えます (Netbeans による自動署名を使用していますが、手動で署名しても機能しません)。私はアプレットと JWS テクノロジにかなり慣れていないので、もう一度試してみるということは、JNLP が適切なクラスを見つけられなかったことを意味するのだろうかと思います。

さらに奇妙なのは、アプレットでネイティブ メソッドを定義した場合、たとえば、アプレットのボタンをクリックすると Windows メッセージ ボックスが表示されるメソッドを定義すると、アプレットのボタンをクリックすると機能しますが、 JavaScript を使用して同じ関数を呼び出そうとすると、失敗します。だからここに私の.jnlpファイルがあります:

私が見つけたいくつかの情報によると、jna.jarのuser32_x86ディレクトリを独自のjarに変換し、それをjnlpにnativelib hrefとして含める必要がありますが、機能しません。また、アプレット内のネイティブ関数へのすべての呼び出しを doPrivileged でラップしようとしても機能しません。

どんな助けでもいただければ幸いです

0 投票する
1 に答える
1256 参照

arrays - JNA:構造体で構造体の配列にアクセスする方法は?

構造体内の構造体の配列にアクセスしようとしています。これは、問題に縮小された関連する C コードです。

C では、配列へのアクセスは次のように簡単です。

これを Java で実装するにはどうすればよいですか? 私はJNAが初めてなので、この質問をしています。これまでのところ、JNAのドキュメントを読んで、私の問題に何らかの形で関連しているすべての例を試しましたが、うまくいきませんでした...

ヘッダーファイルの変換には JNAerator を使用しました。結果が正しいかどうかはわかりません。

どんな助けでも大歓迎です。

0 投票する
2 に答える
1831 参照

java - WindowsプラットフォームでのJNAマッピングLPCSTR

JNAを使用してC/C++用の1つのDLLAPIを呼び出す作業をしています。DLLの関数APIは短いDKT_init(LPCSTR名)です。対応するJavaメソッドをpublicshortDKT_init(String name);として作成しました。しかし、私がそれを呼び出すと、DLLAPIはパラメータエラーを返します。JNAでLPCSTRをマッピングする方法を知りたいですか?LPCSTRはconschar*ですが、Stringはchar*です。

0 投票する
1 に答える
1285 参照

java - JNAを使用してLinuxでXlib XnextEventを使用する

ウィンドウフックと同じJNAを使用して、Linuxですべてのグローバルキーイベントを取得したいと考えています。以下はコードです:

何がうまくいかないのかわからない。XGrabKeyboard を使用できません。私を助けてください。

ありがとう、よろしく、 Vivek Birdi

0 投票する
2 に答える
398 参照

java - JNA による配列の取得

呼び出された関数によって割り当てられたメモリ ブロックから情報を取得する際に問題が発生しました。具体的にはXGetWindowProperties、JNA に含まれる X11 lib に機能があります。最後のパラメーター - を介して結果を返しますPointerByReference prop_return

実際のメモリ領域に の配列が含まれていることはわかっていますWindow。しかし、これらのオブジェクトを作成するにはどうすればよいでしょうか? Bufferのサイズがわからないため、ポインター自体から取得する方法がわかりませんWindow

実際の機能は次のとおりです。int XGetWindowProperty(...., unsigned char **prop_return)私が呼び出しているパラメーターを使用すると、実際にはint XGetWindowProperty(...., Window *prop_return[]).