想请教一个简单的问题,想通过点击某个菜单项弹出一个对话框,对话框是可执行程序,没有源码,怎么做?
解决方案 »
- CAD的DXF文件中标注信息如何与标注实体相关联
- 很郁闷,对话框程序不能可靠接收udp数据
- 如何在右键点击CComboBox中的CEdit编辑框时,弹出自定义的菜单?
- 问一个很菜的问题^_^很多的分呀
- 在线等待,马上结贴。¥¥¥¥¥高分求教一个vc 6.0链接错误。¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
- 用psapi列进程 问题 ,急请帮助!谢谢
- 简单但对我很难的问题:(
- 请问网络高手--怎样知道对方的物理地址(知道对方的IP)???
- 关于VC中Release和Debug编译方式的差别?
- 一个示例程序编译通不过!
- 毕业设计出问题了:关于在VC中使用ADO操作ACCESS的时候,不知道SELECT怎么使用(附代码)
- 一个关于指纹识别的问题?
如果是要启动一个新得程序,(exe),可以用CreateProcess();而被启动的程序是个对话框类型的程序。
是你的本意吗?
问题得说清楚.用shellexecute
ShellExecute(NULL, "open", "$$$$.exe", m_sParameter, NULL, SW_SHOWNORMAL);BOOL CreateProcess(........)WinExec("$$$$.exe", SW_SHOW);具体内容参考msdn吧
原型:
UINT WinExec(
LPCSTR lpCmdLine, // address of command line
UINT uCmdShow // window style for new application
);
用于十六位操作系统及兼容系统.
例如:
WinExec("notepad.exe f:\\调用程序.txt",SW_SHOW);
WinExec("notepad.exe ",SW_SHOW);
不同的参数用空格分开,故路径中不能有空格,而大部分程序默认是安装在"...\Program Files\...",如word,这极大的限制了WinExec的应用范围.
以上可不带路径:
1,程序所在目录.
2,当前路径.
3,系统目录,可以用GetSystemDirectory得到.
4,Windows 目录. 可以用TheGetWindowsDirectory得到.
5,在环境变量中设置的目录.ShellExecute
原型:
HINSTANCE ShellExecute(
HWND hwnd, //父窗口句柄
LPCTSTR lpOperation, //操作,"open","print","explore"
LPCTSTR lpFile, //文件名,前面可加路径
LPCTSTR lpParameters, //参数
LPCTSTR lpDirectory, //默认文件夹
INT nShowCmd //显示方式
);打开一个应用程序
ShellExecute(this->m_hWnd,"open","calc.exe","","", SW_SHOW );
或
ShellExecute(this->m_hWnd,"open","notepad.exe","c:\MyLog.log","",SW_SHOW );打开一个同系统程序相关连的文档
ShellExecute(this->m_hWnd,"open","c:\abc.txt","","",SW_SHOW );激活相关程序,发送EMAIL
ShellExecute(this->m_hWnd,"open","mailto:[email protected]","","", SW_SHOW );用系统打印机打印文档
ShellExecute(this->m_hWnd,"print","c:\abc.txt","","", SW_HIDE);lpParameters的用法示例:
一,建立一个可以接受参数的程序call.exe,添加如下代码:
BOOL CCallApp::InitInstance()
{
int n = __argc;
for(int i = 1 ; i < n ; i++)
AfxMessageBox(__targv[i]);
//__targv[0]存储的是程序的文件名
...
}
二,Alt + F7的进行Project setting, Debug -> program argurments ->"1 2 3 4 5".
如果有多个参数,用空格分开.
三,运行.
四,执行ShellExecute(NULL,NULL,"f:\\call.exe","1 2 3 4 5",NULL,SW_SHOW);BOOL CreateProcess(
LPCTSTR lpApplicationName,
LPTSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCTSTR lpCurrentDirectory,
LPSTARTUPINFO lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation
);
STARTUPINFO startupInfo;
memset(&startupInfo,0,sizeof(STARTUPINFO));
startupInfo.cb = sizeof(STARTUPINFO);示例:
//程序最启动时最大化
startupInfo.dwFlags |= STARTF_USESHOWWINDOW;
startupInfo.wShowWindow = SW_SHOWMAXIMIZED;
//运行....exe
PROCESS_INFORMATION ProcessInfo;
BOOL bCreate = ::CreateProcess
(
"f:\\call.exe",// 1 2 3 4",
NULL,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&startupInfo,
&ProcessInfo); //等到call.exe执行完毕
WaitForSingleObject(ProcessInfo.hProcess,1000000);
MessageBox("调用程序结束!");