找回密码
 加入
搜索
楼主: boyhong

请教一下,哪个编程软件编译出的EXE小呢?

 火... [复制链接]
发表于 2012-3-14 18:42:30 | 显示全部楼层
还是汇编吧, 当然可以用低版本的 VC 或VB 不过有些要运行库, 都是一样.
 楼主| 发表于 2012-4-9 15:05:05 | 显示全部楼层
试试这个
ceoguang 发表于 2012-3-13 18:27



    超版,你是如何编译出来的呀?呵呵,很爽~~~
发表于 2012-4-9 16:25:08 | 显示全部楼层
试试这个
ceoguang 发表于 2012-3-13 18:27



    批处理吗?
发表于 2012-4-9 17:06:22 | 显示全部楼层
#include <Windows.h>
#pragma comment(linker, "/MERGE:.text=.thesnoW")
#pragma comment(linker, "/MERGE:.rdata=.thesnoW")
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
        HMODULE mod=LoadLibrary("shell32.dll");
        DWORD pShellExecute=(DWORD)GetProcAddress(mod,"ShellExecuteA");
        char* lpParameters="/passive";
        char* lpFile="test.msi";
        __asm{
                push 0;
                push 0;
                push lpParameters;
                push lpFile;
                push 0;
                push 0;
                call DWORD ptr pShellExecute;
                push 0;
                call DWORD ptr ExitProcess;
        }
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-4-9 17:22:45 | 显示全部楼层
thesnow 发表于 2012-4-9 17:06



    这是什么呀?看不懂的
发表于 2012-4-9 17:35:30 | 显示全部楼层
这是什么呀?看不懂的
redapple2008 发表于 2012-4-9 17:22



    不懂+1
发表于 2012-4-9 17:37:23 | 显示全部楼层
不懂+1
thesnow 发表于 2012-4-9 17:35



    原来你在后台呀?
发表于 2012-4-9 19:00:34 | 显示全部楼层
补充一下:
运行并等待:
#include <Windows.h>
#pragma comment(linker, "/MERGE:.text=.thesnoW")
#pragma comment(linker, "/MERGE:.rdata=.thesnoW")
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
        HMODULE mod=LoadLibrary("shell32.dll");
        DWORD pShellExecute=(DWORD)GetProcAddress(mod,"ShellExecuteExA");
        char x[sizeof(SHELLEXECUTEINFO)];
        LPSHELLEXECUTEINFO lpExecInfo = (LPSHELLEXECUTEINFO)x;
        lpExecInfo->cbSize=sizeof(SHELLEXECUTEINFO);
        lpExecInfo->nShow=nShowCmd;
        lpExecInfo->lpFile="test.msi";
        lpExecInfo->lpParameters="/passive";
        lpExecInfo->fMask=SEE_MASK_NOCLOSEPROCESS ;
        __asm{
                push lpExecInfo;
                call dword ptr pShellExecute;
        }
        WaitForSingleObject(lpExecInfo->hProcess,INFINITE);
        CloseHandle(lpExecInfo->hProcess);
        ExitProcess(0);
}
PS:部分使用DDE的程序会导致退出了,但是进程仍然存在,这样会引起本程序无限等待.使用CreateProcess来创建进程并等待效果会好很多,缺点是你得指定exe的完整路径,而不是一个msi....


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-4-9 20:31:06 | 显示全部楼层
楼上的代码改成:多线程 (/MT)
体积就飞了
发表于 2012-4-9 20:43:04 | 显示全部楼层
楼上的代码改成:多线程 (/MT)
体积就飞了
ceoguang 发表于 2012-4-9 20:31



    编译时已经去掉了默认库,不使用默认的入口.(就是使用/MT编译的).
运行时(静态)内置的memset都无法使用.因此LPSHELLEXECUTEINFO指向的内存还是用char申请的.
发表于 2012-4-9 21:03:56 | 显示全部楼层
不知道 Warez 组织的那些仅有 64 KB 的3D动画是用什么写的。想当年"彗星撞地球"那叫一个震撼……
发表于 2012-4-10 14:40:06 | 显示全部楼层
看来全都是程序高手呀
发表于 2013-1-13 23:58:03 | 显示全部楼层
我哪有空跟你玩儿啊,像我这样的大牌,今年档期早都排满了,我有好多好多电影,电视剧和广告要看啊。
发表于 2013-3-27 21:06:13 | 显示全部楼层
是个问题。
发表于 2013-4-18 12:30:36 | 显示全部楼层
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-17 07:09 , Processed in 0.075719 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表