VB6 实现命令行调用时附着到原控制台
Public Declare Function AttachConsole Lib "kernel32.dll" (ByVal ProcessID As Integer) As Boolean
一个参数,就是进程ID。要实现附着,必须得提供其进程ID,那么就需要经过非常复杂的过程。那么,现在请大家再次鄙视下微软,因为这个 API 函数还留有另外一个常量:ATTACH_PARENT_PROCESS(十进制值:-1),能够实现直接附着到父进程(即调用程序的进程上)。
那么,现在对上例教程的代码稍加修改,就可以得到:
Public Declare Function AllocConsole Lib "kernel32.dll" () As Long
Public
Declare Function FreeConsole Lib "kernel32.dll" () As Long
Public Declare
Function SetConsoleTitle Lib "kernel32.dll" Alias "SetConsoleTitleA" (ByVal
lpConsoleTitle As String) As Long
Public Declare Sub Sleep Lib "kernel32.dll"
(ByVal dwMilliseconds As Long)
Public Declare Function AttachConsole Lib
"kernel32.dll" (ByVal ProcessID As Integer) As Boolean
Sub Main()
If Not AttachConsole(-1) Then Call AllocConsole
Call
SetConsoleTitle("My Console")
Call Sleep(2000)
Call FreeConsole
End
Sub
那么,这个程序的处理过程大概是:首先执行AttachConsole(-1),即附着父进程。假如是双击打开,AttachConsole(-1)就会失败,返回False,于是就执行了后面的Call
AllocConsole。如果是命令行调用,则AttachConsole(-1)成功,返回True,于是就不执行后面的Call
AllocConsole。
原理很简单,现在生成EXE,在命令行中运行看看,是否标题已改成了 My Console 也没有弹出新的命令行窗口呢?
VB6 实现命令行调用时附着到原控制台的更多相关文章
- Symfony2 通过命令行调用控制器
由于系统需求,需要写一个无限循环的控制器,那么既然有一个无限循环的控制器,那么就需要有一个开关,不可能直接通过route来开启吧.当然要使用高级一点的方法啊. 那就是使用控制台通过命令行(comman ...
- xcode命令行编译时:codesign命令,抛出“User interaction is not allowed.”异常 的处理
之前正常运行的hudson iOS编译服务器slave节点,忽然出现编译失败.发现原因有2个: 第一个原因是编译机上用来签名的用户帐号过期,第二个原因是操作系统和xCode升级造成的. 对于第一个,重 ...
- Maven-11: 从命令行调用插件
mvn -h显示mvn命令帮助: usage: mvn [options] [<goal(s)>] [<phase(s)>] Options: -am,--also-make ...
- 命令行调用dubbo远程服务
命令行调用dubbo远程服务 telnet远程连接到dubbo telnet 127.0.0.1 20880 查看提供服务的接口 dubbo>ls com.test.service.TestIn ...
- Java项目导出为jar包+导出第三方jar包+使用命令行调用+传参
Java项目导出为jar包+导出第三方jar包+使用命令行调用+传参 一.打包 情况1:不需要向程序传参数,并且程序没有使用第三方jar包 Eclipse上导出jar: 然后选择一个java文件作为入 ...
- blockdev - 从命令行调用区块设备控制程序
总览(SYNOPSIS) blockdev [options] commands devices 描述(DESCRIPTION) blockdev 工具允许从命令行调用区块设备控制程序. 选项(OPT ...
- nodejs命令行执行时带参数
nodejs命令行执行时带参数 转 https://www.jianshu.com/p/474e6d76f867 今天项目里突然想在初始化时跑一些数据,于是想起以前在python时可以在命令行里带 ...
- Scrapy命令行调用传入自定义参数
在做爬虫服务化时,有这样一个需求:接口用命令行启动爬虫,但是数据入库时要记录此次任务的task_id. 简单说就是,Scrapy命令行启动时要动态传参进去. 解决方案: 在spider中定义一个构造函 ...
- Shodan搜索引擎详解及Python命令行调用
shodan常用信息搜索命令 shodan配置命令 shodan init T1N3uP0Lyeq5w0wxxxxxxxxxxxxxxx //API设置 shodan信息收集 shodan myip ...
随机推荐
- && 和 || 运算
a() && b() :如果执行a()后返回true,则执行b()并返回b的值:如果执行a()后返回false,则整个表达式返回a()的值,b()不执行: a() || b() :如果 ...
- Oracle Supplemental 补全日志介绍
转. Oracle补全日志(Supplemental logging)特性因其作用的不同可分为以下几种:最小(Minimal),支持所有字段(all),支持主键(primary key),支持唯一键( ...
- 使用 extract-text-webpack-plugin 报错:Error: Chunk.entry was removed. Use hasRuntime()
问题:使用 extract-text-webpack-plugin 报错:Error: Chunk.entry was removed. Use hasRuntime() 解决:先运行npm unin ...
- Microsoft Dynamics CRM 2011 配置好的IFD环境 怎么制作证书?
一.CRM2011 IFD怎么制作证书? 配置好的IFD环境里面:打开开始—运行 1.输入: mmc(微软管理控制台) 出现: 2. 出现: 3.添加/删除管理单元,如图: 4.添加证书 5. 6. ...
- linux非root用户执行开机启动程序
问题 开机启动其他用户的程序或者说非root用户执行开机启动 编写开机启动脚本 编写开机启动脚本apple_tree,放到/etc/init.d,系统启动时会自动执行. 例如,/etc/init.d/ ...
- JZ2440 裸机驱动 第12章 I2C接口
本章目标: 了解I2C总线协议: 掌握S3C2410/S3C2440中I2C接口的使用方法: 12.1 I2C总线协议及硬件介绍 12.1.1 I2C总线协议 1 I2C总线的概念 2 I2C总线的信 ...
- oracle_外部表的两种实现方式oracle_loader[datapump]
外部表可以实现,通过数据库对象直接访问目录文件里的格式数据,加载方式分为两种oracle_loader和oracle_datapump,oracle_loader方式通过sqlldr引擎方式加载,访问 ...
- Ajax异步上传多个文件并返回文件路径
前端JSP页面代码 <label>附件:</label><form id="fileForm"> <input type="fi ...
- 线性代数之SVD与PCA
[作者:byeyear Email:east3@163.com 首发www.cnblogs.com 转载请注明] 回忆学校的美好时光,一起来复习下曾经的课程吧. 1. SVD推荐am ...
- ubuntu 18.04下svn的安装与基本命令
一.安装: apt-get install subversion 二.基本命令 1.将文件checkout到本地目录 svn checkout path(path是服务器 上的目录)例如:svn ch ...