📄 unit1.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 + -