如何用ShellExecuteEx打开程序并且获得句柄
用Findwindow:
memset(&ShExecInfo,0,sizeof(ShExecInfo));
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = m_hWnd;
ShExecInfo.lpVerb = "open";
ShExecInfo.lpFile =strFile; //程序文件名称
ShExecInfo.lpParameters = strP; //带的参数
ShExecInfo.lpDirectory = strPath; //程序文件目录
ShExecInfo.nShow = SW_SHOWNORMAL; //程序窗口样式
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
用ShellExecuteEx函数执行一个vc写的exe,vc程序的返回函数是return(n)
shellexecute返回的并不是目标程序的main返回值,这样做:
STARTUPINFO si={sizeof(si)};
PROCESS_INFORMATION pi;
si.dwFlags=STARTF_USESHOWWINDOW;//指定wShowWindow成员有效
si.wShowWindow=TRUE;//此成员设为TRUE的话则显示新建进程的主窗口
BOOL bRet=CreateProcess(
L"xx:\\xx.exe",//目标文件名
NULL,
NULL,//默认进程安全性
NULL,//默认进程安全性
FALSE,//指定当前进程内句柄不可以被子进程继承
CREATE_NEW_CONSOLE,//为新进程创建一个新的控制台窗口
NULL,//使用本进程的环境变量
NULL,//使用本进程的驱动器和目录
&si,
&pi);
if (bRet)
{
DWORD dwExitCode;
CloseHandle(pi.hThread);
DWORD dwResult=WaitForSingleObject(pi.hProcess, INFINITE);
GetExitCodeProcess(pi.hProcess, &dwExitCode);
CloseHandle(pi.hProcess);
printf("%d\n",dwResult);
printf("%d\n",dwExitCode);
}
以上代码是执行目标exe,等待其退出,得到main函数的返回值,用的是CreateProcess
需要#include
有没有这样的软件: 用jd-gui可以反编译class文件,但是不能修改。有可以反编译并直接修改的么?
jd-gui可以将看到的反编译结果保存到一个zip压缩包里面,操作方法如下:1、首先创建一个class文件,打开记事本。2、输入一个基本的java程序,如图所示。3、然后将txt后缀改成.java后缀的文件,如图所示。4、然后用命令行来编译test.java,如图命令。5、然后打开jd-gui工具,点击如图标记图标,进行选择文件。6、选择相应的文件,进行编译test.class文件。7、点击打开后,就可以看到已经编译成功了。