在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、主要场景 a)主程序启动另外一个程序,并传递参数 b)主进程向一个已经运行中的程序传递参数 二、代码 1)调用程序: var HWND: DWORD; ApplicationHWND:DWORD; begin HWND:=FindWindow('TFrmMain', '参数接收窗口'); ApplicationHWND:=GetWindow(HWND,GW_OWNER); if HWND <> 0 then begin memo1.Lines.Add('参数接收程序已运行,向参数接收窗口投递消息。。。'); SendMessage(HWND,WM_TEST,0,0); SetForegroundWindow(HWND); SetActiveWindow(HWND); ShowWindow(ApplicationHWND, SW_RESTORE); // ShowWindow(HWND, SW_SHOWNORMAL); --此种方式会造成被调用的窗口无法最小化。。。 end else begin memo1.Lines.Add('参数接收程序未运行,启动程序的同时传递参数。。。'); ShellExecute(Handle, 'Open', '..\ParamReceiver\ParamReceiver.exe', '参数1 参数2', nil, SW_SHOWNORMAL); end; end; 2) 接收程序: 获取被启动时传递过来的参数 var receivedParam_0,receivedParam_1,receivedParam_2:string; begin receivedParam_0:=ParamStr(0); receivedParam_1:=ParamStr(1); receivedParam_2:=ParamStr(2); Memo1.Lines.Add('程序被启动的同时收到参数。。。'); Memo1.Lines.Add('ParamStr(0)='+receivedParam_0); Memo1.Lines.Add('ParamStr(1)='+receivedParam_1); Memo1.Lines.Add('ParamStr(2)='+receivedParam_2); end; 获取运行过程中传递过来的参数(消息响应) begin Memo1.Lines.Add('窗口接收到定向投递过来的参数。。。'); Memo1.Lines.Add('具体的参数可通过内存映射文件实现进程间共享!!'); //Application.Restore; end; 三、运行结果 a)主程序启动另外一个程序,并传递参数 调用程序: 接收程序: b)主进程向一个已经运行中的程序传递参数 调用程序: 接收程序:
注:1)防止出现ShowWindow函数调用之后出现:被调用窗口无法最小化的问题, http://www.cnblogs.com/edisonfeng/archive/2012/05/21/2511975.html
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论