vc6一个exe工程怎么调用别一个exe工程? 要是只是想调用exe怎么实现?要是还想调用类与函数怎么实现?工程必须改为dll嘛? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 要是只是想调用exe怎么实现?CreateProcess要是还想调用类与函数怎么实现?工程必须改为dll嘛?如果预计到这个类或函数会多次用到,则把他们抽出来,做成dll 调用其它程序 何志丹WinExec原型: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 );激活相关程序,发送EMAILShellExecute(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("调用程序结束!"); 要是还想调用类与函数怎么实现?工程必须改为dll嘛?--不必改成dll CreateProcess怎么用?能不能给各简单的例子?3x~ he_zhidan(何志丹:www.dzlishi.net,www.vcshare.net) ( ) 信誉:100 要是还想调用类与函数怎么实现?工程必须改为dll嘛?--不必改成dll那怎么引用呢? system("*.exe");执行,调用*.exe;或者用LoadLibrary(LPCTSTR lpFileName);调用。lpFileName为a .dll 或 .exe file 要是还想调用类与函数怎么实现--如果是少量函数,可以考虑用接口否则还是DLL好. CreateProcess怎么用?能不能给各简单的例子?3x~he_zhidan(何志丹:www.dzlishi.net,www.vcshare.net) 不是已经给你贴了吗呵呵,自己试试呀 vc6.0的问题 运行时错误:_CrtisValidHeapPointer(pUserdata) Line:1317 心跳包,为什么多是用UDP协议实现? 关于VC自定义消息的问题 PreSubclassWindow怎么一回事?? 两个小问题。马上结。 如何将SOCKADDR_IN中的IP地址的主机号提取出来变成整数? 如何用GetMenuState的返回值判断某个菜单条是否处于check态 请问如何结帖 开发一个类似上网拨号程序. OpenGL在VC编译链接出现的问题 单击树控件的节点的时候想知道是第几个节点?
CreateProcess要是还想调用类与函数怎么实现?工程必须改为dll嘛?
如果预计到这个类或函数会多次用到,则把他们抽出来,做成dll
WinExec
原型:
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("调用程序结束!");
--
不必改成dll
能不能给各简单的例子?
3x~
--
不必改成dll那怎么引用呢?
或者用LoadLibrary(LPCTSTR lpFileName);调用。lpFileName为a .dll 或 .exe file
--
如果是少量函数,可以考虑用接口否则还是DLL好.
能不能给各简单的例子?
3x~
he_zhidan(何志丹:www.dzlishi.net,www.vcshare.net) 不是已经给你贴了吗呵呵,自己试试呀