请问C++Builder如何调用外部应用程序,并且能够传递变量值给被调用的程序?(100分)

  • 主题发起人 主题发起人 2you2me
  • 开始时间 开始时间
2

2you2me

Unregistered / Unconfirmed
GUEST, unregistred user!
我要向一个被调用的外部程序Report.Exe传递一些值进去,比如用户名UserName,请问如何调用,如何传递值。请朋友能给出简单的代码提示。十分感谢!
 
请大家帮忙!
 
不会吧,一点建议也没有?呵呵,太失望了。[8D]
 
ShellExecute函数:
在ShellAPI单元中,ShellExecute函数的定义为:
function ShellExecute(hWnd: HWND;
Operation, FileName, Parameters,
Directory: PChar;
ShowCmd: Integer): HINST;
stdcall;
作用:打开或打印一个指定的文件;
参数说明:
hWnd hwnd, //指向父窗口的句柄;
Operation: PChar, //指向一个null结尾的串以指明要执行的操作;
可以是"open","print","explore",NULL;
FileName: PChar, //指向文件名或文件夹名串;
Parameters: PChar, //指向一个null结尾的串以指明可执行文件的参数;
如果FileName参数为文档,此参数应为NULL;
Directory: PChar, //指向一个null结尾的串以指明默认目录;
ShowCmd: Integer //文件在打开时是否显示;
如果FileName参数为文档,此参数应为0;
用这个函数呗
 
谢谢app2001,我现在程序能够去调用,只是不知道两个应用程序之间怎么把参数值传递过去,我的实际用意是要把系统用户名sUserName传递到被调用的程序中。能有朋友指教一下吗?
 
它其中有一个参数Parameters:就是在调用执行文件时带参数用的
 
首先你的被调程序必须能接受命令行参数
 
发消息不就结了?
SendMessage(HWND,UINT,LPARAM,WPARAM)?
自定义消息:WM_USER + N
再用消息映射(MAP)来接收 WM_USER + R
再有问题,讨论:
foolstudio@yahoo.com.cn
QQ:41758952
 
非常感谢大家!
有没有朋友帮忙写个框架给我啊,比如代码怎么写什么的,以前不用bcb的,大家帮忙啊。
主要问题在:怎么把字符串发出去,然后子程序又怎么接收。
 
谢谢app2001,ShellExecute()应该是调用一个外部应用程序打开一个文件吧?我的目的是为了运行一个自己的程序。好像应该是WinExec()。但是不能确定参数是怎么传递过去的。
 
ShellExecute和WinExec的功能都一样的,在32位操作系统下我认为前者性能还更优些
ShellExecute(0, 'open', pchar('c:/Report.Exe'),'参数1 参数2...', nil, sw_normal);这样就可以打开你的程序了,
然后,你的程序里要做好接收参数的工作,如
edit1.Text:=paramstr(1);
edit2.Text:=paramstr(2);
。。。。
另外关于接收参数的你参看下一段资料
Delphi提供了访问命令行参数的方便的方式,那就是使用ParamStr和ParamCount函数。其中ParamStr(0)返回的是当前程序名,如C:/TEST/MYPROG.EXE,ParamStr(1)返回第一个参数,以此类推;ParamCount则是参数个数。示例如下:
  var
  I: Word;
  Y: Integer;
  begin
   Y := 10;
   for I := 1 to ParamCountdo
begin
   Canvas.TextOut(5, Y, ParamStr(I));
   Y := Y + Canvas.TextHeight(ParamStr(I)) + 5;
   end;
  end;
 
后退
顶部