CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  BCB茶馆

怎么样在一个程序中去调用另一个程序???

楼主danferw(11:00PM开始)2003-03-04 00:07:37 在 C++ Builder / BCB茶馆 提问

我想通过一个Button   去打开其他程序,比如(我的电脑,控制面板,记事本,计算器等WINDOWS自带的程序!!我知道有个ShellExecute()   ,   但不知道具体的改怎么用! 问题点数:0、回复次数:10Top

1 楼szhc(崇)回复于 2003-03-04 00:16:18 得分 0

WinExec("NOTEPAD.EXE",SW_SHOW);  
   
  也可以---》  
   
  WinExec("NOTEPAD.EXE   C:\\autoexec.bat",SW_SHOW);Top

2 楼pp616(坏蛋)回复于 2003-03-04 02:44:06 得分 0

WinExec(文件名,SW_SHOW);or   ShellExecute(NULL,"open",文件名,0,0,SW_SHOW);  
  Top

3 楼pp616(坏蛋)回复于 2003-03-04 02:44:37 得分 0

如果不是exe文件。那就用shellexecute它会自动调用关联来打开。Top

4 楼hengxin54(火星)回复于 2003-03-04 02:44:41 得分 0

shellTop

5 楼WbtServer(金刀客)回复于 2003-03-04 18:16:05 得分 0

ShellExecute(NULL,"open",FileName,NULL,NULL,SW_SHOW);Top

6 楼chifengwatch(chifengwatch)回复于 2003-03-04 18:39:12 得分 0

给你个安全的例子,调用windows   media   player  
      String   path   ;  
      path.SetLength   (MAX_PATH)   ;  
      path.SetLength   (GetWindowsDirectory   (path.c_str   (),   path.Length   ()))   ;  
      AnsiString   commandLine   =   path.SubString(   1   ,   1   )   +   ":\\Program   Files\\Windows   Media   Player\\wmplayer.exe"   ;  
      DWORD   Version   =   0;  
      bool   process_cteate_state;  
      PROCESS_INFORMATION   piProcInfo;  
      STARTUPINFO   siStarInfo;  
      siStarInfo.cb   =   sizeof(STARTUPINFO);  
      siStarInfo.lpReserved   =   NULL;  
      siStarInfo.lpDesktop   =   NULL;  
      siStarInfo.lpTitle   =   NULL;  
      siStarInfo.cbReserved2   =   0;  
      siStarInfo.lpReserved2   =   NULL;  
      process_cteate_state   =   CreateProcess(NULL,commandLine.c_str(),NULL,NULL,false,NULL,NULL,NULL,&siStarInfo,&piProcInfo);  
      if   (process_cteate_state)  
      {  
          Version   =   GetProcessVersion(piProcInfo.dwProcessId);  
          if   (!Version)  
          {  
              Application->MessageBox("打开媒体文件发生错误!","错误",MB_OK|MB_ICONSTOP);  
          }  
      }  
      else  
      {  
          Application->MessageBox("打开媒体文件发生错误!","错误",MB_OK|MB_ICONSTOP);  
      }  
  Top

7 楼danferw(11:00PM开始)回复于 2003-03-04 19:56:36 得分 0

谢谢你们呀!!!!Top

8 楼csdsq(〓1〓0〓1〓0〓1〓0〓1〓)回复于 2003-03-04 20:36:48 得分 0

再来个例子..呵呵  
   
    现以使用api函数调用windows画笔为列,把该方法介绍如下:  
   
    1、启动   c++   builder   进入菜单file|new   application创建一个新项目,将该项目存盘,得到含有一个主窗口的项目。在主窗口上添加一个打开图片对话框控件OpenPictureDialog1和按扭控件Button1。  
   
    2、在主文件的文件头添加#include   <ShellApi.h>  
   
    3、在头文件的private   处添加   char   BmpExec[100];  
   
    4、在Button1的OndbClick事件处添加如下代码:  
   
        void   __fastcall   TMainForm1::Button1Click(TObject   *Sender)  
   
  {  
   
  AnsiString   TempName;  
   
  FileClose(FileCreate("testest.bmp"));  
   
  FindExecutable("testest.bmp",NULL,BmpExec);//返回可执行文件名的句柄//  
   
  DeleteFile("testest.bmp");//删除文件//  
   
  OpenPictureDialog1->DefaultExt   =   String("BMP");  
   
  OpenPictureDialog1->Filter   ="图片文件(*.bmp)|*.bmp";  
   
  OpenPictureDialog1->FileName="*.bmp";  
   
  if   (OpenPictureDialog1->Execute())  
   
  {  
   
  if   (OpenPictureDialog1->FileName.AnsiPos(".")<1)    
   
  OpenPictureDialog1->FileName=OpenPictureDialog1->FileName+".BMP";  
   
  //给没有扩展名的文件加上扩展名,此时FileName为文名的全名//  
   
  CloseHandle(CreateFile(OpenPictureDialog1->FileName.c_str(),//参数1   为文件名//  
   
           GENERIC_WRITE,     //参数2   文件的访问模式:设置为文件可写并且文件指针//  
   
           FILE_SHARE_WRITE,  //参数3   文件的共享模式:如果写访问允许文件可被修改//  
   
           NULL,        //参数4   安全属性:   用缺省的操作符//  
   
           OPEN_ALWAYS,       //参数5   如果文件不存在,如何创造文件:设置为存在则打开,如不存在则新建//  
   
           FILE_ATTRIBUTE_NORMAL,       //参数6,文件的属性和标志,文件没有其他的属性//      
   
  ));//关闭打开的事物句柄//  
   
  //以上的代码使文件设置为共享,从而使下面的代码顺利执行//  
   
  TempName=AnsiString(BmpExec);  //把char   转换成AnsiString//  
   
  TempName=TempName+"   "+OpenPictureDialog1->FileName;//应用程序名+相应的被处理文件//  
   
  WinExec(TempName.c_str(),SW_SHOWNORMAL);//执行应用程序//  
   
  }  
   
           }  
   
    5、编译执行。当双激按扭Button1时,程序出现打开图片文件的对话框,选则要打开的bmp文件,便可以调用windows的画笔打开自己选定的bmp文件了。  
  Top

9 楼szhc(崇)回复于 2003-03-05 10:00:02 得分 0

好详细...  
   
    csdsq(dsq)值得大家学习..分给他我没意见!!!  
   
  Top

10 楼danferw(11:00PM开始)回复于 2003-03-05 23:54:44 得分 0

我真是太感谢你们了Top

相关问题

  • 请问怎么样在自己的程序里面调用另外一个程序呢? 急 。。在线等待
  • 程序如何调用另一程序
  • ☆☆高分求助☆☆在程序中怎样调用另一个程序?又怎么样知道那个程序运行结束了??
  • ☆☆ 高分求助 ☆☆在程序中怎样调用另一个程序?又怎么样知道那个程序运行结束了??
  • 怎么样在程序中调用非模态窗口呀?
  • 怎么样用程序调用MultiPage里的控件啊?
  • 请问怎么样在TOleContainer中调用Windows的画图程序?
  • 怎么样才能调用本地应用程序?
  • 程序调用
  • 程序调用!!

关键词

  • 文件
  • 文件名
  • 属性
  • 代码
  • 执行
  • openpicturedialog
  • sistarinfo
  • tempname
  • bmpexec
  • testest

得分解答快速导航

  • 帖主:danferw

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo