C++ Builder高手请进来

xqchang 2003-06-02 12:48:08
下面是一段EXE文件在程序结束前删除自己的程序,在VC下运行很好,现在我想把它用到C++ Builder里面,程序调不通,在push那三个API函数的地方报错,谁能帮忙在C++ Builder下给调通,拜托!

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
HMODULE module = GetModuleHandle(0);
CHAR buf[MAX_PATH];
GetModuleFileName(module, buf, sizeof buf);
CloseHandle(HANDLE(4));
__asm {
lea eax, buf
push 0
push 0
push eax
push ExitProcess
push module
push DeleteFile
push UnmapViewOfFile
ret
}
return 0;
}
...全文
70 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
PhilexPei 2003-06-03
  • 打赏
  • 举报
回复
学到东西了!!!
xqchang 2003-06-02
  • 打赏
  • 举报
回复
ybluo()的代码在C++ Builder 6.0下顺利通过编译,看来VC和BC就是两家人。
xqchang 2003-06-02
  • 打赏
  • 举报
回复
to yufei_yf: 编译时痛不过,提示:
E2329 Invalid combination of opcode and operands
yingyys 2003-06-02
  • 打赏
  • 举报
回复
yufei_yf(太阳雨) 代码没问题
你把它放在OnDestroy()里面就行了
xqchang 2003-06-02
  • 打赏
  • 举报
回复
感谢ybluo(),晚上我再试你的代码。

to yufei_yf(太阳雨) :就是在push那三个API函数时报错,好象是说用法不对。
yufei_yf 2003-06-02
  • 打赏
  • 举报
回复
出了什么错误?
ybluo 2003-06-02
  • 打赏
  • 举报
回复
#include <windows.h>

int main()
{
char buf[MAX_PATH];
HMODULE Hm1,Hm2;
HANDLE Ex,De,Un;
Hm2=GetModuleHandle(0);
GetModuleFileName(Hm2,buf,255);
Hm1=GetModuleHandle("Kernel32");
Ex=GetProcAddress(Hm1,"ExitProcess");
De=GetProcAddress(Hm1,"DeleteFileA");
Un=GetProcAddress(Hm1,"UnmapViewOfFile");
CloseHandle(HANDLE(4));
__asm {
LEA EAX,buf
PUSH 0
PUSH 0
PUSH EAX
PUSH Ex
PUSH Hm2
PUSH De
PUSH Un
RET
}
return 0;
}

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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