CreateProcess 问题

fonvey 2020-03-06 05:50:21

#include <windows.h>




PROCESS_INFORMATION WakeupProc(const WCHAR* strFilepath)
{
STARTUPINFO StartInfo;
PROCESS_INFORMATION procStruct;
memset(&StartInfo, 0, sizeof(STARTUPINFO));
StartInfo.cb = sizeof(STARTUPINFO);

TCHAR* urls = TEXT(" http://www.163.com");

BOOL bSuc = ::CreateProcess(strFilepath, urls, NULL, NULL, FALSE, 0, NULL, NULL, &StartInfo, &procStruct);
if (!bSuc){
LPVOID lpMsgBuf;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL);
}
int error = GetLastError();
return procStruct;
}

void main(){

WCHAR* strFilepath = TEXT("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");

PROCESS_INFORMATION procStruct= WakeupProc(strFilepath);

HWND hWnd = (HWND)procStruct.dwProcessId;

system("pause");

}





能正确打开 chrome ,但是不能 打开 http://www.163.com,
...全文
140 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fonvey 2020-03-07
  • 打赏
  • 举报
回复
引用 4 楼 寻开心 的回复:
WCHAR* urls = TEXT(" http://www.163.com");
我原来就是这样啊
fonvey 2020-03-07
  • 打赏
  • 举报
回复
引用 6 楼 smwhotjay 的回复:
system("start www.qq.com");
这个CMD命令是可以的,,但是新开一个窗口了
fonvey 2020-03-07
  • 打赏
  • 举报
回复
引用 5 楼 寻开心 的回复:
还有一个可能 毕竟参数的解析是软件自己的事儿,chrome是否接受这样的参数格式呢? 没有尝试chrome支不支持命令行传参, 可以做一个Chrome的快捷键,然后在里面指定命令行参数, 看看它是否正确的打开 怀疑这些浏览器都会 有自己的传参格式,未必是直接指定一个url地址就可以的, 也许是 --url:www.163.com 之类的也是可能 找找这个方面的资料吧
chrome 接收 参数,,因为我用 cmd 命令试过
smwhotjay 2020-03-07
  • 打赏
  • 举报
回复
system("start www.qq.com");
寻开心 2020-03-06
  • 打赏
  • 举报
回复
还有一个可能
毕竟参数的解析是软件自己的事儿,chrome是否接受这样的参数格式呢?
没有尝试chrome支不支持命令行传参, 可以做一个Chrome的快捷键,然后在里面指定命令行参数, 看看它是否正确的打开

怀疑这些浏览器都会 有自己的传参格式,未必是直接指定一个url地址就可以的, 也许是 --url:www.163.com 之类的也是可能
找找这个方面的资料吧
寻开心 2020-03-06
  • 打赏
  • 举报
回复
WCHAR* urls = TEXT(" http://www.163.com");
寻开心 2020-03-06
  • 打赏
  • 举报
回复
BOOL CreateProcess(
LPCTSTR lpApplicationName, // name of executable module
LPTSTR lpCommandLine, // command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // SD
LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
BOOL bInheritHandles, // handle inheritance option
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // new environment block
LPCTSTR lpCurrentDirectory, // current directory name
LPSTARTUPINFO lpStartupInfo, // startup information
LPPROCESS_INFORMATION lpProcessInformation // process information
);
第二个参数就是传参啊
分开两个字符串
fonvey 2020-03-06
  • 打赏
  • 举报
回复
WCHAR* strFilepath=TEXT(“C:\\xxx\\...\\chrome.exe http://www.163.com”); 完全不执行
qybao 2020-03-06
  • 打赏
  • 举报
回复
在chrome.exe的后面直接加上url作为chrome的启动参数试试,即 WCHAR* strFilepath=TEXT(“C:\\xxx\\...\\chrome.exe http://www.163.com”);

64,318

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧