程序中调用进程API时进程打开缓慢引起方法调用失败
2017-06-15 19:28
429 查看
程序中调用进程API时进程打开缓慢引起方法调用失败
昨天中了acaddoc.lsp的病毒,曾经为之困扰了很久,重装cad都搞不定,好在现在懂lisp了,所以今天写一个acaddoc.lsp的查杀工具,为了全盘搜索acaddoc.lsp文件,我使用了Everything的SDK,其搜索速度确实很惊艳。Everything的SDK必须依赖于Everything.exe程序的运行,这个很麻烦,所以在引用这个程序时,我必须先用进程打开Everything.exe执行文件,然后再通过SDK的dll调用其搜索文件。程序写好后出现了一个问题,怎么搜索都无法搜索文件,后来网上搜资料,发现是CPU的平台问题,Everything是32位程序,而我采用的是anycpu,成默认的是64位优先,所以调用会出错,提示“调用了错误程序”,其解决办法是采用x86CPU,在.net4.5上,可以直接点取“首选32位”菜单。
好像扯远了,最重要的是程序调试好了之后,我发现在vs中运行无误,而我直接运行exe程序时却无法执行搜索,网上查资料说是引用程序路径不正确,经确认我的路径没问题,搞了半天,实在找不到啥原因,烦得不要不要的,后来灵光一现,貌似是exe程序打开的速度慢于我程序执行的速度,实际上我调用程序时,程序在进程中并未完全打开,所以造成失败。经过调整,把打开进程放在窗体加载的时候,然后在窗体关闭时关闭进程,效果立见,完美!
其实在调用程序前,应该判断进程中是否已经有此进程,然后再调用,记得去年写一个调用cad的程序也是遇到这种情况,无赖cad打开太慢,所以在程序中设置了暂停,以等待cad完全打开再运行程序。
通过以上两件事说明一个问题:调用exe进程时,一些exe文件的打开往往较慢,而我们的外壳程序又很简单执行很快时,往往会遇到这种情况,我的解决办法是在使用前判断进程是否成功打开,然后再做其他操作!
相关文章推荐
- 通过Hook API调用打造进程监控程序
- win7 打开office失败并提示“向程序发送命令错误” 解决方法
- 64位linux下,C程序调用 ImageMagick API方法
- PHP:微信小程序调用【统一下单】【微信支付】【支付回调】API;XML转Array,Array转XML方法(通用)
- windows2003 IIS 服务启动失败,提示‘另一个程序正在使用此文件,进程无法访问',解决方法
- 调用API加载DLL方法打开文本文件及修改标题
- 微信小程序外部API调用方法,遇到的一个小问题
- Win32 api使用中调用GetOpenFileName打开文件对话框无响应的解决方法
- 关于IIS服务启动失败的问题:“IIS提示‘另一个程序正在使用此文件,进程无法访问’”,的解决方法
- windows下 程序里和cmd中获取/查看进程的参数的方法,打开进程
- c# 读取其他程序正打开的文件的时“正由另一进程使用,因此该进程无法访问该文件。"的问题解决方法
- UE4 创建进程,打开额外程序 方法 笔记
- windows2003 IIS 服务启动失败,提示‘另一个程序正在使用此文件,进程无法访问',解决方法!
- Android google maps api程序安装失败 手机安装时缺少google map api 的解决方法
- 2013-12-11调用系统APi打开系统程序
- 64位进程调用32位dll的解决方法 / 程序64位化带来的问题和思考
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- C++中调用外部可执行程序的方法--创建子进程
- Android调用适当程序打开文件的万能方法
- 64位进程调用32位dll的解决方法 / 程序64位化带来的问题和思考