com.ms.win32包

Win32 API的体积相当庞大——包含了数以千计的函数、常数以及数据类型。当然,我们并不想将每个Win32 API函数都写成对应Java形式。微软考虑到了这个问题,发行了一个Java包,可通过J/Direct将Win32 API映射成Java类。这个包的名字叫作com.ms.win32。安装Java SDK 2.0时,若在安装选项中进行了相应的设置,这个包就会安装到我们的类路径中。这个包由大量Java类构成,它们完整再现了Win32 API的常数、数据类型以及函数。包容能力最大的三个类是User32.class,Kernel.class以及Gdi32.class。它们包含的是Win32 API的核心内容。为使用它们,只需在自己的Java代码里导入即可。前面的ShowMsgBox示例可用com.ms.win32改写成下面这个样子(这里也考虑到了用更恰当的方式使用UnsatisfiedLinkError):
 

import com.ms.win32.*;

public class UseWin32Package {
  public static void main(String args[]) {
    try {
      User32.MessageBeep(
        winm.MB_ICONEXCLAMATION);
      User32.MessageBox(0,
        "Created by the MessageBox() Win32 func",
        "Thinking in Java",
        winm.MB_OKCANCEL |
        winm.MB_ICONEXCLAMATION);
    } catch(UnsatisfiedLinkError e) {
      System.out.println("Can’t link Win32 API");
      System.out.println(e);
    }
  }
}

Java包是在第一行导入的。现在,可在不进行其他声明的前提下调用MessageBeep()和MessageBox()函数。在MessageBeep()里,我们可看到包导入时也声明了Win32常数。这些常数是在大量Java接口里定义的,全部命名为winx(x代表欲使用之常数的首字母)。
写作本书时,com.ms.win32包的开发仍未正式完成,但已可堪使用。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, 函数
, win32
, 导入包 包自定义
, win
, 数据类型
, 32
, 常数
, UnsatisfiedLinkError
win32com
api ms win crt 32位、python win32com、win32com、comctl32.ocx win7 64、win32com.client,以便于您获取更多的相关知识。

时间: 2024-09-10 07:52:27

com.ms.win32包的相关文章

通过 C# 使用 J# 类库中的 Zip 类压缩文件和数据

数据|压缩 本文假设您熟悉 C# 和 Windows 窗体 下载本文的代码: ZipCompression.exe (150KB) 摘要 在存储文件或者通过网络发送文件时,使用 Zip 压缩可以节省空间和网络带宽.此外,还不会丢失经过 Zip 的文件夹的目录结构,这使其成为非常有用的压缩方案.C# 语言不具有任何使您可以操纵 Zip 文件的类,但是由于面向 .NET 的语言可以共享类实现,并且 J# 在 java.util.zip 命名空间中公开了类,因此您可以在 C# 代码中使用这些类.本文将

编写回调函数

有些Win32 API函数要求将一个函数指针作为自己的参数使用.Windows API函数随后就可以调用自变量函数(通常是在以后发生特定的事件时).这一技术就叫作"回调函数".回调函数的例子包括窗口进程以及我们在打印过程中设置的回调(为后台打印程序提供回调函数的地址,使其能更新状态,并在必要的时候中止打印). 另一个例子是API函数EnumWindows(),它能枚举目前系统内所有顶级窗口.EnumWindows()要求获取一个函数指针作为自己的参数,然后搜索由Windows内部维护的

因为不存在已打开的单元"

问题描述 WPF 无法关闭撤消单元,因为不存在已打开的单元 XAML代码: <DataGridTextColumn Width="100" Binding="{Binding SalePrice, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, StringFormat={0:0.00}}" Header="销售价"> <DataGridTextColumn.HeaderTem

用Java设计COM客户

现在,让我们转到另一侧,并用Java开发一个COM客户.这个程序会调用系统已安装的COM服务器内的服务.就目前这个例子来说,我们使用的是在前一个例子里为服务器实现的一个客户.尽管代码在Java程序员的眼中看起来比较熟悉,但在幕后发生的一切却并不寻常.本例使用了用Java写成的一个服务器,但它可应用于系统内安装的任何ActiveX控件.ActiveX Automation服务器或者ActiveX组件--只要我们有一个类型库. 首先,我们将Jactivex工具应用于服务器的类型库.Jactivex有

Java桌面应用程序设计新贵:SWT简介

Java语言的声望和它在桌面应用程序(GUI程序)所取得的成就显然极不相符,至今仍然很少能看到非常成功Java桌面程序.虽然有JBuilder,Netbean,JProbe等大型软件作为代表,但这仍不能证明Java的GUI程序是成功的:它们的外观总是和同一操作系统平台下的其它软件显得格格不入.对机器配置的需求也似乎永无止境,这使得它们只能被一些总是拥有当前最高性能PC的程序员们所容忍,或是那些不在乎金钱和时间的专业用户所接受.对绝大多数计算机使用者来说,AWT或SWING代表着怪异的界面和无法接

使用JNA解决自动化测试无法做密码输入操作的问题

在做页面自动化(以使用selenium为例)的时候,很常见的一个场景就是输入密码.往往对于输入框都使用WebElement的sendKeys(CharSequence... keysToSend)的方法. Java代码 1./** 2. * Use this method to simulate typing into an element, which may set its value. 3. */ 4. void sendKeys(CharSequence... keysToSend);

系统日志

问题描述 .net开发的即时通讯软件运行中直接挂掉被系统关闭,报错日志如下:+System-Provider[Name].NETRuntime-EventID1025[Qualifiers]0Level2Task0Keywords0x80000000000000-TimeCreated[SystemTime]2015-09-16T05:46:48.000000000ZEventRecordID30962ChannelApplicationComputerlenovoSecurity-EventD

vs2012数据库连接问题 求大神帮忙

问题描述 vs2012数据库连接问题 求大神帮忙 未处理System.Data.SqlClient.SqlException HResult=-2146232060 Message=在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. (provider: Named Pipes Provider, error: 40 - 无法打开到 SQL Server 的连接) Source

在有VS的环境下,程序能正常运行,没有的情况下会报错(都有.net framework4.0环境),错误日志如下

问题描述 日志名称:Application来源:.NETRuntime日期:2/28/159:24:46PM事件ID:1026任务类别:无级别:错误关键字:经典用户:暂缺计算机:VICTORMBFF5描述:应用程序:GUIApplication.exeFramework版本:v4.0.30319说明:由于未经处理的异常,进程终止.异常信息:System.Windows.Markup.XamlParseException堆栈:在System.Windows.Markup.WpfXamlLoader