SHELLEXECUTEINFO ShExecInfo ={0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_INVOKEIDLIST ;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = L"properties";
ShExecInfo.lpFile = L"c:\\"; //can be a file as well
ShExecInfo.lpParameters = NULL;
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
int ret = (int)ShellExecute(NULL, _T("open"), _T("Dbgview.exe"), NULL, NULL, SW_NORMAL);//打开exe
if (ret < 32)//检测是否指定成功
MessageBox(_T("ERROR"));
ret = (int)ShellExecute(NULL, _T("open"), _T("help.pdf"), NULL, NULL, SW_NORMAL);//打开指定文件,将调用默认处理的程序打开
if (ret < 32)
MessageBox(_T("ERROR"));
ret = (int)ShellExecute(NULL, _T("open"), _T("https://www.baidu.com"), NULL, NULL, SW_NORMAL);//打开网址
if (ret < 32)
MessageBox(_T("ERROR"));
ret = (int)ShellExecute(NULL, _T("open"), _T("c:\\windows"), NULL, NULL, SW_NORMAL);//打开文件夹
if (ret < 32)
MessageBox(_T("ERROR"));
ret = (int)ShellExecute(NULL, _T("runas"), _T("cmd.exe"), NULL, NULL, SW_NORMAL);//请求管理员权限打开cmd
if (ret < 32)
MessageBox(_T("ERROR"));
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <shellapi.h>
int main(void)
test01();
int test01()
HINSTANCE hNewExe = ShellExecuteA(NULL, "open", "calc.exe", NULL, NULL, SW_SHOW);
if ((DWORD)hNewExe <= 32)
printf("return value:%d\n", (DWORD)hNewExe);
printf("successed!\n");
printf("GetLastError: %d\n", GetLastError());
system("pause");
return 1;
使用 ShellExecute 打开文件或执行程序可以使用 ShellExecute 打开文件或执行程序。原型:HINSTANCE ShellExecute( _In_opt_ HWND hwnd,//父窗口句柄或出错时显示错误父窗口的句柄,可以为 NULL _In_opt_ LPCTSTR lpOperation,//操作 _In_ LPCTSTR ...
调用此命令打开系统文件目录窗口,有时不能置顶,是最小化在状态栏。如何才能置顶?ShellExecute(NULL, NULL, dirpath, NULL, NULL, SW_SHOWNORMAL);
你可以使用 SW_SHOWMAXIMIZED 或 SW_MAXIMIZE 替换 SW_SHOWNORMAL 以最大化文件目录窗口。例如:
ShellExecute(NULL, NULL, dirpath, NULL, NULL, SW_SHOWMAXIMIZED);
ShellExecute(NU
<br />1. ShellExecute函数功能:<br />你可以给它任何文件的名字,它都能识别出来并打开它。<br /><br />2.ShellExecute函数原型:<br />HINSTANCE ShellExecute(<br />
HWND hwnd, <br /> LPCTSTR
lpOperation,<br /> LPCT
int a = 10; int b = (a++) + (++a) *3+ (--a) + (a++); printf("%d\n", b);???
此方法不规范,答案取决于不同的编译器。(但是VS编译器得出的答案,鄙人计算不出来)
2、运算符表:
前天课设(C++环境),里面有这么一个要求,在接收到文件后程序自动打开文件显示,开始我也是整了挺久,找了好多资料,最终发现调用ShellExecute这个函数就可以实现。
下面用一个简单的例子演示一下:
#include<iostream>
#include<stdio.h>
#include<WinSock2.h>
using namespace std;
int main() {
cout << "请输入文件路径:" << endl.
// 获取桌面路径
TCHAR desktopPath[MAX_PATH];
SHGetFolderPath(NULL, CSIDL_DESKTOPDIRECTORY, NULL, 0, desktopPath);
// 要打开的文件名
const TCHAR* fileName = _T("example.txt");
// 拼接路径和文件名
TCHAR filePath[MAX_PATH];
_stprintf_s(filePath, _T("%s\\%s"), desktopPath, fileName);
// 打开文件
ShellExecute(NULL, _T("open"), filePath, NULL, NULL, SW_SHOWNORMAL);
return 0;
以上代码使用了 Windows API 中的 `SHGetFolderPath` 函数获取桌面路径,然后使用了 `ShellExecute` 函数打开指定文件。这里的 `example.txt` 是要打开的文件名,可以根据实际需要修改。