{"id":27,"date":"2007-08-01T21:24:15","date_gmt":"2007-08-01T21:24:15","guid":{"rendered":"http:\/\/euve3303.vserver.de\/stefan\/blog\/?p=22"},"modified":"2007-08-01T21:24:15","modified_gmt":"2007-08-01T21:24:15","slug":"native-windows-filechooser-mit-jnative","status":"publish","type":"post","link":"https:\/\/cogito-ergo-blog.de\/blog\/2007\/08\/01\/native-windows-filechooser-mit-jnative\/","title":{"rendered":"Native Windows-FileChooser mit JNative"},"content":{"rendered":"<h3>Swing-FileChooser<\/h3>\n<p>\nDer Swing-FileChooser hat selbst in der Version 6 von Java immer noch nicht das Niveau des nativen FileChoosers erreicht. So steht bespielsweise die wichtige Miniaturansicht f\u00fcr Bilder bei Swing nicht zur Verf\u00fcgung. Auch das Auswahl &#8220;Lasso&#8221; bei mehrfach Auswahl fehlt bei der Java-Variante.\n<\/p>\n<h3>JNative<\/h3>\n<p>Mit <a href=\"http:\/\/jnative.free.fr\/\">JNative<\/a> gibt es eine einfache M\u00f6glichkeit native Code in Java einzubinden, ohne daf\u00fcr gleich JNI oder den C\/C++ Compiler bem\u00fchen zu m\u00fcssen. Der native Code in der DLL (oder dem SO-Modul) ist generisch und ein Call an eine Betriebsystemfunktion wie &#8220;GetOpenFile&#8221; wird sozusagen in Java &#8220;zusammengebaut&#8221;.\n<\/p>\n<p><!--more--><\/p>\n<h3>Calls mit JNative bauen<\/h3>\n<p>\nMit drei Klassen werden Strukturen f\u00fcr die \u00dcbergabe an die Funktion, das Auslesen der R\u00fcckgabewerte und der Call selbst zusammen gebaut. Damit der native Call klappt, muss selbstverst\u00e4ndlich die JNativeCpp.dll im Java-Librarypath gefunden werden k\u00f6nnen. Hierzu l\u00e4dt man die DLL bei <a href=\"http:\/\/jnative.free.fr\/\">JNative<\/a> herunter und kopiert sie ins Bin Verzeichnis des JRE (dort wo auch java.exe zu finden ist).\n<\/p>\n<p>\nFolgende drei Klassen liefern dann schon das gew\u00fcnschte Ergebnis:\n<\/p>\n<p>Main-Klasse mit MainEntry-Point und dem FileChooser an sich:<\/p>\n<blockquote style=\"border: 1px solid gray; overflow: auto; font-size: 100%; height: 300px; background-color: rgb(238, 238, 238);\">\n<p><tt class=\"java\"><span class=\"java4\">package <\/span><span class=\"java10\">rinke.solutions.jnative;<\/p>\n<p><\/span><span class=\"java4\">import <\/span><span class=\"java10\">java.io.ByteArrayInputStream;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">java.io.File;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">java.io.IOException;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">java.io.InputStreamReader;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">java.io.UnsupportedEncodingException;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">java.util.ArrayList;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">java.util.List;<\/p>\n<p><\/span><span class=\"java4\">import <\/span><span class=\"java10\">javax.swing.JFileChooser;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">javax.swing.UIManager;<\/p>\n<p><\/span><span class=\"java4\">import <\/span><span class=\"java10\">org.xvolks.jnative.JNative;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">org.xvolks.jnative.Type;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">org.xvolks.jnative.exceptions.NativeException;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">org.xvolks.jnative.misc.basicStructures.DWORD;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">org.xvolks.jnative.misc.basicStructures.HWND;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">org.xvolks.jnative.util.ComDlg32;<\/p>\n<p><\/span><span class=\"java4\">public class <\/span><span class=\"java10\">MyComDlg32 <\/span><span class=\"java4\">extends <\/span><span class=\"java10\">ComDlg32 <\/span><span class=\"java8\">{<\/p>\n<p>&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">private static final <\/span><span class=\"java10\">String CHARSET = <\/span><span class=\"java5\">&#34;ISO-8859-1&#34;<\/span><span class=\"java10\">;<br \/>\n&#xA0; <\/span><span class=\"java3\">\/\/Cache the JNative object between calls.<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">private static <\/span><span class=\"java10\">JNative nGetOpenFileName;<\/p>\n<p>&#xA0;&#xA0;&#xA0; <\/span><span class=\"java3\">\/\/ small class wrapping the OFN results<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static class <\/span><span class=\"java10\">OpenFilenameResult <\/span><span class=\"java8\">{<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public <\/span><span class=\"java10\">OpenFilenameResult<\/span><span class=\"java8\">(<\/span><span class=\"java9\">boolean <\/span><span class=\"java10\">i<\/span><span class=\"java8\">) {<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">success = i;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<\/p>\n<p>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public <\/span><span class=\"java10\">OpenFilenameResult<\/span><span class=\"java8\">() {<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; }<\/p>\n<p>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public <\/span><span class=\"java9\">boolean <\/span><span class=\"java10\">success;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public <\/span><span class=\"java10\">String dir;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public <\/span><span class=\"java10\">List&lt;String&gt; files;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<\/p>\n<p>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static <\/span><span class=\"java10\">OpenFilenameResult getOpenFileName<\/span><span class=\"java8\">(<\/span><span class=\"java10\">HWND lOwner, HWND hInstance,<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; DWORD Flags, String title, String initDir <\/span><span class=\"java8\">) <\/span><span class=\"java4\">throws <\/span><span class=\"java10\">NativeException, IllegalAccessException <\/span><span class=\"java8\">{<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">if<\/span><span class=\"java8\">( <\/span><span class=\"java10\">nGetOpenFileName == <\/span><span class=\"java4\">null <\/span><span class=\"java8\">) {<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">nGetOpenFileName = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">JNative<\/span><span class=\"java8\">(<\/span><span class=\"java10\">DLL_NAME, <\/span><span class=\"java5\">&#34;GetOpenFileNameA&#34;<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; nGetOpenFileName.setRetVal<\/span><span class=\"java8\">(<\/span><span class=\"java10\">Type.INT<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<\/p>\n<p>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">OpenFileName param = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">OpenFileName<\/span><span class=\"java8\">()<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; param.setOwner<\/span><span class=\"java8\">(<\/span><span class=\"java10\">lOwner<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; param.setFlag<\/span><span class=\"java8\">(<\/span><span class=\"java10\">Flags<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; param.setTitle<\/span><span class=\"java8\">(<\/span><span class=\"java10\">title<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; param.setInitialDir<\/span><span class=\"java8\">(<\/span><span class=\"java10\">initDir<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<\/p>\n<p>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; nGetOpenFileName.setParameter<\/span><span class=\"java8\">(<\/span><span class=\"java7\">0<\/span><span class=\"java10\">, param.getPointer<\/span><span class=\"java8\">())<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; nGetOpenFileName.invoke<\/span><span class=\"java8\">()<\/span><span class=\"java10\">;<\/p>\n<p>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">if<\/span><span class=\"java8\">(<\/span><span class=\"java5\">&#34;0&#34;<\/span><span class=\"java10\">.equals<\/span><span class=\"java8\">(<\/span><span class=\"java10\">nGetOpenFileName.getRetVal<\/span><span class=\"java8\">())) {<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">return new <\/span><span class=\"java10\">OpenFilenameResult<\/span><span class=\"java8\">(<\/span><span class=\"java4\">false<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">} <\/span><span class=\"java4\">else <\/span><span class=\"java8\">{<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java3\">\/\/ extract result<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java9\">byte<\/span><span class=\"java8\">[] <\/span><span class=\"java10\">result = JNative.getMemory<\/span><span class=\"java8\">(<\/span><span class=\"java10\">param.lpstrFile.getPointer<\/span><span class=\"java8\">()<\/span><span class=\"java10\">,param.nMaxFile.getValue<\/span><span class=\"java8\">())<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; ByteArrayInputStream bis = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">ByteArrayInputStream<\/span><span class=\"java8\">(<\/span><span class=\"java10\">result<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; InputStreamReader reader;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; ArrayList&lt;String&gt; files = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">ArrayList&lt;String&gt;<\/span><span class=\"java8\">()<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">try <\/span><span class=\"java8\">{<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">reader = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">InputStreamReader<\/span><span class=\"java8\">(<\/span><span class=\"java10\">bis,CHARSET<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; StringBuilder res =&#xA0; <\/span><span class=\"java4\">new <\/span><span class=\"java10\">StringBuilder<\/span><span class=\"java8\">(<\/span><span class=\"java7\">100<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java9\">int <\/span><span class=\"java10\">ch = reader.read<\/span><span class=\"java8\">()<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java9\">int <\/span><span class=\"java10\">lastch = <\/span><span class=\"java7\">0<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">while<\/span><span class=\"java8\">( <\/span><span class=\"java10\">ch != -<\/span><span class=\"java7\">1 <\/span><span class=\"java8\">) {<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">if<\/span><span class=\"java8\">( <\/span><span class=\"java10\">ch == <\/span><span class=\"java7\">0 <\/span><span class=\"java8\">) {<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">if<\/span><span class=\"java8\">( <\/span><span class=\"java10\">lastch == <\/span><span class=\"java7\">0 <\/span><span class=\"java8\">) <\/span><span class=\"java4\">break<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; files.add<\/span><span class=\"java8\">( <\/span><span class=\"java10\">res.toString<\/span><span class=\"java8\">() )<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; res =&#xA0; <\/span><span class=\"java4\">new <\/span><span class=\"java10\">StringBuilder<\/span><span class=\"java8\">(<\/span><span class=\"java7\">100<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">} <\/span><span class=\"java4\">else <\/span><span class=\"java8\">{&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">res.append<\/span><span class=\"java8\">((<\/span><span class=\"java9\">char<\/span><span class=\"java8\">)<\/span><span class=\"java10\">ch<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">lastch = ch;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; ch = reader.read<\/span><span class=\"java8\">()<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; } <\/span><span class=\"java4\">catch <\/span><span class=\"java8\">(<\/span><span class=\"java10\">UnsupportedEncodingException e<\/span><span class=\"java8\">) {<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">e.printStackTrace<\/span><span class=\"java8\">()<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">} <\/span><span class=\"java4\">catch <\/span><span class=\"java8\">(<\/span><span class=\"java10\">IOException e<\/span><span class=\"java8\">) {<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">e.printStackTrace<\/span><span class=\"java8\">()<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<\/p>\n<p>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">OpenFilenameResult r = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">OpenFilenameResult<\/span><span class=\"java8\">()<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; r.success = <\/span><span class=\"java4\">true<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; r.dir = files.get<\/span><span class=\"java8\">(<\/span><span class=\"java7\">0<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; files.remove<\/span><span class=\"java8\">(<\/span><span class=\"java7\">0<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; r.files = files;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">return <\/span><span class=\"java10\">r;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<br \/>\n&#xA0;&#xA0;&#xA0; }<br \/>\n&#xA0;&#xA0;&#xA0; <br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static <\/span><span class=\"java9\">void <\/span><span class=\"java10\">main<\/span><span class=\"java8\">(<\/span><span class=\"java10\">String<\/span><span class=\"java8\">[] <\/span><span class=\"java10\">args<\/span><span class=\"java8\">) {<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">String initDir = System.getProperty<\/span><span class=\"java8\">(<\/span><span class=\"java5\">&#34;user.home&#34;<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">try <\/span><span class=\"java8\">{<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">HWND foregroundWindow = MyUser32.getForegroundWindow<\/span><span class=\"java8\">()<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; OpenFilenameResult res = MyComDlg32.getOpenFileName<\/span><span class=\"java8\">(<\/span><span class=\"java10\">foregroundWindow,<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">new <\/span><span class=\"java10\">HWND<\/span><span class=\"java8\">(<\/span><span class=\"java7\">0<\/span><span class=\"java8\">)<\/span><span class=\"java10\">,<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">new <\/span><span class=\"java10\">DWORD<\/span><span class=\"java8\">(<\/span><span class=\"java10\">OpenFileName.OFN_ALLOWMULTISELECT +<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; OpenFileName.OFN_EXPLORER<\/span><span class=\"java8\">)<\/span><span class=\"java10\">,<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java5\">&#34;Bitte w&auml;hlen ...&#34;<\/span><span class=\"java10\">,<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; initDir<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; System.out.println<\/span><span class=\"java8\">(<\/span><span class=\"java10\">res.success<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0; <br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">if<\/span><span class=\"java8\">( <\/span><span class=\"java10\">res.success <\/span><span class=\"java8\">) {<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">File<\/span><span class=\"java8\">[] <\/span><span class=\"java10\">files;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">if<\/span><span class=\"java8\">( <\/span><span class=\"java10\">res.files.size<\/span><span class=\"java8\">() <\/span><span class=\"java10\">&gt; <\/span><span class=\"java7\">0 <\/span><span class=\"java8\">) {<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">files = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">File<\/span><span class=\"java8\">[<\/span><span class=\"java10\">res.files.size<\/span><span class=\"java8\">()]<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">for <\/span><span class=\"java8\">(<\/span><span class=\"java9\">int <\/span><span class=\"java10\">i = <\/span><span class=\"java7\">0<\/span><span class=\"java10\">; i &lt; files.length; i++<\/span><span class=\"java8\">) {<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">files<\/span><span class=\"java8\">[<\/span><span class=\"java10\">i<\/span><span class=\"java8\">] <\/span><span class=\"java10\">= <\/span><span class=\"java4\">new <\/span><span class=\"java10\">File<\/span><span class=\"java8\">( <\/span><span class=\"java10\">res.dir + File.separator + res.files.get<\/span><span class=\"java8\">(<\/span><span class=\"java10\">i<\/span><span class=\"java8\">))<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; } <\/span><span class=\"java4\">else <\/span><span class=\"java8\">{<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">files = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">File<\/span><span class=\"java8\">[<\/span><span class=\"java7\">1<\/span><span class=\"java8\">]<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; files<\/span><span class=\"java8\">[<\/span><span class=\"java7\">0<\/span><span class=\"java8\">] <\/span><span class=\"java10\">= <\/span><span class=\"java4\">new <\/span><span class=\"java10\">File<\/span><span class=\"java8\">(<\/span><span class=\"java10\">res.dir<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; }<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">try <\/span><span class=\"java8\">{<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">UIManager.setLookAndFeel<\/span><span class=\"java8\">(<\/span><span class=\"java10\">UIManager.getSystemLookAndFeelClassName<\/span><span class=\"java8\">())<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">} <\/span><span class=\"java4\">catch <\/span><span class=\"java8\">(<\/span><span class=\"java10\">Exception e<\/span><span class=\"java8\">) {<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">e.printStackTrace<\/span><span class=\"java8\">()<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java3\">\/\/ --- swing<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">JFileChooser browse = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">JFileChooser<\/span><span class=\"java8\">()<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java3\">\/\/ Allows multiple selection.<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">browse.setMultiSelectionEnabled<\/span><span class=\"java8\">(<\/span><span class=\"java4\">true<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; browse.setDialogType<\/span><span class=\"java8\">(<\/span><span class=\"java10\">JFileChooser.OPEN_DIALOG<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; browse.setFileSelectionMode<\/span><span class=\"java8\">(<\/span><span class=\"java10\">JFileChooser.FILES_ONLY<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; browse.setEnabled<\/span><span class=\"java8\">(<\/span><span class=\"java4\">true<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java9\">int <\/span><span class=\"java10\">returnVal = browse.showOpenDialog<\/span><span class=\"java8\">(<\/span><span class=\"java4\">null<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">if <\/span><span class=\"java8\">(<\/span><span class=\"java10\">returnVal == JFileChooser.APPROVE_OPTION<\/span><span class=\"java8\">)<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; {<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">File<\/span><span class=\"java8\">[] <\/span><span class=\"java10\">files = browse.getSelectedFiles<\/span><span class=\"java8\">()<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<br \/>\n&#xA0; <br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; } <\/span><span class=\"java4\">catch<\/span><span class=\"java8\">( <\/span><span class=\"java10\">IllegalAccessException e<\/span><span class=\"java8\">) {<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">e.printStackTrace<\/span><span class=\"java8\">()<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">} <\/span><span class=\"java4\">catch <\/span><span class=\"java8\">(<\/span><span class=\"java10\">NativeException e<\/span><span class=\"java8\">) {<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">e.printStackTrace<\/span><span class=\"java8\">()<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<br \/>\n&#xA0;&#xA0;&#xA0; }<\/p>\n<p>}<\/span><\/tt><\/p>\n<\/blockquote>\n<p>Helper-Klasse zum Ermitteln des ForegroundWindows:<\/p>\n<blockquote style=\"border: 1px solid gray; overflow: auto; font-size: 100%; height: 300px; background-color: rgb(238, 238, 238);\">\n<p><tt class=\"java\"><span class=\"java4\">package <\/span><span class=\"java10\">rinke.solutions.jnative;<\/p>\n<p><\/span><span class=\"java4\">import <\/span><span class=\"java10\">org.xvolks.jnative.JNative;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">org.xvolks.jnative.Type;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">org.xvolks.jnative.exceptions.NativeException;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">org.xvolks.jnative.misc.basicStructures.HWND;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">org.xvolks.jnative.util.User32;<\/p>\n<p><\/span><span class=\"java4\">public class <\/span><span class=\"java10\">MyUser32 <\/span><span class=\"java4\">extends <\/span><span class=\"java10\">User32 <\/span><span class=\"java8\">{<\/p>\n<p>&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static <\/span><span class=\"java10\">HWND getForegroundWindow<\/span><span class=\"java8\">() <\/span><span class=\"java4\">throws <\/span><span class=\"java10\">NativeException, IllegalAccessException <\/span><span class=\"java8\">{<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">JNative GetForegroundWindow = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">JNative<\/span><span class=\"java8\">(<\/span><span class=\"java10\">DLL_NAME, <\/span><span class=\"java5\">&#34;GetForegroundWindow&#34;<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; GetForegroundWindow.setRetVal<\/span><span class=\"java8\">(<\/span><span class=\"java10\">Type.INT<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; GetForegroundWindow.invoke<\/span><span class=\"java8\">()<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; HWND handle = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">HWND<\/span><span class=\"java8\">(<\/span><span class=\"java10\">GetForegroundWindow.getRetValAsInt<\/span><span class=\"java8\">())<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; GetForegroundWindow.dispose<\/span><span class=\"java8\">()<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">return <\/span><span class=\"java10\">handle;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<\/p>\n<p>}<\/span><\/tt><\/p>\n<\/blockquote>\n<p>Helper-Klasse zum Verwalten der Ein- \/ Ausgabe-Struktur f\u00fcr GetOpenFilename:<\/p>\n<blockquote style=\"border: 1px solid gray; overflow: auto; font-size: 100%; height: 300px; background-color: rgb(238, 238, 238);\">\n<p><tt class=\"java\"><span class=\"java4\">package <\/span><span class=\"java10\">rinke.solutions.jnative;<\/p>\n<p><\/span><span class=\"java4\">import <\/span><span class=\"java10\">org.xvolks.jnative.exceptions.NativeException;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">org.xvolks.jnative.misc.basicStructures.AbstractBasicData;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">org.xvolks.jnative.misc.basicStructures.DWORD;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">org.xvolks.jnative.misc.basicStructures.HWND;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">org.xvolks.jnative.misc.basicStructures.LPARAM;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">org.xvolks.jnative.pointers.NullPointer;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">org.xvolks.jnative.pointers.Pointer;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">org.xvolks.jnative.pointers.memory.GlobalMemoryBlock;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">org.xvolks.jnative.pointers.memory.MemoryBlock;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">org.xvolks.jnative.pointers.memory.MemoryBlockFactory;<br \/>\n<\/span><span class=\"java4\">import <\/span><span class=\"java10\">org.xvolks.jnative.util.Callback;<\/p>\n<p><\/span><span class=\"java4\">public class <\/span><span class=\"java10\">OpenFileName <\/span><span class=\"java4\">extends <\/span><span class=\"java10\">AbstractBasicData&lt;OpenFileName&gt; <\/span><span class=\"java8\">{<\/p>\n<p>&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_ALLOWMULTISELECT = <\/span><span class=\"java7\">512<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_CREATEPROMPT = <\/span><span class=\"java7\">0x2000<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_ENABLEHOOK = <\/span><span class=\"java7\">32<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_ENABLESIZING = <\/span><span class=\"java7\">0x800000<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_ENABLETEMPLATE = <\/span><span class=\"java7\">64<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_ENABLETEMPLATEHANDLE = <\/span><span class=\"java7\">128<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_EXPLORER = <\/span><span class=\"java7\">0x80000<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_EXTENSIONDIFFERENT = <\/span><span class=\"java7\">0x400<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_FILEMUSTEXIST = <\/span><span class=\"java7\">0x1000<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_HIDEREADONLY = <\/span><span class=\"java7\">4<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_LONGNAMES = <\/span><span class=\"java7\">0x200000<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_NOCHANGEDIR = <\/span><span class=\"java7\">8<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_NODEREFERENCELINKS = <\/span><span class=\"java7\">0x100000<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_NOLONGNAMES = <\/span><span class=\"java7\">0x40000<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_NONETWORKBUTTON = <\/span><span class=\"java7\">0x20000<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_NOREADONLYRETURN = <\/span><span class=\"java7\">0x8000<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_NOTESTFILECREATE = <\/span><span class=\"java7\">0x10000<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_NOVALIDATE = <\/span><span class=\"java7\">256<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_OVERWRITEPROMPT = <\/span><span class=\"java7\">2<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_PATHMUSTEXIST = <\/span><span class=\"java7\">0x800<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_READONLY = <\/span><span class=\"java7\">1<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_SHAREAWARE = <\/span><span class=\"java7\">0x4000<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_SHOWHELP = <\/span><span class=\"java7\">16<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_SHAREFALLTHROUGH = <\/span><span class=\"java7\">2<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_SHARENOWARN = <\/span><span class=\"java7\">1<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public static final <\/span><span class=\"java9\">int <\/span><span class=\"java10\">OFN_SHAREWARN = <\/span><span class=\"java7\">0<\/span><span class=\"java10\">;<\/p>\n<p>&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">protected <\/span><span class=\"java10\">OpenFileName<\/span><span class=\"java8\">(<\/span><span class=\"java10\">OpenFileName lValue<\/span><span class=\"java8\">) {<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">super<\/span><span class=\"java8\">(<\/span><span class=\"java10\">lValue<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<\/p>\n<p>&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public <\/span><span class=\"java10\">OpenFileName<\/span><span class=\"java8\">() <\/span><span class=\"java4\">throws <\/span><span class=\"java10\">NativeException <\/span><span class=\"java8\">{<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">super<\/span><span class=\"java8\">(<\/span><span class=\"java4\">null<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; mValue = <\/span><span class=\"java4\">this<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; createPointer<\/span><span class=\"java8\">()<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<\/p>\n<p>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">DWORD&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; lStructSize;<br \/>\n&#xA0;&#xA0;&#xA0; HWND&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; hwndOwner;<br \/>\n&#xA0;&#xA0;&#xA0; HWND&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; hInstance;<br \/>\n&#xA0;&#xA0;&#xA0; Pointer&#xA0;&#xA0;&#xA0;&#xA0; lpstrFilter;<br \/>\n&#xA0;&#xA0;&#xA0; Pointer&#xA0;&#xA0;&#xA0;&#xA0; lpstrCustomFilter;<br \/>\n&#xA0;&#xA0;&#xA0; DWORD&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; nMaxCustFilter;<br \/>\n&#xA0;&#xA0;&#xA0; DWORD&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; nFilterIndex;<br \/>\n&#xA0;&#xA0;&#xA0; Pointer&#xA0;&#xA0;&#xA0;&#xA0; lpstrFile;<br \/>\n&#xA0;&#xA0;&#xA0; DWORD&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; nMaxFile;<br \/>\n&#xA0;&#xA0;&#xA0; Pointer&#xA0;&#xA0;&#xA0;&#xA0; lpstrFileTitle;<br \/>\n&#xA0;&#xA0;&#xA0; DWORD&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; nMaxFileTitle;<br \/>\n&#xA0;&#xA0;&#xA0; Pointer&#xA0;&#xA0;&#xA0;&#xA0; lpstrInitialDir;<br \/>\n&#xA0;&#xA0;&#xA0; Pointer&#xA0;&#xA0;&#xA0;&#xA0; lpstrTitle;<br \/>\n&#xA0;&#xA0;&#xA0; DWORD&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; Flags;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java9\">short&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">nFileOffset;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java9\">short&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">nFileExtension;<br \/>\n&#xA0;&#xA0;&#xA0; Pointer&#xA0;&#xA0;&#xA0;&#xA0; lpstrDefExt;<br \/>\n&#xA0;&#xA0;&#xA0; LPARAM&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; lCustData;<br \/>\n&#xA0;&#xA0;&#xA0; Callback&#xA0;&#xA0;&#xA0; lpfnHook;<br \/>\n&#xA0;&#xA0;&#xA0; Pointer&#xA0;&#xA0;&#xA0;&#xA0; lpTemplateName;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">private <\/span><span class=\"java10\">MemoryBlock block;<\/p>\n<p>&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public <\/span><span class=\"java10\">OpenFileName getValueFromPointer<\/span><span class=\"java8\">() <\/span><span class=\"java4\">throws <\/span><span class=\"java10\">NativeException <\/span><span class=\"java8\">{<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">offset = <\/span><span class=\"java7\">0<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; lStructSize = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">DWORD<\/span><span class=\"java8\">(<\/span><span class=\"java10\">getNextInt<\/span><span class=\"java8\">())<\/span><span class=\"java10\">;&#xA0;&#xA0; <\/span><span class=\"java3\">\/\/ 0<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">hwndOwner = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">HWND<\/span><span class=\"java8\">(<\/span><span class=\"java10\">getNextInt<\/span><span class=\"java8\">())<\/span><span class=\"java10\">;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java3\">\/\/ 4<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">hInstance = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">HWND<\/span><span class=\"java8\">(<\/span><span class=\"java10\">getNextInt<\/span><span class=\"java8\">())<\/span><span class=\"java10\">;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java3\">\/\/ 8<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; \/\/ lpstrFilter 12<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">offset += <\/span><span class=\"java7\">4<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java3\">\/\/ lpstrCustomFilter 16<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">offset += <\/span><span class=\"java7\">4<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java3\">\/\/ nMaxCustFilter 20<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">offset += <\/span><span class=\"java7\">4<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java3\">\/\/ nFilterIndex 24<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">offset += <\/span><span class=\"java7\">4<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java3\">\/\/ lpstrFile 28<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">offset += <\/span><span class=\"java7\">4<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java3\">\/\/ nMaxFile 32<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">nMaxFile = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">DWORD<\/span><span class=\"java8\">(<\/span><span class=\"java10\">getNextInt<\/span><span class=\"java8\">())<\/span><span class=\"java10\">; <\/span><span class=\"java3\">\/\/ offset += 4;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; \/\/ lpstrFileTitle 36<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">offset += <\/span><span class=\"java7\">4<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java3\">\/\/ nMaxFileTitle 40<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">offset += <\/span><span class=\"java7\">4<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java3\">\/\/ lpstrInitialDir 44<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">offset += <\/span><span class=\"java7\">4<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java3\">\/\/ lpstrTitle 48<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">offset += <\/span><span class=\"java7\">4<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; Flags = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">DWORD<\/span><span class=\"java8\">(<\/span><span class=\"java10\">getNextInt<\/span><span class=\"java8\">())<\/span><span class=\"java10\">;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java3\">\/\/ 52<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; \/\/ nFileOffset 56<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">offset += <\/span><span class=\"java7\">2<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java3\">\/\/ nFileExtension 68<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">offset += <\/span><span class=\"java7\">2<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java3\">\/\/ lpstrDefExt 60<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">offset += <\/span><span class=\"java7\">4<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java3\">\/\/ lCustData 64<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">lCustData = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">LPARAM<\/span><span class=\"java8\">(<\/span><span class=\"java10\">getNextInt<\/span><span class=\"java8\">())<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java3\">\/\/ lpfnHook 68<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">offset += <\/span><span class=\"java7\">4<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java3\">\/\/ lpTemplateName 72<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">offset += <\/span><span class=\"java7\">4<\/span><span class=\"java10\">;<\/p>\n<p>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">return <\/span><span class=\"java10\">getValue<\/span><span class=\"java8\">()<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<\/p>\n<p>&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public <\/span><span class=\"java9\">int <\/span><span class=\"java10\">getSizeOf<\/span><span class=\"java8\">() {<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">return <\/span><span class=\"java7\">76<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<\/p>\n<p>&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public <\/span><span class=\"java10\">Pointer createPointer<\/span><span class=\"java8\">() <\/span><span class=\"java4\">throws <\/span><span class=\"java10\">NativeException <\/span><span class=\"java8\">{<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">pointer = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">Pointer<\/span><span class=\"java8\">(<\/span><span class=\"java4\">new <\/span><span class=\"java10\">GlobalMemoryBlock<\/span><span class=\"java8\">(<\/span><span class=\"java10\">getSizeOf<\/span><span class=\"java8\">()))<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; pointer.setIntAt<\/span><span class=\"java8\">(<\/span><span class=\"java7\">0<\/span><span class=\"java10\">, getSizeOf<\/span><span class=\"java8\">())<\/span><span class=\"java10\">;<\/p>\n<p>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; nMaxFile = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">DWORD<\/span><span class=\"java8\">(<\/span><span class=\"java7\">512<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; lpstrFile = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">Pointer<\/span><span class=\"java8\">(<\/span><span class=\"java10\">MemoryBlockFactory.createMemoryBlock<\/span><span class=\"java8\">(<\/span><span class=\"java10\">nMaxFile.getValue<\/span><span class=\"java8\">()))<\/span><span class=\"java10\">;<\/p>\n<p>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; pointer.setIntAt<\/span><span class=\"java8\">(<\/span><span class=\"java7\">28<\/span><span class=\"java10\">, lpstrFile.getPointer<\/span><span class=\"java8\">())<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; pointer.setIntAt<\/span><span class=\"java8\">(<\/span><span class=\"java7\">32<\/span><span class=\"java10\">, nMaxFile.getValue<\/span><span class=\"java8\">()<\/span><span class=\"java10\">-<\/span><span class=\"java7\">1<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<\/p>\n<p>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">return <\/span><span class=\"java10\">pointer;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<\/p>\n<p>&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public <\/span><span class=\"java9\">void <\/span><span class=\"java10\">setOwner<\/span><span class=\"java8\">(<\/span><span class=\"java10\">HWND owner<\/span><span class=\"java8\">) <\/span><span class=\"java4\">throws <\/span><span class=\"java10\">NativeException <\/span><span class=\"java8\">{<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">hwndOwner = owner;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; pointer.setIntAt<\/span><span class=\"java8\">(<\/span><span class=\"java7\">4<\/span><span class=\"java10\">, hwndOwner.getValue<\/span><span class=\"java8\">())<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<\/p>\n<p>&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public <\/span><span class=\"java9\">void <\/span><span class=\"java10\">setFlag<\/span><span class=\"java8\">(<\/span><span class=\"java10\">DWORD f<\/span><span class=\"java8\">) <\/span><span class=\"java4\">throws <\/span><span class=\"java10\">NativeException <\/span><span class=\"java8\">{<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">Flags = f;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; pointer.setIntAt<\/span><span class=\"java8\">(<\/span><span class=\"java7\">52<\/span><span class=\"java10\">,Flags.getValue<\/span><span class=\"java8\">())<\/span><span class=\"java10\">;<\/p>\n<p>&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<\/p>\n<p>&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public <\/span><span class=\"java9\">void <\/span><span class=\"java10\">setTitle<\/span><span class=\"java8\">(<\/span><span class=\"java10\">String title<\/span><span class=\"java8\">) <\/span><span class=\"java4\">throws <\/span><span class=\"java10\">NativeException <\/span><span class=\"java8\">{<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">if<\/span><span class=\"java8\">(<\/span><span class=\"java10\">title == <\/span><span class=\"java4\">null<\/span><span class=\"java8\">) {<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">lpstrTitle = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">NullPointer<\/span><span class=\"java8\">()<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">} <\/span><span class=\"java4\">else <\/span><span class=\"java8\">{<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">lpstrTitle = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">Pointer<\/span><span class=\"java8\">(<\/span><span class=\"java10\">MemoryBlockFactory.createMemoryBlock<\/span><span class=\"java8\">(<\/span><span class=\"java10\">title.length<\/span><span class=\"java8\">() <\/span><span class=\"java10\">+ <\/span><span class=\"java7\">1<\/span><span class=\"java8\">))<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; lpstrTitle.setMemory<\/span><span class=\"java8\">(<\/span><span class=\"java10\">title<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">pointer.setIntAt<\/span><span class=\"java8\">(<\/span><span class=\"java7\">48<\/span><span class=\"java10\">, lpstrTitle.getPointer<\/span><span class=\"java8\">())<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<\/p>\n<p>&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">public <\/span><span class=\"java9\">void <\/span><span class=\"java10\">setInitialDir<\/span><span class=\"java8\">(<\/span><span class=\"java10\">String initDir<\/span><span class=\"java8\">) <\/span><span class=\"java4\">throws <\/span><span class=\"java10\">NativeException <\/span><span class=\"java8\">{<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java4\">if<\/span><span class=\"java8\">(<\/span><span class=\"java10\">initDir == <\/span><span class=\"java4\">null<\/span><span class=\"java8\">) {<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">lpstrInitialDir = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">NullPointer<\/span><span class=\"java8\">()<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">} <\/span><span class=\"java4\">else <\/span><span class=\"java8\">{<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">lpstrInitialDir = <\/span><span class=\"java4\">new <\/span><span class=\"java10\">Pointer<\/span><span class=\"java8\">(<\/span><span class=\"java10\">MemoryBlockFactory.createMemoryBlock<\/span><span class=\"java8\">(<\/span><span class=\"java10\">initDir.length<\/span><span class=\"java8\">() <\/span><span class=\"java10\">+ <\/span><span class=\"java7\">1<\/span><span class=\"java8\">))<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; lpstrInitialDir.setMemory<\/span><span class=\"java8\">(<\/span><span class=\"java10\">initDir<\/span><span class=\"java8\">)<\/span><span class=\"java10\">;<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<br \/>\n&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <\/span><span class=\"java10\">pointer.setIntAt<\/span><span class=\"java8\">(<\/span><span class=\"java7\">44<\/span><span class=\"java10\">, lpstrInitialDir.getPointer<\/span><span class=\"java8\">())<\/span><span class=\"java10\">;<\/p>\n<p>&#xA0;&#xA0;&#xA0; <\/span><span class=\"java8\">}<\/p>\n<p>\n}<\/span><\/tt>\n<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Swing-FileChooser Der Swing-FileChooser hat selbst in der Version 6 von Java immer noch nicht das Niveau des nativen FileChoosers erreicht. So steht bespielsweise die wichtige Miniaturansicht f\u00fcr Bilder bei Swing nicht zur Verf\u00fcgung. Auch das Auswahl &#8220;Lasso&#8221; bei mehrfach Auswahl &hellip; <a href=\"https:\/\/cogito-ergo-blog.de\/blog\/2007\/08\/01\/native-windows-filechooser-mit-jnative\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"_links":{"self":[{"href":"https:\/\/cogito-ergo-blog.de\/blog\/wp-json\/wp\/v2\/posts\/27"}],"collection":[{"href":"https:\/\/cogito-ergo-blog.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cogito-ergo-blog.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cogito-ergo-blog.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cogito-ergo-blog.de\/blog\/wp-json\/wp\/v2\/comments?post=27"}],"version-history":[{"count":0,"href":"https:\/\/cogito-ergo-blog.de\/blog\/wp-json\/wp\/v2\/posts\/27\/revisions"}],"wp:attachment":[{"href":"https:\/\/cogito-ergo-blog.de\/blog\/wp-json\/wp\/v2\/media?parent=27"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cogito-ergo-blog.de\/blog\/wp-json\/wp\/v2\/categories?post=27"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cogito-ergo-blog.de\/blog\/wp-json\/wp\/v2\/tags?post=27"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}