Tag: winapi

合并不同语言的程序

我有三个程序(一个在C ++ + WinAPI中,另一个在C#.NET中,最后一个在Java中)具有不同的function。 我即将选择一个并实现其他两个的function。 有可能以某种方式合并它们吗? 我需要在一个GUI中,在一个过程中(至少在视觉上)将它们放在一起。 IPC不是问题。 谢谢你的一切

为什么我对winapi GetWindowPlacement的调用失败(使用JNA)?

这些是winapi方法 BOOL WINAPI SetWindowPlacement( _In_ HWND hWnd, _In_ const WINDOWPLACEMENT *lpwndpl ); typedef struct tagWINDOWPLACEMENT { UINT length; UINT flags; UINT showCmd; POINT ptMinPosition; POINT ptMaxPosition; RECT rcNormalPosition; } WINDOWPLACEMENT, *PWINDOWPLACEMENT, *LPWINDOWPLACEMENT; 我的Java代码: – class WINDOWPLACEMENT{ public int length; public int flags; public int showCmd; public POINT ptMinPosition; public POINT ptMaxPosition; public RECT rcNormalPosition; } […]

尝试通过jni调用从java更改Windows鼠标光标图标

在我的java应用程序中,即时尝试使用具有透明度的argb 32位bmp文件更改鼠标光标。 我想进行jni调用以从Windows更改它,因为在java中更改光标会给我一个非常糟糕的鼠标光标(所有透明度都是0x00或0xFF) 目前我正在尝试使用函数SetClassLong作为参数: 来自java的hWnd(我得到了它的方法http://download.oracle.com/javase/1.3/docs/guide/awt/AWT_Native_Interface.html ) GCL_HCURSOR 和一个由原始argb 32位bmp缓冲区构成的游标 这段代码适用于示例win32 atl windows测试程序: HBITMAP hBitmap = (HBITMAP)CreateBitmap(32, 32, 1, 32, pRawBmpData); BITMAP bmp; ::GetObject(hBitmap, sizeof(BITMAP), &bmp); HBITMAP hMask = ::CreateCompatibleBitmap(::GetDC(NULL), bmp.bmWidth, bmp.bmHeight); ICONINFO ii = {0}; ii.fIcon = FALSE; ii.hbmColor = hBitmap; ii.hbmMask = hMask; ii.xHotspot = 0; ii.yHotspot = 0; HCURSOR cursor = ::CreateIconIndirect(&ii); SetCursor(cursor); […]

更改多窗口应用程序的任务栏组中显示的图标

在Windows 7上,应用程序可以控制如何在任务栏上对Windows进行分组。 Windows具有一些与可执行文件相关的默认设置,快捷方式的创建方式,程序名称等,以应用某些默认分组。 基于主机的应用程序(如Java)的问题是许多程序使用相同的可执行文件,因此Windows有一些注册表设置来设置javaw.exe是主机应用程序。 发生这种情况时,应用程序必须在运行时配置如何对Windows进行分组并启用引脚到任务栏。 我已经设置了应用程序用户模型ID ,以便根据需要对Windows进行分组。 我没有找到解决方案的问题是,对于多窗口应用程序:如何设置在任务栏上使用的稳定图标? 应用程序的默认Windows行为,例如,有两个窗口,每个窗口都有自己的图标,任务栏图标显示第一个打开的窗口的图标,如果该窗口关闭则更改为另一个窗口,以及每次打开和关闭窗口时都会重复此过程。 当用户将应用程序固定到任务栏设置System.AppUserModel.RelaunchIconResource窗口属性时 ,有一些API可以设置图标,但是文档说该应用程序被固定时会使用此图标,因此根据它仅使用它如果应用程序从那些固定的应用程序运行,则问题是无法固定的应用程序(或开发人员不希望允许固定)的问题。 有一些选项,比如使用图标生成新的可执行文件(从该应用程序启动JVM),使用正确的AppUserModelID创建快捷方式。 这些对我来说不是解决方案,因为应用程序是使用Java WebStart / JNLP分发的,因此应用程序快捷方式是由Java创建的,而启动程序是标记为宿主应用程序(应该如此) 另一个解决方案是在Windows 7上运行时为每个窗口设置相同的图标,除了任务栏之外,该图标在Aero模式下的Windows 7上不是很突出,但是当Aero禁用它时,它是在没有Windows预览的Alt +标签切换器上使用的图标,我希望为每个窗口留下不同的东西 注意:这是一个标记的Java,但对任何使用主机可执行文件的平台(javaw.exe,python.exe …)来说都是一个问题。

Java可以用来编写Win32系统服务吗?

标题类型总结了它。 我正在考虑使用Jabaco看到它生成.EXE(以及.jar文件),而且我比VB更熟悉VB语法。

通过JNA调用GetOpenFileName对于Swing应用程序失败

我正在尝试使用Java中的本机Windows文件对话框,使用JNA调用comdlg32函数GetOpenFileName 。 我做了一个静态方法, OpenFileDialog.display看起来像这样: public static List display(Window parent, boolean allowMultiSelect) 它应该返回所选文件,如果用户取消了对话框,则返回null。 我有两个简单的测试程序。 这个按预期工作: package nativedialogs; import java.io.File; import java.util.List; public class SimpleTest { public static void main(String[] args) { List files = OpenFileDialog.display(null, true); System.out.println(files); } } 但是,这个不是: package nativedialogs; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.util.List; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.SwingUtilities; […]

如何通知用户桌面应用程序的重要事件?

我们的客户使用我们的软件(Java Swing应用程序开始使用Webstart)以及其他软件(如MS Office)来完成他的工作。 他不时会在我们的软件中处理重要事件而不会有太多延迟。 客户希望获得明显的通知。 现在他可能正在使用Excel,因此弹出一个消息框是不够的(尽管任务栏中的条目会闪烁)。 我们需要一些机制,如Outlook通知程序,即一个始终可见但不会窃取焦点的弹出窗口。 通知程序应始终显示,直到消息原因消失(用户已解决问题)或用户已关闭消息(如Outlook中)。 此外,我们想要显示一个托盘图标,并可能播放声音。 我已经尝试了Java6 java.awt.SystemTray以及JDIC(版本0.9,因为我们已经在该项目的类路径中具有该lib)等效,但我没有找到一种方法来设置TrayIcon.displayMessage的超时方法,并且消息似乎不总是在顶部。 除了JNI还有其他选择来实现所请求的行为吗? 如果JNI是唯一的选择,并且由于Windows是我们客户的唯一平台,Outlook通知程序是仅Outlookfunction,还是可以通过Windows API自由使用? 或者存在什么其他选项来通知用户在一个软件中执行的重要任务,而不妨碍他在另一个软件中完成他当前的任务。 因此,系统modal dialog是不可取的!

如何包装32位.dll以便它可以在64位操作系统中运行

所以,我一直在使用JPIB与我的java程序中的GPIB设备进行通信。 但是,我遇到了麻烦。 较新的系统基于64位操作系统。 但是,jpib.dll文件是用32位编写的。 我想不出它需要做出的真正64位依赖的任何类型的调用。 这里真正的麻烦是JPIB项目自2006年9月以来一直没有更新。我曾尝试通过SourceForge向开发者发送电子邮件,但我认为我不会随意使用它。 有没有人知道这方面的任何方法? 或者知道如何(并且可以告诉我如何)将.dll重新编译为AMD-64合规性?

关闭捕获全局输入事件的钩子

介绍 这是一个说明问题的例子。 考虑我正在跟踪并显示鼠标全局当前位置和最后点击按钮并定位给用户。 这是一张图片: 要在Windows框中存档捕获点击事件,将会发送到其他程序事件消息队列,我使用winapi即user32.dll库创建一个钩子。 这是在JDK沙箱之外,所以我使用JNA来调用本机库。 这一切都很完美,但它没有像我期望的那样关闭。 我的问题是 – 如何正确关闭以下示例程序? 示例来源 下面的代码不是由我完整编写的,而是在Oracle论坛中从这个问题中获取并部分修复。 import java.awt.AWTException; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.GridLayout; import java.awt.MouseInfo; import java.awt.Point; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import javax.swing.JLabel; import com.sun.jna.Native; import com.sun.jna.NativeLong; import com.sun.jna.Platform; import com.sun.jna.Structure; import com.sun.jna.platform.win32.BaseTSD.ULONG_PTR; import com.sun.jna.platform.win32.Kernel32; import com.sun.jna.platform.win32.User32; import com.sun.jna.platform.win32.WinDef.HWND; import com.sun.jna.platform.win32.WinDef.LRESULT; import com.sun.jna.platform.win32.WinDef.WPARAM; import com.sun.jna.platform.win32.WinUser.HHOOK; import […]

将字符串转换为JNA的指针

我正在尝试使用JNA来查询Windows中文件的有效权限。 最后,我计划使用GetEffectiveRightsFromAcl函数 ,但为此,我需要提供一个指向填充的TRUSTEE结构的指针。 JNA平台(platform.jar)似乎没有定义这个结构,所以我试图自己定义它。 这是我到目前为止所拥有的: public static class TRUSTEE extends Structure { public TRUSTEE() { super(); } public TRUSTEE(Pointer p) { super(p); read(); } public Pointer pMultipleTrustee; public int MultipleTrusteeOperation; public int TrusteeForm; public int TrusteeType; public Pointer ptstrName; } 我正在尝试填充这样的结构: private TRUSTEE createTrusteeForCurrentUser() { TRUSTEE result = new TRUSTEE(); result.TrusteeForm = TRUSTEE_FORM.TRUSTEE_IS_NAME; result.TrusteeType = […]