我想设计一个C.dll,A、B两个软件都可以调用,
1:当A调用C.dll时,C.dll启动,并且想C.dll传输数据。
2:当B调用C.dll时(A程序不运行),A程序自动启动,并且向C.dll传送数据,供B使用
请问这样的C.dll怎么设计啊?
主要是第二点想不明白。
谢谢
有一点我知道,就是在使用数据的时候需要内存共享。
暂时给100分,不够再加!
1:当A调用C.dll时,C.dll启动,并且想C.dll传输数据。
2:当B调用C.dll时(A程序不运行),A程序自动启动,并且向C.dll传送数据,供B使用
请问这样的C.dll怎么设计啊?
主要是第二点想不明白。
谢谢
有一点我知道,就是在使用数据的时候需要内存共享。
暂时给100分,不够再加!
至于a自动启动,可以在c.dll中判断a是否已经启动(比如可以用互斥),如果还没有启动,则启动a:CreateProcess
或者给一点“a:CreateProcess“的代码范例?
”主要b要等待a的传递数据“,这个我考虑过,用消息通知和内存共享可以解决的。
dll中启动a倒简单
哪位仁兄能详细说说如何在dll中启动A吗?
这个实现不难
具体参数参考一下msdn
si.cb := sizeof(si);
si.wShowWindow:=SW_MINIMIZE;//SW_MINIMIZE;
si.dwFlags:=DEBUG_PROCESS;
ZeroMemory( @pi, sizeof(pi) ); result:=CreateProcess( PChar(ExtractFilePath(application.exename)+'BarCodeReader.exe'), // No module name (use command line).
nil, // Command line.
nil, // Process handle not inheritable.
nil, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
nil, // Use parent's environment block.
nil, // Use parent's starting directory.
si, // Pointer to STARTUPINFO structure.
pi ) // Pointer to PROCESS_INFORMATION structure. ;