boyboyjack
发表于 2012-3-14 18:42:30
还是汇编吧, 当然可以用低版本的 VC 或VB 不过有些要运行库, 都是一样.
boyhong
发表于 2012-4-9 15:05:05
试试这个
ceoguang 发表于 2012-3-13 18:27 http://www.autoitx.com/images/common/back.gif
超版,你是如何编译出来的呀?呵呵,很爽~~~
redapple2008
发表于 2012-4-9 16:25:08
试试这个
ceoguang 发表于 2012-3-13 18:27 http://www.autoitx.com/images/common/back.gif
批处理吗?
thesnow
发表于 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;
}
}
redapple2008
发表于 2012-4-9 17:22:45
thesnow 发表于 2012-4-9 17:06 http://www.autoitx.com/images/common/back.gif
这是什么呀?看不懂的
thesnow
发表于 2012-4-9 17:35:30
这是什么呀?看不懂的
redapple2008 发表于 2012-4-9 17:22 http://www.autoitx.com/images/common/back.gif
不懂+1
redapple2008
发表于 2012-4-9 17:37:23
不懂+1
thesnow 发表于 2012-4-9 17:35 http://www.autoitx.com/images/common/back.gif
原来你在后台呀?
thesnow
发表于 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;
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....
ceoguang
发表于 2012-4-9 20:31:06
楼上的代码改成:多线程 (/MT)
体积就飞了
thesnow
发表于 2012-4-9 20:43:04
楼上的代码改成:多线程 (/MT)
体积就飞了
ceoguang 发表于 2012-4-9 20:31 http://www.autoitx.com/images/common/back.gif
编译时已经去掉了默认库,不使用默认的入口.(就是使用/MT编译的).
运行时(静态)内置的memset都无法使用.因此LPSHELLEXECUTEINFO指向的内存还是用char申请的.
afan
发表于 2012-4-9 21:03:56
不知道 Warez 组织的那些仅有 64 KB 的3D动画是用什么写的。想当年"彗星撞地球"那叫一个震撼……
redapple2008
发表于 2012-4-10 14:40:06
看来全都是程序高手呀
392861168
发表于 2013-1-13 23:58:03
我哪有空跟你玩儿啊,像我这样的大牌,今年档期早都排满了,我有好多好多电影,电视剧和广告要看啊。
pris
发表于 2013-3-27 21:06:13
是个问题。
zengshihao1988
发表于 2013-4-18 12:30:36
{:face (411):}