⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.cpp

📁 C++BUILDER5.0编写,用于查找一个进程ID
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
PROCESS_INFORMATION processInfo;
STARTUPINFO StartupInfo;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button1Click(TObject *Sender)
{
    if (EditProcessName->Text.IsEmpty())
    {
        ShowMessage("请输入进程名!");
        return;
    }
    HWND hWND;
    DWORD dwPID;
    hWND=FindWindow(NULL,EditProcessName->Text.c_str());
    if (hWND)
    {
        ShowMessage("找到进程名为:"+EditProcessName->Text+"的进程!");
        GetWindowThreadProcessId(hWND,&dwPID);
        ShowMessage("进程'"+EditProcessName->Text+"'的ID为:"+IntToStr(dwPID));
    }
    else ShowMessage("未找到进程名为:"+EditProcessName->Text+"的进程!");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    AnsiString ErrMsg,strCMD;
    if (EditProcessName->Text.IsEmpty())
    {
        ShowMessage("请输入进程名!");
        return;
    }
    HWND hWND;
    DWORD dwPID;
    hWND=FindWindow(NULL,EditProcessName->Text.c_str());
    if (hWND)
    {
        if (MessageBox(NULL,"确实要结束该进程吗?","提示",MB_OKCANCEL)==IDOK)
        {
            GetWindowThreadProcessId(hWND,&dwPID);
            //if (MakeDebugPrivilege(hWND,ErrMsg)!=0)
            //{
            //    ShowMessage(ErrMsg);
            //    return;
            //}
            strCMD="ntsd -c q -p "+IntToStr(dwPID);
            WinExec(strCMD.c_str(),0);
        }
    }
    else ShowMessage("未找到进程名为:"+EditProcessName->Text+"的进程!");

}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnStartProcessClick(TObject *Sender)
{
    AnsiString strCurDir=GetCurrentDir();
    SetCurrentDir("c:\\atc2000f");
    WinExec("atcf.exe",SW_SHOWNORMAL);
    SetCurrentDir(strCurDir);
}
//---------------------------------------------------------------------------
int __fastcall TForm1::MakeDebugPrivilege(HWND _hwnd,AnsiString &_errmsg)
{
    TOKEN_PRIVILEGES tp;
    LUID luid;
    LPCTSTR lpszPrivilege=SE_DEBUG_NAME;
    HANDLE hToken;

    if (!OpenProcessToken(_hwnd,TOKEN_ADJUST_PRIVILEGES , &hToken))
    {
        _errmsg="OpenProcessToken Error";
        return -1;
    }
    if (!LookupPrivilegeValue(NULL,            // lookup privilege on local system
                              lpszPrivilege,   // privilege to lookup
                              &luid ))       // receives LUID of privilege
    {
        _errmsg="LookupPrivilegeValue error";
        return -1;
    }
    tp.PrivilegeCount = 1;
    tp.Privileges[0].Luid = luid;
    tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED ;
    // Enable the privilege or disable all privileges.
    if (AdjustTokenPrivileges(hToken,
                          FALSE,
                          &tp,
                          sizeof(TOKEN_PRIVILEGES),
                          (PTOKEN_PRIVILEGES) NULL,
                          (PDWORD) NULL)) return 0;
    else
    {
        _errmsg="AdjustTokenPrivileges error!";
        return -1;
    }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -