Qt播放视频使用QMediaPlayer要注册Lav解码器,如果手动去注册,每次去使用管理员运行命令或者生成.bat文件都比较麻烦。

解决方法步骤如下:

一:编写注册Lav解码器脚本,并取消控制台的显示,生成.bat文件。

二:使用Bat to Exe将.bat文件转换为exe文件。

三:使用QSettings和QProcess进行注册。

实现步骤:

一:注册Lav脚本

/***-------------------------取消控制台显示-----------------------*****/

@echo off

:: BatchGotAdmin
   REM --> Check for permissions
   >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
   if '%errorlevel%' NEQ '0' (
   echo Requesting administrative privileges...
   goto UACPrompt
   ) else ( goto gotAdmin )

:UACPrompt
   echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
   echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"

"%temp%\getadmin.vbs"
   exit /B

:gotAdmin
   if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
   pushd "%CD%"

/***-----------------注册Lav-----------------------***/

cd/d %~dp0
   regsvr32/s LAVAudio.ax
   regsvr32/s LAVVideo.ax
   regsvr32/s LAVSplitter.ax
   pause

二:转换为exe(为了Qt进行进程调用)

以及在Bat to exe工具右边菜单栏有个选择是否显示窗口的,我这边是都进行选择了。

并选择不需要管理员权限,最近发现使用这个生成的.exe在360以及win10自带的病毒防护会识别为木马进行隔离   ....?...

查了一下,是因为使用这款工具是对软件进行upx加壳?具体的也没有深究,找个时间再研究下。。zzZ

三:自动注册

检测电脑是否已注册Lav,判断方法是从注册表CLSID去查找,但是不太确定是否得当,如果大家有好的方面,麻烦告知,

谢谢啦~

(1)、填写config文件进行判断,防止每次都要去查找注册表,影响性能。

config文件可以这样添加:

(0:表示未该电脑已注册;1:表示未注册)

将程序放到服务器上,此时config文件填写数据是0,用户自动下载后就会进行本机的检测,有就会置1,否则注册后置1。

(2)、Qt读取config文件:

void RegLav::ReadIniConfigure(QString& strConfigureName, const QString& strKey, QString& strValue)
    {
       QString strConfigureFile = QApplication::applicationDirPath() + "/";
       strConfigureFile += strConfigureName;

QSettings sett(strConfigureFile, QSettings::IniFormat);
       strValue = sett.value(strKey).toString();
      }

(3)、Qt检测及注册

void RegLav::regeditLav()
    {

//注册表项辨别
      QSettings controls(QLatin1String("HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\CLSID\\{083863F1-70DE-11D0-BD40-00A0C911CE86}\\Instance\\"), QSettings::NativeFormat); //注册表controls.beginGroup(QLatin1String("/CLSID"));
      QStringList clsids = controls.childGroups();

//遍历查找当前子项

for (int i = 0; i < clsids.size(); i++)
      {
         if (clsids.at(i) == "{171252A0-8820-4AFE-9DF8-5C92B2D66B04}")
         {
           m_bRegLav = true;                                          //控制
           break;
         }
     }
     if (m_bRegLav == false)
    {
      QProcess lpr;                                                         
      QDir lavDir(applicationDirPath());
      QString lavPath = lavDir.absolutePath();
      QString LavCtl = lavPath;
      lavPath += "/lavRegedit.exe";
      lpr.execute(lavPath);                                              //QProcess启动外部程序,关于进程通信,找个时间再码下..zzZ
      LavCtl += "/Config.ini";
      QSettings sett(LavCtl, QSettings::IniFormat);        //注册完后进行改变config固定键值,以防下次打开还需查找遍历注册。
      sett.setValue("IsRegLav/regeditLav",1);
      }
      }

(4)、函数调用

具体的情况看你需要在哪边调用写好的函数。

如:其实构造函数

void    RegLav::RegLav()

{

RegLav::ReadIniConfigure(QString("Config.ini"), QString("IsRegLav/regeditLav"), strLav);
       if (strLav == "0")
       {
        regeditLav();
       }

}

注意:.bat脚本转换的exe文件、lav解码器的三个ax文件及dll要放置的位置要让程序找得到,这里是放置于与主程序一起。

实现以上功能的程序,如果使用了Qt视频播放,而又需要注册Lav解码器可以参考下,菜鸡上路,实力有限,有更好的方法欢迎交流~

zzZ...     zzZ...

使用Qt自动注册Lav相关推荐

  1. windows下ipv6 ddns 动态域名自动注册批处理 dynv6(服务方式,开机自动运行无需登录)

    现在IPV6加速推进,几乎限量的地址资源,但是ipv6地址比V4难记忆多了nnds(动态域名)就显得很有必要. 网文 免费好用的IPv6之DDNS服务-Openwrt上dynv6的使用介绍 该网文详细 ...

  2. [AutoMapper]反射自动注册AutoMapper Profile

    AutoMapper 帮我我们方便管理物件跟物件之间属性值格式转换 模型转换 这里有两个类别 UserInfoModel 当作我们从DB捞取出来模型资料 public class UserInfoMo ...

  3. 5 zabbix 添加host_运维监控实战篇,zabbix自动发现和自动注册图文详解

    一.介绍 自动发现 Zabbix自动发现就是为了解决批量监控而设计的功能之一,什么是自动发现呢,简单来说就是Zabbix Server端可以基于设定的规则,自动批量的去发现局域网若干服务器,并自动把服 ...

  4. zabbix 自动注册发现

    前段时间有人问我zabbix自动注册发现怎么搞?今天就写个博客简单演示下. zabbix的自动注册发现添加就在zabbix的报警添加动作那块,只是有个下拉按钮,其实也特别简单,看下图:组态-动作-自动 ...

  5. 在Zf2中实现Controller按照URL自动注册

    为什么80%的码农都做不了架构师?>>>    在Zf2中,一般的情况下,在modules的的某个模块的controller目录下添加一个controller 文件,对应的需要在mo ...

  6. 网络编程 -- RPC实现原理 -- RPC -- 迭代版本V4 -- 远程方法调用 整合 Spring 自动注册...

    网络编程 -- RPC实现原理 -- 目录 啦啦啦 V4--RPC -- 远程方法调用 + Spring 自动注册 服务提供商: 1. 配置 rpc04_server.xml 注入 服务提供商 rpc ...

  7. 自动注册 IIS6 的 MIME 类型

    原文 自动注册 IIS6 的 MIME 类型 由于IIS5和IIS6有很多的MIME类型没有设置,其中还包括了FLV(video/x-flv),上篇文章描述了制作<IIS6 自动安装>,而 ...

  8. zabbix 监控项自动发现过滤_Zabbix监控之配置Linux自动发现与自动注册报警

    1.关于linux客户端的部署上篇已经介绍不清楚的可以去看一下(Zabbix监控之agent和邮件报警配置) 1.1.一.配置自动发现: 1.1.1.1.1.打开Zabbix Web管理界面,创建Za ...

  9. Zabbix实战之客户端自动注册

    Zabbix实战之客户端自动注册 一.自动注册与自动发现定义 二.修改客户端zabbix-agent2配置文件 三.检查配置文件修改内容 四.重启服务与验证通信 1.客户端重启服务 2.服务端验证和客 ...

最新文章

  1. Redis队列的应用
  2. creo JAVA_Creo 4.0二次开发工具框架搭建
  3. 《3ds Max疯狂设计学院》——1.5节怎样才能学好3ds Max,你要听好
  4. 【NOIP2007】第三题·守望者的逃离
  5. Linux驱动开发环境配置(内核源码树构造)
  6. 基于深度学习的图像分类Image classification with deep learning常用模型
  7. 微型计算机芯片总称,《计算机应用基础》2(G)在线作业答案
  8. 如何利用python在一个wen'dang'li_如何利用Python网络爬虫给自己跟朋友来一份穷游攻略!走到哪里穷到哪里的哦!...
  9. video 微信 标签层级过高_什么是微信小程序二级分销系统?如何玩转?
  10. windows修改远程桌面RDP连接数
  11. Git常用指令及功能总结
  12. FPGA学习笔记---用Quartus II生成输入输出框图
  13. 缺陷管理规范--bug管理流程
  14. 你和大厂 Offer 有多近?C 认证免费测试一波,提前备考大厂
  15. 企业软件开发商 Atlassian 紧急修复不慎泄露的0day,IBM Aspera 软件或受影响
  16. 运行vue init webpack vueTest时报错
  17. JSON使用时,注意0件和空。
  18. 编译OpenJDK8:[HotspotWrapper.gmk:45:/cygdrive/e/hub/openjdk/jdk8u/build/windows-x86_64-normal-server-
  19. python输入一系列的值_python中的input()和print()输入输出函数应用实例笔记
  20. 硬盘文件系统系列之FAT

热门文章

  1. PIGOSS BSM对KVM 的监控
  2. 20144303 《Java程序设计》第二次实验实验报告
  3. 数据库基本概念(期末复习版)
  4. Resharper.v7.0.1.Incl.Keymaker-CORE
  5. proftpd mysql_文件服务器 之 ProFTPD+MySQL 认证
  6. 网络营销的基础知识了解
  7. Android模拟器的检测
  8. 教练技术中的GROW模型的分析与运用
  9. IEC61850 专用语笔记
  10. MySql对于时间段交集的处理和通用实现方式(MyBatis-Plus)