Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2012, 08:48   #11
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Чет я не понял, а тупо сделать форму на весь экран с режимом StayOnTop и запретом клавиш вызова пуска в хуках уже не катит?
Почему не катит? Посто вопрос был:
Цитата:
Итоговый вопрос - как убить к чертям панель задач виндовс, не оставляя её шанса моргнуть при автозапуске и не повредив функциональности системы?
Поэтому в эту сторону и не копали.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 15.02.2012, 09:20   #12
ElectroMent
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 27
По умолчанию

Explorer - не системный процесс и не критичен к работоспособности операционной системы.

Если делать собственную оболочку, надо помнить, что все функции "проводника" будь то "автозапуск", ассоциативное открытие файлов и т.п. надо брать на себя. И насколько полно ты их реализуешь - будет счастье. Это "разумное" действие, но не обязательное.
Как подменить "проводник" писали выше.

По части скрыть "проводник" это дело хлопотное:
1. Скрываешь панель задач, системный трей.
2. Блокируешь кнопки Win, Ctrl+Alt+Del, можно Alt-Tab и т.п.
3. Запрещаешь в реестре запуск: редактора реестра, диспетчера задач.

Все зависит от того, какая конечная цель.

Относительно простой вариант сделать "собственную" оболочку и заменить "проводник".
Могу предоставить пример "простого" проводника - автозапуск, работа с реестром, панель задач, часы, кнопка "пуск" с меню.
пиши egor1256@mail.ru
ElectroMent вне форума Ответить с цитированием
Старый 15.02.2012, 12:38   #13
Ksardas13
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 120
По умолчанию

Stilet, сделай и посмотри как дело обстоит на практике - так или иначе пользователь увидит краем глаза панель задач при запуске, а главная цель этого не допустить.

Есть даже более красивое решение - засунуть в автозапуск прогу, которая скрывает панель задач(либо на WinApi, либо есть какая то фигня в сети, ещё быстрее работающая... правд не копался как). Засунуть очень быструю и элементарную прогу. Срипт, выполняющийся за сотую долю секунды... и всё равно останется мигание или возможность того, что панелька мигнёт(хотя каюсь, сам не делал, но так и думал, так и нагуглил, так и будет... должно быть).
Похоже единственный способ - закрассить её.

Оу, смотрю меня обогнали с ответом.)

Об остальном позже... щас убегаю...
И щас напишу на емаил по поводу оболочки.)

И да, заблокирвоать что либо не проблема... Более того, дайте мне загрузиться раньше эксплорера и дайте хотя б две секунды - я стану всемогущ... а так беда - чёртов Майкрософт...


Кстати, вопрос - а в каком файле Винды лежит картинка для панели задач и кнопки Пуск? Что если найти и выдрать/поменять ResHackerom(в названии похоже ошибся... но думаю знаете о чём речь идёт)?
...Ат всё, убегаю...

Последний раз редактировалось Ksardas13; 15.02.2012 в 12:47.
Ksardas13 вне форума Ответить с цитированием
Старый 17.02.2012, 16:55   #14
lowercase
Пользователь
 
Регистрация: 15.05.2010
Сообщений: 88
По умолчанию

Код:
#include <windows.h>

int main(){
  HANDLE h;
  h = FindWindow("Shell_TrayWnd",0);
  ShowWindow(h,SW_HIDE);
  return 0;
}
только помоему останется еще кнопка пуск может быть кто с более опытных форумчан знают как.
если вдруг надо будет показать ее то тот же код только вместо SW_HIDE надо SW_SHOW

Последний раз редактировалось lowercase; 18.02.2012 в 14:22.
lowercase вне форума Ответить с цитированием
Старый 17.02.2012, 17:54   #15
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

берётся в руки кувалда, и хрясь по системнику!
А потом ногами его: шмяк! шмяк! шмяк!
И из окошка с девятого этажа - хлобысь! Об асфальт.

Это будет самое безжалостное и беспощадное убийство эксплоера.

Последний раз редактировалось _Bers; 17.02.2012 в 17:56.
_Bers вне форума Ответить с цитированием
Старый 17.02.2012, 19:26   #16
Karp_13
Всё знать хотяка!
Пользователь
 
Аватар для Karp_13
 
Регистрация: 21.04.2009
Сообщений: 67
Радость

*Упс, тут я под другим акаунтом зареган... ну в общем это тоже я, афтор темы.*

lowercase, если заморочиться, то можно и кнопку пуск убрать и вообще всё что угодно скрыть командой hide... всё в мире виндоувс окна... но беда в другом, эта чёртова панель загружается раньше всех возможных программ. Даже если после загрузки её скрыть - то всё равно существует шанс, что она мелькнёт при загрузке хотя бы на секунду.
(как закончу мучится с этим, так напишу сюда результаты трудов, если не забуду)

Как вариант - щас штурмую старый добрый ResHacker и загружаемые файлы Виндоувса... Я заметил(надеюсь не показалось) что экран приветствия - что-то вроде ширмы - он держится пока эксплоурер не загрузиться(или не выдаст ошибку загрузки). Как менять внешний вид экрана приветствия ресхакером нашёл... скрипт, относящийся к экрану приветствия нашёл... осталось найти ту часть ,которая отвечает за задержку приветствия на экране. Такую задержку, который бы хватило моей проге, чтобы загрузиться, найти врага и скрыть его наглую морду.

Буду держать вас в курсе событий... повторюсь(чтоб не обрекли флудером), что проблема в Инете толком не решена... по крайней мере по запросам "скрыть на*рен панель задач" и им подобным. Так что мож кто себе её в качестве КНИРСА возьмёт потом. =D ... хм... вот...

_Bers, твой вариант у меня в качестве финального запасного.)
Я вредный и нервный, но бдобр.

Последний раз редактировалось Karp_13; 17.02.2012 в 19:28. Причина: раздвоение личностей
Karp_13 вне форума Ответить с цитированием
Старый 17.02.2012, 21:06   #17
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Ну есть winlogon.exe. Он стартует раньше эксплорера и грузит любые длл прописанные где-то в HKLM\ ...\winlogon\notify.
И вот, в своей длл поставить WH_CBT, ловить HCBT_CREATEWND на окошко Shell_TrayWnd и убить его безжалостно и беспощадно.
Я так вижу.

Последний раз редактировалось EUGY; 17.02.2012 в 21:26.
EUGY вне форума Ответить с цитированием
Старый 17.02.2012, 22:44   #18
Karp_13
Всё знать хотяка!
Пользователь
 
Аватар для Karp_13
 
Регистрация: 21.04.2009
Сообщений: 67
По умолчанию

EUGY, ммм, вот это уже интересно. Просто я не волшебник, я только учусь, с ддльками пока дело имел только на уровне подгрузить к себе, выдрать что нужно, успокоиться. Ок, прошарю. Спс за наводку!
Кстати, буду рад если у кого есть что почитать в этом направлении... типа "как написать dll-ку и убить всех..."... или как то так... а так щас чайка попью, отойду от дневного загруза и примусь гуглить.)
Я вредный и нервный, но бдобр.

Последний раз редактировалось Karp_13; 17.02.2012 в 23:26. Причина: косвенной помощи попросить будет не лишним
Karp_13 вне форума Ответить с цитированием
Старый 18.02.2012, 21:51   #19
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

На досуге поковырялся, эксплорер очень хочет видеть валидный хендл панели задач, посему в хуке WH_CBT надо бы не убивать окошко, а подменять оконную процедуру на свою и не давать в ней отобразиться окну.
Написал рабочий пример длл, в качестве болванки подойдет.
Грузится из реестра путем вызова пустой функции dummyfunc экспортированной из длл.
То бишь, надо в ветке реестра ...\winlogon\notify создать новый раздел
killtray и в нем создать два строковых параметра:
DllName ~PATH~\killtray.dll
Startup dummyfunc

Исходник прилагается во вложении.

Вкратце так:
Код:
#include "stdafx.h"
#include "killtray.h"
#include <windows.h>

#pragma data_seg(".shared") // НЕ ЗАБЫТЬ скомпилировать с DEF-файлом !
int cnt = 0;
HHOOK hhook = NULL;
#pragma data_seg()  

LRESULT TrayWindowProc(	HWND hWnd, UINT Msg, WPARAM wParam,  LPARAM lParam)
{
	if (WM_COMMAND == Msg) // запретить всякую дурь, типа LEFT WIN
		return FALSE;
	else if (WM_WINDOWPOSCHANGING == Msg)
	{	// блокировать попытку отобразиться
		WINDOWPOS* pwp = (WINDOWPOS*)lParam;
		if (pwp->flags & SWP_SHOWWINDOW)
		{
			pwp->flags &= ~SWP_SHOWWINDOW;
			return FALSE;
		}
	}
	return CallWindowProc((WNDPROC) GetProp(hWnd, "DEFPROC"), hWnd, Msg, wParam, lParam);

}

LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam )
{
	
	if (HCBT_CREATEWND == nCode)
	{
		HWND hwnd = (HWND) wParam;
		char nam[255];
		GetClassName(hwnd, nam, 255);
		if (!lstrcmp(nam, "Shell_TrayWnd"))
		{	// подмена процедуры
			SetProp(hwnd, "DEFPROC", (HANDLE) (LONG_PTR) SetWindowLong(hwnd, GWL_WNDPROC, (LONG)(LONG_PTR)TrayWindowProc));
		}
	}
	return CallNextHookEx(hhook, nCode, wParam, lParam);
}



int TrdProc(void* lparam) //  параметр  - HINSTANCE
{
	while (1)
	{
		if (HDESK hsd = OpenDesktop("Default", DF_ALLOWOTHERACCOUNTHOOK, FALSE, MAXIMUM_ALLOWED))
		{   // РАБОЧИЙ СТОЛ ПОЯВИЛСЯ
			SetThreadDesktop(hsd);
			// WH_CBT
			hhook = SetWindowsHookEx(WH_CBT,  CBTProc,(HINSTANCE) lparam, NULL);
			// УЙТИ В НИРВАНУ
			SuspendThread(GetCurrentThread());
			break;
		}
	}
	return 0;
}


BOOL APIENTRY DllMain( HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
	switch (ul_reason_for_call) 
	{ 
	case DLL_PROCESS_ATTACH: 
		if (!cnt++) // создать поток, и в нем ждать рабочий стол юзера
			CreateThread( 0, 0, (LPTHREAD_START_ROUTINE) TrdProc, (LPVOID) hModule, 0, 0);
		break;
	case DLL_PROCESS_DETACH:
		if (!cnt--)
			UnhookWindowsHookEx(hhook);
		break;
	}
    return TRUE;
}
Вложения
Тип файла: zip killtray.zip (66.2 Кб, 10 просмотров)
EUGY вне форума Ответить с цитированием
Старый 19.02.2012, 19:14   #20
Karp_13
Всё знать хотяка!
Пользователь
 
Аватар для Karp_13
 
Регистрация: 21.04.2009
Сообщений: 67
Смех

EUGY, ты просто... просто... я хочу от тебя детей!
Спасибище! Пока не тестил всё произошедшее в полной мере, но вроде работает. Винда загрузилась, панели нет. Я просто сидел и пальцы крестиком держал, до этого закинув твою ддлку не глядя в реестр; загружается - панели нет!! Позже на досуге разжую её построчно, чую офигенно полезная штука!
EUGY, ещё раз спасибо! =))))))) Уииииииии!
Я вредный и нервный, но бдобр.
Karp_13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Убить csrss.exe с откладочными привелегиями hon Общие вопросы Delphi 13 21.07.2011 13:13
explorer.exe voland123454321 Операционные системы общие вопросы 11 19.07.2010 13:23
Убить windows7addon.exe Catoffnet Безопасность, Шифрование 14 14.10.2009 14:00
ошибка explorer.exe Bodnya1994 Помощь студентам 5 02.04.2009 21:02
explorer.exe x2 -- ?? h0rr0r Помощь студентам 1 12.01.2009 19:12