Поверх диспетчера задач

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ACiD
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 261
Зарегистрирован: 10.12.2005 (Сб) 2:29
Откуда: г. Санкт - Петербург

Поверх диспетчера задач

Сообщение ACiD » 14.06.2006 (Ср) 1:32

Подскажите пожалуйста как
сделать форму поверх диспетчера задач?

Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Сообщение Tamplier » 14.06.2006 (Ср) 8:23

В таймере SetWindowPosition? Способ извращенский, но действенный.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 14.06.2006 (Ср) 9:31

Изображение

Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Сообщение Tamplier » 14.06.2006 (Ср) 14:31

У меня небольшие проблемы с английским, так что если не правильно понял - поправьте. Вы намекаете на то, что сделать окно, которое будет поверх ДЗ нельзя, так?
Последний раз редактировалось Tamplier 14.06.2006 (Ср) 14:40, всего редактировалось 1 раз.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 14.06.2006 (Ср) 14:38

For example, somebody might ask me, "I have a window, and I want to make sure it's always on top no matter what. Is there a window style I can set so that nobody ever covers this window?" Oh, what if two programs did this, and they use this bit one over the other? You now have two windows trying to occupy the same space, and somebody is going to lose.
Some people decide to "fix" this problem by saying, "well, I will run a timer, and every second I will check to see if somebody's covering me, and if somebody is covering me, I'm going to push them out of the way."
Now, that works, until two programs do this.
And I think you can see what is happening: you have two programs, each of which, once a second, take turns, as it is in charge. We have seen this happen in programs that people pay for; where both of them decide that they should be the one, and work really hard at it. And as a result, you sit there and you install both of these programs, and you watch your screen. And you see that your icons change to the icon of one program, and then to the other one, and then to the first, and then back and forth. And it does this for about 15 seconds; your machine is completely unusable. And then finally one of them puts a big message box saying, "Hey, there's a mean guy around here!"
Изображение

Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Сообщение Tamplier » 14.06.2006 (Ср) 14:46

Tamplier писал(а):У меня небольшие проблемы с английским, так что если не правильно понял - поправьте. Вы намекаете на то, что сделать окно, которое будет поверх ДЗ нельзя, так?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.06.2006 (Ср) 14:47

Lasciate ogni speranza, voi ch'entrate.

IIIypuk
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 10.06.2006 (Сб) 12:39

Сообщение IIIypuk » 14.06.2006 (Ср) 15:46

Тебе пытались намекнуть, что, если сделать в таймере - то все будет работать нормально. НО! Если запустить еще одну такую-же прогу, которая вставит себя поверх других окон раз в секунду - получится гемморой вплоть до зависания ПиСишника.
В крайнем случае, если очень хочется, есть, на мой взгляд, два варианта:
1. Ловить нажатие Ctrl+Alt+Delete и попросу сразу убивать TaskManager.
2. Поставить интервал 5 или 10 секунд.

Минусы:
по пункту 1. Запустить ДЗ можно и по другому.
по пункту 2. Все равно чушь получится.

З.Ы. Я кстати где-то видел dll`эшку, которая как раз предназначалась для того, чтоб отключать горячие клавиши Window (такие как Alt+Tab, Ctrl+Alt+Delete, Win+L и т.д.).

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.06.2006 (Ср) 15:47

IIIypuk писал(а):З.Ы. Я кстати где-то видел dll`эшку, которая как раз предназначалась для того, чтоб отключать горячие клавиши Window (такие как Alt+Tab, Ctrl+Alt+Delete, Win+L и т.д.).

Обманываешь.
Lasciate ogni speranza, voi ch'entrate.

IIIypuk
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 10.06.2006 (Сб) 12:39

Сообщение IIIypuk » 14.06.2006 (Ср) 15:49

Счас попытаюсь найти, но по-моему точно. :oops:

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 14.06.2006 (Ср) 15:51

DLL, видать, ижектируется в winlogon и что-то перехватывает. По идее может работать...
Изображение

IIIypuk
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 10.06.2006 (Сб) 12:39

Сообщение IIIypuk » 14.06.2006 (Ср) 15:55

Текст из ReadMe.txt:
"Те,кто хотят заблокировать Ctrl_Alt_Del,Alt_Tab,TaskSwitching,TaskManager,Windows clock,Desktop,StartButton,Taskbar:
1.)Качаем block.dll(могу намылить)
2.)Пишем:
Private Declare Function Desktop_Show_Hide Lib "C:\Club FocuS pro\Dll\Block.dll" (ByVal bShowHide As Boolean) As Short
Private Declare Function StartButton_Show_Hide Lib "C:\Club FocuS pro\Dll\Block.dll" (ByVal bShowHide As Boolean) As Short
Private Declare Function Taskbar_Show_Hide Lib "C:\Club FocuS pro\Dll\Block.dll" (ByVal bShowHide As Boolean) As Short
Private Declare Function Clock_Show_Hide Lib "C:\Club FocuS pro\Dll\Block.dll" (ByVal bShowHide As Boolean) As Short
Private Declare Function Process_Desktop Lib "C:\Club FocuS pro\Dll\Block.dll" (ByVal szDesktopName As String, ByVal szPath As String) As Short
Private Declare Function Keys_Enable_Disable Lib "C:\Club FocuS pro\Dll\Block.dll" (ByVal bEnableDisable As Boolean) As Short
Private Declare Function AltTab1_Enable_Disable Lib "C:\Club FocuS pro\Dll\Block.dll" (ByVal bEnableDisable As Boolean) As Short
Private Declare Function AltTab2_Enable_Disable Lib "C:\Club FocuS pro\Dll\Block.dll" (ByVal hWnd As Integer, ByVal bEnableDisable As Boolean) As Short
Private Declare Function TaskSwitching_Enable_Disable Lib "C:\Club FocuS pro\Dll\Block.dll" (ByVal bEnableDisable As Boolean) As Short
Private Declare Function TaskManager_Enable_Disable Lib "C:\Club FocuS pro\Dll\Block.dll" (ByVal bEnableDisable As Boolean) As Short
Private Declare Function CtrlAltDel_Enable_Disable Lib "C:\Club FocuS pro\Dll\Block.dll" (ByVal bEnableDisable As Boolean) As Short

Указываем tru или false
Пример:CtrlAltDel_Enable_Disable(False)
gL"

И сама dll:
Вложения
Block.rar
(49.47 Кб) Скачиваний: 143

IIIypuk
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 10.06.2006 (Сб) 12:39

Сообщение IIIypuk » 14.06.2006 (Ср) 16:11

Проверил, все прекрасно работает:

Код: Выделить всё
Option Explicit
Private Declare Function CtrlAltDel_Enable_Disable Lib "Block.dll" (ByVal bEnableDisable As Boolean) As Integer

Private Sub Form_Click()
Static tmp As Boolean

   CtrlAltDel_Enable_Disable tmp
   tmp = Not tmp

End Sub

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.06.2006 (Ср) 16:30

Посмотрим, посмотрим...

Итак, для начала dll активирует себе SeDebugPriviledge. Интересно, как у неё это получится не под админом.
Создаёт снэпшот процессов... ищет в нём... открывает найденный с правами PROCESS_ALL_ACCESS. Интересно, как у неё это получится не под админом.
Через VirtualAllocEx отводит в том процессе память, пишет в неё асмовый код... запускает его в удалённом потоке, дожидается окончания его работы... делает это ещё раз... да ну его, на сон грядущий.

Короче, не будет это работать не под админом...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ACiD
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 261
Зарегистрирован: 10.12.2005 (Сб) 2:29
Откуда: г. Санкт - Петербург

Сообщение ACiD » 16.06.2006 (Пт) 1:17

А нельзя ли привести исходный код block'a
Просто хочется понять как это сделать,
а не тупо воспользоваться .dll

Dangerous
Новичок
Новичок
Аватара пользователя
 
Сообщения: 45
Зарегистрирован: 25.05.2006 (Чт) 15:52

Сообщение Dangerous » 16.06.2006 (Пт) 9:03

а dll'ку в систем32 кидать?
Нет ничего невозможного...

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 16.06.2006 (Пт) 14:06

Необязательно. Просто VB ищет прописанную DLL по следующему сценарию (если где-то ошибусь, поправьте меня, плз): сначала в папке с программой, затем в C:\Windows\system32\ или куда у тебя установлена Винда, а уж только потом смотрит на явное указание пути для библы. То есть если не кидать в system32, то можно просто прописать полный путь для этой библиотеки и всё буит работать.
Последний раз редактировалось Lumen 16.06.2006 (Пт) 14:34, всего редактировалось 1 раз.
Подпись проходит рефакторинг

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.06.2006 (Пт) 14:19

Поправляю.

В случае, если путь указан, поиск не производится (естественно).
В иных случаях http://bbs.vbstreets.ru/viewtopic.php?p=37224#37224
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

truk
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 13.07.2006 (Чт) 19:26

А наоборот?

Сообщение truk » 13.07.2006 (Чт) 19:58

IIIypuk писал(а):Проверил, все прекрасно работает:

Код: Выделить всё
Option Explicit
Private Declare Function CtrlAltDel_Enable_Disable Lib "Block.dll" (ByVal bEnableDisable As Boolean) As Integer

Private Sub Form_Click()
Static tmp As Boolean

   CtrlAltDel_Enable_Disable tmp
   tmp = Not tmp

End Sub


А как теперь разблокировать?

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Re: А наоборот?

Сообщение Lumen » 13.07.2006 (Чт) 21:03

truk писал(а):
IIIypuk писал(а):Проверил, все прекрасно работает:

Код: Выделить всё
Option Explicit
Private Declare Function CtrlAltDel_Enable_Disable Lib "Block.dll" (ByVal bEnableDisable As Boolean) As Integer

Private Sub Form_Click()
Static tmp As Boolean

   CtrlAltDel_Enable_Disable tmp
   tmp = Not tmp

End Sub


А как теперь разблокировать?


:lol: :lol:
Добавлено в цитаты.
Подпись проходит рефакторинг

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 13.07.2006 (Чт) 22:56

Ещё раз нажать на форму.
Изображение

IIIypuk
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 10.06.2006 (Сб) 12:39

Сообщение IIIypuk » 14.07.2006 (Пт) 18:18

:lol: :lol: :lol: ну вы блин даете "А как теперь разблокировать?"
Хотя конечно бывает. :roll: :roll:

З.Ы. У меня вопрос, как ты её разблокировал? Ждал, пока напишут ответ или ресет нажал? :lol: :lol: :lol:
Есть 10 типов людей. Те, кто понимает двоичную систему исчисления, и те, кто не понимает...

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 14.07.2006 (Пт) 22:02

IIIypuk, а ты кликни раз по форме для блокировки Ctrl+Alt+Del и закрой форму.
Как теперь разблокировать? :wink:

444 сообщение
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

ACiD
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 261
Зарегистрирован: 10.12.2005 (Сб) 2:29
Откуда: г. Санкт - Петербург

Сообщение ACiD » 14.07.2006 (Пт) 23:30

VVitafresh
щёлкни ещё разок :wink:
333 корочки

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 15.07.2006 (Сб) 9:31

ACiDXX писал(а):VVitafresh, щёлкни ещё разок :wink:

Пальцами по воздуху?
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

IIIypuk
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 10.06.2006 (Сб) 12:39

Сообщение IIIypuk » 15.07.2006 (Сб) 14:47

VVitafresh писал(а):
ACiDXX писал(а):VVitafresh, щёлкни ещё разок :wink:

Пальцами по воздуху?


Это тож к цитатам надо =) :lol: :lol: :lol:

По форме щелкни еще раз :!:
Есть 10 типов людей. Те, кто понимает двоичную систему исчисления, и те, кто не понимает...

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 15.07.2006 (Сб) 14:51

IIIypuk писал(а):Это тож к цитатам надо =) :lol: :lol: :lol:

По форме щелкни еще раз :!:


VVitafresh писал(а):IIIypuk, а ты кликни раз по форме для блокировки Ctrl+Alt+Del и закрой форму.
Как теперь разблокировать? :wink:
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

IIIypuk
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 10.06.2006 (Сб) 12:39

Сообщение IIIypuk » 15.07.2006 (Сб) 14:51

О, пардон, я не прочитал пост


VVitafresh писал(а):IIIypuk, а ты кликни раз по форме для блокировки Ctrl+Alt+Del и закрой форму.
Как теперь разблокировать? :wink:

444 сообщение


Именно поэтому дядьки программисты профессионалы и получают хорошие зарплаты, потому как это учитывать все надо. В данном случае, мона добавить код в Form_UnLoad() примерно такой:

CtrlAltDel_Enable_Disable False ' или True - надо смотреть как значение учитывается
Есть 10 типов людей. Те, кто понимает двоичную систему исчисления, и те, кто не понимает...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 12

    TopList