c++ shellexecute example

C++中使用ShellExecute函数可以启动外部程序、打开网页、发送邮件等等。下面是一个简单的示例代码,可以启动记事本程序:

#include <windows.h>
int main() {
    ShellExecute(NULL, "open", "notepad.exe", NULL, NULL, SW_SHOWNORMAL);
    return 0;

在这个示例中,ShellExecute函数的第一个参数是窗口句柄,可以为NULL表示没有窗口;第二个参数是操作类型,"open"表示打开程序;第三个参数是要启动的程序名,这里是notepad.exe;第四个参数是命令行参数,可以为NULL;第五个参数是工作目录,也可以为NULL;第六个参数是窗口状态,SW_SHOWNORMAL表示以普通状态显示窗口。

如果需要打开一个网页,只需要将第三个参数改为网页地址即可,例如:

ShellExecute(NULL, "open", "http://www.example.com", NULL, NULL, SW_SHOWNORMAL);

需要注意的是,ShellExecute函数是一个异步函数,会立即返回,而不等待被启动程序结束。如果需要等待被启动程序结束,可以使用ShellExecuteEx函数。

希望这个示例代码能够帮到您。

  • CxxJDK: 山寨 JDK 实现的 C++ 强大类库 特点 * 跨平台:同时支持 Linux32/64、OSX64、Win64 等平台; * 高性能:同时具备 C/C++ 和 Java 并发库的优点,性能爆棚; * 类丰富:实现 JDK 丰富的类库,从此摆脱 C++ 贫类库的困境; * 易开发:先 java 开发,再使用 CxxJDK 进行翻译,So easy! 示例 java: public static void main(String[] args) { class Worker implements Runnable { @Override public void run() { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(String.format("thread %d finished", this.hashCode())); } } ThreadPoolExecutor executor = new ThreadPoolExecutor(100, 200, 10, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>()); executor.allowCoreThreadTimeOut(true); for (int i = 0; i < 200; i++) { executor.execute(new Worker()); } executor.shutdown(); } //===================================== c++: int main(int argc, const char **argv) { ESystem::init(argc, argv); //cxxjdk 初始化! class Worker : public ERunnable { public: virtual void run() { try { EThread::sleep(1000); } catch (EInterruptedException& e) { e.printStackTrace(); } ESystem::out->println(EString::formatOf("thread %d finished", this->hashCode()).c_str()); } }; EThreadPoolExecutor* executor = new EThreadPoolExecutor(100, 200, 10, ETimeUnit::SECONDS, new ELinkedBlockingQueue<ERunnable>()); executor->allowCoreThreadTimeOut(true); for (int i = 0; i < 200; i++) { executor->execute(new Worker()); } executor->shutdown(); executor->awaitTermination(); delete executor; // 对象资源释放! }
    • 1150
  •