针对每个人安装的位置不同的情况 从快捷方式中获取到安装位置 运行谷歌浏览器

从桌面的谷歌浏览器快捷方式来获取对应的chrome.exe的地址,然后启动谷歌浏览器展示某个链接(也可以展示本地文件,但是需要填写本地路径)

public void showSWT(String txt){//获取桌面的路径FileSystemView fsv = FileSystemView.getFileSystemView();File com=fsv.getHomeDirectory();    //这便是读取桌面路径的方法了System.out.println(com.getPath());//解板快捷方式lnk文件,得到快捷方式指向的文件/文件夹File file = new File(com.getPath() + "/chrome - 快捷方式.lnk");System.out.println(getLnkFile(file));  //     String path = "D:\\TOOL\\Chrome\\Application\\chrome.exe";String path = getLnkFile(file);String target = "www.baidu.com";List<String> cmd = new ArrayList<String>();cmd.add(path);//cmd.add("--no-first-run");
//      cmd.add("--start-maximized");// 窗口启动最大化
//      cmd.add("--incognito");// 隐身模式打开
//      cmd.add("--user-data-dir=D:/test");cmd.add(target);ProcessBuilder process = new ProcessBuilder(cmd);try {process.start();} catch (IOException e) {e.printStackTrace();}}/*** 得到扩展名* @param nameOrPath* @return*/public static String getExt(String nameOrPath){String[] exts = nameOrPath.split("\\.");String ext = exts[exts.length - 1];//如果扩展名有非法字符,说明不是扩展名,返回空Pattern pattern = Pattern.compile("[0-9a-zA-Z]{1,20}");Matcher matcher = pattern.matcher(ext);if(!matcher.matches()){return "";}return ext;}public static String getLnkFile(File lnkFile) {RandomAccessFile r = null;ByteArrayOutputStream bos = null;String filename = null;try {r = new RandomAccessFile(lnkFile, "r");byte[] bys = new byte[4];          // 定位到 Shell item ID list 段的长度定义起始地址// 以便于计算下一段(即文件位置信息段的起始地址)r.seek(0x4c);            r.read(bys, 0, 2);int offset = bytes2Int(bys, 0, 2);// 获得文件位置信息段的起始地址int fileLocationInfoSagement = offset + 0x4e;// 获得本地路径信息段的起始地址int filePathInfoSagement = fileLocationInfoSagement + 0x10;// 定位到本地路径信息段,以便获得本地路径信息的偏移地址r.seek(filePathInfoSagement);// 获得本地路径信息的偏移r.read(bys, 0, 4);            int filePathInfoOffset = fileLocationInfoSagement + bytes2Int(bys, 0, 4);// 定位到本地路径信息起始地址,开始读取路径信息r.seek(filePathInfoOffset);bos = new ByteArrayOutputStream();for(byte b = 0; (b = r.readByte()) != 0;) {bos.write(b);}// 将读出路径信息字节存入 byte 数组中bys = bos.toByteArray();// 采用本地编码获得路径信息文件名称filename = new String(bys);            } catch (IOException e) {e.printStackTrace();} finally {if(bos != null) {try {bos.close();} catch (IOException e) {e.printStackTrace();}}if(r != null) {try {r.close();} catch (IOException e) {e.printStackTrace();}}}return filename;}public static int bytes2Int(byte[] bys, int start, int len) {int n = 0;for(int i = start, k = start + len % 5; i < k; i++) {n += (bys[i] & 0xff) << (i * 8);}return n;}
}

启动本地浏览器

        String path = "D:\\TOOL\\Chrome\\Application\\chrome.exe";String target = "www.baidu.com";List<String> cmd = new ArrayList<String>();cmd.add(path);//cmd.add("--no-first-run");
//      cmd.add("--start-maximized");// 窗口启动最大化
//      cmd.add("--incognito");// 隐身模式打开
//      cmd.add("--user-data-dir=D:/test");cmd.add(target);ProcessBuilder process = new ProcessBuilder(cmd);try {process.start();} catch (IOException e) {e.printStackTrace();}

获取桌面的路径

//获取桌面的路径
FileSystemView fsv = FileSystemView.getFileSystemView();
File com=fsv.getHomeDirectory();    //这便是读取桌面路径的方法了
System.out.println(com.getPath());

java获得快捷方式指向的路径

public static String getLnkFile(File lnkFile) {RandomAccessFile r = null;ByteArrayOutputStream bos = null;String filename = null;try {r = new RandomAccessFile(lnkFile, "r");byte[] bys = new byte[4];          // 定位到 Shell item ID list 段的长度定义起始地址// 以便于计算下一段(即文件位置信息段的起始地址)r.seek(0x4c);            r.read(bys, 0, 2);int offset = bytes2Int(bys, 0, 2);// 获得文件位置信息段的起始地址int fileLocationInfoSagement = offset + 0x4e;// 获得本地路径信息段的起始地址int filePathInfoSagement = fileLocationInfoSagement + 0x10;// 定位到本地路径信息段,以便获得本地路径信息的偏移地址r.seek(filePathInfoSagement);// 获得本地路径信息的偏移r.read(bys, 0, 4);            int filePathInfoOffset = fileLocationInfoSagement + bytes2Int(bys, 0, 4);// 定位到本地路径信息起始地址,开始读取路径信息r.seek(filePathInfoOffset);bos = new ByteArrayOutputStream();for(byte b = 0; (b = r.readByte()) != 0;) {bos.write(b);}// 将读出路径信息字节存入 byte 数组中bys = bos.toByteArray();// 采用本地编码获得路径信息文件名称filename = new String(bys);            } catch (IOException e) {e.printStackTrace();} finally {if(bos != null) {try {bos.close();} catch (IOException e) {e.printStackTrace();}}if(r != null) {try {r.close();} catch (IOException e) {e.printStackTrace();}}}return filename;}public static int bytes2Int(byte[] bys, int start, int len) {int n = 0;for(int i = start, k = start + len % 5; i < k; i++) {n += (bys[i] & 0xff) << (i * 8);}return n;}

Java 针对每个人安装的位置不同的情况 从快捷方式中获取到安装位置 运行谷歌浏览器相关推荐

  1. 使用ubuntu的新立德下载和安装的Eclipse无法在其help菜单中连接并安装ADT

    问题:使用ubuntu的新立德下载和安装的Eclipse无法在其help菜单中连接并安装ADT. 看到很多网友的建议说新立德下的不行,但是在官方网站直接下载的eclipse就可以在其help菜单的安装 ...

  2. 安装 XXX 时出现错误 无法访问windows安装服务。发生这种情况的可能是您在安全模式下运行windows

    安装 XXX 时出现错误 无法访问windows安装服务.发生这种情况的可能是您在安全模式下运行windows,或是没有正确安装windows安装,.请与技术支持人员联系以获得帮助. Windows ...

  3. 什么?RecyclerView中获取点击位置的接口被废弃了?

    本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每个工作日都有文章更新. 各位小伙伴们,大家早上好.上个礼拜,我在公众号的某篇文章下面看到这样一条留言: 什么?hol ...

  4. 在Textview中获取指定文字位置(兼顾网址链接和emoji表情),并在其附近展示图片

    本文主要讲在Textview中获取指定文字的位置,最后,附带一点文字宽高的测量. 下面,我会给出全部源码.自己建个demo,复制进去就能跑起来. 先强调一下,不建议在ListView中使用.最好是在一 ...

  5. Android中获取用户附近位置

    最近项目中要获取用户附近位置,供用户选择,该功能分两步实现,第一,获取用户经纬度,第二利,用经纬度通过现有的地理位置接口获取附近位置,实现截图如下: 一.获取用户的经纬度 获取用户的经纬度,之前已经介 ...

  6. python交换两列的位置_如何更改 pandas dataframe 中两列的位置

    如何更改 pandas dataframe 中两列的位置: 把其中的某列移到第一列的位置. 原来的 df 是: df = pd.read_csv('I:/Papers/consumer/codeand ...

  7. Linux用命令安装音乐软件,在Ubuntu 18.04系统中使用命令安装Qmmp音乐播放器的方法...

    在Ubuntu 18.04操作系统中安装Qmmp音乐播放器非常简单,只需要两段命令就可以搞定.下面介绍其方法. Qmmp音乐播放器介绍 Qmmp是一款开源基于Qt的多媒体播放器,提供Qt4及Qt5支持 ...

  8. vue中获取组件的位置

    获取dom元素的位置信息 this.$refs['通过设置ref获取到的dom元素'].getBoundingClientRect();//示例: 获取元素距离顶部的距离1 this.$refs.se ...

  9. c语言源程序main的位置,c语言规定在一个源程序中main函数的位置是什么?

    c语言规定在一个源程序中main函数的位置可以是任意的:因为一个C程序总是从main函数开始执行,并在main函数中结束,不论main函数在整个过程中的位置如何. 一个c程序有且仅有一个main函数, ...

最新文章

  1. 2019 WAIC | 腾讯张正友:人工智能的热与酷
  2. qt程序运行时绘图出现错误
  3. VMware设置及linux静态ip设置
  4. 名图1.8智能隐藏功能_自动打包不脏手才是真智能,双11销冠,拓牛自动打包垃圾桶体验...
  5. Kafka常见痛点及优化方案
  6. linux mpc8313启动流程,基于MPC8313E和FPGA的双口RAM驱动开发
  7. 织梦自定义html文本,织梦内容模型自定义字段及调用方法
  8. js判断是否是当前点击对象
  9. Office 365管理员指引 7 ——Lync 用户配置
  10. [动态规划]ACM预选赛F题 侠客行
  11. 逻辑回归算法梳理(从理论到示例)
  12. 在线word编辑html,eWebEditor - 在线HTML编辑器,HTML在线编辑
  13. springcloud配置中心config上线时配置文件被其他服务无法读取的两种情况
  14. win,linux双系统开机引导修复
  15. 面试B站,结果面试官牵着一条狗出来面试我....这是什么操作??
  16. 明翰游记V1.7(持续更新)
  17. 不是我说,不掌握这些坑,你敢用BigDecimal吗?
  18. 如何在ps添加箭头_Photoshop怎么画箭头 三种方法任你选择
  19. springboot常用注解详解
  20. uniapp运行小程序提示当前系统代理不是安全代理,是否信任?

热门文章

  1. CentOS下vi编辑器
  2. angularjs ngrepeat filter
  3. .Net魔法堂:开启IIS的WebGarden、WebFarm和StateServer之旅
  4. POJ 1330:Nearest Common Ancestors【lca】
  5. 合理设置域名TTL值给网站加速
  6. Silverlight3 加载其他xap
  7. System.IO命名空间
  8. windows之2012缺少api-ms-win-crt**.dll
  9. vscode之调试js
  10. 解决/usr/bin/pip: No such file or directory