Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 24.03.2014, 10:38
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Stepanov
Так что, никто не знает, почему данный код может не работать в Windows 8?
Какой код не работает? - RegisterHotKey что-ли? Эта API-функция в случае неудачи возвращает False, а с помощью GetLastError можно узнать и причину этой неудачи.
Ответить с цитированием
  #17  
Старый 24.03.2014, 12:03
Stepanov Stepanov вне форума
Прохожий
 
Регистрация: 23.03.2014
Сообщения: 11
Версия Delphi: Delphi 3
Репутация: 10
По умолчанию

"запрет на PrintScrn и Alt+PrintScrn во время выполнения"

Описано в посте #5.

Не происходит очищения клипборда. Пользователь нажимает PrntScr и копия экрана идет в определенную папку.
Ответить с цитированием
  #18  
Старый 24.03.2014, 12:08
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Stepanov
"запрет на PrintScrn и Alt+PrintScrn во время выполнения"

Описано в посте #5.

Не происходит очищения клипборда. Пользователь нажимает PrntScr и копия экрана идет в определенную папку.
Ну так я и спрашиваю - горячие клавиши устанавливаются на PrntScr и Alt+PrintScrn или же RegisterHotKey возвращает ошибку?
Ответить с цитированием
  #19  
Старый 24.03.2014, 12:32
Stepanov Stepanov вне форума
Прохожий
 
Регистрация: 23.03.2014
Сообщения: 11
Версия Delphi: Delphi 3
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
Ну так я и спрашиваю - горячие клавиши устанавливаются на PrntScr и Alt+PrintScrn или же RegisterHotKey возвращает ошибку?

1. Я взял куски кода из сообщения #5, которые были озаглавлены "запрет на PrintScrn и Alt+PrintScrn во время выполнения". Мне показалось, что эти куски кода должны очищать клипборд по нажатию кнопки PrntScr.
2. Я послал новую программу заказчику. Он ответил, что у него Windows 8 и по нажатию PrntScr у него создается образ экрана, который посылается в определенную пупку.
3. Поскольку до этого у меня все благополучно вычищалось в XP и других версиях я написал сюда на форум и спросил, знает ли кто, почему данный код может не работать в Windows 8?
4. Какой-то, видимо очень умный человек, рассказал мне о том, что сущестует много разных программ.
5. Я поблагодарил его и снова спросил, а знает ли кто ответ на мой вопрос?
6. Пришел еще более умный человек. Начал задавать какие-то вопросы. То ли он не прочитал мой первый пост, а прочитал только ответ очень умному человеку, то ли он не понял что я пытаюсь запретить работу клавиш PrntScr, хотя я это везде писал. Самый последний пост был составлен так что толи "иди ты на фиг, я же тебя спрашивал об этом", то ли "ответь же мне наконец". Сижу и думаю, что писать, чтобы ответили?
Ответить с цитированием
  #20  
Старый 24.03.2014, 12:51
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Stepanov
6. Пришел еще более умный человек. Начал задавать какие-то вопросы. То ли он не прочитал мой первый пост, а прочитал только ответ очень умному человеку, то ли он не понял что я пытаюсь запретить работу клавиш PrntScr, хотя я это везде писал. Самый последний пост был составлен так что толи "иди ты на фиг, я же тебя спрашивал об этом", то ли "ответь же мне наконец". Сижу и думаю, что писать, чтобы ответили?
Я прочитал все посты этой темы. Странно, разве я непонятно объясняю?
Ладно, попытка номер 3:
Windows после запуска устанавливает "горячие клавиши" на PrntScr и на Alt+PrintScrn и нажатие на эти клавиши обрабатывает создавая скриншоты. Чтобы Windows не обрабатывал эти клавиши, нужно запустить своё приложение которое перерегистрирует (с помощью RegisterHotKey) эти горячие клавиши на себя, тогда нажатие этих клавиш будет обрабатывать не Windows, а наша программа, которая естественно не будет создавать никаких скриншотов. Однако если RegisterHotKey не сможет перерегистрировать эти горячие клавиши на себя, то их и в дальнейшем будет обрабатывать Windows создавая скриншоты. А чтобы узнать удалось ли нашему приложению перерегистрировать эти горячие клавиши на себя нужно проверить что возвращает в результате функция RegisterHotKey - если возвращает True - всё в порядке, если же возвращает False - значит не удалось, и Windows продолжает перехватывать эти клавиши на себя создавая скриншоты, а чтобы узнать почему нашему приложению не удалось перерегистрировать эти горячие клавиши нужно вызвать функцию GetLastError.
Надеюсь что уже понятно всё разжевал - если нет - то я уже пас...
Ответить с цитированием
  #21  
Старый 24.03.2014, 13:32
Stepanov Stepanov вне форума
Прохожий
 
Регистрация: 23.03.2014
Сообщения: 11
Версия Delphi: Delphi 3
Репутация: 10
По умолчанию

Уважаемый Poli-smen. Благодарю за тактичность и терпеливость. Да, теперь мне больше понятно, что именно вы спрашивали.

Уважаемый Poli-Smen. К сожалению вопрос немного глубже, чем выяснения проблем у заказчика. Если я разберусь с ним и его компьютером, а потом он даст эту программу другому человеку и у того будет другая ситуация, а не ошибка появляющаяся на компьютере заказчика, то неустойка, которую я понесу в этом случае, превысит все мои заработки за последние 10 лет. (Если кто-то воспользуется дополнительными программами, которые сделают образ экрана, я ничего не заплачу. В контракте имеется только "по нажатию PrnScrn не должен сохраняться образ монитора") То есть. Мне НЕ НАДО разобраться с заказчиком и выяснить, где происходит ошибка, а мне НАДО РАЗОБРАТЬСЯ С ПРОБЛЕМОЙ.

Для этого я и написал сюда. Мне надо понять - существуют ли какие общие отличия обработки клавиш PrnScrn на ВСЕХ Windows 8? При всех возникающих ошибках. Даже дружелюбное: "А у меня стоит Windows 8, я вставил эти куски и у меня все стирается", принесет мне гораздо больше пользы чем, все что было до этого написано.

P.S. Прошу прощения, если обращаюсь со слишком сложной проблемой. К сожалению именно это и есть работа профеcсионалов, а не какое-то написание крутых программ.

Последний раз редактировалось Stepanov, 25.03.2014 в 08:43.
Ответить с цитированием
  #22  
Старый 24.03.2014, 13:48
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Stepanov
Тут уже возникает вопрос с заказчиком. Очень маловероятно, что он сможет ответить на вопрос, что возвращает функция RegisterHotKey. Наше общение присходит на уровне: "Слушай ты, тупой русский идиот, вот это мой палец", - он показывает палец,- "Я нажимаю им вот на эту хреновую клавишу", - он показывает как нажимает на PrnScrn. - "И вот в этой хреновой папке появляется новый файл".- И он показывает мне через Скайп директорию с новый файлом...
Обычно клавиша PrnScrn делает скриншот в буфере обмена, а не в папку файл копирует. Подозреваю что заказчик нажимает не просто PrnScrn, а Win+PrnScrn - это в Windows 8 появилась новая горячая клавиша, которая делает скриншоты в файлы минуя клипборд. Т.е. если перерегистрировать ещё и эту горячую клавишу, то по идее скриншоты не должны ложится на винчестер:
Код:
RegisterHotKey(Form1.Handle, 103, MOD_WIN, VK_SNAPSHOT);
Компьютера с установленной Windows 8 у меня нет, так что проверить это к сожалению не могу.
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
Stepanov (24.03.2014)
  #23  
Старый 24.03.2014, 13:54
Stepanov Stepanov вне форума
Прохожий
 
Регистрация: 23.03.2014
Сообщения: 11
Версия Delphi: Delphi 3
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
Компьютера с установленной Windows 8 у меня нет, так что проверить это к сожалению не могу.

О, вот это похоже на то, что я искал. Дело в том, что в предудущей версии кодов, которые я находил на другом форуме, вместо конкретных 101 и 102 был первоначальный запрос на integer, и потом его уже проверяли. И мне как-то сразу показалось, а вдруг, что-то связано именно с данными конкретными параметрами.

Вот это я смогу проверить!

Подумав немного.... А добавлю ка я еще
RegisterHotKey(Form1.Handle, 44, 0, VK_SNAPSHOT);

Последний раз редактировалось M.A.D.M.A.N., 24.03.2014 в 15:01.
Ответить с цитированием
  #24  
Старый 24.03.2014, 14:24
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Stepanov
Подумав немного.... А добавлю ка я еще
RegisterHotKey(Form1.Handle, 44, 0, VK_SNAPSHOT);
Так эта горячая клавиша уже зарегистрирована в посте №5
Ответить с цитированием
  #25  
Старый 24.03.2014, 15:03
Stepanov Stepanov вне форума
Прохожий
 
Регистрация: 23.03.2014
Сообщения: 11
Версия Delphi: Delphi 3
Репутация: 10
По умолчанию

Извините, не вижу. Только 101 и 102. 44 - это альтернатива 101.
Или сам код клавиши не важен?
Ответить с цитированием
  #26  
Старый 24.03.2014, 15:54
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Stepanov
Извините, не вижу. Только 101 и 102. 44 - это альтернатива 101.
Или сам код клавиши не важен?
Это не код клавиши - это произвольный, но уникальный номер "горячей клавиши". Вот описание на официальном сайте, а вот по-русски.
Ответить с цитированием
  #27  
Старый 24.03.2014, 16:25
Stepanov Stepanov вне форума
Прохожий
 
Регистрация: 23.03.2014
Сообщения: 11
Версия Delphi: Delphi 3
Репутация: 10
По умолчанию

Честно говоря, мой мозг отказывается понимать оксюморон "произвольный, но уникальный", однако, положусь на вас. Непонятно, почему во всех таблицах к этой клавише даются два id и что имено под этим имеется в виду, но мне надо работать, а не изучать психологию создателей.

Все еще есть сомнение. Заказчик настаивал, что он нажимает именно одну клавишу. Я его переспрашивал и он специально демонстрировал свои действия. Подожду, когда Америка проснется. Может быть там есть какой-то выбор (настройка) и простое нажатие PrnScrn передается как нажатие с клавишей Win или, по умолчанию, считается, что Win всегда нажато.
Посмотрим.
Ответить с цитированием
  #28  
Старый 24.03.2014, 16:50
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Снимок экрана можно сделать не только кнопкой. В Win7 есть НОЖНИЦЫ
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #29  
Старый 24.03.2014, 17:05
Stepanov Stepanov вне форума
Прохожий
 
Регистрация: 23.03.2014
Сообщения: 11
Версия Delphi: Delphi 3
Репутация: 10
По умолчанию

Цитата:
Сообщение от Aristarh Dark
Снимок экрана можно сделать не только кнопкой. В Win7 есть НОЖНИЦЫ
А за это мне денег не платят.

Спасибо, что зашли в тему и поделились своими знаниями.
Ответить с цитированием
  #30  
Старый 24.03.2014, 17:42
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

FYI: http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

Цитата:
Return value

Type: BOOL

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError.

Соотв. по результату регистрации клавишь можно понять, получилось или нет. Соответсвенно, можно вывести себе сообщение, которое брат наш меньший тебе покажет, если что.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Stepanov (24.03.2014)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:25.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter