使用createprocess()创建进程打开其他文件方法
创建进程后得到该进程的主窗口句柄
最近抽空用VC写了一个小应用程序。主要功能就是创建进程,并到该进程的主窗口句柄,然后再给该窗口发消息。下面把代码共享给大家。
#include "stdafx.h" #include "windows.h" #include <iostream> #include "shellapi.h" #include <stdlib.h> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { //system("dir"); //system("pause"); //打开声音设备 //::ShellExecute(NULL,_T("OPEN"),_T("rundll32.exe"),_T("shell32.dll Control_RunDLL mmsys.cpl,,1"),NULL,SW_SHOW); //打开鼠标设备 //::ShellExecute(NULL,_T("OPEN"),_T("rundll32.exe"),_T("shell32.dll Control_RunDLL main.cpl,,4"),NULL,SW_SHOW); 打开系统设备 //::ShellExecute(NULL,_T("OPEN"),_T("rundll32.exe"),_T("shell32.dll Control_RunDLL sysdm.cpl,,1"),NULL,SW_SHOW); WCHAR tstr[MAX_PATH] = TEXT("c:\\windows\\system32\\notepad.exe e:\\11.txt");//打开指定的11.txt文件(这里不能把字符串直接拷贝到函数中执行,会崩溃,参数是指向地址) STARTUPINFO si; memset(&si,0,sizeof(STARTUPINFO));//初始化si在内存块中的值(详见memset函数) si.cb=sizeof(STARTUPINFO); si.dwFlags=STARTF_USESHOWWINDOW; si.wShowWindow=SW_SHOW; PROCESS_INFORMATION pi;//必备参数设置结束 if(!CreateProcess(NULL,tstr, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ) //创建一个新的txt文件 // CreateProcess(TEXT("c:\\windows\\system32\\notepad.exe"), // NULL, // NULL, // NULL, // FALSE, // 0, // NULL, // NULL, // &si, // &pi // ) ){ cout<<"CreateFail!"<<endl; exit(1); }else{ cout<<"Success!"<<endl; } //不使用的句柄最好关掉 CloseHandle(pi.hThread); CloseHandle(pi.hProcess); return 0; DWORD dwErr = GetLastError(); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix