Search in sources :

Example 56 with Pointer

use of com.sun.jna.Pointer in project jna by java-native-access.

the class Ole32Test method testCoTaskMemRealloc.

public void testCoTaskMemRealloc() {
    Pointer ptr = Ole32.INSTANCE.CoTaskMemAlloc(256);
    assertTrue(!ptr.equals(Pointer.NULL));
    ptr = Ole32.INSTANCE.CoTaskMemRealloc(ptr, 128);
    assertTrue(!ptr.equals(Pointer.NULL));
    Ole32.INSTANCE.CoTaskMemFree(ptr);
}
Also used : Pointer(com.sun.jna.Pointer)

Example 57 with Pointer

use of com.sun.jna.Pointer in project jna by java-native-access.

the class W32APIMapperTest method testInvalidHandleValue.

public void testInvalidHandleValue() {
    String EXPECTED = "@0xffffffff";
    if (Pointer.SIZE == 8) {
        EXPECTED += "ffffffff";
    }
    Pointer p = Pointer.createConstant(Pointer.SIZE == 8 ? -1 : 0xFFFFFFFFL);
    assertTrue("Wrong value: " + p, p.toString().endsWith(EXPECTED));
}
Also used : Pointer(com.sun.jna.Pointer)

Example 58 with Pointer

use of com.sun.jna.Pointer in project jna by java-native-access.

the class DdemlUtilTest method testQueryConvInfoSetUserHandle.

@Test
public void testQueryConvInfoSetUserHandle() throws InterruptedException {
    final String serviceName = "TestService";
    final String topicName = "TestTopic";
    final String testExecute = "Execute�������";
    final CountDownLatch executesProcessed = new CountDownLatch(1);
    StandaloneDdeClient client = null;
    StandaloneDdeClient server = null;
    try {
        client = new StandaloneDdeClient() {

            private final XactCompleteHandler xactCompleteHandler = new XactCompleteHandler() {

                public void onXactComplete(int transactionType, int dataFormat, HCONV hConv, HSZ topic, HSZ item, HDDEDATA hdata, ULONG_PTR transactionIdentifier, ULONG_PTR statusFlag) {
                    CONVINFO convInfo = wrap(hConv).queryConvInfo(transactionIdentifier.intValue());
                    if (convInfo.hUser.intValue() == 42) {
                        executesProcessed.countDown();
                    }
                }
            };

            {
                registerXactCompleteHandler(xactCompleteHandler);
                this.initialize(Ddeml.APPCMD_CLIENTONLY | Ddeml.CBF_SKIP_REGISTRATIONS | Ddeml.CBF_SKIP_UNREGISTRATIONS);
            }
        };
        server = new StandaloneDdeClient() {

            private final ConnectHandler connectHandler = new ConnectHandler() {

                public boolean onConnect(int transactionType, HSZ topic, HSZ service, Ddeml.CONVCONTEXT convcontext, boolean sameInstance) {
                    return topicName.equals(queryString(topic));
                }
            };

            private final ExecuteHandler executeHandler = new ExecuteHandler() {

                public int onExecute(int transactionType, HCONV hconv, HSZ topic, Ddeml.HDDEDATA commandStringData) {
                    Pointer[] pointer = new Pointer[] { accessData(commandStringData, null) };
                    try {
                        String commandString = pointer[0].getWideString(0);
                        if (testExecute.equals(commandString) && queryString(topic).equals(topicName)) {
                            return Ddeml.DDE_FACK;
                        }
                    } finally {
                        synchronized (pointer) {
                            unaccessData(commandStringData);
                        }
                    }
                    return Ddeml.DDE_FNOTPROCESSED;
                }
            };

            {
                registerConnectHandler(connectHandler);
                registerExecuteHandler(executeHandler);
                this.initialize(Ddeml.APPCMD_FILTERINITS | Ddeml.CBF_SKIP_ALLNOTIFICATIONS);
            }
        };
        server.nameService(serviceName, Ddeml.DNS_REGISTER);
        IDdeConnection con = client.connect(serviceName, topicName, null);
        con.execute(testExecute, Ddeml.TIMEOUT_ASYNC, null, new BaseTSD.DWORD_PTR(42L));
        assertTrue(executesProcessed.await(3, TimeUnit.SECONDS));
    } finally {
        closeQuitely(client);
        closeQuitely(server);
    }
}
Also used : HCONV(com.sun.jna.platform.win32.Ddeml.HCONV) Pointer(com.sun.jna.Pointer) CountDownLatch(java.util.concurrent.CountDownLatch) ULONG_PTR(com.sun.jna.platform.win32.BaseTSD.ULONG_PTR) HSZ(com.sun.jna.platform.win32.Ddeml.HSZ) CONVINFO(com.sun.jna.platform.win32.Ddeml.CONVINFO) ConnectHandler(com.sun.jna.platform.win32.DdemlUtil.ConnectHandler) ExecuteHandler(com.sun.jna.platform.win32.DdemlUtil.ExecuteHandler) HDDEDATA(com.sun.jna.platform.win32.Ddeml.HDDEDATA) StandaloneDdeClient(com.sun.jna.platform.win32.DdemlUtil.StandaloneDdeClient) XactCompleteHandler(com.sun.jna.platform.win32.DdemlUtil.XactCompleteHandler) IDdeConnection(com.sun.jna.platform.win32.DdemlUtil.IDdeConnection) Test(org.junit.Test)

Example 59 with Pointer

use of com.sun.jna.Pointer in project jna by java-native-access.

the class DdemlUtilTest method testEnableCallback.

@Test
public void testEnableCallback() throws InterruptedException {
    final String serviceName = "TestService";
    final String topicName = "TestTopic";
    final String testExecute = "Execute�������";
    final CountDownLatch executesProcessed = new CountDownLatch(3);
    StandaloneDdeClient client = null;
    StandaloneDdeClient server = null;
    try {
        client = new StandaloneDdeClient() {

            private final XactCompleteHandler xactCompleteHandler = new XactCompleteHandler() {

                public void onXactComplete(int transactionType, int dataFormat, HCONV hConv, HSZ topic, HSZ item, HDDEDATA hdata, ULONG_PTR transactionIdentifier, ULONG_PTR statusFlag) {
                    executesProcessed.countDown();
                }
            };

            {
                registerXactCompleteHandler(xactCompleteHandler);
                this.initialize(Ddeml.APPCMD_CLIENTONLY | Ddeml.CBF_SKIP_REGISTRATIONS | Ddeml.CBF_SKIP_UNREGISTRATIONS);
            }
        };
        server = new StandaloneDdeClient() {

            private final ConnectHandler connectHandler = new ConnectHandler() {

                public boolean onConnect(int transactionType, HSZ topic, HSZ service, Ddeml.CONVCONTEXT convcontext, boolean sameInstance) {
                    return topicName.equals(queryString(topic));
                }
            };

            private final ExecuteHandler executeHandler = new ExecuteHandler() {

                public int onExecute(int transactionType, HCONV hconv, HSZ topic, Ddeml.HDDEDATA commandStringData) {
                    Pointer[] pointer = new Pointer[] { accessData(commandStringData, null) };
                    try {
                        String commandString = pointer[0].getWideString(0);
                        if (testExecute.equals(commandString) && queryString(topic).equals(topicName)) {
                            return Ddeml.DDE_FACK;
                        }
                    } finally {
                        synchronized (pointer) {
                            unaccessData(commandStringData);
                        }
                    }
                    return Ddeml.DDE_FNOTPROCESSED;
                }
            };

            {
                registerConnectHandler(connectHandler);
                registerExecuteHandler(executeHandler);
                this.initialize(Ddeml.APPCMD_FILTERINITS | Ddeml.CBF_SKIP_ALLNOTIFICATIONS);
            }
        };
        server.nameService(serviceName, Ddeml.DNS_REGISTER);
        server.enableCallback(Ddeml.EC_DISABLE);
        assertThat(server.enableCallback(Ddeml.EC_QUERYWAITING), is(false));
        IDdeConnection con = client.connect(serviceName, topicName, null);
        WinDef.DWORDByReference result = new WinDef.DWORDByReference();
        con.execute(testExecute, Ddeml.TIMEOUT_ASYNC, result, null);
        con.execute(testExecute, Ddeml.TIMEOUT_ASYNC, result, null);
        con.execute(testExecute, Ddeml.TIMEOUT_ASYNC, result, null);
        assertThat(server.enableCallback(Ddeml.EC_QUERYWAITING), is(true));
        server.enableCallback(Ddeml.EC_ENABLEALL);
        assertTrue(executesProcessed.await(3, TimeUnit.SECONDS));
    } finally {
        closeQuitely(client);
        closeQuitely(server);
    }
}
Also used : HCONV(com.sun.jna.platform.win32.Ddeml.HCONV) Pointer(com.sun.jna.Pointer) CountDownLatch(java.util.concurrent.CountDownLatch) ULONG_PTR(com.sun.jna.platform.win32.BaseTSD.ULONG_PTR) HSZ(com.sun.jna.platform.win32.Ddeml.HSZ) ConnectHandler(com.sun.jna.platform.win32.DdemlUtil.ConnectHandler) ExecuteHandler(com.sun.jna.platform.win32.DdemlUtil.ExecuteHandler) HDDEDATA(com.sun.jna.platform.win32.Ddeml.HDDEDATA) StandaloneDdeClient(com.sun.jna.platform.win32.DdemlUtil.StandaloneDdeClient) XactCompleteHandler(com.sun.jna.platform.win32.DdemlUtil.XactCompleteHandler) IDdeConnection(com.sun.jna.platform.win32.DdemlUtil.IDdeConnection) Test(org.junit.Test)

Example 60 with Pointer

use of com.sun.jna.Pointer in project jna by java-native-access.

the class DdemlUtilTest method testAdvise.

@Test
public void testAdvise() throws InterruptedException {
    final String serviceName = "TestService";
    final String topicName = "TestTopic";
    final String itemName = "TestItem";
    final String testValue = "Execute�������";
    final CountDownLatch adviseStartReceived = new CountDownLatch(1);
    final CountDownLatch adviseDataRequestReceived = new CountDownLatch(1);
    final CountDownLatch adviseDataReceived = new CountDownLatch(1);
    StandaloneDdeClient client = null;
    StandaloneDdeClient server = null;
    try {
        client = new StandaloneDdeClient() {

            private final AdvdataHandler advdataHandler = new DdemlUtil.AdvdataHandler() {

                public int onAdvdata(int transactionType, int dataFormat, HCONV hconv, HSZ topic, HSZ item, HDDEDATA hdata) {
                    if (dataFormat == WinUser.CF_UNICODETEXT && topicName.equals(queryString(topic)) && itemName.equals(queryString(item))) {
                        Pointer pointer = accessData(hdata, null);
                        try {
                            if (testValue.equals(pointer.getWideString(0))) {
                                adviseDataReceived.countDown();
                            }
                        } finally {
                            unaccessData(hdata);
                        }
                    }
                    return Ddeml.DDE_FACK;
                }
            };

            {
                registerAdvdataHandler(advdataHandler);
                this.initialize(Ddeml.APPCMD_CLIENTONLY | Ddeml.CBF_SKIP_REGISTRATIONS | Ddeml.CBF_SKIP_UNREGISTRATIONS);
            }
        };
        server = new StandaloneDdeClient() {

            private final ConnectHandler connectHandler = new ConnectHandler() {

                public boolean onConnect(int transactionType, HSZ topic, HSZ service, Ddeml.CONVCONTEXT convcontext, boolean sameInstance) {
                    return topicName.equals(queryString(topic));
                }
            };

            private final AdvreqHandler advreqHandler = new AdvreqHandler() {

                public HDDEDATA onAdvreq(int transactionType, int dataFormat, HCONV hconv, HSZ topic, HSZ item, int count) {
                    adviseDataRequestReceived.countDown();
                    Memory mem = new Memory((testValue.length() + 1) * 2);
                    mem.setWideString(0, testValue);
                    return createDataHandle(mem, (int) mem.size(), 0, item, dataFormat, 0);
                }
            };

            private final AdvstartHandler advstartHandler = new AdvstartHandler() {

                public boolean onAdvstart(int transactionType, int dataFormat, HCONV hconv, HSZ topic, HSZ item) {
                    adviseStartReceived.countDown();
                    return dataFormat == WinUser.CF_UNICODETEXT && topicName.equals(queryString(topic)) && itemName.equals(queryString(item));
                }
            };

            {
                registerConnectHandler(connectHandler);
                registerAdvReqHandler(advreqHandler);
                registerAdvstartHandler(advstartHandler);
                this.initialize(Ddeml.APPCMD_FILTERINITS | Ddeml.CBF_SKIP_ALLNOTIFICATIONS);
            }
        };
        server.nameService(serviceName, Ddeml.DNS_REGISTER);
        IDdeConnection con = client.connect(serviceName, topicName, null);
        con.advstart(itemName, WinUser.CF_UNICODETEXT, 5 * 1000, null, null);
        assertTrue(adviseStartReceived.await(5, TimeUnit.SECONDS));
        server.postAdvise(topicName, itemName);
        assertTrue(adviseDataRequestReceived.await(5, TimeUnit.SECONDS));
        assertTrue(adviseDataReceived.await(5, TimeUnit.SECONDS));
    } finally {
        closeQuitely(client);
        closeQuitely(server);
    }
}
Also used : Memory(com.sun.jna.Memory) HCONV(com.sun.jna.platform.win32.Ddeml.HCONV) Pointer(com.sun.jna.Pointer) CountDownLatch(java.util.concurrent.CountDownLatch) HSZ(com.sun.jna.platform.win32.Ddeml.HSZ) AdvdataHandler(com.sun.jna.platform.win32.DdemlUtil.AdvdataHandler) AdvreqHandler(com.sun.jna.platform.win32.DdemlUtil.AdvreqHandler) ConnectHandler(com.sun.jna.platform.win32.DdemlUtil.ConnectHandler) HDDEDATA(com.sun.jna.platform.win32.Ddeml.HDDEDATA) StandaloneDdeClient(com.sun.jna.platform.win32.DdemlUtil.StandaloneDdeClient) IDdeConnection(com.sun.jna.platform.win32.DdemlUtil.IDdeConnection) AdvstartHandler(com.sun.jna.platform.win32.DdemlUtil.AdvstartHandler) Test(org.junit.Test)

Aggregations

Pointer (com.sun.jna.Pointer)93 PointerByReference (com.sun.jna.ptr.PointerByReference)20 Memory (com.sun.jna.Memory)15 IntByReference (com.sun.jna.ptr.IntByReference)15 Test (org.junit.Test)12 HDDEDATA (com.sun.jna.platform.win32.Ddeml.HDDEDATA)8 HSZ (com.sun.jna.platform.win32.Ddeml.HSZ)8 HCONV (com.sun.jna.platform.win32.Ddeml.HCONV)7 ConnectHandler (com.sun.jna.platform.win32.DdemlUtil.ConnectHandler)7 IDdeConnection (com.sun.jna.platform.win32.DdemlUtil.IDdeConnection)7 StandaloneDdeClient (com.sun.jna.platform.win32.DdemlUtil.StandaloneDdeClient)7 HANDLE (com.sun.jna.platform.win32.WinNT.HANDLE)7 File (java.io.File)7 CountDownLatch (java.util.concurrent.CountDownLatch)7 HWND (com.sun.jna.platform.win32.WinDef.HWND)6 ULONG (com.sun.jna.platform.win32.WinDef.ULONG)6 IOException (java.io.IOException)6 BufferedImage (java.awt.image.BufferedImage)5 Function (com.sun.jna.Function)4 ULONG_PTR (com.sun.jna.platform.win32.BaseTSD.ULONG_PTR)4