Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: 7z SayYesForRename.7z
(2.1 Kb, 2 просмотров)

Lirck есть один код -> http://ja.pastebin.ca/raw/890971, скомпилировав который в программу и запустив последнюю - получим в диалогах удаления запрещается нажатия кнопки "Да"
Не трогайте эту папку, скрин был ранее загружен для примера. Если что про неё интересно - [решено] System Volume Information .:[все вопросы]:.
Если переназначить окно срабатывания (с удаление на переименование) - то получим тоже для сабжевого
А если ещё и подменить действие (блок и переименовка кнопки на клик по ней) то и вовсе получим одно из решений сабжа
Код: Выделить весь код
#include <windows.h>

int WINAPI WinMain(HINSTANCE Instance, HINSTANCE PrevInstance,LPSTR CmdLine,int ShowCmd)

{

	HANDLE hMutex=CreateMutexA(0,FALSE,(".::Anti.Deleet.By.KOrUPt::."));
	if(GetLastError()==ERROR_ALREADY_EXISTS||GetLastError()==ERROR_ACCESS_DENIED)
	{
		CloseHandle(hMutex);
		//MessageBoxA(0,"Error, Already running..","Error",MB_ICONSTOP); //ENG
		MessageBoxA(0,"Ошибка, Уже запущенно..","Ошибка",MB_ICONSTOP);
		exit(0);
	}

	while(1)
	{
		Sleep(50);
		HWND activewin=GetForegroundWindow();

		char dialogname[150]="";
		char classname[201]="";	

		GetWindowTextA(activewin,dialogname,149);
		GetClassNameA(activewin,classname,200);
		
		//if(!strcmp(dialogname,"Rename")&&!strcmp(classname,"#32770")!=NULL) //ENG
		if(!strcmp(dialogname,"переименование")&&!strcmp(classname,"#32770")!=NULL)
		{			
			//HWND button=FindWindowExA(activewin,NULL,"Button","&Yes");//ENG
			HWND button=FindWindowExA(activewin,NULL,"Button","&Да");
			//SetWindowTextA(button,"Not allowed");
			//EnableWindow(button,false);
			SendMessageA(button,BM_CLICK,NULL,NULL);
		}

		if(GetAsyncKeyState('A')&&GetAsyncKeyState('W')&&GetAsyncKeyState(VK_SHIFT))
		{
			Sleep(100);
			break;
		}
		continue;
	}
	return 0;
}
Прога представляет собой безоконное Win32 приложение, работает в бекграунде, выключается комбинацией Shift + A + W, изначально написанное для английской версии.

Если ещё немного доделать программу - добавить CallBack на данное предупреждение (в авторском варианте прога всё время в поиска), то последнее возможно и вовсе не будет появляется на мгновение.

Наиболее адекватно такое решение считаю в случаи переименование htm/html, когда галку ...не выводить больше ставить не хочется. И то можно проследить - где галка в реестре отмечается, что б потом вернуть назад.
В других прочих случаях решение всё же искать стоит более рациональное, например посетив Автоматизацию действий.


Спасибо за внимание.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:54, 27-01-2009 | #6