如何让一个程序在我的程序中运行?

comAcom 2004-08-20 08:44:41
比如想让画图程序在我的对话框中运行。
...全文
100 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangshengyu 2004-08-20
  • 打赏
  • 举报
回复
对话框有一个成员变量 m_hwnd
keiven 2004-08-20
  • 打赏
  • 举报
回复
上面都说了,用setwindowpos来调初始的位置。
comAcom 2004-08-20
  • 打赏
  • 举报
回复
搞定!
http://search.csdn.net/Expert/topic/1825/1825929.xml?temp=.1786005
888atao 2004-08-20
  • 打赏
  • 举报
回复
最简单的方法
找到画图窗口的HWND
然后用SetParent
再SetWindowPos设置一下位置就可以了
simouse 2004-08-20
  • 打赏
  • 举报
回复
可以用FindWindow得到它的窗口HANDLE,这样你就可以改变它的大小了
comAcom 2004-08-20
  • 打赏
  • 举报
回复
这里有希望
“hwnd
指定一个主窗体。

那么怎么可以获得对话框的hwnd呢?
huaboy408 2004-08-20
  • 打赏
  • 举报
回复
在启动程序的时候ShellExecute函数使用的比较多,下面详细的解释了它的有关参数!
ShellExecute 函数打开或打印一个指定的文件。文件可以是可执行文件也可以是一个文档。
HINSTANCE ShellExecute(
HWND hwnd, // 主窗口句柄
LPCTSTR lpOperation, // 字符串指针,指定要执行的操作
LPCTSTR lpFile, // 字符串指针,指定文件名或目录名
LPCTSTR lpParameters, // 字符串指针,指定传给可执行文件的参数  
LPCTSTR lpDirectory, // 字符串指针,指定缺省目录
INT nShowCmd // 文件显示模式
);
参数
hwnd
指定一个主窗体。
lpOperation
一个非空的字符串指针,指定操作方式。有以下操作方式可用
"open"
该函数打开由lpFile指定的文件,文件可以是一个可执行文件,也可以是文档文件,也可以是一个要打开的目录。
"print"
该函数打印由lpFile指定的文件。文件应该是一个文档文件。如果是一个可执行文件则运行这个文件就象指定用"opne"操作方式一样。
"explore"
函数打开浏览由lpFile指定的目录窗口。
如果该参数为NULL,则相当于使用"open"操作方式。
lpFile
一个非空字符串指定要打开或打印的文件,或者是要打开浏览的目录名。该函数可以打开一个可执行文件或一个文档文件,也可以打印一个文件。
lpParameters
如果lpFile指定一个可执行文件,则lpParameters 是一个指向非空字符串的指针,代表要传给这个应用程序的参数。
如果lpFile指定一个文档文件,则其应该为空。
lpDirectory
非空字符串指定缺省目录
nShowCmd
如果lpFile指定一个可执行文件,nShowCmd指定应用程序运行时如何显示。可以是下列的值:

值    意义
SW_HIDE 隐藏窗体,激活另一个窗口。
SW_MAXIMIZE 最大化显示
SW_MINIMIZE 最小化显示
SW_RESTORE 正常状态显示
SW_SHOW 激活并以其当前位置尺寸显示
SW_SHOWDEFAULT 以线程创建时传进的参数进行显示
SW_SHOWMAXIMIZED 激活并最大化显示
SW_SHOWMINIMIZED 激活但以最小化方式显示
SW_SHOWMINNOACTIVE 最小化显示,原来焦点窗体不变active.
SW_SHOWNA 以其当前状态显示
SW_SHOWNOACTIVATE
SW_SHOWNORMAL 以正常方式显示。
如果lpFile指定的是文档文件,则nShowCmd应该为0。

返回值
如果成功,返回当前运行应用程序句柄或DDE服务器句柄
如果失败,返回值小于等32,代表下面的意义。

值   意义
0 操作系统内存或资源不够
ERROR_FILE_NOT_FOUND 文件没找到
ERROR_PATH_NOT_FOUND 指定路径不对
ERROR_BAD_FORMAT 不是合法的应用程序
SE_ERR_ACCESSDENIED 操作系统拒绝访问此文件
SE_ERR_ASSOCINCOMPLETE 文件名关联不完整或非法
SE_ERR_DDEBUSY 不能完成DDE事务,因为正在处理其它DDE事务  
SE_ERR_DDEFAIL DDE事务失败
SE_ERR_DDETIMEOUT 请示超时
SE_ERR_DLLNOTFOUND 没找到指定的动态链接库
SE_ERR_FNF 指定文件没找到。
SE_ERR_NOASSOC 没有与当前文件类型关联的应用程序
SE_ERR_OOM 内存不足
SE_ERR_PNF 路径没找到
SE_ERR_SHARE 共享错误

备注
由参数lpFile指定的文件可以是文档文件或是可执行文件。如果是文档文件则可以打开或打印文件,由lpOperation参数指定。如果是可执行文件则只能打开,即使lpOperation指定为"print".
You can use ShellExecute to open or explore a shell folder. To open a folder, use either of the following calls:
可以使用该函数打开或浏览一个文件夹:
ShellExecute(handle, NULL, path_to_folder, NULL, NULL, SW_SHOWNORMAL);

ShellExecute(handle, "open", path_to_folder, NULL, NULL, SW_SHOWNORMAL);

浏览文件夹:
ShellExecute(handle, "explore", path_to_folder, NULL, NULL, SW_SHOWNORMAL);
如果 lpOperation 为 NULL,函数打开这个文件如果为"open" 或 "explore",则函数会打开一个窗口
comAcom 2004-08-20
  • 打赏
  • 举报
回复
我想限制这个程序的位置和大小,比如在我的程序的对话框上。
scmsir 2004-08-20
  • 打赏
  • 举报
回复
CString strCommand;
// strCommand.Format("E:\\软件开发\\画图\\Graph.exe");
strCommand.Format("Graph.exe");
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
ZeroMemory( &pi, sizeof(pi) );
if( !CreateProcess( NULL, // No module name (use command line).
(LPSTR)LPCSTR(strCommand), // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi ) // Pointer to PROCESS_INFORMATION structure.
)
{
AfxMessageBox( "创建进程失败." );
}

// Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess);
CloseHandle( pi.hThread);

我一直用的。
问道er 2004-08-20
  • 打赏
  • 举报
回复
有三种方法:
CreateProcess
WinExec
ShellExecute
建议使用第一种!
bohut 2004-08-20
  • 打赏
  • 举报
回复
"c:\\windows\\system32\\mspaint.exe",根据不同的操作系统,画图程序的路径可能会有所不同,你指定对了就可以了
bohut 2004-08-20
  • 打赏
  • 举报
回复
ShellExecute(NULL,"open","c:\\windows\\system32\\mspaint.exe",NULL,NULL,SW_SHOWNORMAL);

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧