本文介绍了编写跨平台应用程序的方法。
我们使用的许多著名的应用程序,比如VC,WINRAR,SVN等等,都既能在WIN下运行,也支持ming令行操作。这是很爽的,习惯在可视化下操作的同志,可以使用GUI界面操作,习惯怀旧或者喜欢ming令行操作的同志,可以使用ming令操作。同时我们也可以根据不同情况灵活运用,如果你要把硬盘上多于一百个的影视文件分别压缩成压缩包,并加入说明文件,使用可视化操作显示是一件费时费力的工作,但使用ming令行写一个简单的批处理循环,就可以轻松完成。这时你会十分感激那些提供操作系统的大佬们,他们在操作系统里集成的一个简单的SHELL的英明的决策使你轻松了多少呀。
这里简单介绍一下如何写一个程序,使我们的程序可以支持跨平台操作,既带ming令行,又可以可视操作。
要写一个简单的跨WIN和DOS的程序是很简单的,要是还想能在LIUNX上运行,那可能会复杂一些。
由于对LIUNX知之不多,这里只对制作WIN和DOS程序做一些简单的介绍。制作DOS和WIN下运行的程序,有两种方法。
第一种方法:
先用标准C或者C++写一个DOS程序,然后使用其他可视化编程工具如VC,VB或者DELPHI编写一个界面,然后使用BUTTON通过调用函数WinExec或者ShellExecute或者CreateProcess来执行写的DOS程序。
这里使用转载来的别人的例子来说明如何调用:
三个SDK函数: WinExec,ShellExecute ,CreateProcess可以实现调用其他程序的要求,其中以WinExec最为简单,ShellExecute比WinExec灵活一些,CreateProcess最为复杂。
WinExec 两个参数,前一个指定路径,后一个指定显示方式。
ShellExecute 可以指定工作目录,并且还可以寻找文件的关联直接打开不用加载与文件关联的应用程序,ShellExecute还可以打开网页,启动相应的邮件关联发送邮件等等。
CreateProcess
三个SDK函数( WinExec、ShellExec、CrateProcess )的语法:
(一)WinExec
这个函数最简单,只有两个参数,原型如下:
使用方法如下:
WinExec("Notepad.exe", SW_SHOW);
WinExec("D://Program Files//Test//Test.exe",SW_SHOWMAXIMIZED); // 以最大化的方式打开Test.exe
需要注意的是若用 SW_SHOWMAXMIZED 方式去加载一个无最大化按钮的程序,譬如Neterm,Calc 等等,就不会出现正常的 窗体,但是已经被加到任务列表里了。
这个函数只能打开exe文件。
需要的头文件:windows.h,winbase.h(前者是试验出来,后者是msdn上说明),另外,这两者的先后顺序不能变。
msdn上的说明:http://msdn.microsoft.com/en-us/library/ms687393(VS.85).aspx
(二)ShellExecute
原型如下:
);
使用方法如下:
ShellExecute(NULL,"open","C://Test.txt",NULL,NULL,SW_SHOWNORMAL); // 打开C:/Test.txt 文件
ShellExecute(NULL, "open", http://www.VeVb.com/,
ShellExecute(NULL,"explore", "D://C++",NULL,NULL,SW_SHOWNORMAL); // 打开目录D:/C++
ShellExecute(NULL,"print","C://Test.txt",NULL,NULL, SW_HIDE); // 打印文件C:/Test.txt
ShellExecute不支持定向输出。
这个函数可以打开任意文件,会调用系统注册的程序来打开对应后缀名的文件。
需要的头文件:windows.h,shellapi.h(前者是我试验出来的,后者是msdn说需要的)。另外这两者的先后顺序不能变。
msdn上说明:http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx
(三)CreateProcess
原型如下:
使用方法如下:
这个函数可以打开任意文件,会调用系统注册的程序来打开对应后缀名的文件。
需要的头文件:windows.h,winbase.h(前者是试验出来,后者是msdn上说明),另外,这两者的先后顺序不能变。
msdn上的说明:http://msdn.microsoft.com/en-us/library/ms682425](VS.85).aspx
新闻热点
疑难解答