社区
进程/线程/DLL
帖子详情
如何实现两个exe的通信?
pengys
2008-05-06 06:09:28
在A.exe中调用B.exe打开文件a.txt进行浏览,A.exe中实现删除a.txt文件的功能,要删除a.txt需要知道该文件没有被B.exe打开,也就是说当B.exe关闭的时候,才能执行A.exe中删除文件功能.如何实现请高手指教.
...全文
290
20
打赏
收藏
如何实现两个exe的通信?
在A.exe中调用B.exe打开文件a.txt进行浏览,A.exe中实现删除a.txt文件的功能,要删除a.txt需要知道该文件没有被B.exe打开,也就是说当B.exe关闭的时候,才能执行A.exe中删除文件功能.如何实现请高手指教.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
pengys
2008-05-09
打赏
举报
回复
感谢大家,尤其是icansaymyabc学习与进步,通过他的提醒,改写b.exe的代码,增加一个是否要删除文件的参数实现的.
icansaymyabc
2008-05-08
打赏
举报
回复
[Quote=引用 15 楼 pengys 的回复:]
b.exe的源码虽然可以修改,但是按你的逻辑是应用程序打开文件,浏览后关闭文件就删除原文件,这个合乎逻辑吗?
你用记事本打开一个文件,这个文件就被记事本删除了,你能接受吗?
[/Quote]
你咋这么想不明白呢?记事本不是我开发的也不是我的任何应用的组件之一,我当然不能让他把我的文件删除。
可是你的 a 和 b 本来就是一个整体,共同完成你规定的任务。
目前你有一个需求,就是看过文件就删,这个任务交给 b 来做是无比轻松,而交给 a 来做却是困难重重。你偏偏就是要指定 a 来做,决不让 b 来做,不知道你这是合乎什么逻辑!
谈到逻辑,b 作为这个应用的组件之一,完成这个应用所需的功能,这不合逻辑吗? 如果你需要有的文件删掉、有的文件保留,一切要 a 来决定,你可以再改写 b 的代码,增加一个是否要删除文件的参数,这不合逻辑吗?
归根结底还是你的运筹学没学好
harry_qj
2008-05-08
打赏
举报
回复
发送消息也可以吧
fly_wawe
2008-05-08
打赏
举报
回复
可以另外设置一个标识量,当B.EXE关闭后,写入TRUE
A.EXE删除时,先检测该标识量,为TRUE就删,不为TRUE,则。。。
cnzdgs
2008-05-08
打赏
举报
回复
[Quote=引用 14 楼 pengys 的回复:]
引用 11 楼 cnzdgs 的回复:
既然这样,你在B.exe打开文件时不要设置共享删除标志就可以了,这样在文件没有关闭之前是删除不掉的,A.exe可以循环删除这个文件,如果删除成功则结束循环,否则Sleep一下再执行删除,如果不想阻塞线程可以用SetTimer来定时执行删除,删除成功后取消定时。此外也可以利用命名事件由B来通知A。
不能阻塞线程,用定时器也感觉不太好.
[/Quote]
那就用消息或者命名对象来通知。
pengys
2008-05-08
打赏
举报
回复
[Quote=引用 13 楼 icansaymyabc 的回复:]
引用 9 楼 pengys 的回复:
1.B.exe的源代码可以修改
2.必须等到B.exe所打开的文件关闭后,删除文件
你干吗不改写 b.exe, 让他关闭文件后立即删除之, 非得让 a.exe 来干删除文件这事?
你这是运筹学没学好,不会合理统筹安排任务。
[/Quote]
我运筹学刚刚及格呵呵!
b.exe的源码虽然可以修改,但是按你的逻辑是应用程序打开文件,浏览后关闭文件就删除原文件,这个合乎逻辑吗?
你用记事本打开一个文件,这个文件就被记事本删除了,你能接受吗?
pengys
2008-05-08
打赏
举报
回复
[Quote=引用 11 楼 cnzdgs 的回复:]
既然这样,你在B.exe打开文件时不要设置共享删除标志就可以了,这样在文件没有关闭之前是删除不掉的,A.exe可以循环删除这个文件,如果删除成功则结束循环,否则Sleep一下再执行删除,如果不想阻塞线程可以用SetTimer来定时执行删除,删除成功后取消定时。此外也可以利用命名事件由B来通知A。
[/Quote]
不能阻塞线程,用定时器也感觉不太好.
pengys
2008-05-07
打赏
举报
回复
1.B.exe的源代码可以修改
2.必须等到B.exe所打开的文件关闭后,删除文件
acinonyx
2008-05-07
打赏
举报
回复
共享内存、消息队列也可以。
cnzdgs
2008-05-07
打赏
举报
回复
请LZ先回答两个问题:
1、B.exe的源代码能不能修改?
2、你的需求只是删除文件还是必须要等到B.exe退出后才删除文件?
pengys
2008-05-07
打赏
举报
回复
B.exe是个COM,通过ocx浏览文件的,A.exe不是通过CreateProcess或者ShellExecuteEx来加载B.exe的.
icansaymyabc
2008-05-07
打赏
举报
回复
[Quote=引用 9 楼 pengys 的回复:]
1.B.exe的源代码可以修改
2.必须等到B.exe所打开的文件关闭后,删除文件
[/Quote]
你干吗不改写 b.exe, 让他关闭文件后立即删除之, 非得让 a.exe 来干删除文件这事?
你这是运筹学没学好,不会合理统筹安排任务。
icansaymyabc
2008-05-07
打赏
举报
回复
没必要像你想的那样复杂,你在A.exe中调用 notepad.exe 打开文件a.txt进行浏览,A.exe可以立即删除a.txt,而不用管 notepad.exe 是否关闭。
cnzdgs
2008-05-07
打赏
举报
回复
既然这样,你在B.exe打开文件时不要设置共享删除标志就可以了,这样在文件没有关闭之前是删除不掉的,A.exe可以循环删除这个文件,如果删除成功则结束循环,否则Sleep一下再执行删除,如果不想阻塞线程可以用SetTimer来定时执行删除,删除成功后取消定时。此外也可以利用命名事件由B来通知A。
nooning
2008-05-07
打赏
举报
回复
方法很多,使用临界资源,信号量,FileMapping,管道,全局共享内存(DLL).....
jacklzw88
2008-05-06
打赏
举报
回复
event,信号量都可以用
eirssy
2008-05-06
打赏
举报
回复
是呀,先CreateProcess, 然后WaitForSingleObject(B进程句柄),最后删除A.txt
cnzdgs
2008-05-06
打赏
举报
回复
如果B.exe是你自己做的,只要打开文件的时候不指定共享删除标志即可,在文件未关闭的情况下是不能被删除的(DeleteFile失败)。
如果你想等B.exe退出再删除,可以通过CreateProcess或者ShellExecuteEx来加载B.exe,并保留B.exe的进程句柄,当要删除文件前,执行WaitForSingleObject等待进程结束。
pengys
2008-05-06
打赏
举报
回复
谢谢
an_bachelor
2008-05-06
打赏
举报
回复
就是一个进程间通信的问题 你可以用COM、命名管道、Socket等等任何一种方式来同步
C++ 百万并发网络
通信
引擎架构与
实现
(Socket、全栈、跨平台) Version 1.0
从基础的网络知识开始由浅入深地讲解如何使用C++
实现
一套支持百万级别并发的网络
通信
引擎。包含:高频并发、多线程、多进程、线程池、内存池、软件硬件瓶颈、如何测试优化网络处理能力等技术知识。可以应用在Windows...
C#
两个
exe
程序之间
通信
其实对于
两个
程序之间进行
通信
的
实现
方式有很多种,一般会采用服务端+客户端的模式,此处我们是进行
两个
客户端之间的
通信
,如果用一种最简单的方式去
实现
的话,我认为可以采用写文件的方式,即一个读,一个写。这个写法的话可以参考之前的关于文件读写的文章; 但这里我们使用的是另一种,基于Windows API
实现
Windows消息的发送接收;
实现
功能: 使用SendMessage
实现
两个
程序之间的
通信
开发环境: 开发工具: Visual Studio 2013 .NET Framework版本:
QT
两个
exe
之间
通信
一、
通信
方式 通过windowAPI,SendMessage进行
通信
,等待结果返回,是一种同步的方式。PostMessage是将消息放入消息队列中,立即返回,是一种异步的方式。我采用的是同步的方式,两种方式用法一样。 二、发送方A程序 #pragma comment (lib,"User32.lib") #pragma comment (lib,"Gdi32.lib") #include <qt_windows.h> #include <QTextCodec> #include
用c语言
实现
两台计算机
通信
,计算机网络|C语言Socket编程,
实现
两个
程序间的
通信
...
C语言Socket编程,
实现
两个
程序间的
通信
server和client
通信
流程图在mooc上找到的,使用Socket客户端client和服务端server
通信
的流程图??服务端server服务端需要 "
两个
"套接字 :1.服务端套接字serverSocket2.客户端connect连接请求时,发来的套接字clientSocket按流程图来看, server服务端主要就是
实现
下面几个步骤:0.WSA...
C#
两个
独立
exe
程序直接
通信
截取Windows消息来触发自定义事件 实例
两个
独立的
exe
程序之间如何完成
通信
呢?首先想到的办法是利用生成文件的方法,即,发送端在某个目录下生 成一个文件,包含要发送的消息,接收端从这个目录中读取文件且获取消息。这个方法也能
实现
通信
,但是总感觉有 点多此一举。能不能让
两个
exe
程序直接进行
通信
,发送消息呢? 答案是肯定的!而且还有好几种方法。1 发送消息传递 2 共享内存传递 3 使用COM进程外服务器 ... 这
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章