开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 206|回复: 2
收起左侧

[已解决] 这段c艹怎么翻译成易的源码?

 关闭 [复制链接]
结帖率:100% (14/14)
发表于 2024-11-13 16:52:36 | 显示全部楼层 |阅读模式   广东省深圳市
100精币

[C++] 纯文本查看 复制代码
#include <windows.h>
#include <tchar.h>
 
#pragma comment (linker, "/NODEFAULTLIB")
 
#ifndef _DEBUG
#pragma comment(linker,"/merge:.rdata=.data")
#pragma comment(linker,"/merge:.text=.data")
#pragma comment(linker,"/merge:.reloc=.data")
#pragma comment(linker,"/FILEALIGN:0x200")
#endif        // _DEBUG
 
 
TCHAR szAppName[]  = _T("delthis");
TCHAR szUsage[]    = _T("Usage:\r\n\r\nselfdel  [options]\r\n\r\nOptions:\r\n-u  (Uninstall)\r\n-pid Pid\r\n-exe Path");
TCHAR szError1[]   = _T("Failed to open process [%u]");
TCHAR szDeleting[] = _T("Deleting:\r\n\r\n%s");
 
int _tatoi(TCHAR *num)
{
        int   n = 0;
        TCHAR *nptr = num;
        
        while(*nptr && IsCharAlphaNumeric(*nptr) && !IsCharAlpha(*nptr))
                n = 10 * n + (*nptr++ - '0');
 
        return n;
}
 
void MyZeroMem(void *mem, DWORD bytes)
{
        BYTE *bptr = (BYTE *)mem;
 
        while(bytes--)
                *bptr++ = 0;
}
 
void CommitSuicide(void)
{
        HANDLE                                hTemp;
        char                                szPath[MAX_PATH];
        char                                szTemp[MAX_PATH];
        char                                szBig [MAX_PATH*2 + 100];
 
        STARTUPINFO                        si;
        PROCESS_INFORMATION pi;
        
        UINT                                ret;
 
 
        GetTempPath(MAX_PATH, szTemp);
        lstrcat(szTemp, "selfdel.exe");
 
 
        GetModuleFileName(0, szPath, MAX_PATH);
        
 
        CopyFile(szPath, szTemp, FALSE);
 
        hTemp = CreateFile(szTemp, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_DELETE, 0,
                OPEN_EXISTING, FILE_FLAG_DELETE_ON_CLOSE, 0);
 
 
        MyZeroMem(&si, sizeof(STARTUPINFO));
        MyZeroMem(&pi, sizeof(PROCESS_INFORMATION));
 
        si.cb = sizeof(STARTUPINFO);
 
        wsprintf(szBig, "\"%s\" -pid %u -exe \"%s\"", 
                szTemp, 
                GetCurrentProcessId(),
                szPath);
 
 
        ret = CreateProcess(0, szBig, 0, 0, FALSE, NORMAL_PRIORITY_CLASS, 0, 0, &si, &pi);
        Sleep(100);
        CloseHandle(hTemp);
}
 
 
//
void DeleteExe(DWORD dwPid, TCHAR *szPath)
{
        HANDLE hProcess;
        TCHAR  szErr[MAX_PATH+32];
 
 
        hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | SYNCHRONIZE, FALSE, dwPid);
 
        if(hProcess == 0)
        {
                wsprintf(szErr, szError1, dwPid);
                MessageBox(0, szErr, szAppName, MB_OK|MB_ICONINFORMATION);
                return;
        }
 
 
        WaitForSingleObject(hProcess, INFINITE);
        CloseHandle(hProcess);
 
        DeleteFile(szPath);
}
 
TCHAR * GetNextArg(TCHAR *szPtr, TCHAR *szOut)
{
        TCHAR *pOut = szOut;
        TCHAR ch = *szPtr++;
 
        if(ch == '\0')
                return 0;
 
        while(ch == ' ' || ch == '\t')
        {
                ch = *szPtr++;
        }
 
        if(ch == '\"')
        {
                ch = *szPtr++;
                
                while(ch && ch != '\"')
                {
                        *szOut++ = ch;
                        ch = *szPtr++;
 
                }
 
                *szOut = '\0';
                return szPtr;
        }
 
        while(ch && ch != ' ' && ch != '\t')
        {
                *szOut++ = ch;
                ch = *szPtr++;
        }
 
        *szOut = '\0';
        return szPtr;
}
 
 
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine, int nShowCmd)
{
        DWORD        dwProcessId;
        TCHAR  *ptr;
        TCHAR   buf[MAX_PATH];
 
        ptr = lpCmdLine;
 
        ptr = GetNextArg(ptr, buf);
 
        if(lstrcmpi(buf, "-u") == 0)
        {
                CommitSuicide();
                ExitProcess(0);
                return 0;
        }
        
        if(lstrcmpi(buf, "-pid") == 0)
        {
        
                ptr = GetNextArg(ptr, buf);
 
                dwProcessId = _tatoi(buf);
 
 
                ptr = GetNextArg(ptr, buf);
 
                if(lstrcmpi(buf, "-exe") == 0)
                {
                        //exe-path specified - get the path
                        ptr = GetNextArg(ptr, buf);
                        DeleteExe(dwProcessId, buf);
                        return 0;
                }
                else
                {
                        return 1;
                }
        }
        else
        {
        
                return 1;
        }
 
        return 0;
}
 
 
int  WINAPI WinMainCRTStartup()
{
        UINT  ret;
        TCHAR *pszCmdLine;
        TCHAR temp[MAX_PATH];
 
        HINSTANCE hInst = GetModuleHandle(0);
        pszCmdLine = GetCommandLine();
 
        pszCmdLine = GetNextArg(pszCmdLine, temp);
        
        ret = WinMain(hInst, 0, pszCmdLine, SW_SHOWNORMAL);
        
        if(ret != 0)
        {
                MessageBox(0, szUsage, szAppName, MB_OK|MB_ICONINFORMATION);
        }
 
        ExitProcess(ret);
        return 0;
}
 



来源是https://blog.csdn.net/microzone/article/details/38556529的第四种

最佳答案

查看完整内容

你要这种?https://bbs.125.la/forum.php?mod=viewthread&tid=14839077

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳

签到天数: 24 天

发表于 2024-11-13 16:52:37 | 显示全部楼层   四川省宜宾市
回复

使用道具 举报

结帖率:100% (14/14)

签到天数: 22 天

 楼主| 发表于 2024-11-13 18:24:38 | 显示全部楼层   广东省深圳市
LEOONL 发表于 2024-11-13 16:52
你要这种?https://bbs.125.la/forum.php?mod=viewthread&tid=14839077

他那个也是老掉牙了,都是很早就被发过的,还是给你了,我想到了非系统盘也能自我删除的方法了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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