《Java如何通过JNI与delphi交互

《Java如何通过JNI与delphi交互

ID:37914856

大小:36.50 KB

页数:6页

时间:2019-06-02

《Java如何通过JNI与delphi交互_第1页
《Java如何通过JNI与delphi交互_第2页
《Java如何通过JNI与delphi交互_第3页
《Java如何通过JNI与delphi交互_第4页
《Java如何通过JNI与delphi交互_第5页
资源描述:

《《Java如何通过JNI与delphi交互》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、前一段时间,我用java开发一个安装程序,适用于tomcatmysql构建的web环境。在开发的过程中遇到与写注册表,注册系统服务等问题用java本身很难解决,于是我想到用JNI。C与delphi两者开发JNI,我是从delphi转到java上来的,我选择了delphi。  用delphi开发JNI,首先从http://delphi-jedi.org 下载JNI.pas,把它加入到工程中就可以开发JNI了。  例如创建桌面快捷方式:  Delphi中的代码:  librarymyDll  uses  JNI,windows,ComObj,Act

2、iveX,ShlObj,SysUtils,Registry;  //取得桌面目录  functiongetDesktopPath():String;  var  Reg:TRegistry;  DesktopPath:String;  begin  Reg:=TRegistry.Create;  try  Reg.RootKey:=HKEY_CURRENT_USER;  Reg.OpenKey('SoftwareMicrosoftWindowsCurrentVersionExplorerShellFolders',False);  i

3、fReg.ValueExists('Desktop')thenDesktopPath:=Reg.ReadString('Desktop');  Result:=DesktopPath;  finally  Reg.Free;  end;  end;  //创建桌面快捷方式  procedureCreateDesktopLink(ProgramPath,ProgramArg,LinkName,Descr,IconPath:String);  var  AnObj:IUnknown;  ShellLink:IShellLink;  AFile:IP

4、ersistFile;  FileName:WideString;  LinkPath:String;  begin  LinkPath:=getDesktopPath()+''+linkName;  ifUpperCase(ExtractFileExt(LinkPath))<>'.LNK'then//检查扩展名是否正确  begin  raiseException.Create('快捷方式的扩展名必须是.lnk!');  end;  try  OleInitialize(nil);//初始化OLE库,在使用OLE函数前必须调用初始化  An

5、Obj:=CreateComObject(CLSID_ShellLink);//根据给定的ClassID生成一个COM对象,此处是快捷方式  ShellLink:=AnObjasIShellLink;//强制转换为快捷方式接口  AFile:=AnObjasIPersistFile;//强制转换为文件接口  //设置快捷方式属性,此处只设置了几个常用的属性  ShellLink.SetPath(PChar(ProgramPath));//快捷方式的目标文件,一般为可执行文件  ShellLink.SetArguments(PChar(Progr

6、amArg));//目标文件参数  ShellLink.SetWorkingDirectory(PChar(ExtractFilePath(ProgramPath)));//目标文件的工作目录  ShellLink.SetDescription(PChar(Descr));//对目标文件的描述  ShellLink.SetIconLocation(PChar(IconPath),0);  FileName:=LinkPath;//把文件名转换为WideString类型  AFile.Save(PWChar(FileName),False);//

7、保存快捷方式  finally  OleUninitialize;//关闭OLE库,此函数必须与OleInitialize成对调用  end;  end;  //创建桌面快捷方式,在JNI中调用的就是这个方法  //这个过程的命名很有讲究,它以Java开头,用下划线将Java类的包名、类名和方法名连起来。这个命名方法不能有误,否则,Java类将无法将nativ方法与它对应起来。同时,在Win32平台上,此过程的调用方式只能声明为stdcall。  procedureJava_com_wpd_JavaWindows_createDesktopLi

8、nk(PEnv:PJNIEnv;Obj:JObject;ProgramPath,ProgramArg,LinkName,Descr,iconPath:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。