改变入口函数后,argc,argv 参数的使用

henrygoalpp 2012-05-14 08:46:01
在改变入口函数后,argc,argv 参数的使用,用OD 跟了一下,好像是不能访问堆栈。但却是argc和argv是有东西的。。用getcommandline 可以获取内容。。。。
请教一下大牛,改了入口函数,怎么使用argc,argv 啊。。


下面是大概的示意代码
#include "stdafx.h"
#pragma comment(linker,"/ENTRY:LMain")

BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
void LMain(int argc, char* argv[])

{
MessageBox(NULL,argv[1],NULL,NULL);
}
...全文
190 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lactoferrin 2012-05-15
  • 打赏
  • 举报
回复
subsystem为console/windows的exe的入口点没提供参数
帅得不敢出门 2012-05-15
  • 打赏
  • 举报
回复
可以通过 getcommonline得到,然后再传到 argc argv
例子:

#define _X86_
#define WIN32_LEAN_AND_MEAN
#define _DLL
#define _MT
#define UNICODE

#include <windows.h>
#include <Shellapi.h>

#pragma optimize("gsy",on)

#pragma comment(lib,"kernel32.lib")
#pragma comment(lib,"shell32.lib")
#pragma comment(lib,"msvcrt.lib")

#if (_MSC_VER<1300)
#pragma comment(linker,"/RELEASE")
#endif
#pragma comment(linker, "-opt:nowin98")
#pragma comment(linker, "-entry:Main")
#pragma comment(linker, "-opt:ref")
#pragma comment(linker, "-merge:.rdata=.text")
#pragma comment(linker, "-merge:.data=.text")
#pragma comment(linker, "-merge:.reloc=.text")
#pragma comment(linker, "-subsystem:console")
#pragma comment(linker,"-ignore:4078") // ignore warning about merged sections

#define OUTPUT "Hallo Welt sagt: %ws\n"

int __cdecl mainW(int argc, LPWSTR *argv)
{
LPWSTR exe = *argv;

/*
while(argc > 1)
{
// Take next parameter (jumps over first)
LPWSTR arg = *(++argv);
// Next parameter
--argc;
// Check for the contents of the parameter here
// -> ...
}
*/
printf(OUTPUT, exe);
return 0;
}

void __cdecl Main(void)
{
int argc;
LPWSTR* argv = CommandLineToArgvW(GetCommandLineW(), &argc);
ExitProcess(mainW(argc, argv));
}
W170532934 2012-05-14
  • 打赏
  • 举报
回复
不知道,我是来学习的。你好像定义main的时候没有定义调用方式吧??

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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