怎么在vc中像在vb中用shell一样调用应用程序?
怎么在vc中像在vb中用shell一样调用应用程序? 问题点数:20、回复次数:5Top
1 楼zy_9922(zy_9922)回复于 2002-05-23 16:07:27 得分 0
ShellExecuteTop
2 楼lant(蓝特)回复于 2002-05-23 16:10:23 得分 10
怎样加载其他的应用程序?
三个SDK函数 winexec, shellexecute,createprocess可以使用。WinExec最简单,两个参数,前一个指定路径,后一个指定显示方式.后一个参数值得说一下,比如泥用 SW_SHOWMAXMIZED方式去加载一个无最大化按钮的程序,就是Neterm,calc等等,就不会出现正常的窗体,但是已经被加到任务列表里了。
ShellExecute较 WinExex灵活一点,可以指定工作目录,下面的Example就是直接打开 c:\temp\1.txt,而不用加载与 txt文件关联的应用程序,很多安装程序完成后都会打开一个窗口,来显示Readme or Faq,我猜就是这么作的啦.
ShellExecute(NULL,NULL,_T("1.txt"),NULL,_T("c:\\temp"),SW_SHOWMAXMIZED)
CreateProcess最复杂,一共有十个参数,不过大部分都可以用NULL代替,它可以指定进程的安全属性,继承信息,类的优先级等等.来看个很简单的Example:
STARTUPINFO stinfo
//启动窗口的信息
PROCESSINFO procinfo //进程的信息
CreateProcess(NULL,_T("notepad.exe"),NULL,NULL.FALSE,
NORMAL_PRIORITY_
CLASS,NULL,NULL, &stinfo,&procinfo)
Top
3 楼cloudfog(阿荣)回复于 2002-05-24 15:16:29 得分 0
如果要在按下F1键时调用该怎么办?Top
4 楼FlyingSch(BoyWithWings)回复于 2002-05-24 15:19:10 得分 10
system()
---------------------------------------
WinExec() // for 16 bit application
----------------------------------------
LoadModule() //for 16 bit application
---------------------------------------
CreateProcess() // for 32 bit
例如:
STARTUPINFO infoStart;
PROCESS_INFORMATION infoProcess;
memset(&infoStart,0,sizeof(infoStart));
infoStart.cb=sizeof(infoStart);
if (!CreateProcess("c:\\windows\\notepad.exe","open d:\\temp.txt",NULL,NULL,FALSE,CREATE_DEFAULT_ERROR_MODE,NULL,NULL,&infoStart,&infoProcess))
{
MessageBox("failed.");
}
----------------------------------------
ShellExecute() //
例如:
ShellExecute(hwnd,"open","d:\\temp.txt",NULL,NULL,SW_SHOWNORMAL); //hwnd是有效的窗体句柄
OR
ShellExecute(hwnd,"open","c:\\windows\\notepad.exe","d:\\temp.txt",NULL,SW_SHOWNORMAL);
HINSTANCE ShellExecute(
HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd);
1。打开指定的文件
ShellExecute(hwnd,"open","d:\\temp.txt",NULL,NULL,SW_SHOWNORMAL); //hwnd是有效的窗体句柄
OR
ShellExecute(hwnd,"open","c:\\windows\\notepad.exe","d:\\temp.txt",NULL,SW_SHOWNORMAL);
2。显示指定的文件夹
ShellExecute(hwnd,"open","d:\\",NULL,NULL,SW_SHOWNORMAL);
3 用windows的explorer(资源管理器)打开指定的文件夹
ShellExecute(hwnd,"explore","d:\\",NULL,NULL,SW_SHOWNORMAL);Top
5 楼cloudfog(阿荣)回复于 2002-05-24 15:19:36 得分 0
^_^,我已经知道了,谢谢各位!给分罗Top




