首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

双击exe时系统调用CreateProcess用的参数是什么?该怎么解决

2013-07-04 
双击exe时系统调用CreateProcess用的参数是什么?这是手工双击exe启动的:手工启动的不需要做任何事,软件就

双击exe时系统调用CreateProcess用的参数是什么?

这是手工双击exe启动的:
双击exe时系统调用CreateProcess用的参数是什么?该怎么解决
手工启动的不需要做任何事,软件就会开始连接,但是用代码启动的不会。到底在调用CreateProcess函数时还要穿什么参数进去才能让他开始连接。

我觉得应该从一般在收到什么消息之后开始尝试连接着手,是不是我还缺少什么代码,所以缺少这个消息以至于不再连接??

其实主要的是,双击exe启动程序的时候操作系统是传递了什么参数给CreateProcess函数的?应该用系统传的参数就能解决问题了

你对比看看能有什么发现不,
最好还是直接调试你的 P2PSeacher.exe 程序
[解决办法]
我不是用的 VC, 是 OllDbg
你用 VC 试一下也可以.

Attach 系统的 explorer.exe 进程, 对 CreateProcessA 和 CreateProcessW 下断点.
然后去双击执行一个 exe 文件就会断下来,
然后就可以看堆栈上的参数了.


[解决办法]
打开菜单 文件->附加
然后选择 explorer 进程. 打开以后如果已经是断下来的, 按 F9 运行.
在下面的命令窗口中输入:
bp CreateProcessA
bp CreateProcessW
然后去双击打开一个 exe 程序. od 这边会断下来, 在堆栈窗口就可以看到函数的参数了.
[解决办法]
就都 sizeof 看到是 4 了, 当然就对应 4 个字节呀, 怎么又说成是 8 个.
根据你上面的数据:
  DWORD  cb = 0x44;
  LPTSTR lpReserved = NULL;
  LPTSTR lpDesktop = NULL;
  LPTSTR lpTitle = NULL;
  DWORD  dwX = 0;
  DWORD  dwY = 0;
  DWORD  dwXSize = 0;
  DWORD  dwYSize = 0;
  DWORD  dwXCountChars = 0;
  DWORD  dwYCountChars = 0;
  DWORD  dwFillAttribute = 0;
  DWORD  dwFlags = 0x0401;
  WORD   wShowWindow = 0x01;
  WORD   cbReserved2 = 0x00;
 ....

热点排行