社区
C++ 语言
帖子详情
shellexecute使用成功,但是exe不运行,双击运行没问题
jhk6666
2009-11-09 09:22:17
我通过shellexecute运行自己写的程序exe
shellexecute(open ... ...)
但是打不开那个exe
我查看了shellexecute的返回值是42,也就是大于32,应该是成功了
但是那个exe不运行,有时候在进程管理器中闪了一下又退出了
但是我双击我的exe,是能够正常运行的
请问有人知道这应该在哪方面找原因吗
...全文
1889
23
打赏
收藏
shellexecute使用成功,但是exe不运行,双击运行没问题
我通过shellexecute运行自己写的程序exe shellexecute(open ... ...) 但是打不开那个exe 我查看了shellexecute的返回值是42,也就是大于32,应该是成功了 但是那个exe不运行,有时候在进程管理器中闪了一下又退出了 但是我双击我的exe,是能够正常运行的 请问有人知道这应该在哪方面找原因吗
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tju_wanderer
2012-09-01
打赏
举报
回复
太感谢了了,真的
overeem
2012-04-09
打赏
举报
回复
[Quote=引用 21 楼 的回复:]
今天也遇到了类似问题,ShellExecute(NULL,"open","C:\\xxx.exe",NULL,“c:\\”,SW_SHOW);
用了这个解决了,非常感谢!主要是倒数第二个参数(程序所在目录)最好不要省略.
[/Quote]
我也遇到了这个问题,非常感谢
日兆不落
2011-01-12
打赏
举报
回复
今天也遇到了类似问题,ShellExecute(NULL,"open","C:\\xxx.exe",NULL,“c:\\”,SW_SHOW);
用了这个解决了,非常感谢!主要是倒数第二个参数(程序所在目录)最好不要省略.
ztenv
版主
2009-11-09
打赏
举报
回复
shellexeute()打开你的程序时,传入路径参数;然后再让shellexecute()所打开的程序调用你传入的参数就行了,明白吗?
jhk6666
2009-11-09
打赏
举报
回复
[Quote=引用 15 楼 lianshaohua 的回复:]
你的程序是否在启动的时候读取本目录下的一些文件?如果是的话,如果你取的是当前路径,可能用shellexecute()打开文件时,当前的路径并不是你的程序所在路径,不知道你是否明白。最好的方法是把你要打开的程序写日志,然后通过日志找原因;这是最方便最有效最直接的办法了;
[/Quote]
醍醐灌顶。我去试试
肯定是打开了exe所在目录的路径的
果然如你所说
分肯定给你了
能不能再给点思路
我现在的这个shell.exe是在某个工程里 可能被用于任何路径。
而xxx.exe是固定的 C:\\xxx.exe 读取的文件也是 c:\\xxx.dat
我想在shell.exe里面就解决这个问题 有什么思路吗?
ztenv
版主
2009-11-09
打赏
举报
回复
你的程序是否在启动的时候读取本目录下的一些文件?如果是的话,如果你取的是当前路径,可能用shellexecute()打开文件时,当前的路径并不是你的程序所在路径,不知道你是否明白。最好的方法是把你要打开的程序写日志,然后通过日志找原因;这是最方便最有效最直接的办法了;
jhk6666
2009-11-09
打赏
举报
回复
[Quote=引用 9 楼 lianshaohua 的回复:]
运行之前,设置一下工作路径看一下,然后可以试试createProcess()
[/Quote]
设置工作路径是怎么意思?
我看createProcess太复杂就没用它
我用同样的shellexecute方法运行我的别的exe都能成功,,
不知道这个exe为什么 已经成功执行了 却没有显示在任务管理器 也没有后台跑起来 (功能没实现)
jhk6666
2009-11-09
打赏
举报
回复
[Quote=引用 10 楼 the_face 的回复:]
你是如何确定XXX.exe没有运行起来?
[/Quote]
我的程序是有功能的啊。然后我想通过一些事务触发那些功能 并没有实现
但是我双击运行后 同样的事务 就能看到现象
jhk6666
2009-11-09
打赏
举报
回复
winexec同样现象
HINSTANCE result = WinExec("C:\\xxx.exe",SW_SHOW);
printf("result = %d\n",result);
system("PAUSE");
返回值是33 应该也是成功吧。
仍旧没有运行起来exe 双击没问题
yet_flash
2009-11-09
打赏
举报
回复
是不是需要加参数!
The_facE
2009-11-09
打赏
举报
回复
你是如何确定XXX.exe没有运行起来?
ztenv
版主
2009-11-09
打赏
举报
回复
运行之前,设置一下工作路径看一下,然后可以试试createProcess()
cphj
2009-11-09
打赏
举报
回复
如果执行程序的话,用WinExec最简单了
UINT WinExec(
LPCSTR lpCmdLine, // 命令路径
UINT uCmdShow // 显示方式,共有11种,具体可以查阅MSDN的ShowWindow函数
);
ShellExecute一般是用来寻找文件的关联直接打开不用加载与文件关联的应用程序
HINSTANCE ShellExecute(
HWND hwnd, //父窗口句柄
LPCTSTR lpOperation, //操作, 打开方式"edit","explore","open","find","print","NULL"
LPCTSTR lpFile, //文件名,前面可加路径
LPCTSTR lpParameters, //参数
LPCTSTR lpDirectory, //默认文件夹
INT nShowCmd //显示方式
);
jhk6666
2009-11-09
打赏
举报
回复
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
void main()
{
HINSTANCE result = ShellExecute(NULL,"open","C:\\xxx.exe",NULL,NULL,SW_SHOW);
printf("result = %d\n",result);
system("PAUSE");
}
这就是代码啊 没有什么好看的吧。。。
jhk6666
2009-11-09
打赏
举报
回复
exe的作用没有体现 。。没有运行起来就down掉了
功能也是没有体现 我已经试过了
双击却是一切ok
mengde007
2009-11-09
打赏
举报
回复
把完整代码贴出来;
feifanup
2009-11-09
打赏
举报
回复
exe的作用体现出啦了没有?
比如写了文件,或者干嘛的,总有个痕迹的.
jhk6666
2009-11-09
打赏
举报
回复
回1楼 我理解你的意思是
main()
{
shellexecute(open ... xxx.exe ...);
system("PAUSE");
}
是吗?
现象依旧 偶尔我的xxx.exe可能在任务管理器的进程列表中闪一次出现 但是马上就消失
但是我双击运行xxx.exe是可以正常跑的
ArmStronger
2009-11-09
打赏
举报
回复
[Quote=引用 1 楼 cphj 的回复:]
在你的代码main()中的return语句前加一行
system("pause");
以便程序结束前暂停
[/Quote]
如果lz双击exe也是一闪而过的话,就如1楼所说了
cphj
2009-11-09
打赏
举报
回复
在你的代码main()中的return语句前加一行
system("pause");
以便程序结束前暂停
加载更多回复(3)
QDesktopServices打开文件时报
Shell
Exe
cute
‘file:///xxx/xxx/???.txt‘ failed (error 2)
于是想查看QDesktopServices和
Shell
Exe
cute
的关系,去看源码,QDesktopServices::openUrl()的实现涉及:QPlatformServices类,但这个类的源码
没
给出来,去官网也查不到(说好的开源呢!第二天想再尝试一下,于是复制了正确路径,然后再试,文件
成功
被打开,真实项目中所打开文件的路径很复杂,仔细对比区别,发现这个路径修改了,但
没
更新这个文件的路径(这是代码里的bug),于是打不开,原来只要路径正确就能打开!这篇博文,感觉真的跟操作系统版本有关。
让bat批处理以管理员权限
运行
的实现方法
更新时间:2021年09月18日 00:07:31 投稿:mdxy-dxy 这篇文章主要介绍了让bat批处理以管理员权限
运行
的实现方法,需要的朋友可以参考下 1、第一种方法 有的电脑是非管理员登录,
运行
程序时,需要提示是否
运行
运行
。解决方法如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 @ echo off %...
【自己写的.
exe
封装为Windows服务后开机自启动失败解决办法】
python程序注册为Windows服务,开机自启动失败
Windows
双击
打开程序
bool CFileManager::OpenFile(LPCTSTR lpFile, INT nShowCmd) { char lpSubKey[500]; HKEY hKey; char strTemp[MAX_PATH]; LONG nSize = sizeof(strTemp); ch
告诉你
双击
盘符打不开的原因、解决办法
告诉你
双击
盘符打不开的原因、解决办法、彻底预防办法。一日学会终生受用。一般来说,病毒为了达到自己被执行的目的会不择手段,它会利用各种伎俩使自己在开机时就被
运行
,同时为了防止自己的进程被结束掉,它会希望自己在开机状态下的多种正常操作(比如你
双击
打开一个盘符)中被再次执行,这样它们就能让自己一直在内存中
运行
,以达到自己卑鄙的目的。ok,秘密从此揭开(以下全以D盘为例):当你
双击
你的D盘(光驱的盘符除外
C++ 语言
64,663
社区成员
250,516
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章