ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Close button killer
  #1  
Старый 01.03.2009, 00:43
desTiny
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме:
3008839

Репутация: 1502


По умолчанию Close button killer

Прелюдия:

Я всегда выключаю комп в спящий режим. Как следствие, набирается много всяких программ, вкладок в опере и тп. И часто случается так, что при случайно нажатии несколько раз в правом верхнем углу экрана убивается и то, что убивать бы не хотелось. Это побудило меня накодить такую мини-программу.

Мануал:
Запускаем прогу, и кликаем по окну, на котором мы хотим убрать крестик, удерживая ctrl и shift.

Программа завершается через 10 секунд сама.

ctrl+shift+Q также её отключает.

Откомпилено (~3кб):

http://slil.ru/27008900

Сорцы:
unclose.dll :
Код:
#pragma comment(linker, "/MERGE:.data=.text /ENTRY:DllMain /MERGE:.rdata=.text /ALIGN:512")
#define Export EXTERN_C __declspec(dllexport) 
#include "windows.h"
#pragma section("hk",read,write,shared)
Export __declspec(allocate("hk")) HHOOK SysHook = NULL;
__declspec(allocate("hk")) BOOL off = false;
Export LRESULT CALLBACK Hook(int nCode, WPARAM wParam, LPARAM lParam){
	if (nCode < 0 || off)
		return CallNextHookEx(SysHook, nCode, wParam, lParam);
	MSG* msg = (MSG*)lParam;
	if (msg->message == WM_LBUTTONDOWN){	
		if (msg->wParam & (MK_CONTROL | MK_SHIFT)){
			MessageBeep(-1);
			HWND Handle = msg->hwnd, par;
			while (par = GetParent(Handle))
				Handle = par;
			DeleteMenu(GetSystemMenu(Handle, 0), SC_CLOSE, MF_BYCOMMAND);
			SendMessage(Handle, WM_PAINT, 0, 0);
			return 1;
		}
	}
	if (msg->message == WM_KEYDOWN){	
		if (msg->wParam == 81 && GetKeyState(VK_CONTROL)<0 && GetKeyState(VK_SHIFT)<0){
			MessageBeep(-1);
			off = 1;
			UnhookWindowsHookEx(SysHook);
			FreeLibrary(GetModuleHandle(NULL));
			return 1;
		}
	}
	return CallNextHookEx(SysHook, nCode, wParam, lParam);
}
BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
					 )
{

	return TRUE;
}
main.cpp
Код:
#include "windows.h"
#pragma comment(linker, " /MERGE:.data=.text /MERGE:.rdata=.text /ALIGN:512 /ENTRY:WinMain")
#define LIBRARY "unclose.dll"
wParam, LPARAM lParam);
static HINSTANCE Lib = NULL;
static HHOOK* SysHk = NULL;
HOOKPROC HookProc = NULL;
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
	Lib = LoadLibraryA(LIBRARY);
	if (!Lib)
		return -1;
	HookProc = (HOOKPROC) GetProcAddress(Lib, "Hook");
	if (!HookProc)
		return -2;
	SysHk = (HHOOK*) GetProcAddress(Lib, "SysHook");
	if (!SysHk)
		return -3;
	*SysHk = SetWindowsHookEx(WH_GETMESSAGE, HookProc, Lib, NULL);
	if (!*SysHk)
		return -4;
	Sleep(10000);
	UnhookWindowsHookEx(*SysHk);
	FreeLibrary(Lib);
	return 0;
}
PS ура, опера теперь не убиваема!

PPS щелчок по заголовку окна не засчитывается

Greetz 2 Terrific за пару ценных советов по студии и тест!
__________________
Bedankt euch dafür bei euch selbst.

H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ

Последний раз редактировалось desTiny; 01.03.2009 в 18:29..
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Blumentals Easy Button and Menu Maker Pro v1.5.0.7 GroW Soft - Windows 0 13.01.2009 14:41
Секреты Gsm КероСиН Сотовый фрикинг 17 30.08.2007 21:01
HP pretexting scandal comes to partial close Sn@k3 Forum for discussion of ANTICHAT 2 14.12.2006 22:43
Distributed.pm KSURi PHP, PERL, MySQL, JavaScript 0 06.11.2006 23:18
Помогите с WinAPI в Delphi EST a1ien С/С++, C#, Delphi, .NET, Asm 13 12.10.2006 11:06



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ